diff --git a/Dockerfile b/Dockerfile index 0fda24e..03b6f02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG NODE_VERSION="${NODE_VERSION:-16.20.2}" -FROM node:${NODE_VERSION}-buster-slim AS build-stage +FROM node:${NODE_VERSION}-bullseye-slim AS build-stage WORKDIR /app COPY . . @@ -7,7 +7,7 @@ COPY . . RUN yarn install --frozen-lockfile \ && yarn build -FROM node:${NODE_VERSION}-buster-slim AS runtime-stage +FROM node:${NODE_VERSION}-bullseye-slim AS runtime-stage ARG USERID=1000 RUN mkdir -p /app diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..07c4a26 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,2241 @@ + + + + + + Rino SDK + + + + + + + + + +

Rino SDK (0.1.0)

Download OpenAPI specification:Download

Rino SDK API Documentation

+

Checks the service health

Responses

Response samples

Content type
application/json
{
  • "status": 200,
  • "message": "Ok"
}

Gets the service wallet data

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "max_daily_amount": 0,
  • "max_amount": 0,
  • "min_approvals": 0,
  • "requires_2fa": true,
  • "members": [
    ],
  • "created_at": "string",
  • "updated_at": "string",
  • "height": 0,
  • "address": "string",
  • "balance": "string",
  • "unlocked_balance": "string",
  • "status": "string",
  • "locked_amounts": [
    ],
  • "is_public": true,
  • "public_slug": "string"
}

Gets the service wallet activity

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Gets the service wallet members

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Gets the service wallet removed spenders

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Gets the service wallet pending transfers

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Gets a service wallet pending transfer

path Parameters
pendingTransferId
required
string

Id of the pending transfer to get

+

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": 0,
  • "creator": "string",
  • "rejected_by": "string",
  • "address": "string",
  • "amount": 0,
  • "memo": "string",
  • "min_approvals": 0,
  • "signed_multisig_tx": "string",
  • "approvals": [
    ],
  • "created_at": "string",
  • "updated_at": "string",
  • "submitted_at": "string"
}

Approves a service wallet pending transfer

path Parameters
pendingTransferId
required
string

Id of the pending transfer to approve

+

Responses

Response samples

Content type
application/json
true

Cancels a service wallet pending transfer

path Parameters
pendingTransferId
required
string

Id of the pending transfer to cancel

+

Responses

Rejects a service wallet pending transfer

path Parameters
pendingTransferId
required
string

Id of the pending transfer to reject

+

Responses

Gets the service wallet subaddresses

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Creates a service wallet subaddress

Responses

Response samples

Content type
application/json
{
  • "index": 0,
  • "address": "string",
  • "is_used": true,
  • "created_at": "string",
  • "label": "string",
  • "signature": "string",
  • "validated": true
}

Gets a service wallet subaddress

path Parameters
address
required
string

Address of the subaddress data to get

+

Responses

Response samples

Content type
application/json
{
  • "index": 0,
  • "address": "string",
  • "is_used": true,
  • "created_at": "string",
  • "label": "string",
  • "signature": "string",
  • "validated": true
}

Updates a service wallet subaddress

path Parameters
address
required
string

Address of the subaddress data to update

+
Request Body schema: application/json
label
required
string

Responses

Request samples

Content type
application/json
{
  • "label": "string"
}

Response samples

Content type
application/json
{
  • "index": 0,
  • "address": "string",
  • "is_used": true,
  • "created_at": "string",
  • "label": "string",
  • "signature": "string",
  • "validated": true
}

Updates a service wallet subaddress partially

path Parameters
address
required
string

Address of the subaddress data to update partially

+
Request Body schema: application/json
label
required
string

Responses

Request samples

Content type
application/json
{
  • "label": "string"
}

Response samples

Content type
application/json
{
  • "index": 0,
  • "address": "string",
  • "is_used": true,
  • "created_at": "string",
  • "label": "string",
  • "signature": "string",
  • "validated": true
}

Gets the service wallet transactions

query Parameters
limit
number

Number of results to return per page

+
offset
number

The initial index from which to return the results

+

Responses

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "data": [
    ]
}

Gets the service wallet transactions in a file according the format specified

query Parameters
type
required
string
Enum: "csv" "xls"

Output file format

+

Responses

Gets a service wallet transaction

path Parameters
transactionId
required
string

Id of the transaction to get

+

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "amount": "string",
  • "timestamp": "string",
  • "direction": "string",
  • "fee": "string",
  • "confirmations": 0,
  • "destinations": [
    ],
  • "created_at": "string",
  • "memo": "string",
  • "tx_to_self": true,
  • "order": {
    }
}

Sends a service wallet transaction

If the response HTTP Code is 201, the content will be the submitted transaction data. If the response HTTP code is 202 the content will be the pending transaction data.

+
Request Body schema: application/json
required
object (Destination)
priority
required
string

Responses

Request samples

Content type
application/json
{
  • "destination": {
    },
  • "priority": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "string",
  • "updated_at": "string",
  • "wallet_id": "string",
  • "txid": "string",
  • "amount": "string",
  • "timestamp": "string",
  • "direction": "string",
  • "fee": "string",
  • "confirmations": 0,
  • "created_on_platform": true,
  • "tx_to_self": true,
  • "memo": "string",
  • "order_id": "string",
  • "ip_addr": "string",
  • "euro_amount": "string",
  • "destinations": [
    ],
  • "wallet": {
    }
}

Creates a service wallet unsigned transaction

Request Body schema: application/json
required
object (Destination)
priority
required
string

Responses

Request samples

Content type
application/json
{
  • "destination": {
    },
  • "priority": "string"
}

Response samples

Content type
application/json
{
  • "txs_hex": "string"
}

Submits a service wallet transaction

If the response HTTP Code is 201, the content will be the submitted transaction data. If the response HTTP code is 202 the content will be the pending transaction data.

+
Request Body schema: application/json
txs_hex
required
string

Responses

Request samples

Content type
application/json
{
  • "txs_hex": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "string",
  • "updated_at": "string",
  • "wallet_id": "string",
  • "txid": "string",
  • "amount": "string",
  • "timestamp": "string",
  • "direction": "string",
  • "fee": "string",
  • "confirmations": 0,
  • "created_on_platform": true,
  • "tx_to_self": true,
  • "memo": "string",
  • "order_id": "string",
  • "ip_addr": "string",
  • "euro_amount": "string",
  • "destinations": [
    ],
  • "wallet": {
    }
}
+ + + + \ No newline at end of file diff --git a/nest-cli.json b/nest-cli.json index f9aa683..8a708b1 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -3,6 +3,7 @@ "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { - "deleteOutDir": true + "deleteOutDir": true, + "plugins": ["@nestjs/swagger/plugin"] } } diff --git a/package.json b/package.json index b22f08d..5a51860 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "SDK", - "version": "0.0.1", + "version": "0.0.2", "description": "", "author": "", "private": true, @@ -20,7 +20,9 @@ "test:watch": "jest --watch --config ./src/jest-unittests.json -w 1", "test:cov": "jest --coverage --config ./src/jest-unittests.json -w 1", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest-e2e.json", + "compile": "tsc", + "generate:docs": "ts-node src/generateDocs && redoc-cli bundle -o docs/index.html swagger.json && rm swagger.json" }, "dependencies": { "@nestjs/axios": "^2.0.0", @@ -29,7 +31,7 @@ "@nestjs/core": "^9.0.0", "@nestjs/platform-express": "^9.0.0", "@nestjs/swagger": "^6.3.0", - "@rino-wallet/monero-javascript": "0.0.35", + "@rino-wallet/monero-javascript": "0.0.36", "axios": "^1.4.0", "class-transformer": "^0.5.1", "joi": "^17.9.2", @@ -57,6 +59,7 @@ "husky": "^8.0.3", "jest": "29.3.1", "prettier": "^2.3.2", + "redoc-cli": "^0.13.21", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "29.0.3", diff --git a/src/__mock__/http.service.mock.map.ts b/src/__mock__/http.service.mock.map.ts index 8049c26..7826184 100644 --- a/src/__mock__/http.service.mock.map.ts +++ b/src/__mock__/http.service.mock.map.ts @@ -2,7 +2,6 @@ import config from "../config/test.config"; import { accountInfoMock } from "./account.info.mock"; import { walletMock } from "./wallet.mock"; import { taskResponseMock } from "./task.response.mock"; -import { getResponseEntityMock } from "./response.entity.mock"; import { walletActivitiesMock } from "./wallet.activities.mock"; import { walletMembersMock } from "./wallet.members.mock"; import { walletPendingTransfersMock } from "./wallet.pending.transfers.mock"; @@ -27,33 +26,25 @@ export const httpServiceMockMap: Record = { [`GET /wallets/${WALLET_ID}`]: walletMock, - [`GET /wallets/${WALLET_ID}/activity`]: - getResponseEntityMock(walletActivitiesMock), + [`GET /wallets/${WALLET_ID}/activity`]: walletActivitiesMock, - [`GET /wallets/${WALLET_ID}/members`]: - getResponseEntityMock(walletMembersMock), + [`GET /wallets/${WALLET_ID}/members`]: walletMembersMock, - [`GET /wallets/${WALLET_ID}/pending_transfers`]: getResponseEntityMock( - walletPendingTransfersMock, - ), + [`GET /wallets/${WALLET_ID}/pending_transfers`]: walletPendingTransfersMock, [`GET /wallets/${WALLET_ID}/pending_transfers/${PENDING_TRANSFER_ID}`]: - walletPendingTransfersMock.find((item) => item.id === PENDING_TRANSFER_ID), + walletPendingTransfersMock.results.find( + (item) => item.id === PENDING_TRANSFER_ID, + ), - [`GET /wallets/${WALLET_ID}/removed_spenders`]: getResponseEntityMock( - walletRemovedSpendersMock, - ), + [`GET /wallets/${WALLET_ID}/removed_spenders`]: walletRemovedSpendersMock, - [`GET /wallets/${WALLET_ID}/subaddresses`]: getResponseEntityMock( - walletSubaddressesMock, - ), + [`GET /wallets/${WALLET_ID}/subaddresses`]: walletSubaddressesMock, - [`GET /wallets/${WALLET_ID}/transactions`]: getResponseEntityMock( - walletTransactionsMock, - ), + [`GET /wallets/${WALLET_ID}/transactions`]: walletTransactionsMock, [`GET /wallets/${WALLET_ID}/transactions/${TRANSACTION_ID}`]: - walletTransactionsMock.find((item) => item.id === TRANSACTION_ID), + walletTransactionsMock.results.find((item) => item.id === TRANSACTION_ID), [`GET /tasks/${TASK_ID}`]: taskResponseMock, diff --git a/src/__mock__/http.service.mock.ts b/src/__mock__/http.service.mock.ts index a7d6623..21651db 100644 --- a/src/__mock__/http.service.mock.ts +++ b/src/__mock__/http.service.mock.ts @@ -63,11 +63,17 @@ const createHttpString = ( ) => { let query = ""; if (config && config.params) { - query = - "?" + - Object.entries(config.params) - .map((entry) => entry.join("=")) - .join("&"); + const entries = Object.entries(config.params).filter( + ([_, value]) => !!value, + ); + + if (entries && entries.length > 0) { + query = + "?" + + Object.entries(config.params) + .map((entry) => entry.join("=")) + .join("&"); + } } return `${method} ${url}${query}`; }; diff --git a/src/__mock__/index.ts b/src/__mock__/index.ts index 37a7674..a234c03 100644 --- a/src/__mock__/index.ts +++ b/src/__mock__/index.ts @@ -1,7 +1,6 @@ export * from "./account.info.mock"; export * from "./http.service.mock"; export * from "./monero.service.mock"; -export * from "./response.entity.mock"; export * from "./rino.service.mock"; export * from "./task.response.mock"; export * from "./wallet.mock"; diff --git a/src/__mock__/monero.wallet.mock.ts b/src/__mock__/monero.wallet.mock.ts index 835d619..851db5f 100644 --- a/src/__mock__/monero.wallet.mock.ts +++ b/src/__mock__/monero.wallet.mock.ts @@ -32,7 +32,7 @@ const createMockMoneroSubaddresses = ( unlockedBalance: new Uint8Array(0), numUnspentOutputs: 0, numBlocksToUnlock: 0, - address: walletSubaddressesMock[0].address, + address: walletSubaddressesMock.results[0].address, label: undefined, isUsed: false, }, diff --git a/src/__mock__/response.entity.mock.ts b/src/__mock__/response.entity.mock.ts deleted file mode 100644 index 9ba9b80..0000000 --- a/src/__mock__/response.entity.mock.ts +++ /dev/null @@ -1,8 +0,0 @@ -export const getResponseEntityMock = (data: Array) => { - return { - count: data.length, - next: "", - previous: "", - results: data, - }; -}; diff --git a/src/__mock__/rino.service.mock.ts b/src/__mock__/rino.service.mock.ts index 175f1ca..80e89ce 100644 --- a/src/__mock__/rino.service.mock.ts +++ b/src/__mock__/rino.service.mock.ts @@ -38,26 +38,29 @@ export const rinoServiceMock = createMock({ getWalletPendingTransfers: jest.fn(() => of(walletPendingTransfersMock)), getWalletPendingTransfer: jest.fn(() => of( - walletPendingTransfersMock.find( + walletPendingTransfersMock.results.find( (item) => item.id === PENDING_TRANSFER_ID, ), ), ), getWalletSubaddresses: jest.fn(() => of(walletSubaddressesMock)), - createWalletSubaddress: jest.fn(() => of(walletSubaddressesMock[0])), + getWalletSubaddress: jest.fn(() => of(walletSubaddressesMock.results[0])), + createWalletSubaddress: jest.fn(() => of(walletSubaddressesMock.results[0])), updateWalletSubaddress: jest.fn(() => - of(walletSubaddressesMock.find((item) => item.address === ADDRESS)), + of(walletSubaddressesMock.results.find((item) => item.address === ADDRESS)), ), partialUpdateWalletSubaddress: jest.fn(() => - of(walletSubaddressesMock.find((item) => item.address === ADDRESS)), + of(walletSubaddressesMock.results.find((item) => item.address === ADDRESS)), ), getWalletTransactions: jest.fn(() => of(walletTransactionsMock)), getWalletTransaction: jest.fn(() => - of(walletTransactionsMock.find((item) => item.id === TRANSACTION_ID)), + of( + walletTransactionsMock.results.find((item) => item.id === TRANSACTION_ID), + ), ), createWalletUnsignedTransaction: jest.fn(() => of("task_id")), submitWalletTransaction: jest.fn(() => of("task_id")), - signWalletSubaddress: jest.fn(() => of(walletSubaddressesMock[0])), + signWalletSubaddress: jest.fn(() => of(walletSubaddressesMock.results[0])), exportTransactions: jest.fn((type) => { let file; diff --git a/src/__mock__/task.response.mock.ts b/src/__mock__/task.response.mock.ts index 9e174cf..65a9195 100644 --- a/src/__mock__/task.response.mock.ts +++ b/src/__mock__/task.response.mock.ts @@ -1,7 +1,7 @@ import { TaskResponseCreateTxResult, TaskResponseEntity, - TaskResponseSubmitTxResult, + WalletTransactionSubmitResultResponse, } from "../entities"; export const taskResponseMock: TaskResponseEntity = { @@ -26,9 +26,10 @@ export const taskResponseCreateTxResultMock: TaskResponseCreateTxResult = { multisig_hex: "string", }; -export const taskResponseSubmitTxResultMock: TaskResponseSubmitTxResult = { +export const submitResultMock: WalletTransactionSubmitResultResponse = { created_at: "string", updated_at: "string", + wallet_id: "string", txid: "string", amount: "string", timestamp: "string", @@ -42,5 +43,17 @@ export const taskResponseSubmitTxResultMock: TaskResponseSubmitTxResult = { ip_addr: "string", euro_amount: "string", destinations: [], - wallet: "wallet", + wallet: { + created_at: "string", + updated_at: "string", + id: "string", + balance: "string", + unlocked_balance: "string", + creation_height: 0, + height: "string", + last_interaction_at: "string", + last_sync_at: "string", + address: "string", + status: "string", + }, }; diff --git a/src/__mock__/wallet.activities.mock.ts b/src/__mock__/wallet.activities.mock.ts index 8ff7ca0..9783f07 100644 --- a/src/__mock__/wallet.activities.mock.ts +++ b/src/__mock__/wallet.activities.mock.ts @@ -1,202 +1,208 @@ import { WalletActivityEntity } from "../entities"; +import { Page } from "../types"; -export const walletActivitiesMock: WalletActivityEntity[] = [ - { - id: "03eb3fb1-6e3a-4bfe-b1c2-5ef9799c2fbd", - timestamp: "2023-05-08T19:10:39.767063Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "bf3c38a8-d424-4d99-b581-9f296dc17240", - timestamp: "2023-05-09T08:04:41.404006Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.sharerequest.sent", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "ee44a0d4-2c12-4500-bffb-75ecc5122b35", - timestamp: "2023-05-09T08:04:54.049161Z", - author: "ronye+4@cryptosphere-systems.com", - action: "wallet.sharerequest.accepted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "cb4539cd-5e9d-4e66-b117-69a09c84f29a", - timestamp: "2023-05-09T08:05:10.850255Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.membership.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "3c1e18d5-5b7b-4bed-a63f-f8527106b337", - timestamp: "2023-05-09T08:05:20.146709Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.updated", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "e73388d8-dd37-4fcd-bac3-aef638f72369", - timestamp: "2023-05-09T09:39:53.528665Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "5fab99d8-cdb5-4e18-9918-e0b193a3a0d0", - timestamp: "2023-05-09T09:43:41.722869Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.submitted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "138575b7-1360-4da4-b9ba-09ce7639b396", - timestamp: "2023-05-16T14:39:17.724674Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "08c18ea1-e9aa-4e3a-99a7-7e3bdda86b23", - timestamp: "2023-05-19T15:34:28.398605Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "e5f10114-b75b-416e-a075-65dd7fb7438f", - timestamp: "2023-05-19T15:45:38.897349Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.pending_transfer.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "ccec52bf-698d-4adb-97d6-5e72fd2b6109", - timestamp: "2023-05-19T15:49:54.611918Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.updated", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "1cdaf680-fa31-4674-b7c4-60ff26232806", - timestamp: "2023-05-19T15:50:04.125107Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.pending_transfer.canceled", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "2be91341-0a49-4490-9490-96c96f3f643c", - timestamp: "2023-05-19T15:50:47.036319Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "b77cd4df-d4b4-442b-a331-abc90266c74a", - timestamp: "2023-05-19T15:51:32.945344Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.submitted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "c9e1889e-51f9-495b-af04-5d25ccfc72a8", - timestamp: "2023-05-22T05:48:01.236190Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "7b27c630-423a-4afd-87ef-c1c7fbb932f5", - timestamp: "2023-05-22T05:48:38.715838Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.submitted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "2a973f89-4ec5-4b95-99a8-d2bc02602bfa", - timestamp: "2023-05-22T08:18:37.382543Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "f83bc368-c711-4448-a112-3ee7685416b3", - timestamp: "2023-05-22T08:21:05.620151Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.submitted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", - }, - { - id: "3c1f5b7e-0488-413e-852a-fb60557b9796", - timestamp: "2023-05-22T15:36:23.927521Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.created", - ip_address: "10.127.255.11", - country_code: "", - user_agent: "axios/1.4.0", - }, - { - id: "d427b0f5-0a7f-4427-95a3-a47e326fc627", - timestamp: "2023-05-22T15:36:31.999301Z", - author: "ronye+3@cryptosphere-systems.com", - action: "wallet.transaction.submitted", - ip_address: "10.127.255.11", - country_code: "", - user_agent: "axios/1.4.0", - }, -]; +export const walletActivitiesMock: Page = { + count: 20, + next: "", + previous: "", + results: [ + { + id: "03eb3fb1-6e3a-4bfe-b1c2-5ef9799c2fbd", + timestamp: "2023-05-08T19:10:39.767063Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "bf3c38a8-d424-4d99-b581-9f296dc17240", + timestamp: "2023-05-09T08:04:41.404006Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.sharerequest.sent", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "ee44a0d4-2c12-4500-bffb-75ecc5122b35", + timestamp: "2023-05-09T08:04:54.049161Z", + author: "ronye+4@cryptosphere-systems.com", + action: "wallet.sharerequest.accepted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "cb4539cd-5e9d-4e66-b117-69a09c84f29a", + timestamp: "2023-05-09T08:05:10.850255Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.membership.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "3c1e18d5-5b7b-4bed-a63f-f8527106b337", + timestamp: "2023-05-09T08:05:20.146709Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.updated", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "e73388d8-dd37-4fcd-bac3-aef638f72369", + timestamp: "2023-05-09T09:39:53.528665Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "5fab99d8-cdb5-4e18-9918-e0b193a3a0d0", + timestamp: "2023-05-09T09:43:41.722869Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.submitted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "138575b7-1360-4da4-b9ba-09ce7639b396", + timestamp: "2023-05-16T14:39:17.724674Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "08c18ea1-e9aa-4e3a-99a7-7e3bdda86b23", + timestamp: "2023-05-19T15:34:28.398605Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "e5f10114-b75b-416e-a075-65dd7fb7438f", + timestamp: "2023-05-19T15:45:38.897349Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.pending_transfer.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "ccec52bf-698d-4adb-97d6-5e72fd2b6109", + timestamp: "2023-05-19T15:49:54.611918Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.updated", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "1cdaf680-fa31-4674-b7c4-60ff26232806", + timestamp: "2023-05-19T15:50:04.125107Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.pending_transfer.canceled", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "2be91341-0a49-4490-9490-96c96f3f643c", + timestamp: "2023-05-19T15:50:47.036319Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "b77cd4df-d4b4-442b-a331-abc90266c74a", + timestamp: "2023-05-19T15:51:32.945344Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.submitted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "c9e1889e-51f9-495b-af04-5d25ccfc72a8", + timestamp: "2023-05-22T05:48:01.236190Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "7b27c630-423a-4afd-87ef-c1c7fbb932f5", + timestamp: "2023-05-22T05:48:38.715838Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.submitted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "2a973f89-4ec5-4b95-99a8-d2bc02602bfa", + timestamp: "2023-05-22T08:18:37.382543Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "f83bc368-c711-4448-a112-3ee7685416b3", + timestamp: "2023-05-22T08:21:05.620151Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.submitted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36", + }, + { + id: "3c1f5b7e-0488-413e-852a-fb60557b9796", + timestamp: "2023-05-22T15:36:23.927521Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.created", + ip_address: "10.127.255.11", + country_code: "", + user_agent: "axios/1.4.0", + }, + { + id: "d427b0f5-0a7f-4427-95a3-a47e326fc627", + timestamp: "2023-05-22T15:36:31.999301Z", + author: "ronye+3@cryptosphere-systems.com", + action: "wallet.transaction.submitted", + ip_address: "10.127.255.11", + country_code: "", + user_agent: "axios/1.4.0", + }, + ], +}; diff --git a/src/__mock__/wallet.members.mock.ts b/src/__mock__/wallet.members.mock.ts index a02cd3f..58830b2 100644 --- a/src/__mock__/wallet.members.mock.ts +++ b/src/__mock__/wallet.members.mock.ts @@ -1,30 +1,36 @@ import { WalletMemberEntity } from "../entities"; +import { Page } from "../types"; -export const walletMembersMock: WalletMemberEntity[] = [ - { - id: "91c7f0ba-eae4-40ab-bf46-ceae7ab3850b", - access_level: "Owner", - created_at: "2023-05-08T19:08:28.302387Z", - user: { - email: "ronye+3@cryptosphere-systems.com", - name: " ", +export const walletMembersMock: Page = { + count: 2, + next: "", + previous: "", + results: [ + { + id: "91c7f0ba-eae4-40ab-bf46-ceae7ab3850b", + access_level: "Owner", + created_at: "2023-05-08T19:08:28.302387Z", + user: { + email: "ronye+3@cryptosphere-systems.com", + name: " ", + }, + wallet: { + id: "57de9693-cda3-4248-9841-85fd23ee0748", + name: "Enterprise Main", + }, }, - wallet: { - id: "57de9693-cda3-4248-9841-85fd23ee0748", - name: "Enterprise Main", + { + id: "e6c97ae9-6546-44c4-97e4-b6c57cde8cfe", + access_level: "Approver", + created_at: "2023-05-09T08:05:10.844166Z", + user: { + email: "ronye+4@cryptosphere-systems.com", + name: " ", + }, + wallet: { + id: "57de9693-cda3-4248-9841-85fd23ee0748", + name: "Enterprise Main", + }, }, - }, - { - id: "e6c97ae9-6546-44c4-97e4-b6c57cde8cfe", - access_level: "Approver", - created_at: "2023-05-09T08:05:10.844166Z", - user: { - email: "ronye+4@cryptosphere-systems.com", - name: " ", - }, - wallet: { - id: "57de9693-cda3-4248-9841-85fd23ee0748", - name: "Enterprise Main", - }, - }, -]; + ], +}; diff --git a/src/__mock__/wallet.pending.transfers.mock.ts b/src/__mock__/wallet.pending.transfers.mock.ts index e9b6165..d8791b3 100644 --- a/src/__mock__/wallet.pending.transfers.mock.ts +++ b/src/__mock__/wallet.pending.transfers.mock.ts @@ -1,43 +1,49 @@ import { WalletPendingTransferEntity } from "../entities"; +import { Page } from "../types"; -export const walletPendingTransfersMock: WalletPendingTransferEntity[] = [ - { - id: "pending_transfer_id_0", - status: 20, - creator: "ronye+3@cryptosphere-systems.com", - rejected_by: null, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - amount: 500000000000, - memo: "", - min_approvals: 1, - signed_multisig_tx: - "4d6f6e65726f206d756c746973696720756e7369676e65642074782073657401014f3f1bb2b0f47f76aa8e2234cc8b5c96f03ebaaff19baad54c4266c54162ba9cee2a8fa17a46a2159f840989709f7ac95eb4c682bf8a446d28ce294973e0d082853f531c7c26f09a3fda6397561f8d10f60f49890d0b9212ffaffb72cd1d4432bc52ff7fc3f33529a9ca50a33fe139c8f711b6ecfea9a9e7e23e8c77f07ca3e87741d28cae50e45e496590d948bd340f475ef985df9ad98b9f8e33c23c9c750e01798570b0bd08e55aed3bf0a29c7e7370c2864a716a2d5786eb5dcccef0af2e40d94f1c6a198baebb4feed4be4f313aba99aaf24375afad0aaff3faf11e564ebf85713c99c0b1cb97e8d492451a66c14ab086f6e159f0927160d5aa8b45992ce582d12ea32abdb7d17831f7cccc0e226d3472a5ac9b30f91368a578073dbdefc268ab9a562b29c14c3e707ce61c4b21d991b477551802c60c526708b93bccf1aef3270ba3ab59ed80f953a46dfdfa0c7fd17a48961e9ab708821ee6efb08f6b87a5e9c92b195a3f1428e064792fee3d967e8f637d550563c829d458e5703f9b1ede628ef5405aab76e7c25fa1ed06e1f294c24059b70ef3cf6b6f091b875aaa0a5df16f02a6ab3eda7afb5204266f4e28eff23845b4689ee0cc8b2a95a12cdd65426231571c7cfcea0f2f6e2eaa4f8a67e20a825767ccee78e53ecb4661ae956997fc294dc94822cf09225db1fda109f394b48e6b6d431a7fc277ecb85cc5b21e1a9069b246f9b1dd5187e1466d5703b88a009ab568c05b65ab2ffe44cb13ee9b2c93122201889d1a4e726ddf4809fbecf5ad8d89776fe4fdf5023a9a7df391dcbcc3e65b9b85cb63e4a57b7aac2e60051edcdab442be24452548e44e1b685a16bc1cdfd9b2568993a7560bf50849d51acea0654433d4788b3816e9e1abc8b0908e5352922c03383533bd608dc86c1a2802ac5cd83d2958f00a470cd239e1e2aa7527affd5c2553d20aee4f0bc6a5a0b5ecc4c1051fa653d276b812af6b578589b210f86172311ec806f0842b62d8fead3e279cb90f2549ecb820135fd4fffc6feb570edf8da00cceac3a47da7527758c137f67e29832d566658fa6fe1c84f929256ac30d00a1b5f4e04b4775eccd5afb25b7eb506593fd0176ca708a425502bb5a60d545907e36fd8c96c6bef74851c5c9aac4ff65754126852ef300e8bb09c6997225934f0b921839aed044c0cc7f3794434a296893ee7a193e9683c9593bd69537ddf608a9b1310c545ebb11904f2a943290644d74e27f758e6323fce4530599d993d567a60ca5b6e61a3f9b153a1db6ad2ce1e86201ff317f3dba488f543d35fb3473c3b537b6783f719bc40780dd6cc26457bf8d0f115dc9399db9f0ae9dc3d36221e881e0a647220448cfbe07894f4723c86ea6a79f499009282a648c5e7604a3382842a78d9089c9fe37c6fe5aef5fbbd0671079276546066ff0f6b46d7f17038a142dd2ac0f7cfb050482b11ba1367e2f44dfdb31b951b111401c85b2cd851468b3068ae1c15e61d2ca1f1f659b1190f3874c3ae7c188a02f386e5305361c69e29437af6028fb0cd3e9b63f1974bcca2ae29c90f6b783457bf6e8e1ff4f1e03787fd152fe4c7b9593126de16697a34eb40a3251060a3886d6758bbf289379d288da4a27691d3ae49c43ede2ed153a09f6936513c4616b20b0275c6b1080c9a08e6e31129fbc4120f68c12c035f77016c657e8a95c5d6e623b4c665dd3ce4b718ebdae13c771db7921e6b5c6f26daa4c3919f977786a333a6b79ca45c0f2fe123854cb346877aaa75e4c248bfc4334218edbe2938d32e3fa36ef8b69b90d5f002b5f88fe70f5f13ed613c4ceddfc96ad56efff08dca7f24a2433ef9989138b70c5df11168a99003ed9b4cbac68988053ae760ae4c5a8d7dbac5c02cfd5f9477b1c7adcdd532ea169184d88ea10c0c0a6479cf4db481d52735fb73d2177d74796efffbfc925c6aae4c150883e9f67ddd7d10a312644949ed20c3166431cc309ce3a7f31920fc63239ffdf119b2b1cd57e5fe1541d132508686272374aff510363b1a602da39db2c4f6d4f9df6ae27693071e83046eddb01cc3f37afd58a8f02cfe909bd5d033bb4e4177b3a1287c67576cd86955968c1a150428c97375fe3ea90b848d7f45e119b814a9c799f51744ab7512c064c999ed4760b5209afca7fe714467d83e04f655c7edf72cd0b333c55370e529075b02a26e8b97f855c9973a19cba25743d3be64e23cc3d2cc17f744f44a413144302ed386d944d9739486f7aebe68d9f48dc67a962f08787dfd45b9af21a8e94dcb2406204e9bbfc6c1b3eaca170294412c08ba279cad53a45c45f6a3a6ef56d2d6312990744ce690d49d3075b3f2b64c956083398612f0987af2be5b0ec521fb60d97efd3ec38caef2be5dc52edc619b3c3bcd634564c9bf38d869065cc71b742c7cd8d8b7b003dd71234810d05217bb20acfec87fe9c365ca64efd1a3c028e31429e5af992149e5384471ec3dc6f3cf4ba61a5234cfb112a949fea34e92552e30edce92f5847c9c9cb43a478593d8859c6ab33e92a2490cfa5b2f186fd8950385b3735692f59b858498af229e47649811f9bd40a60bdb071dc275780feb604802278e479f47c0821cd8562801fc2024120205fa1363384d692a3c8bfaef7cd644e8d555e99e470299c44f69bba2408eab5e116da10a62935f6d8ebb276baf3a7e4da0e20642c816a59d868e68fdb65548959ee4e537d86301ebf05a28417f86847c100b335b62eeba4d794a00214728eb0cb8913cf8917e431e570ebd745737540c645182974ec45cae39176eddccd320db37c49159a0559c5c4299107d944af1dd4e32769beab5bcb772213e9cb31c0b2d2e64206e81c1f6180fd0d5d59470077629cfd77017356e5d8c59d46914848630ecf179e669f9aa309101ee9e3a2046b213d5ec56dcb524fb1ebe1ea5f09afb1a45e5d93df28ba4fd3e7604c138dd71824b8afe8427bfc84b31862460571121d6928cb84853ddb698da949555587c6e4bccb60322bc8232601e864759be7fb0bf96606f7b05b245d373845c0483255da0837383395e500346a750e169db540bb515ad954930c4e70b58180ec41f040853ad4fe5140f2ce16eca58132b6a6f58e814c9e2fe747b5fc179ed51bf44bbaf63c62ae0658a1c7ce31a4417e61ca2a59ae8dfe4b7c9ca4d10f8127b2cc1fed1f077dc7d7911fdc63bb5ffa1e240e62827e0c3510869ed46b883774a682dfeb457a16eac2673c742898863d11682efbfdd6c3a94b30b7eda666062c60e8fae18d6376fe9e25f78a4241f3972a6199d2dace71f84dd88b7155ffb3827c297e44b58a84e957af5a0bea2fcbab1e83a2ffe544468b5d03fab74a197c4a1124aa3bbd9cf2beedce15de066ff81f9539a7179de960f3a28d61e6bcc1aba58982605b4af6e1c9a3eb0419703bf74158203e5de0e6248884aebc74f87fba22b2e0b4ada6319cd48c1713dc879cb0d265f49fd5a82925cc69d381099a362fd8b799966938ce6f04a071e91563cddd3f7a52505422ec8b60d5415e5d8822bff4f393df12a522b6a3cc4deaab40b46a41810c334bade3c13964ed8c6bc1e701124b6d0436711a8720db0bf02787b9aeec5d2d3abf916a20febb6afcfde6d735d60ef5ccc00fcfd0fa341e2c593eb967952b9f7453d9cc03866c5a6c7b390fa655e75fc65cd1ade4b26ec71f4bc2bbb6bb32c46e73d6998ef0d4158f77698ed0c7e3d2cf77c0ea9901559133f5623ef06f65343603940b72a0b58cf37408cdcbae2a2d79f076df8a8579d43204e1c2c30aba3f6a34f6e2b7adff9e88ef32406f66649f9335f033b936d4a7ef3ce03b4f644b7ea45d058b258c6f0ca9b40e693896dd9d4202d28919a8cbb1d7575c9fe3e6e11a3062daa739e911fd6f4fd2ab5c8d4a9836810d96b6c5462bf2dc229e2ccee6eee9e5d95fc8db05fdc64a11bb8368eeaf1401652208dc030585f47a20d1518940d6b8add292b91a10fbb2d53150177b04bc82fb3155853589da073f8f51d04391505ee53401bfac2a65dc1affb443d02ab43902675a9c349331664dd836212a819a94e88c20676137aa2e13fa5577ada681699be423394740f9d71221f7d4a084169f7fab4d94b8d32342e161973e020fb319a25be773ecef85a00fb311f3f8f88ebf805efc6b3b61ba7b364b9c020111139fbcad50749e13b460f276a51137e5fbb0d8450bbadb85ac25301428a29c39bf4e7ac8a27903a870b04655734e85c7e96c9333bd1cd5579f55d63bbc046fdd888852ab23ab5fd01baee4f72d0bc6393440cb8d18ab5d0677b6696b0077ee49f48f536b7fd54eb84fe3e18f5f342efcb09848dbef173834b598be394dcffd729a5b457f63a128d9ed5627529babc93c34c542f19e25107c890813dd179792d34bcb55b7a2bbbee1088c4446e30fbfc228aab814d6bb1371f6efa97a141df3365b79ddcec3f55386a17d54d8958e7d86d2d72dd56b17c4d472ed95fce83137b5b5de868bcee0e7e60e405f452aa9f69235651f2c6034196dd89219a480e4fc51267b981a8347235e43121ad28cfb0c2e09348bb92f04cdd9fdc7cf4355966a7b57eef020b77a1b3fef8924cdefecb789bfcc975a91fd053668d4f08cdf1dd0ecbcfc573152cea40e2fc04b7986bb6ce631ba92ff22572e0b877a8f6b9e4f705b8042ae8a39f3d30c94782eb6ff6bd1dc9a6a3519d7296b61e57c94494467aa914c77211c089811fba275c75068ad97ee8ffe2ead329bf569640ec7e5151977d888806ddd1454613554da3555241ac879d6d7033968eecd7dd883bc22b20860a00aa21eb9fa6f715a6c7c6fc3fc9b0b0e27dc81dc2b6c3de248fd99886d7f746353efe7445fbbf63ba2c2f3f8e8c5316c1560457c11d0e992bb01f30f23f5056a32d111e3340444d7abc4c945a1a43e94045515331a7b2dfb267385cfdf8b8e639ec2586204876449bb6a47e111949cc2d547953ec3bbe581700d5ae6658b0ca4da50637493509bef956edb07f35bcf21e4bd5bfb3073b7cb26928f29390502be93bad3761302c9b7d8c4b545a4fb4094e8cb5a0727f9d601dbe3014486b7319eaa95d4ce39841d8c020da150580826ed036de79101f352d3977051a50d1fdfb6d7dcb57155274c5b40f67edd28f02d56699946d2b5cfd3402ea732a348fba49bf661c6cf1c660e04911b9e09e6df4c1857baaef63f38288572e767af6d26b816a06bace6f663000b11c8809ce1f9896c50cc5e1e394607cbaf42ea418005a4361284764ffacb7292343858f858d88dfc59554bbf33d2df5ba97c7572e0ca3950854ae0773580e970ecfd83c7cc67641560e277576f91b8bf10cc55bd23c3ea8c9d958b406c2c5938c84506ebaec4a79f01a04137a05fb42b053ccec430aaef91ab7408ca5887ce820fcb17c12a89f89adb4a0b21feaf6836d8807c3b050ee5b9392709813033cd747672af8f1703a9f9a3322087cd1929b0cec8a4cee14a9f0fe909711a953c26524f9d3887759b727bf9c6b17c937f87162094b864467c1cb8d2eb623f6e3a866c0317506841504d8d73d06e3652c6050ff5226333e60b3d7df0d68ff0e557b6289ae615c4be74fa83fdb87de97b7398c9bd0163f5df4b4fef7c3c3091fccb4c17983b839a36be3811e53f1b991c44926c172c5fe5045c06e5eb0c4f54579f6b4bae5ae2a7a2ad0a727b4f3cb5fa64e2270b5f929f8e44104c8cd412c2758fc0df6fdb3c3b6d0bb69d2c7f1f1a44b250fef5d179669b62e08054bdb3da56878f086c08c05314acc94fabcb9a2f3ef692aa978a9ed1c09dc5d8e22ef9a4e15ae5753ea23374a5e8b4441504c115020a2a5ee490c5c7d7f23571d4f33075d5951fc5c8f0a07e0ada3ab02ce3a316d42f505f1aaf2bc197bc33ac0d3790b303f792de46a4eedc91dcae4f09aa4a9121988e31754586e999f4e224bb775333c1629233593365e88624f90d71fb946371f133fe695f9bab75cf61a24006a1a1d041b91c04eb32a6097d591f415e591b9db68d9ab1950cf3268794fee2fdc6be069de4137f07499578a0832abd112f1f7abf538469dc258004a1fea09624e066916960b096b2db8e40661395720c1f8017dfee21139f0be2ad8f15fd3c48e3ff1c553125adb66dee7195e87ee8abf977ae8c79947a21391c6f7bd052a969da5c5b817e6afffa2bf51866bdf172bc4f89bbbd344abf6e4f9a0cc89dc2d54746e2b995f1077900c5c16000135764b89e6ef11873618e1a1b6092170b2a606bc7cc7c752bcf6d419200a3c4ba81170b4037dcfe4f4a59fc689b404dd0a9f5f96eed4175ce9ae3bd559d9bd297d3b48e8a62d0b94d2e93c803193372c72e43bd43dfa205dfc89985cefb64626bf12e93938c3fd54351e67111b11dc22e9155be72d5122151afd65a2b4fcba41af77e541a089ec717bcc39119e75cf6193b0f0bcfe6a8c4f1c68eccf859a77d765ab67c57c57ecf3f043edfbde54c7a94d17e10f462fd3034154f87b240545ebcf797a69043467a3806d33c1af198345eecdd189e8d24552263c8c9f3fbfb926f852f8d1656d925e95a5610131cc4591181d714dbfcd5848f5b3f9797b74e51aef4f0c4389c46e66b6e96cef508f6dbabc36fcc68546b4447cb6829b7419bb7acfc72e25e9cc6ca6338141c0943d0d8274944b91cb6ad82e3c6da436182157631bf9607c8f9e44b124a9e308f8274cadcb6483d3760d139af4fa415ccf6bc236829255669883731a86bfe5ff3084bdbdc91056818b9ea8db0c90d3a9cee3c124989ab0e062d486c0799b9cd1f15fc6c3a6a994f71b01bbf2bde702bb9cfe23c497cc1cb1f69f555c923432c020fdeea54d669e914299778d16ec55420d3ac7492ac2243d03ff61b72ccd1c8414e5facb90f3e8b3dce469854e69753987cfc6d1fe68f09bd4b9f68094e5d7fd4e5f1be140fd351989218feb94e5ded7c72e023e2cdf6cec17265ace87efe059bf9c75c722b68a83a0cf099a9a91535edb328d787fd3fca70db54d8ec8d49e09cac103aab9e2e5ef356fe60002d6e41f7012db3a5204aa08d7444b17718a35536854f16d31a700b147f065e258331e1a516d83c07e2ff92b9dfd0ee78c33db04d123e963eb14ebe2cd9326899c7590ee754b9bab188db922186629ceb80dd54e7df809148cfbeb5fff21103794ca5e36f78173ec86544d716e4d963561d10b38a357bd9c5beb8f85ece80b9b129ef6c61946b192e3f970e99d4e7c983a28ad993697971dd1a8594058b843f6280a767c1856a1bd16930999319750d3187029dd8f621b5782f6c9b6c07a70662430aa1ef6f17a799574920f16f802d159986f1c7aa85e234363c1d1a30d6eb3e0ff70d7b270ff5032bad3c326f02738c3ea64231129dbc9c44c0f0f2cfd97c92fb6cfec02f9e4c77d35372a27959cbdd131d6ee8f3794c1c7cecac9e40492dec50a6472f8da0f3570be1f258659155c0f7fd4ec61fc9cedefef58818d9a43fec6f1385b6c62ee0a482124de850aa673b132f27f45415ad7e74ef1a45b5ea266411f3c167e3b691cbd9e9a5ff0bad7dee0d78b17cb9091cecf30792d08e5b7863ad566c7d51839de4c6d9cabbe29550e147c33c8e9420b02fbae820cfbe222c1a6118f5a016406aef9988d9f612bedb7f388b6f9db43950ea49b3b97133d905eeedf02126f497ee507cc101858130ce6e91aa773586b821ea7ec1d5a0555d07", - approvals: [], - created_at: "2023-05-19T15:45:38.888681Z", - updated_at: "2023-05-19T15:50:04.116535Z", - submitted_at: null, - }, - { - id: "pending_transfer_id_1", - status: 50, - creator: "ronye+3@cryptosphere-systems.com", - rejected_by: null, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - amount: 500000000000, - memo: "TEST", - min_approvals: 1, - signed_multisig_tx: - "4d6f6e65726f206d756c746973696720756e7369676e6564207478207365740184086ffa130621f06f5500fe220300982b08ccb3755c1fa0acff8302dad1f1e7d8764b7f0e62ba802098feef26e81d868a19e7616dd009455f500fc63fae5357c19843da054967e5a2d339cbd687c44e9ad2fa2cacb75f090eaa29265792728c5c2f0f639e85c691c808906b028d3f5edf9223d2537ce183e10978ab26613d185f47557381500fd6204b5f1f1e2415a8ac6cedaccfe8c389fb46b7dc3126a305e9c0bdcb5c0e0433081859fb5cc7d06313f4b9104240e83a1a13568b1d18c019825ef3b159382ec3c07348ead94d8ed6dc75787202e62d2e879df585e5ba862cc554cc0ce6675aa7fb81609d1e1fba1cca1cd1d86616cfcebb9c51a7f28e0be3605f2a172d240765e2333661f80aa0bb2d1eadc5c9a818ee61abfaf570cc0445f2321e6f0d43b7dc572840922be70834893330a12f43f518e7b101128c002841a512062b15dee995f608b962676c626e1e3af9454dfa1a260bc4bdffa19b133913d90b329af2d0f2a1be5356386f877dc876f9a54ec40012c733c6d464498f2c3d3c645b74f4fc3db3d8759fc54905fb2aaefdf118349b02694fd07778f422fb266f1d0fcd8a0a0fcd6a0f784149a04e05dbfc46eada561cb65f6dfe0b2f5a22cea6e7e38a9e52e7077a26cc34d4a63ce4c4d9d87c0ccd1b00a642196772eec627f1a08c45c409d88d83d641be562db74d011014ff16c300462906f413e96191026f2979397486043f0b158ac98375b6585f17d6e7a8ae0335e61c6e7b1c48a8b08363beaf14c15622ea80da1a4d2cf57b981ec1b6d02631cb5bb773eca11153c616025a6228fb955c892601725dba792ffbf53a694ffb8996084a16fe0f36070f6fcd26c1ad72c43c11a09670be6e50e9532995e7125516dab01876ed65cceb1f121d1afdb1b8847b318c89ef293e11ad32c8e93287790737f281299a9530c61b9eb4fd100769f3dacb3b62cd0837e583198bf2ef779680ea8dfb50ed4e25cd92e19d18c22405392c959cbb9df53285ba1534815a9b2623fa9fce83a4554aeaac04a3bde044ada7dd1a523d06e344d0af8573e3e625fe5ca0573e2849abf26f217e7ef84e5db7d044c213eab3f68af47139908d12374d653d8495882e32185a3dec3d03a4eb5227da3d027b22c5ac62d43d488ba848c824f23c0cde5761d4d99fef104f4de1a96d783cc1ab838ac6fd3028eddfee48b66e2505d911fcaeb1e46e2ccb86659642eadf0f7b8641e1db405c8381e33533c4270d16bc728f566433f713ab70667ba43903ea1604dca83275389beb3236aae0cc271ca1da560fcbca8247534031a4a3f4114a53134e27dbf2a595b94ad656bd6d6339019dff401794ef40f0456eb00d1e4a8b3d3d61cc18f828eb70d5dc309635417d2f705188fcd4bd941f76d7844f450204fd06919cd725864c6b60a3d8e79a9b3e42ede50745c814fdd3a30cdec6ec19e574ae9ac9c6a04faa23949c9ce35019b2ac6ef279b0f63b9d8dc7249755f3252c728d3e4a4c7ae0290c9f64633c5fddc0c84d41bc822de07a6b2fa5495c1f1a46faa3b2f564932bbd11d85dbfc0384c3b735753fec3bc0a218cf4e3dc850d10fe1e5ee2394977dbd10085f4a64db588ed96a34442698ae652867e8d76354a02b49ffd9f63c3be6c638dc5836a886e478a15805082efb442e5418e30204834755a94f0b82e331b663ad659300f07a75288fa3efb7a0cb0982a2b561b7571eeb8fe777ee88b6c8938af5ed68c33209bd51cf54a8bd301d60c6799f318d667da9f4f6ac7390ce7634b68113cc87809879ce09482d7a3a61dfad0fdbef8f46dfa1b1665ac5c3bbf608860b96aa959e7d54da03846bc6523abf1de439be67318d3b577a03d330d0cb696cf9a909bf7977ae63743a768ed3a1a1f4a3799b8ba05e29ce0a58947b1fb282ba3fe7e8897da43a5cfab48daac8ef76f22a96ad3153a357142e5ec0effa8f8153fca6dbfc0dfc4c7cac45114ad96bc34329d8baf48b92cdd0d9e7ce6bc0cf73748fae2c6fba3af2e8ae23bcaa084be55be7964f43e8f2d09ce989745586ec73967cdcb0348959f33ba0dec7f2f810a578d395a673674583bb8f1a33be9bd4a04034f663c17d85b2a1ca67563b86ee2a0fe645d4157b812065e7f04c06155fbceaeae03244e85b72d5c8c5a5b0fa14fef594e3bc91ecf7ca70dcdba12a08a88008c72fdd2cb17dff16277dbc11369778fcedbd4af57f1d6bc28b5af51d291a59c113d8a4b3e40a033609b9061115448ad4a077fe115b4885a49db916663b56f82766cb0ce053e91c08cf928cc59f2c1a3c54cfd7b035698805097123b3698f3aaa1441f01117b63cf1a6f945d2e5b4ae568abbc6df37d196520b6eb915bf930164ca1d9d44adc95f945d63a5da4b0ff9d7dfb5b50b55b7884de7d2f27307e61f917833405774e94c0456fdf30b713815da382d0300ecae589a9a920f9f1803ce068195aa3a1deb3f2f1574876ef5022bea312d0ba364f9ec3b91071f4d514ae5befea355a6863f5491d5506166c3fb00387f6b600fcfc5389a3a8d1897c414ab6395f995f17ee854f563ed6a633b224f64af5d59227477bb3ecffc57a695eadc5982d535546eecb2997d497c5d19db6522cb6405a4326f476f16420860f93f4fe2f1a884996e38715b7deb340f8bd5123cbe380562a424863c28053ea3820d1d77eeac78e3bf9d38929d9956a70cff169c051f26658759d6ec465d8a80d275c045ca067799066350a6b37b7f5cd92fa39d6828855b0bb63b92c912c623f3030998a93baa0a52664e694b39719ffce4d1d4dcf2c7a11ad6a425d604185426bac1666a08c8b704dc9a012dc6538a35f33cd70d1aa87ce10f3045820b93b7f39e3825c9232cf22dab08c4a705fa1c603dac40ba5b522c3cf6877fb21129680ef4dc4f002afbaee9ae6e7a7982f49befd8c183d7f96952d8ecc943ac52b5c6e6c2d8792ff3b79096decbb445397b7f95e81abdc5894b9ec64204b668eba0cd8204440bade96bc3ac27cbfff73f46844ab6bc37281f0da437db98e49944eb5a817fea9ca782bed01c9598272642607d276ae070e540c1db2fa3206b1e4e3593e00ee91ff23847494ad813a040cd7c93b3841e8619db26a73ddf7ae4664befbfd23250fbb38245e568f6a103a6b5fbc0cf7e78025fcb951c5cad9ebb19d44a5855254b93b1590b32f897220b32e67686a54090d3bb8451cedc86115d31ef59b9846a0c9b156a99325ee77ff5a9b430ef5ce68ca1613591819a24b772341e5391449c1a38cf4408d61b970d2368f837f00a46c5e0c62b20bc3fcb29ceb447621e34552b04c0c40cca9189fce5e8c8232a38618afdae45d3b6151b912aa547244b56f66d7d0eb3ed2d48c84bf56814b842ec4961743879030baa5ead66acbe29ed8a7d6ea7800edc2ab60bebf98eb7640e8465b9eb9bf18753ded610b271344e73845687a521271ffeb4d150d1151bcda0e6e13d85c63534ce01c0f5247e9cd157ad176b1e180e0e0bf559948c76a630e4b7064e7188ff58697e91b1e58869a6afb091d46faa0ce39c47d0751297b30c60a725a80de338d6b0b9b77577fc90251987322e3b5d9a1a58e2d9ae7ccc7978c9d5b7780ccf66a912bf2f1950f61f0a88505a7564b0a73c5d6fc20bece38cdc864f1c7e36710220b9101f0c3ba2ce63014afb744e45a97b5514add679f8e776cb1a46adea0f63730ea9cdba94cb8570e1adc4ee79c69cf2ef485a4ea15e38ddb55192c74d6db7b0984eeb4a4c4fca5563b34e7c5a2c1684475ac50ea7f3b358a74b68ad6f7cbb26098dfccb239f12263044f79c2a311cd05610bff8e15869a88f197bc27344d43fcbbcc12b1c2a9f1fe184face481e4249d9962b73175d0b13f7a50057687b9f7471f8f225e65ab2acd51ba933e65bd429e8029d19d9641f6b7d08868718a37383a66ba84224854f589e27f6fe7972ef21492ca7a0d265f59d8256c6429cdbb65a52f809b3d8ff19ed8d6dd29bbcc61c32b59f97e1d298ce98f1fe75ca947a473db2953075099e0f0ec3dcce7f13944d1e1763fd3f7ed4d696a7f4177fd6b70325cdf3cda86e3586ddd74468d617808276981c827a181d3cdf30352a3df8838e445be0917c633a10a747ad2380b4bae427bcd719ae490efdc3033f3d8327dc0e4e027f54c42d91285c2e5bdfee6bbd7fe7d21d623e56c50712607979da1b6617ee53ea1b581a1fdd395fc33d2b32a6161f67f10c2038a61cbc3a8e9ce036e74ccc5d8a215af250f6fde47a7835cd43f14c780f6ea0b886586f8ffb717fa9e2d60c951ae3f1aa71416417075975afd0dcc277af63e03bbd7e4e8470b99f8b603d0a1aa7855b83c35a19e4ea6a16c46854c72633d232dfefef4afb0a85e8d108816b21f37acfe99ecfa29687ef2b61c9697cbe96d62d9555c964432cce085bfc6b8cee655fe4c5bfefcf20fc6d2ad3625879e6d167a71cf403f83e5326736856c28c42158f5676a63ed7ec356c625607f961c4841ee7a270164c4348c6b2bf9c43b6751bb235fefa2bd4355fe2958b5e07b2f988c856c02b2e96133914e6e33bcd99edd3c7048f1d813685a494258d029af0c4e84bf755937b5a7ce8624b3dac3594de904c1ca6553d9c398ef1cc1a389533bbde4af7e62c8aae58632dd2a8b02eccf3589101c5b071d801d0c7fb81b804a266591788eb31665441d886ed3a8a7a84213a7064c2f66c95be4c35f0ad763ae6f021bab048a27fc57e9015844c92a3a86776b611c890f76ea8a297263d8e4a466d446885ae7a5c097c2576dbff0da8791cbbbde391d3c3c0f76ad50f23c7688d1d836737fc204c3a0f4153cbcec820e040a405ce5388816e743c18c44f35f450f3e9c3974fcdc5d1fe0b055bdfdd09c54c5fb445928fe340700d6e453e9f4be0eeefeab64b9fd7bc29837a42acbb5f504fe5722c03666586825943f8a18ccd563d5fcc34326122473e6dc9ea04516942edaeb5228cb5502ad2ec0243602ea6e433a7237acae5ae2e18a226e254153a037f4793d37192ee609ecf5ba44331f0ba629c0ad21b5a608e048eacd1a67d7224b048250f7bee1b5133a34bad925dc9d04c57148f9de183a429d0c9c250ead5a6a9d0e3cd8572c84f26b2e7ccac1ac1540fc2e73cdca9e5b3be1c4d8f55b3afdd92d9bd09c931fc4d595a3ad2aaf3bb6a22a00106904fc9555c574afa6f68910d1588aa9a7a9c6d75452669cb5009b63a19052b59709394d6db185512a7f6457170ea115ae97e59583881d0619bda85b68b4b75f464db5e0ba9c6c49a009c4a0cc36cb11da7d9b326a65847248f1d83b97413414af20a9e693a55139ec96c0c19477d1ac4cb4953053febf1df29e8aea6b78bb5cad9a1c814be3db7dd3246676f021d604b67e0fa2c3e50b5ad9987f2d58cc048bf8cd188253bc69d6e48cbd4ccd4fb1b37c449325314ec3e7aff52d14ce54e72d43dfca25ce554f413feff8a8570702f100f2ec48d7c102f6a1154dd5d808f37b5487d9c17b29f201167ed1cd7a5b12cc56f09d27b130f8fccb51357d80e46d8fbcd65cdf308d9285416f838dd649e76b26e19dd464879786048ec61ddb22ac10bfc6145838cfc0da530ddc499e8e8d74d52255abd2f4eb82df05772b4c64b7bcff94a2450ffd87adf47e8da9372e97309e9eef07408426c999ad66efd3f4ae2d31228c77e4f88e5838ebcd471546ac9c7cf6f599614c3415a24b2257bcdf8584c06b9bdcf3b58bb3c9133633c99f7c0260c9521192c28b6e221fc5ecb967536ba98bc59d2fe0320f62d8fe271a6b54ddb2e7e04e85647b6fb98b67bb440311d691a4d08b85c64e62ffc2a02c4ba28212ca510c484c05eddef28ab74fd837b3977c72cf832d3f575750ed122f2d80bbfa88246c3e44eda7afc53dd52badf6f86baaf2b2f75c895f8c7f15e61283e06a53ad109d0236d55381eeb4e05f6d11bd1b8f13fd92ca6c919841a5201073d1ef7575ae51cc3b0621a369848334d2fa991e2cf5fb7a1810d9871faca15d46720427d2067727a5e2955053c064d11e71afa98ef7b7c5c6530c295f8b529d91e72155179186197bcbc1a958e1ee603b900eec9741cba88878a46583c4b0b69ea41d54de6a101ec156a3f0a169f03585719d1fffb788c2f56bf8dad375717ccb4f7a5a471ab34225883fd0cb3a53eecb81144c3a73e5dc00a5790a7093ff7241fff8e1d4a8b54be2ca250aeedb3fe59c04d19cc285563555aa3a910524e89efb76a63eafe25d0b5ca280421da6aa552e5c89e116fe6fdf267e8d1f7198fdd624d62f36e069d7f4af3ad8c5b055450214a4d6c7365438d685c1668d4810da028311fd8100874f9534fd9533d1a1b4ce1025238c485dda4d24742f8a2df951c142eacedd9d7c23be6eb31efdce27e1ba4b215b605ec24588ece6221eb47574846adcae7f0615e88dfa5c261a4857654de2cf3614315a6aa93f80a0dfc21ab0dc69ae14a13d048bc6555f628e347ed2276bdf424510caceda4af35bbdbd6d0f02c90a9bfa8fce5ea497ae784bb7f9726805f8799dabac07f6604468879ceee0c7db4a122c0c18df8bc885a98296d94d0c817d0e05a473cf32d160e9a2ef787e1cd540617f9cb42041ab93fcd53c412e40b8a6ac99def8117165067a1262b253e948f0f9e6ff60fc71742de4ef73a4c8dcee31b75fff38257c31c77ce458de45735938b5128d7dc2f0869da84aef913eb169b857711daa05bb30bce108e8209d817e41a884bf5aa6178bc13998d1fd0c4609371991d75bc645227ee243ee42065e4e366c8dcd97bb6ec2305e8ab444b53a3b26d870837d7f147e38d769f902b20a7d568a2191d2cd1b70e31d6683b4b9e4bbeed40bf26a33cffc49075b240ea4ff96982bb12b81c5fbb3dfa6236e58b622fa3b300f9d2bd587c8aa1b6aa0123d80584e42fa53b8c005d484251c49a4d87d7ba51847701fb78b3f27f73da8a2e1f6482b7de2a2d81e9ffd3f0c44f1b3ea17d9bf7a9e5f8d68550aafd6d6f92bbbb9378075b34362e9fcb3ea8d2d00e8805a46a407d7d6fff00b43909df3c06eea7d8dcf45ed37dae8271de3553298628af0d8ec65dda5d2010593446c8b21a1f073f79e272ba4c3b70ac8b42271f39376d73bc70b0f212d96b66238a04039015c45b165878b559cf0242f1d9aec9bfa677bb96ff4b70687b427e5c1e843c315c5fe9eb5862e02165b0049f2fc0b60305609aceeea57ae25d3da38d34751598a3bbd6d7927b6299b9417e5c679b9a6aa1b555f11f981750419777d6e81cdfc9bba940abe56541232f602596d1a08eae0a52d5ce6575d9186812e61d5ad9a2a0e3e98186601a4945e9954d339c0165434102bd6e1e6f8283d02c673ec57905808180a2f2ec1219d423586a548b50bf162f6b5564a8c7dcf5987db6c005b94c783ff71d0e033e5ccf7e0c5f8a32c9c89c33f45a3f76c9240860a15ea579c7cf0ea9837cd363872ac023a32abea3a272fd7f3347a5b41666638cde984a316c28b1e030ba80bb8541296d4a591d91e6638ddcd8bdecd561eca080e6430e4f8e5e4f69c26dc7a82278bc3d672199f041cce02fee8eb9c301d5c5f9819af1b338d30e532a61ed95f43403c6eb35c5cd09618348a036d1e3b84cc48f6b50a849a0286e10ff49d18fa83689a8e4580cacccc57f6ba5b0efc3384ca3c318591ece8a8ada13e359a5988bb3f21460ea200903045f3376300", - approvals: [ - { - user: "ronye+4@cryptosphere-systems.com", - created_at: "2023-05-09T09:43:41.678553Z", - }, - ], - created_at: "2023-05-09T09:43:00.275555Z", - updated_at: "2023-05-09T09:43:41.680589Z", - submitted_at: "2023-05-09T09:43:41.680463Z", - }, -]; +export const walletPendingTransfersMock: Page = { + count: 1, + next: "", + previous: "", + results: [ + { + id: "pending_transfer_id_0", + status: 20, + creator: "ronye+3@cryptosphere-systems.com", + rejected_by: null, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + amount: 500000000000, + memo: "", + min_approvals: 1, + signed_multisig_tx: + "4d6f6e65726f206d756c746973696720756e7369676e65642074782073657401014f3f1bb2b0f47f76aa8e2234cc8b5c96f03ebaaff19baad54c4266c54162ba9cee2a8fa17a46a2159f840989709f7ac95eb4c682bf8a446d28ce294973e0d082853f531c7c26f09a3fda6397561f8d10f60f49890d0b9212ffaffb72cd1d4432bc52ff7fc3f33529a9ca50a33fe139c8f711b6ecfea9a9e7e23e8c77f07ca3e87741d28cae50e45e496590d948bd340f475ef985df9ad98b9f8e33c23c9c750e01798570b0bd08e55aed3bf0a29c7e7370c2864a716a2d5786eb5dcccef0af2e40d94f1c6a198baebb4feed4be4f313aba99aaf24375afad0aaff3faf11e564ebf85713c99c0b1cb97e8d492451a66c14ab086f6e159f0927160d5aa8b45992ce582d12ea32abdb7d17831f7cccc0e226d3472a5ac9b30f91368a578073dbdefc268ab9a562b29c14c3e707ce61c4b21d991b477551802c60c526708b93bccf1aef3270ba3ab59ed80f953a46dfdfa0c7fd17a48961e9ab708821ee6efb08f6b87a5e9c92b195a3f1428e064792fee3d967e8f637d550563c829d458e5703f9b1ede628ef5405aab76e7c25fa1ed06e1f294c24059b70ef3cf6b6f091b875aaa0a5df16f02a6ab3eda7afb5204266f4e28eff23845b4689ee0cc8b2a95a12cdd65426231571c7cfcea0f2f6e2eaa4f8a67e20a825767ccee78e53ecb4661ae956997fc294dc94822cf09225db1fda109f394b48e6b6d431a7fc277ecb85cc5b21e1a9069b246f9b1dd5187e1466d5703b88a009ab568c05b65ab2ffe44cb13ee9b2c93122201889d1a4e726ddf4809fbecf5ad8d89776fe4fdf5023a9a7df391dcbcc3e65b9b85cb63e4a57b7aac2e60051edcdab442be24452548e44e1b685a16bc1cdfd9b2568993a7560bf50849d51acea0654433d4788b3816e9e1abc8b0908e5352922c03383533bd608dc86c1a2802ac5cd83d2958f00a470cd239e1e2aa7527affd5c2553d20aee4f0bc6a5a0b5ecc4c1051fa653d276b812af6b578589b210f86172311ec806f0842b62d8fead3e279cb90f2549ecb820135fd4fffc6feb570edf8da00cceac3a47da7527758c137f67e29832d566658fa6fe1c84f929256ac30d00a1b5f4e04b4775eccd5afb25b7eb506593fd0176ca708a425502bb5a60d545907e36fd8c96c6bef74851c5c9aac4ff65754126852ef300e8bb09c6997225934f0b921839aed044c0cc7f3794434a296893ee7a193e9683c9593bd69537ddf608a9b1310c545ebb11904f2a943290644d74e27f758e6323fce4530599d993d567a60ca5b6e61a3f9b153a1db6ad2ce1e86201ff317f3dba488f543d35fb3473c3b537b6783f719bc40780dd6cc26457bf8d0f115dc9399db9f0ae9dc3d36221e881e0a647220448cfbe07894f4723c86ea6a79f499009282a648c5e7604a3382842a78d9089c9fe37c6fe5aef5fbbd0671079276546066ff0f6b46d7f17038a142dd2ac0f7cfb050482b11ba1367e2f44dfdb31b951b111401c85b2cd851468b3068ae1c15e61d2ca1f1f659b1190f3874c3ae7c188a02f386e5305361c69e29437af6028fb0cd3e9b63f1974bcca2ae29c90f6b783457bf6e8e1ff4f1e03787fd152fe4c7b9593126de16697a34eb40a3251060a3886d6758bbf289379d288da4a27691d3ae49c43ede2ed153a09f6936513c4616b20b0275c6b1080c9a08e6e31129fbc4120f68c12c035f77016c657e8a95c5d6e623b4c665dd3ce4b718ebdae13c771db7921e6b5c6f26daa4c3919f977786a333a6b79ca45c0f2fe123854cb346877aaa75e4c248bfc4334218edbe2938d32e3fa36ef8b69b90d5f002b5f88fe70f5f13ed613c4ceddfc96ad56efff08dca7f24a2433ef9989138b70c5df11168a99003ed9b4cbac68988053ae760ae4c5a8d7dbac5c02cfd5f9477b1c7adcdd532ea169184d88ea10c0c0a6479cf4db481d52735fb73d2177d74796efffbfc925c6aae4c150883e9f67ddd7d10a312644949ed20c3166431cc309ce3a7f31920fc63239ffdf119b2b1cd57e5fe1541d132508686272374aff510363b1a602da39db2c4f6d4f9df6ae27693071e83046eddb01cc3f37afd58a8f02cfe909bd5d033bb4e4177b3a1287c67576cd86955968c1a150428c97375fe3ea90b848d7f45e119b814a9c799f51744ab7512c064c999ed4760b5209afca7fe714467d83e04f655c7edf72cd0b333c55370e529075b02a26e8b97f855c9973a19cba25743d3be64e23cc3d2cc17f744f44a413144302ed386d944d9739486f7aebe68d9f48dc67a962f08787dfd45b9af21a8e94dcb2406204e9bbfc6c1b3eaca170294412c08ba279cad53a45c45f6a3a6ef56d2d6312990744ce690d49d3075b3f2b64c956083398612f0987af2be5b0ec521fb60d97efd3ec38caef2be5dc52edc619b3c3bcd634564c9bf38d869065cc71b742c7cd8d8b7b003dd71234810d05217bb20acfec87fe9c365ca64efd1a3c028e31429e5af992149e5384471ec3dc6f3cf4ba61a5234cfb112a949fea34e92552e30edce92f5847c9c9cb43a478593d8859c6ab33e92a2490cfa5b2f186fd8950385b3735692f59b858498af229e47649811f9bd40a60bdb071dc275780feb604802278e479f47c0821cd8562801fc2024120205fa1363384d692a3c8bfaef7cd644e8d555e99e470299c44f69bba2408eab5e116da10a62935f6d8ebb276baf3a7e4da0e20642c816a59d868e68fdb65548959ee4e537d86301ebf05a28417f86847c100b335b62eeba4d794a00214728eb0cb8913cf8917e431e570ebd745737540c645182974ec45cae39176eddccd320db37c49159a0559c5c4299107d944af1dd4e32769beab5bcb772213e9cb31c0b2d2e64206e81c1f6180fd0d5d59470077629cfd77017356e5d8c59d46914848630ecf179e669f9aa309101ee9e3a2046b213d5ec56dcb524fb1ebe1ea5f09afb1a45e5d93df28ba4fd3e7604c138dd71824b8afe8427bfc84b31862460571121d6928cb84853ddb698da949555587c6e4bccb60322bc8232601e864759be7fb0bf96606f7b05b245d373845c0483255da0837383395e500346a750e169db540bb515ad954930c4e70b58180ec41f040853ad4fe5140f2ce16eca58132b6a6f58e814c9e2fe747b5fc179ed51bf44bbaf63c62ae0658a1c7ce31a4417e61ca2a59ae8dfe4b7c9ca4d10f8127b2cc1fed1f077dc7d7911fdc63bb5ffa1e240e62827e0c3510869ed46b883774a682dfeb457a16eac2673c742898863d11682efbfdd6c3a94b30b7eda666062c60e8fae18d6376fe9e25f78a4241f3972a6199d2dace71f84dd88b7155ffb3827c297e44b58a84e957af5a0bea2fcbab1e83a2ffe544468b5d03fab74a197c4a1124aa3bbd9cf2beedce15de066ff81f9539a7179de960f3a28d61e6bcc1aba58982605b4af6e1c9a3eb0419703bf74158203e5de0e6248884aebc74f87fba22b2e0b4ada6319cd48c1713dc879cb0d265f49fd5a82925cc69d381099a362fd8b799966938ce6f04a071e91563cddd3f7a52505422ec8b60d5415e5d8822bff4f393df12a522b6a3cc4deaab40b46a41810c334bade3c13964ed8c6bc1e701124b6d0436711a8720db0bf02787b9aeec5d2d3abf916a20febb6afcfde6d735d60ef5ccc00fcfd0fa341e2c593eb967952b9f7453d9cc03866c5a6c7b390fa655e75fc65cd1ade4b26ec71f4bc2bbb6bb32c46e73d6998ef0d4158f77698ed0c7e3d2cf77c0ea9901559133f5623ef06f65343603940b72a0b58cf37408cdcbae2a2d79f076df8a8579d43204e1c2c30aba3f6a34f6e2b7adff9e88ef32406f66649f9335f033b936d4a7ef3ce03b4f644b7ea45d058b258c6f0ca9b40e693896dd9d4202d28919a8cbb1d7575c9fe3e6e11a3062daa739e911fd6f4fd2ab5c8d4a9836810d96b6c5462bf2dc229e2ccee6eee9e5d95fc8db05fdc64a11bb8368eeaf1401652208dc030585f47a20d1518940d6b8add292b91a10fbb2d53150177b04bc82fb3155853589da073f8f51d04391505ee53401bfac2a65dc1affb443d02ab43902675a9c349331664dd836212a819a94e88c20676137aa2e13fa5577ada681699be423394740f9d71221f7d4a084169f7fab4d94b8d32342e161973e020fb319a25be773ecef85a00fb311f3f8f88ebf805efc6b3b61ba7b364b9c020111139fbcad50749e13b460f276a51137e5fbb0d8450bbadb85ac25301428a29c39bf4e7ac8a27903a870b04655734e85c7e96c9333bd1cd5579f55d63bbc046fdd888852ab23ab5fd01baee4f72d0bc6393440cb8d18ab5d0677b6696b0077ee49f48f536b7fd54eb84fe3e18f5f342efcb09848dbef173834b598be394dcffd729a5b457f63a128d9ed5627529babc93c34c542f19e25107c890813dd179792d34bcb55b7a2bbbee1088c4446e30fbfc228aab814d6bb1371f6efa97a141df3365b79ddcec3f55386a17d54d8958e7d86d2d72dd56b17c4d472ed95fce83137b5b5de868bcee0e7e60e405f452aa9f69235651f2c6034196dd89219a480e4fc51267b981a8347235e43121ad28cfb0c2e09348bb92f04cdd9fdc7cf4355966a7b57eef020b77a1b3fef8924cdefecb789bfcc975a91fd053668d4f08cdf1dd0ecbcfc573152cea40e2fc04b7986bb6ce631ba92ff22572e0b877a8f6b9e4f705b8042ae8a39f3d30c94782eb6ff6bd1dc9a6a3519d7296b61e57c94494467aa914c77211c089811fba275c75068ad97ee8ffe2ead329bf569640ec7e5151977d888806ddd1454613554da3555241ac879d6d7033968eecd7dd883bc22b20860a00aa21eb9fa6f715a6c7c6fc3fc9b0b0e27dc81dc2b6c3de248fd99886d7f746353efe7445fbbf63ba2c2f3f8e8c5316c1560457c11d0e992bb01f30f23f5056a32d111e3340444d7abc4c945a1a43e94045515331a7b2dfb267385cfdf8b8e639ec2586204876449bb6a47e111949cc2d547953ec3bbe581700d5ae6658b0ca4da50637493509bef956edb07f35bcf21e4bd5bfb3073b7cb26928f29390502be93bad3761302c9b7d8c4b545a4fb4094e8cb5a0727f9d601dbe3014486b7319eaa95d4ce39841d8c020da150580826ed036de79101f352d3977051a50d1fdfb6d7dcb57155274c5b40f67edd28f02d56699946d2b5cfd3402ea732a348fba49bf661c6cf1c660e04911b9e09e6df4c1857baaef63f38288572e767af6d26b816a06bace6f663000b11c8809ce1f9896c50cc5e1e394607cbaf42ea418005a4361284764ffacb7292343858f858d88dfc59554bbf33d2df5ba97c7572e0ca3950854ae0773580e970ecfd83c7cc67641560e277576f91b8bf10cc55bd23c3ea8c9d958b406c2c5938c84506ebaec4a79f01a04137a05fb42b053ccec430aaef91ab7408ca5887ce820fcb17c12a89f89adb4a0b21feaf6836d8807c3b050ee5b9392709813033cd747672af8f1703a9f9a3322087cd1929b0cec8a4cee14a9f0fe909711a953c26524f9d3887759b727bf9c6b17c937f87162094b864467c1cb8d2eb623f6e3a866c0317506841504d8d73d06e3652c6050ff5226333e60b3d7df0d68ff0e557b6289ae615c4be74fa83fdb87de97b7398c9bd0163f5df4b4fef7c3c3091fccb4c17983b839a36be3811e53f1b991c44926c172c5fe5045c06e5eb0c4f54579f6b4bae5ae2a7a2ad0a727b4f3cb5fa64e2270b5f929f8e44104c8cd412c2758fc0df6fdb3c3b6d0bb69d2c7f1f1a44b250fef5d179669b62e08054bdb3da56878f086c08c05314acc94fabcb9a2f3ef692aa978a9ed1c09dc5d8e22ef9a4e15ae5753ea23374a5e8b4441504c115020a2a5ee490c5c7d7f23571d4f33075d5951fc5c8f0a07e0ada3ab02ce3a316d42f505f1aaf2bc197bc33ac0d3790b303f792de46a4eedc91dcae4f09aa4a9121988e31754586e999f4e224bb775333c1629233593365e88624f90d71fb946371f133fe695f9bab75cf61a24006a1a1d041b91c04eb32a6097d591f415e591b9db68d9ab1950cf3268794fee2fdc6be069de4137f07499578a0832abd112f1f7abf538469dc258004a1fea09624e066916960b096b2db8e40661395720c1f8017dfee21139f0be2ad8f15fd3c48e3ff1c553125adb66dee7195e87ee8abf977ae8c79947a21391c6f7bd052a969da5c5b817e6afffa2bf51866bdf172bc4f89bbbd344abf6e4f9a0cc89dc2d54746e2b995f1077900c5c16000135764b89e6ef11873618e1a1b6092170b2a606bc7cc7c752bcf6d419200a3c4ba81170b4037dcfe4f4a59fc689b404dd0a9f5f96eed4175ce9ae3bd559d9bd297d3b48e8a62d0b94d2e93c803193372c72e43bd43dfa205dfc89985cefb64626bf12e93938c3fd54351e67111b11dc22e9155be72d5122151afd65a2b4fcba41af77e541a089ec717bcc39119e75cf6193b0f0bcfe6a8c4f1c68eccf859a77d765ab67c57c57ecf3f043edfbde54c7a94d17e10f462fd3034154f87b240545ebcf797a69043467a3806d33c1af198345eecdd189e8d24552263c8c9f3fbfb926f852f8d1656d925e95a5610131cc4591181d714dbfcd5848f5b3f9797b74e51aef4f0c4389c46e66b6e96cef508f6dbabc36fcc68546b4447cb6829b7419bb7acfc72e25e9cc6ca6338141c0943d0d8274944b91cb6ad82e3c6da436182157631bf9607c8f9e44b124a9e308f8274cadcb6483d3760d139af4fa415ccf6bc236829255669883731a86bfe5ff3084bdbdc91056818b9ea8db0c90d3a9cee3c124989ab0e062d486c0799b9cd1f15fc6c3a6a994f71b01bbf2bde702bb9cfe23c497cc1cb1f69f555c923432c020fdeea54d669e914299778d16ec55420d3ac7492ac2243d03ff61b72ccd1c8414e5facb90f3e8b3dce469854e69753987cfc6d1fe68f09bd4b9f68094e5d7fd4e5f1be140fd351989218feb94e5ded7c72e023e2cdf6cec17265ace87efe059bf9c75c722b68a83a0cf099a9a91535edb328d787fd3fca70db54d8ec8d49e09cac103aab9e2e5ef356fe60002d6e41f7012db3a5204aa08d7444b17718a35536854f16d31a700b147f065e258331e1a516d83c07e2ff92b9dfd0ee78c33db04d123e963eb14ebe2cd9326899c7590ee754b9bab188db922186629ceb80dd54e7df809148cfbeb5fff21103794ca5e36f78173ec86544d716e4d963561d10b38a357bd9c5beb8f85ece80b9b129ef6c61946b192e3f970e99d4e7c983a28ad993697971dd1a8594058b843f6280a767c1856a1bd16930999319750d3187029dd8f621b5782f6c9b6c07a70662430aa1ef6f17a799574920f16f802d159986f1c7aa85e234363c1d1a30d6eb3e0ff70d7b270ff5032bad3c326f02738c3ea64231129dbc9c44c0f0f2cfd97c92fb6cfec02f9e4c77d35372a27959cbdd131d6ee8f3794c1c7cecac9e40492dec50a6472f8da0f3570be1f258659155c0f7fd4ec61fc9cedefef58818d9a43fec6f1385b6c62ee0a482124de850aa673b132f27f45415ad7e74ef1a45b5ea266411f3c167e3b691cbd9e9a5ff0bad7dee0d78b17cb9091cecf30792d08e5b7863ad566c7d51839de4c6d9cabbe29550e147c33c8e9420b02fbae820cfbe222c1a6118f5a016406aef9988d9f612bedb7f388b6f9db43950ea49b3b97133d905eeedf02126f497ee507cc101858130ce6e91aa773586b821ea7ec1d5a0555d07", + approvals: [], + created_at: "2023-05-19T15:45:38.888681Z", + updated_at: "2023-05-19T15:50:04.116535Z", + submitted_at: null, + }, + { + id: "pending_transfer_id_1", + status: 50, + creator: "ronye+3@cryptosphere-systems.com", + rejected_by: null, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + amount: 500000000000, + memo: "TEST", + min_approvals: 1, + signed_multisig_tx: + "4d6f6e65726f206d756c746973696720756e7369676e6564207478207365740184086ffa130621f06f5500fe220300982b08ccb3755c1fa0acff8302dad1f1e7d8764b7f0e62ba802098feef26e81d868a19e7616dd009455f500fc63fae5357c19843da054967e5a2d339cbd687c44e9ad2fa2cacb75f090eaa29265792728c5c2f0f639e85c691c808906b028d3f5edf9223d2537ce183e10978ab26613d185f47557381500fd6204b5f1f1e2415a8ac6cedaccfe8c389fb46b7dc3126a305e9c0bdcb5c0e0433081859fb5cc7d06313f4b9104240e83a1a13568b1d18c019825ef3b159382ec3c07348ead94d8ed6dc75787202e62d2e879df585e5ba862cc554cc0ce6675aa7fb81609d1e1fba1cca1cd1d86616cfcebb9c51a7f28e0be3605f2a172d240765e2333661f80aa0bb2d1eadc5c9a818ee61abfaf570cc0445f2321e6f0d43b7dc572840922be70834893330a12f43f518e7b101128c002841a512062b15dee995f608b962676c626e1e3af9454dfa1a260bc4bdffa19b133913d90b329af2d0f2a1be5356386f877dc876f9a54ec40012c733c6d464498f2c3d3c645b74f4fc3db3d8759fc54905fb2aaefdf118349b02694fd07778f422fb266f1d0fcd8a0a0fcd6a0f784149a04e05dbfc46eada561cb65f6dfe0b2f5a22cea6e7e38a9e52e7077a26cc34d4a63ce4c4d9d87c0ccd1b00a642196772eec627f1a08c45c409d88d83d641be562db74d011014ff16c300462906f413e96191026f2979397486043f0b158ac98375b6585f17d6e7a8ae0335e61c6e7b1c48a8b08363beaf14c15622ea80da1a4d2cf57b981ec1b6d02631cb5bb773eca11153c616025a6228fb955c892601725dba792ffbf53a694ffb8996084a16fe0f36070f6fcd26c1ad72c43c11a09670be6e50e9532995e7125516dab01876ed65cceb1f121d1afdb1b8847b318c89ef293e11ad32c8e93287790737f281299a9530c61b9eb4fd100769f3dacb3b62cd0837e583198bf2ef779680ea8dfb50ed4e25cd92e19d18c22405392c959cbb9df53285ba1534815a9b2623fa9fce83a4554aeaac04a3bde044ada7dd1a523d06e344d0af8573e3e625fe5ca0573e2849abf26f217e7ef84e5db7d044c213eab3f68af47139908d12374d653d8495882e32185a3dec3d03a4eb5227da3d027b22c5ac62d43d488ba848c824f23c0cde5761d4d99fef104f4de1a96d783cc1ab838ac6fd3028eddfee48b66e2505d911fcaeb1e46e2ccb86659642eadf0f7b8641e1db405c8381e33533c4270d16bc728f566433f713ab70667ba43903ea1604dca83275389beb3236aae0cc271ca1da560fcbca8247534031a4a3f4114a53134e27dbf2a595b94ad656bd6d6339019dff401794ef40f0456eb00d1e4a8b3d3d61cc18f828eb70d5dc309635417d2f705188fcd4bd941f76d7844f450204fd06919cd725864c6b60a3d8e79a9b3e42ede50745c814fdd3a30cdec6ec19e574ae9ac9c6a04faa23949c9ce35019b2ac6ef279b0f63b9d8dc7249755f3252c728d3e4a4c7ae0290c9f64633c5fddc0c84d41bc822de07a6b2fa5495c1f1a46faa3b2f564932bbd11d85dbfc0384c3b735753fec3bc0a218cf4e3dc850d10fe1e5ee2394977dbd10085f4a64db588ed96a34442698ae652867e8d76354a02b49ffd9f63c3be6c638dc5836a886e478a15805082efb442e5418e30204834755a94f0b82e331b663ad659300f07a75288fa3efb7a0cb0982a2b561b7571eeb8fe777ee88b6c8938af5ed68c33209bd51cf54a8bd301d60c6799f318d667da9f4f6ac7390ce7634b68113cc87809879ce09482d7a3a61dfad0fdbef8f46dfa1b1665ac5c3bbf608860b96aa959e7d54da03846bc6523abf1de439be67318d3b577a03d330d0cb696cf9a909bf7977ae63743a768ed3a1a1f4a3799b8ba05e29ce0a58947b1fb282ba3fe7e8897da43a5cfab48daac8ef76f22a96ad3153a357142e5ec0effa8f8153fca6dbfc0dfc4c7cac45114ad96bc34329d8baf48b92cdd0d9e7ce6bc0cf73748fae2c6fba3af2e8ae23bcaa084be55be7964f43e8f2d09ce989745586ec73967cdcb0348959f33ba0dec7f2f810a578d395a673674583bb8f1a33be9bd4a04034f663c17d85b2a1ca67563b86ee2a0fe645d4157b812065e7f04c06155fbceaeae03244e85b72d5c8c5a5b0fa14fef594e3bc91ecf7ca70dcdba12a08a88008c72fdd2cb17dff16277dbc11369778fcedbd4af57f1d6bc28b5af51d291a59c113d8a4b3e40a033609b9061115448ad4a077fe115b4885a49db916663b56f82766cb0ce053e91c08cf928cc59f2c1a3c54cfd7b035698805097123b3698f3aaa1441f01117b63cf1a6f945d2e5b4ae568abbc6df37d196520b6eb915bf930164ca1d9d44adc95f945d63a5da4b0ff9d7dfb5b50b55b7884de7d2f27307e61f917833405774e94c0456fdf30b713815da382d0300ecae589a9a920f9f1803ce068195aa3a1deb3f2f1574876ef5022bea312d0ba364f9ec3b91071f4d514ae5befea355a6863f5491d5506166c3fb00387f6b600fcfc5389a3a8d1897c414ab6395f995f17ee854f563ed6a633b224f64af5d59227477bb3ecffc57a695eadc5982d535546eecb2997d497c5d19db6522cb6405a4326f476f16420860f93f4fe2f1a884996e38715b7deb340f8bd5123cbe380562a424863c28053ea3820d1d77eeac78e3bf9d38929d9956a70cff169c051f26658759d6ec465d8a80d275c045ca067799066350a6b37b7f5cd92fa39d6828855b0bb63b92c912c623f3030998a93baa0a52664e694b39719ffce4d1d4dcf2c7a11ad6a425d604185426bac1666a08c8b704dc9a012dc6538a35f33cd70d1aa87ce10f3045820b93b7f39e3825c9232cf22dab08c4a705fa1c603dac40ba5b522c3cf6877fb21129680ef4dc4f002afbaee9ae6e7a7982f49befd8c183d7f96952d8ecc943ac52b5c6e6c2d8792ff3b79096decbb445397b7f95e81abdc5894b9ec64204b668eba0cd8204440bade96bc3ac27cbfff73f46844ab6bc37281f0da437db98e49944eb5a817fea9ca782bed01c9598272642607d276ae070e540c1db2fa3206b1e4e3593e00ee91ff23847494ad813a040cd7c93b3841e8619db26a73ddf7ae4664befbfd23250fbb38245e568f6a103a6b5fbc0cf7e78025fcb951c5cad9ebb19d44a5855254b93b1590b32f897220b32e67686a54090d3bb8451cedc86115d31ef59b9846a0c9b156a99325ee77ff5a9b430ef5ce68ca1613591819a24b772341e5391449c1a38cf4408d61b970d2368f837f00a46c5e0c62b20bc3fcb29ceb447621e34552b04c0c40cca9189fce5e8c8232a38618afdae45d3b6151b912aa547244b56f66d7d0eb3ed2d48c84bf56814b842ec4961743879030baa5ead66acbe29ed8a7d6ea7800edc2ab60bebf98eb7640e8465b9eb9bf18753ded610b271344e73845687a521271ffeb4d150d1151bcda0e6e13d85c63534ce01c0f5247e9cd157ad176b1e180e0e0bf559948c76a630e4b7064e7188ff58697e91b1e58869a6afb091d46faa0ce39c47d0751297b30c60a725a80de338d6b0b9b77577fc90251987322e3b5d9a1a58e2d9ae7ccc7978c9d5b7780ccf66a912bf2f1950f61f0a88505a7564b0a73c5d6fc20bece38cdc864f1c7e36710220b9101f0c3ba2ce63014afb744e45a97b5514add679f8e776cb1a46adea0f63730ea9cdba94cb8570e1adc4ee79c69cf2ef485a4ea15e38ddb55192c74d6db7b0984eeb4a4c4fca5563b34e7c5a2c1684475ac50ea7f3b358a74b68ad6f7cbb26098dfccb239f12263044f79c2a311cd05610bff8e15869a88f197bc27344d43fcbbcc12b1c2a9f1fe184face481e4249d9962b73175d0b13f7a50057687b9f7471f8f225e65ab2acd51ba933e65bd429e8029d19d9641f6b7d08868718a37383a66ba84224854f589e27f6fe7972ef21492ca7a0d265f59d8256c6429cdbb65a52f809b3d8ff19ed8d6dd29bbcc61c32b59f97e1d298ce98f1fe75ca947a473db2953075099e0f0ec3dcce7f13944d1e1763fd3f7ed4d696a7f4177fd6b70325cdf3cda86e3586ddd74468d617808276981c827a181d3cdf30352a3df8838e445be0917c633a10a747ad2380b4bae427bcd719ae490efdc3033f3d8327dc0e4e027f54c42d91285c2e5bdfee6bbd7fe7d21d623e56c50712607979da1b6617ee53ea1b581a1fdd395fc33d2b32a6161f67f10c2038a61cbc3a8e9ce036e74ccc5d8a215af250f6fde47a7835cd43f14c780f6ea0b886586f8ffb717fa9e2d60c951ae3f1aa71416417075975afd0dcc277af63e03bbd7e4e8470b99f8b603d0a1aa7855b83c35a19e4ea6a16c46854c72633d232dfefef4afb0a85e8d108816b21f37acfe99ecfa29687ef2b61c9697cbe96d62d9555c964432cce085bfc6b8cee655fe4c5bfefcf20fc6d2ad3625879e6d167a71cf403f83e5326736856c28c42158f5676a63ed7ec356c625607f961c4841ee7a270164c4348c6b2bf9c43b6751bb235fefa2bd4355fe2958b5e07b2f988c856c02b2e96133914e6e33bcd99edd3c7048f1d813685a494258d029af0c4e84bf755937b5a7ce8624b3dac3594de904c1ca6553d9c398ef1cc1a389533bbde4af7e62c8aae58632dd2a8b02eccf3589101c5b071d801d0c7fb81b804a266591788eb31665441d886ed3a8a7a84213a7064c2f66c95be4c35f0ad763ae6f021bab048a27fc57e9015844c92a3a86776b611c890f76ea8a297263d8e4a466d446885ae7a5c097c2576dbff0da8791cbbbde391d3c3c0f76ad50f23c7688d1d836737fc204c3a0f4153cbcec820e040a405ce5388816e743c18c44f35f450f3e9c3974fcdc5d1fe0b055bdfdd09c54c5fb445928fe340700d6e453e9f4be0eeefeab64b9fd7bc29837a42acbb5f504fe5722c03666586825943f8a18ccd563d5fcc34326122473e6dc9ea04516942edaeb5228cb5502ad2ec0243602ea6e433a7237acae5ae2e18a226e254153a037f4793d37192ee609ecf5ba44331f0ba629c0ad21b5a608e048eacd1a67d7224b048250f7bee1b5133a34bad925dc9d04c57148f9de183a429d0c9c250ead5a6a9d0e3cd8572c84f26b2e7ccac1ac1540fc2e73cdca9e5b3be1c4d8f55b3afdd92d9bd09c931fc4d595a3ad2aaf3bb6a22a00106904fc9555c574afa6f68910d1588aa9a7a9c6d75452669cb5009b63a19052b59709394d6db185512a7f6457170ea115ae97e59583881d0619bda85b68b4b75f464db5e0ba9c6c49a009c4a0cc36cb11da7d9b326a65847248f1d83b97413414af20a9e693a55139ec96c0c19477d1ac4cb4953053febf1df29e8aea6b78bb5cad9a1c814be3db7dd3246676f021d604b67e0fa2c3e50b5ad9987f2d58cc048bf8cd188253bc69d6e48cbd4ccd4fb1b37c449325314ec3e7aff52d14ce54e72d43dfca25ce554f413feff8a8570702f100f2ec48d7c102f6a1154dd5d808f37b5487d9c17b29f201167ed1cd7a5b12cc56f09d27b130f8fccb51357d80e46d8fbcd65cdf308d9285416f838dd649e76b26e19dd464879786048ec61ddb22ac10bfc6145838cfc0da530ddc499e8e8d74d52255abd2f4eb82df05772b4c64b7bcff94a2450ffd87adf47e8da9372e97309e9eef07408426c999ad66efd3f4ae2d31228c77e4f88e5838ebcd471546ac9c7cf6f599614c3415a24b2257bcdf8584c06b9bdcf3b58bb3c9133633c99f7c0260c9521192c28b6e221fc5ecb967536ba98bc59d2fe0320f62d8fe271a6b54ddb2e7e04e85647b6fb98b67bb440311d691a4d08b85c64e62ffc2a02c4ba28212ca510c484c05eddef28ab74fd837b3977c72cf832d3f575750ed122f2d80bbfa88246c3e44eda7afc53dd52badf6f86baaf2b2f75c895f8c7f15e61283e06a53ad109d0236d55381eeb4e05f6d11bd1b8f13fd92ca6c919841a5201073d1ef7575ae51cc3b0621a369848334d2fa991e2cf5fb7a1810d9871faca15d46720427d2067727a5e2955053c064d11e71afa98ef7b7c5c6530c295f8b529d91e72155179186197bcbc1a958e1ee603b900eec9741cba88878a46583c4b0b69ea41d54de6a101ec156a3f0a169f03585719d1fffb788c2f56bf8dad375717ccb4f7a5a471ab34225883fd0cb3a53eecb81144c3a73e5dc00a5790a7093ff7241fff8e1d4a8b54be2ca250aeedb3fe59c04d19cc285563555aa3a910524e89efb76a63eafe25d0b5ca280421da6aa552e5c89e116fe6fdf267e8d1f7198fdd624d62f36e069d7f4af3ad8c5b055450214a4d6c7365438d685c1668d4810da028311fd8100874f9534fd9533d1a1b4ce1025238c485dda4d24742f8a2df951c142eacedd9d7c23be6eb31efdce27e1ba4b215b605ec24588ece6221eb47574846adcae7f0615e88dfa5c261a4857654de2cf3614315a6aa93f80a0dfc21ab0dc69ae14a13d048bc6555f628e347ed2276bdf424510caceda4af35bbdbd6d0f02c90a9bfa8fce5ea497ae784bb7f9726805f8799dabac07f6604468879ceee0c7db4a122c0c18df8bc885a98296d94d0c817d0e05a473cf32d160e9a2ef787e1cd540617f9cb42041ab93fcd53c412e40b8a6ac99def8117165067a1262b253e948f0f9e6ff60fc71742de4ef73a4c8dcee31b75fff38257c31c77ce458de45735938b5128d7dc2f0869da84aef913eb169b857711daa05bb30bce108e8209d817e41a884bf5aa6178bc13998d1fd0c4609371991d75bc645227ee243ee42065e4e366c8dcd97bb6ec2305e8ab444b53a3b26d870837d7f147e38d769f902b20a7d568a2191d2cd1b70e31d6683b4b9e4bbeed40bf26a33cffc49075b240ea4ff96982bb12b81c5fbb3dfa6236e58b622fa3b300f9d2bd587c8aa1b6aa0123d80584e42fa53b8c005d484251c49a4d87d7ba51847701fb78b3f27f73da8a2e1f6482b7de2a2d81e9ffd3f0c44f1b3ea17d9bf7a9e5f8d68550aafd6d6f92bbbb9378075b34362e9fcb3ea8d2d00e8805a46a407d7d6fff00b43909df3c06eea7d8dcf45ed37dae8271de3553298628af0d8ec65dda5d2010593446c8b21a1f073f79e272ba4c3b70ac8b42271f39376d73bc70b0f212d96b66238a04039015c45b165878b559cf0242f1d9aec9bfa677bb96ff4b70687b427e5c1e843c315c5fe9eb5862e02165b0049f2fc0b60305609aceeea57ae25d3da38d34751598a3bbd6d7927b6299b9417e5c679b9a6aa1b555f11f981750419777d6e81cdfc9bba940abe56541232f602596d1a08eae0a52d5ce6575d9186812e61d5ad9a2a0e3e98186601a4945e9954d339c0165434102bd6e1e6f8283d02c673ec57905808180a2f2ec1219d423586a548b50bf162f6b5564a8c7dcf5987db6c005b94c783ff71d0e033e5ccf7e0c5f8a32c9c89c33f45a3f76c9240860a15ea579c7cf0ea9837cd363872ac023a32abea3a272fd7f3347a5b41666638cde984a316c28b1e030ba80bb8541296d4a591d91e6638ddcd8bdecd561eca080e6430e4f8e5e4f69c26dc7a82278bc3d672199f041cce02fee8eb9c301d5c5f9819af1b338d30e532a61ed95f43403c6eb35c5cd09618348a036d1e3b84cc48f6b50a849a0286e10ff49d18fa83689a8e4580cacccc57f6ba5b0efc3384ca3c318591ece8a8ada13e359a5988bb3f21460ea200903045f3376300", + approvals: [ + { + user: "ronye+4@cryptosphere-systems.com", + created_at: "2023-05-09T09:43:41.678553Z", + }, + ], + created_at: "2023-05-09T09:43:00.275555Z", + updated_at: "2023-05-09T09:43:41.680589Z", + submitted_at: "2023-05-09T09:43:41.680463Z", + }, + ], +}; diff --git a/src/__mock__/wallet.removed.spenders.mock.ts b/src/__mock__/wallet.removed.spenders.mock.ts index bc8b982..87a50cd 100644 --- a/src/__mock__/wallet.removed.spenders.mock.ts +++ b/src/__mock__/wallet.removed.spenders.mock.ts @@ -1,8 +1,14 @@ import { WalletRemovedSpenderEntity } from "../entities"; +import { Page } from "../types"; -export const walletRemovedSpendersMock: WalletRemovedSpenderEntity[] = [ - { - user: "ronye+4@cryptosphere-systems.com", - deleted_at: "2023-06-01T14:16:44.774923Z", - }, -]; +export const walletRemovedSpendersMock: Page = { + count: 1, + next: "", + previous: "", + results: [ + { + user: "ronye+4@cryptosphere-systems.com", + deleted_at: "2023-06-01T14:16:44.774923Z", + }, + ], +}; diff --git a/src/__mock__/wallet.service.mock.ts b/src/__mock__/wallet.service.mock.ts index 884fd26..350c99c 100644 --- a/src/__mock__/wallet.service.mock.ts +++ b/src/__mock__/wallet.service.mock.ts @@ -35,22 +35,26 @@ export const walletServiceMock = createMock({ getPendingTransfers: jest.fn(() => of(walletPendingTransfersMock)), getPendingTransfer: jest.fn(() => of( - walletPendingTransfersMock.find( + walletPendingTransfersMock.results.find( (item) => item.id === PENDING_TRANSFER_ID, ), ), ), getSubaddresses: jest.fn(() => Promise.resolve(walletSubaddressesMock)), - createSubaddress: jest.fn(() => Promise.resolve(walletSubaddressesMock[0])), + createSubaddress: jest.fn(() => + Promise.resolve(walletSubaddressesMock.results[0]), + ), updateSubaddress: jest.fn(() => - of(walletSubaddressesMock.find((item) => item.address === ADDRESS)), + of(walletSubaddressesMock.results.find((item) => item.address === ADDRESS)), ), partialUpdateSubaddress: jest.fn(() => - of(walletSubaddressesMock.find((item) => item.address === ADDRESS)), + of(walletSubaddressesMock.results.find((item) => item.address === ADDRESS)), ), getTransactions: jest.fn(() => of(walletTransactionsMock)), getTransaction: jest.fn(() => - of(walletTransactionsMock.find((item) => item.id === TRANSACTION_ID)), + of( + walletTransactionsMock.results.find((item) => item.id === TRANSACTION_ID), + ), ), sendTransaction: jest.fn(() => Promise.resolve(walletTransactionSendResponseMock), @@ -59,7 +63,7 @@ export const walletServiceMock = createMock({ Promise.resolve(taskResponseCreateTxResultMock), ), // submitTransaction: jest.fn(() => of("task_id")), - // signWalletSubaddress: jest.fn(() => of(walletSubaddressesMock[0])), + // signWalletSubaddress: jest.fn(() => of(walletSubaddressesMock.results[0])), exportTransactions: jest.fn((type) => { let file; diff --git a/src/__mock__/wallet.subaddresses.mock.ts b/src/__mock__/wallet.subaddresses.mock.ts index 182d13d..b66d581 100644 --- a/src/__mock__/wallet.subaddresses.mock.ts +++ b/src/__mock__/wallet.subaddresses.mock.ts @@ -1,34 +1,40 @@ import { WalletSubaddressEntity } from "../entities"; +import { Page } from "../types"; -export const walletSubaddressesMock: WalletSubaddressEntity[] = [ - { - address: - "76uezxqTYhV4bKaHAs75cZVGBDubdBuqjdMhxQnAHL3mPPKG49ifGZf4XShHX8jWfg6UAGP6LsRJ7awAVGREV1nfJG6XzWX", - index: 2, - is_used: false, - created_at: "2023-05-12T17:25:15.551Z", - label: "", - signature: - "QWA8/vvuwHSe04V5lIGFRgQ+NTNjLNuAaLPkRWK9TwntTijSXPon4AuUJQFf2eIgWRthqFK/yPygn8jE4u+LDA==", - }, - { - address: - "72wCuVF5ZcA9Rcq1mT7vi9GZ252JcXGWRMyAf8t2Dh7PfdFdWm7mKhjGyrnn8vLYxMeHaTd2wJ2DZQAghATtTmXMSu5kHGX", - index: 1, - is_used: false, - created_at: "2023-05-12T17:25:15.551Z", - label: "", - signature: - "zIGsR2gt+lA18rjN4dm32eRfgpgqVwwL5QxES7xow+gPEOX24BieZrFvXUmdAphOFT3vbumxYOI20a5IEl0UBg==", - }, - { - address: - "79TA6cCbmfJbh5Bezm8yoKQxM1MYAtGtuBtqSp6nMNqFZJcUxYFHrc7icqecrksyHqBWcC4cFbJ9KS9ENvNVMWX47vLjuU7", - index: 0, - is_used: false, - created_at: "2023-05-12T17:25:15.551Z", - label: "", - signature: - "RCc3h2eTRVlfgEmGVhH0PAhonOPS66Fugz8ScQlSiQ+AjcYTVhMgIAE8/CEoN3wBgJVCYuHyQl5LTY+fmTFgDQ==", - }, -]; +export const walletSubaddressesMock: Page = { + count: 3, + next: "", + previous: "", + results: [ + { + address: + "76uezxqTYhV4bKaHAs75cZVGBDubdBuqjdMhxQnAHL3mPPKG49ifGZf4XShHX8jWfg6UAGP6LsRJ7awAVGREV1nfJG6XzWX", + index: 2, + is_used: false, + created_at: "2023-05-12T17:25:15.551Z", + label: "", + signature: + "QWA8/vvuwHSe04V5lIGFRgQ+NTNjLNuAaLPkRWK9TwntTijSXPon4AuUJQFf2eIgWRthqFK/yPygn8jE4u+LDA==", + }, + { + address: + "72wCuVF5ZcA9Rcq1mT7vi9GZ252JcXGWRMyAf8t2Dh7PfdFdWm7mKhjGyrnn8vLYxMeHaTd2wJ2DZQAghATtTmXMSu5kHGX", + index: 1, + is_used: false, + created_at: "2023-05-12T17:25:15.551Z", + label: "", + signature: + "zIGsR2gt+lA18rjN4dm32eRfgpgqVwwL5QxES7xow+gPEOX24BieZrFvXUmdAphOFT3vbumxYOI20a5IEl0UBg==", + }, + { + address: + "79TA6cCbmfJbh5Bezm8yoKQxM1MYAtGtuBtqSp6nMNqFZJcUxYFHrc7icqecrksyHqBWcC4cFbJ9KS9ENvNVMWX47vLjuU7", + index: 0, + is_used: false, + created_at: "2023-05-12T17:25:15.551Z", + label: "", + signature: + "RCc3h2eTRVlfgEmGVhH0PAhonOPS66Fugz8ScQlSiQ+AjcYTVhMgIAE8/CEoN3wBgJVCYuHyQl5LTY+fmTFgDQ==", + }, + ], +}; diff --git a/src/__mock__/wallet.transaction.send.response.mock.ts b/src/__mock__/wallet.transaction.send.response.mock.ts index 8213185..1c19b1f 100644 --- a/src/__mock__/wallet.transaction.send.response.mock.ts +++ b/src/__mock__/wallet.transaction.send.response.mock.ts @@ -1,9 +1,9 @@ import { WalletTransactionSendResponse } from "../entities"; -import { taskResponseSubmitTxResultMock } from "./task.response.mock"; +import { submitResultMock } from "./task.response.mock"; export const walletTransactionSendResponseMock: WalletTransactionSendResponse = { requiresApproval: false, - data: taskResponseSubmitTxResultMock, + result: submitResultMock, }; diff --git a/src/__mock__/wallet.transactions.mock.ts b/src/__mock__/wallet.transactions.mock.ts index 1d836b1..33bbddf 100644 --- a/src/__mock__/wallet.transactions.mock.ts +++ b/src/__mock__/wallet.transactions.mock.ts @@ -1,104 +1,110 @@ import { WalletTransactionEntity } from "../entities"; +import { Page } from "../types"; -export const walletTransactionsMock: WalletTransactionEntity[] = [ - { - id: "transaction_id_0", - amount: "710000000", - timestamp: "2023-06-01T10:04:27.000Z", - direction: "out", - fee: "136980000", - confirmations: 101, - destinations: [ - { - index: 0, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - address_label: "", - amount: "710000000", - }, - ], - created_at: "2023-06-01T10:02:14.431Z", - memo: "", - tx_to_self: false, - }, - { - id: "transaction_id_1", - amount: "7100000000", - timestamp: "2023-06-01T09:08:17.000Z", - direction: "out", - fee: "137070000", - confirmations: 117, - destinations: [ - { - index: 0, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - address_label: "", - amount: "7100000000", - }, - ], - created_at: "2023-06-01T09:06:18.810Z", - memo: "", - tx_to_self: false, - }, - { - id: "transaction_id_2", - amount: "7100000000", - timestamp: "2023-06-01T07:51:06.000Z", - direction: "out", - fee: "137340000", - confirmations: 114, - destinations: [ - { - index: 0, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - address_label: "", - amount: "7100000000", - }, - ], - created_at: "2023-06-01T07:50:24.560Z", - memo: "", - tx_to_self: false, - }, - { - id: "transaction_id_3", - amount: "7100000000", - timestamp: "2023-05-26T09:18:54.000Z", - direction: "out", - fee: "138510000", - confirmations: 134, - destinations: [ - { - index: 0, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - address_label: "", - amount: "7100000000", - }, - ], - created_at: "2023-05-26T09:14:03.026Z", - memo: "", - tx_to_self: false, - }, - { - id: "transaction_id_4", - amount: "7000000000", - timestamp: "2023-05-26T08:52:15.000Z", - direction: "out", - fee: "138690000", - confirmations: 107, - destinations: [ - { - index: 0, - address: - "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", - address_label: "", - amount: "7000000000", - }, - ], - created_at: "2023-05-26T08:48:18.465Z", - memo: "", - tx_to_self: false, - }, -]; +export const walletTransactionsMock: Page = { + count: 5, + next: "", + previous: "", + results: [ + { + id: "transaction_id_0", + amount: "710000000", + timestamp: "2023-06-01T10:04:27.000Z", + direction: "out", + fee: "136980000", + confirmations: 101, + destinations: [ + { + index: 0, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + address_label: "", + amount: "710000000", + }, + ], + created_at: "2023-06-01T10:02:14.431Z", + memo: "", + tx_to_self: false, + }, + { + id: "transaction_id_1", + amount: "7100000000", + timestamp: "2023-06-01T09:08:17.000Z", + direction: "out", + fee: "137070000", + confirmations: 117, + destinations: [ + { + index: 0, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + address_label: "", + amount: "7100000000", + }, + ], + created_at: "2023-06-01T09:06:18.810Z", + memo: "", + tx_to_self: false, + }, + { + id: "transaction_id_2", + amount: "7100000000", + timestamp: "2023-06-01T07:51:06.000Z", + direction: "out", + fee: "137340000", + confirmations: 114, + destinations: [ + { + index: 0, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + address_label: "", + amount: "7100000000", + }, + ], + created_at: "2023-06-01T07:50:24.560Z", + memo: "", + tx_to_self: false, + }, + { + id: "transaction_id_3", + amount: "7100000000", + timestamp: "2023-05-26T09:18:54.000Z", + direction: "out", + fee: "138510000", + confirmations: 134, + destinations: [ + { + index: 0, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + address_label: "", + amount: "7100000000", + }, + ], + created_at: "2023-05-26T09:14:03.026Z", + memo: "", + tx_to_self: false, + }, + { + id: "transaction_id_4", + amount: "7000000000", + timestamp: "2023-05-26T08:52:15.000Z", + direction: "out", + fee: "138690000", + confirmations: 107, + destinations: [ + { + index: 0, + address: + "7AsgQdjExEwieccaBhuBUThTJmJ77o5BeACNGCZRGPJbSGYhBA7aG9NdYbtGAKs4PWFrkkMZGzhPiDpnw5bxL5nQQw7Rq4v", + address_label: "", + amount: "7000000000", + }, + ], + created_at: "2023-05-26T08:48:18.465Z", + memo: "", + tx_to_self: false, + }, + ], +}; diff --git a/src/app.controller.ts b/src/app.controller.ts index 96f2032..3020654 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -21,7 +21,7 @@ export class AppController { @ApiOperation({ summary: "Checks the service health" }) @ApiResponse({ status: 200, - description: "The service status", + description: "The Ok service status", type: StatusEntity, }) getHealth(): Observable { diff --git a/src/decorators/api.paginated.response.ts b/src/decorators/api.paginated.response.ts new file mode 100644 index 0000000..c837a53 --- /dev/null +++ b/src/decorators/api.paginated.response.ts @@ -0,0 +1,33 @@ +import { Type, applyDecorators } from "@nestjs/common"; +import { + ApiExtraModels, + ApiResponse, + getSchemaPath, + ApiResponseOptions, +} from "@nestjs/swagger"; + +import { Page } from "../types"; + +export const ApiPaginatedResponse = >( + data: T, + options: ApiResponseOptions, +) => + applyDecorators( + ApiExtraModels(Page, data), + ApiResponse({ + ...options, + schema: { + allOf: [ + { $ref: getSchemaPath(Page) }, + { + properties: { + data: { + type: "array", + items: { $ref: getSchemaPath(data) }, + }, + }, + }, + ], + }, + }), + ); diff --git a/src/entities/index.ts b/src/entities/index.ts index db41062..2603639 100644 --- a/src/entities/index.ts +++ b/src/entities/index.ts @@ -9,7 +9,7 @@ export * from "./task.response.createtx.params"; export * from "./task.response.createtx.result"; export * from "./task.response.entity"; export * from "./task.response.submittx.params"; -export * from "./task.response.submittx.result"; +export * from "./wallet.transaction.submit.result.response"; export * from "./wallet.entity"; export * from "./wallet.activity.entity"; export * from "./wallet.member.entity"; diff --git a/src/entities/status.entity.ts b/src/entities/status.entity.ts index 002fe03..da96db9 100644 --- a/src/entities/status.entity.ts +++ b/src/entities/status.entity.ts @@ -2,7 +2,7 @@ import { Expose } from "class-transformer"; import { ApiProperty } from "@nestjs/swagger"; export class StatusEntity { - @ApiProperty() + @ApiProperty({ example: 200 }) status: number; constructor(status: number) { @@ -10,7 +10,7 @@ export class StatusEntity { } @Expose() - @ApiProperty() + @ApiProperty({ example: "Ok" }) get message(): string { switch (this.status) { case 200: diff --git a/src/entities/task.response.submittx.result.ts b/src/entities/task.response.submittx.result.ts deleted file mode 100644 index d3e54ac..0000000 --- a/src/entities/task.response.submittx.result.ts +++ /dev/null @@ -1,18 +0,0 @@ -export class TaskResponseSubmitTxResult { - created_at: string; - updated_at: string; - txid: string; - amount: string; - timestamp: string; - direction: string; - fee: string; - confirmations: number; - created_on_platform: boolean; - tx_to_self: boolean; - memo: string; - order_id: string; - ip_addr: string; - euro_amount: string; - destinations: any[]; - wallet: any; -} diff --git a/src/entities/wallet.member.entity.ts b/src/entities/wallet.member.entity.ts index 712efc9..bfcc479 100644 --- a/src/entities/wallet.member.entity.ts +++ b/src/entities/wallet.member.entity.ts @@ -1,5 +1,20 @@ import { ApiProperty } from "@nestjs/swagger"; +class WalletMemberEntityUser { + @ApiProperty() + email: string; + + @ApiProperty() + name: string; +} + +class WalletMemberEntityWallet { + @ApiProperty() + id: string; + + @ApiProperty() + name: string; +} export class WalletMemberEntity { @ApiProperty() id: string; @@ -11,14 +26,8 @@ export class WalletMemberEntity { created_at: string; @ApiProperty() - user: { - email: string; - name: string; - }; + user: WalletMemberEntityUser; @ApiProperty() - wallet: { - id: string; - name: string; - }; + wallet: WalletMemberEntityWallet; } diff --git a/src/entities/wallet.pending.transfer.entity.ts b/src/entities/wallet.pending.transfer.entity.ts index 877081c..32cfb09 100644 --- a/src/entities/wallet.pending.transfer.entity.ts +++ b/src/entities/wallet.pending.transfer.entity.ts @@ -1,5 +1,13 @@ import { ApiProperty } from "@nestjs/swagger"; +class WalletPendingTransferApproval { + @ApiProperty() + user: string; + + @ApiProperty() + created_at: string; +} + export class WalletPendingTransferEntity { @ApiProperty() id: string; @@ -28,11 +36,8 @@ export class WalletPendingTransferEntity { @ApiProperty() signed_multisig_tx: string; - @ApiProperty() - approvals: Array<{ - user: string; - created_at: string; - }>; + @ApiProperty({ isArray: true, type: WalletPendingTransferApproval }) + approvals: WalletPendingTransferApproval[]; @ApiProperty() created_at: string; diff --git a/src/entities/wallet.transaction.create.response.ts b/src/entities/wallet.transaction.create.response.ts index da90032..1985162 100644 --- a/src/entities/wallet.transaction.create.response.ts +++ b/src/entities/wallet.transaction.create.response.ts @@ -1,3 +1,6 @@ +import { ApiProperty } from "@nestjs/swagger"; + export class WalletTransactionCreateResponse { + @ApiProperty() txs_hex: string; } diff --git a/src/entities/wallet.transaction.entity.ts b/src/entities/wallet.transaction.entity.ts index 8b9d605..bcc9745 100644 --- a/src/entities/wallet.transaction.entity.ts +++ b/src/entities/wallet.transaction.entity.ts @@ -22,7 +22,7 @@ export class WalletTransactionEntity { @ApiProperty() confirmations: number; - @ApiProperty() + @ApiProperty({ isArray: true, type: WalletTransactionDestinationEntity }) destinations: WalletTransactionDestinationEntity[]; @ApiProperty() diff --git a/src/entities/wallet.transaction.send.response.ts b/src/entities/wallet.transaction.send.response.ts index c87a47d..28ac2d1 100644 --- a/src/entities/wallet.transaction.send.response.ts +++ b/src/entities/wallet.transaction.send.response.ts @@ -1,7 +1,12 @@ -import { TaskResponseSubmitTxResult } from "./task.response.submittx.result"; +import { ApiProperty } from "@nestjs/swagger"; + +import { WalletTransactionSubmitResultResponse } from "./wallet.transaction.submit.result.response"; import { WalletPendingTransferEntity } from "./wallet.pending.transfer.entity"; export class WalletTransactionSendResponse { + @ApiProperty() requiresApproval: boolean; - data: TaskResponseSubmitTxResult | WalletPendingTransferEntity; + + @ApiProperty() + result?: WalletTransactionSubmitResultResponse | WalletPendingTransferEntity; } diff --git a/src/entities/wallet.transaction.submit.result.response.ts b/src/entities/wallet.transaction.submit.result.response.ts new file mode 100644 index 0000000..de2c13f --- /dev/null +++ b/src/entities/wallet.transaction.submit.result.response.ts @@ -0,0 +1,106 @@ +import { ApiProperty } from "@nestjs/swagger"; + +export class WalletTransactionSubmitResultDestination { + @ApiProperty() + transaction_txid: string; + + @ApiProperty() + transaction_wallet_id: string; + + @ApiProperty() + index: number; + + @ApiProperty() + address: string; + + @ApiProperty() + amount: string; +} + +export class WalletTransactionSubmitResultWallet { + @ApiProperty() + created_at: string; + + @ApiProperty() + updated_at: string; + + @ApiProperty() + id: string; + + @ApiProperty() + balance: string; + + @ApiProperty() + unlocked_balance: string; + + @ApiProperty() + creation_height: number; + + @ApiProperty() + height: string; + + @ApiProperty() + last_interaction_at: string; + + @ApiProperty() + last_sync_at: string; + + @ApiProperty() + address: string; + + @ApiProperty() + status: string; +} + +export class WalletTransactionSubmitResultResponse { + @ApiProperty() + created_at: string; + + @ApiProperty() + updated_at: string; + + @ApiProperty() + wallet_id: string; + + @ApiProperty() + txid: string; + + @ApiProperty() + amount: string; + + @ApiProperty() + timestamp: string; + + @ApiProperty() + direction: string; + + @ApiProperty() + fee: string; + + @ApiProperty() + confirmations: number; + + @ApiProperty() + created_on_platform: boolean; + + @ApiProperty() + tx_to_self: boolean; + + @ApiProperty() + memo: string; + + @ApiProperty() + order_id: string; + + @ApiProperty() + ip_addr: string; + + @ApiProperty() + euro_amount: string; + + @ApiProperty() + destinations: WalletTransactionSubmitResultDestination[]; + + @ApiProperty() + wallet: WalletTransactionSubmitResultWallet; +} diff --git a/src/generateDocs.ts b/src/generateDocs.ts new file mode 100644 index 0000000..4f8fb82 --- /dev/null +++ b/src/generateDocs.ts @@ -0,0 +1,34 @@ +import { NestFactory } from "@nestjs/core"; +import { VersioningType } from "@nestjs/common"; +import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger"; +import * as path from "path"; +import { writeFileSync } from "fs"; + +import { AppModule } from "./app.module"; +import { GlobalExceptionsFilter } from "./filters/global.exception.filter"; + +async function generateDocs() { + const app = await NestFactory.create(AppModule); + + app.setGlobalPrefix("api"); + app.enableVersioning({ + type: VersioningType.URI, + }); + + app.useGlobalFilters(new GlobalExceptionsFilter()); + + const config = new DocumentBuilder() + .setTitle("Rino SDK") + .setDescription("Rino SDK API Documentation") + .setVersion("0.1.0") + .build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("docs", app, document); + + const outputPath = path.resolve(process.cwd(), "swagger.json"); + writeFileSync(outputPath, JSON.stringify(document), { encoding: "utf8" }); + + await app.close(); +} + +generateDocs(); diff --git a/src/main.ts b/src/main.ts index 733d3fd..743927c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -24,6 +24,7 @@ async function bootstrap() { .setDescription("Rino SDK API Documentation") .setVersion("0.1.0") .build(); + const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup("docs", app, document); diff --git a/src/rino/rino.service.spec.ts b/src/rino/rino.service.spec.ts index 9b3acd7..1feb81b 100644 --- a/src/rino/rino.service.spec.ts +++ b/src/rino/rino.service.spec.ts @@ -101,7 +101,12 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/activity`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletActivitiesMock); @@ -112,7 +117,12 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/members`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletMembersMock); @@ -123,7 +133,12 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/removed_spenders`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletRemovedSpendersMock); @@ -134,14 +149,19 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/pending_transfers`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletPendingTransfersMock); }); it("gets a pending transfer in the configured wallet", async () => { - const pendingTransfer = walletPendingTransfersMock.find( + const pendingTransfer = walletPendingTransfersMock.results.find( (item) => item.id === PENDING_TRANSFER_ID, ); const result = await lastValueFrom( @@ -191,12 +211,26 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/subaddresses`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletSubaddressesMock); }); + it("gets a single wallet subaddress", async () => { + await lastValueFrom(service.getWalletSubaddress(ADDRESS)); + + expect(httpService.get).toHaveBeenCalledWith( + `/wallets/${WALLET_ID}/subaddresses/${ADDRESS}`, + undefined, + ); + }); + it("creates a subaddress in the configured wallet", async () => { await lastValueFrom(service.createWalletSubaddress()); @@ -246,14 +280,19 @@ describe("RinoService", () => { expect(httpService.get).toHaveBeenCalledWith( `/wallets/${WALLET_ID}/transactions`, - undefined, + { + params: { + limit: undefined, + offset: undefined, + }, + }, ); expect(result).toStrictEqual(walletTransactionsMock); }); it("gets a transaction in the configured wallet", async () => { - const transaction = walletTransactionsMock.find( + const transaction = walletTransactionsMock.results.find( (item) => item.id === TRANSACTION_ID, ); const result = await lastValueFrom( diff --git a/src/rino/rino.service.ts b/src/rino/rino.service.ts index 23e393a..4bb056c 100644 --- a/src/rino/rino.service.ts +++ b/src/rino/rino.service.ts @@ -23,11 +23,10 @@ import { WalletTransactionSupportedExportTypes, FileResponseEntity, } from "../entities"; +import { Page } from "../types"; const responseDataMapCallback = (response) => response.data; -const responseResultsMapCallback = (response) => response.data.results; - const responseTaskIdMapCallback = (response) => response.data.task_id; const defaultMapCallback = responseDataMapCallback; @@ -63,35 +62,67 @@ export class RinoService { return this.get(`/wallets/${this.walletId}`); } - getWalletActivity(): Observable { - return this.get( + getWalletActivity( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/activity`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, ); } - getWalletMembers(): Observable { - return this.get( + getWalletMembers( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/members`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, ); } - getWalletRemovedSpenders(): Observable { - return this.get( + getWalletRemovedSpenders( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/removed_spenders`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, ); } - getWalletPendingTransfers(): Observable { - return this.get( + getWalletPendingTransfers( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/pending_transfers`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, ); } @@ -131,11 +162,25 @@ export class RinoService { ); } - getWalletSubaddresses(): Observable { - return this.get( + getWalletSubaddresses( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/subaddresses`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, + ); + } + + getWalletSubaddress(address: string): Observable { + return this.get( + `/wallets/${this.walletId}/subaddresses/${address}`, ); } @@ -178,11 +223,19 @@ export class RinoService { ); } - getWalletTransactions(): Observable { - return this.get( + getWalletTransactions( + limit?: number, + offset?: number, + ): Observable> { + return this.get>( `/wallets/${this.walletId}/transactions`, - undefined, - responseResultsMapCallback, + { + params: { + limit, + offset, + }, + }, + responseDataMapCallback, ); } diff --git a/src/types/base.ts b/src/types/base.ts new file mode 100644 index 0000000..8bbf421 --- /dev/null +++ b/src/types/base.ts @@ -0,0 +1,14 @@ +import { ApiProperty } from "@nestjs/swagger"; + +export class Page { + @ApiProperty() + count: number; + + @ApiProperty() + next: string; + + @ApiProperty() + previous: string; + + results: T[]; +} diff --git a/src/types/index.ts b/src/types/index.ts index b479fdc..bab56b7 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1 +1,2 @@ +export * from "./base"; export * from "./wallet"; diff --git a/src/wallet/wallet.controller.spec.ts b/src/wallet/wallet.controller.spec.ts index 2c0bc9a..1cfd77a 100644 --- a/src/wallet/wallet.controller.spec.ts +++ b/src/wallet/wallet.controller.spec.ts @@ -115,6 +115,12 @@ describe("WalletController", () => { expect(walletService.getSubaddresses).toHaveBeenCalled(); }); + it("gets a single subaddress in the configured wallet", async () => { + await controller.getSubaddress(ADDRESS); + + expect(walletService.getSubaddress).toHaveBeenCalledWith(ADDRESS); + }); + it("creates a subaddress in the configured wallet", () => { return new Promise((resolve) => { setTimeout(async () => { diff --git a/src/wallet/wallet.controller.ts b/src/wallet/wallet.controller.ts index 33ca942..3f56a33 100644 --- a/src/wallet/wallet.controller.ts +++ b/src/wallet/wallet.controller.ts @@ -13,6 +13,7 @@ import { import { ApiBearerAuth, ApiOperation, + ApiParam, ApiProduces, ApiQuery, ApiResponse, @@ -33,10 +34,12 @@ import { WalletTransactionCreateResponse, WalletTransactionEntity, WalletTransactionSendPayload, - WalletTransactionSendResponse, WalletTransactionSubmitPayload, + WalletTransactionSubmitResultResponse, WalletTransactionSupportedExportTypes, } from "../entities"; +import { Page } from "../types"; +import { ApiPaginatedResponse } from "../decorators/api.paginated.response"; ApiBearerAuth(); @Controller({ @@ -59,46 +62,102 @@ export class WalletController { @Get("/activity") @ApiOperation({ summary: "Gets the service wallet activity" }) - @ApiResponse({ + @ApiPaginatedResponse(WalletActivityEntity, { status: 200, - description: "The wallet activity data", - type: [WalletActivityEntity], + description: "The requested page with the wallet activity data", + }) + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", }) - getActivity(): Observable { - return this.walletService.getActivity(); + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", + }) + getActivity( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Observable> { + return this.walletService.getActivity(limit, offset); } @Get("/members") @ApiOperation({ summary: "Gets the service wallet members" }) - @ApiResponse({ + @ApiPaginatedResponse(WalletMemberEntity, { status: 200, - description: "The wallet members data", - type: [WalletMemberEntity], + description: "The requested page with the wallet members data", }) - getMembers(): Observable { - return this.walletService.getMembers(); + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", + }) + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", + }) + getMembers( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Observable> { + return this.walletService.getMembers(limit, offset); } @Get("/removed_spenders") @ApiOperation({ summary: "Gets the service wallet removed spenders" }) - @ApiResponse({ + @ApiPaginatedResponse(WalletRemovedSpenderEntity, { status: 200, - description: "The wallet removed spenders data", - type: [WalletRemovedSpenderEntity], + description: "The requested page with the wallet removed spenders data", + }) + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", }) - getRemovedSpenders(): Observable { - return this.walletService.getRemovedSpenders(); + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", + }) + getRemovedSpenders( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Observable> { + return this.walletService.getRemovedSpenders(limit, offset); } @Get("/pending_transfers") @ApiOperation({ summary: "Gets the service wallet pending transfers" }) - @ApiResponse({ + @ApiPaginatedResponse(WalletPendingTransferEntity, { status: 200, - description: "The wallet pending transfers data", - type: [WalletPendingTransferEntity], + description: "The requested page with the wallet pending transfers data", + }) + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", + }) + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", }) - getPendingTransfers(): Observable { - return this.walletService.getPendingTransfers(); + getPendingTransfers( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Observable> { + return this.walletService.getPendingTransfers(limit, offset); } @Get("/pending_transfers/:pendingTransferId") @@ -112,6 +171,10 @@ export class WalletController { status: 404, description: "Wallet pending transfer data not found", }) + @ApiParam({ + name: "pendingTransferId", + description: "Id of the pending transfer to get", + }) getPendingTransfer( @Param("pendingTransferId") pendingTransferId: string, ): Observable { @@ -129,6 +192,10 @@ export class WalletController { status: 404, description: "Wallet pending transfer data not found", }) + @ApiParam({ + name: "pendingTransferId", + description: "Id of the pending transfer to approve", + }) approvePendingTransfer( @Param("pendingTransferId") pendingTransferId: string, ): Promise { @@ -146,6 +213,10 @@ export class WalletController { status: 404, description: "Wallet pending transfer data not found", }) + @ApiParam({ + name: "pendingTransferId", + description: "Id of the pending transfer to cancel", + }) cancelPendingTransfer( @Param("pendingTransferId") pendingTransferId: string, ): Observable { @@ -163,6 +234,10 @@ export class WalletController { status: 404, description: "Wallet pending transfer data not found", }) + @ApiParam({ + name: "pendingTransferId", + description: "Id of the pending transfer to reject", + }) rejectPendingTransfer( @Param("pendingTransferId") pendingTransferId: string, ): Observable { @@ -171,13 +246,44 @@ export class WalletController { @Get("/subaddresses") @ApiOperation({ summary: "Gets the service wallet subaddresses" }) + @ApiPaginatedResponse(WalletSubaddressEntity, { + status: 200, + description: "The requested page with the wallet subaddresses data", + }) + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", + }) + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", + }) + getSubaddresses( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Promise> { + return this.walletService.getSubaddresses(limit, offset); + } + + @Get("/subaddresses/:address") + @ApiOperation({ summary: "Gets a service wallet subaddress" }) @ApiResponse({ status: 200, - description: "The wallet subaddresses data", - type: [WalletSubaddressEntity], + description: "The wallet subaddress data", + type: WalletSubaddressEntity, + }) + @ApiParam({ + name: "address", + description: "Address of the subaddress data to get", }) - getSubaddresses(): Promise { - return this.walletService.getSubaddresses(); + getSubaddress( + @Param("address") address: string, + ): Promise { + return this.walletService.getSubaddress(address); } @Post("/subaddresses") @@ -198,6 +304,10 @@ export class WalletController { description: "The updated wallet subaddress data", type: WalletSubaddressEntity, }) + @ApiParam({ + name: "address", + description: "Address of the subaddress data to update", + }) updateSubaddress( @Param("address") address: string, @Body() payload: WalletSubaddressUpdatePayload, @@ -212,6 +322,10 @@ export class WalletController { description: "The partially updated wallet subaddress data", type: WalletSubaddressEntity, }) + @ApiParam({ + name: "address", + description: "Address of the subaddress data to update partially", + }) partiallyUpdateSubaddress( @Param("address") address: string, @Body() payload: WalletSubaddressPartialUpdatePayload, @@ -221,13 +335,27 @@ export class WalletController { @Get("/transactions") @ApiOperation({ summary: "Gets the service wallet transactions" }) - @ApiResponse({ + @ApiPaginatedResponse(WalletTransactionEntity, { status: 200, - description: "The wallet transactions data", - type: [WalletTransactionEntity], + description: "The requested page with the wallet transactions data", }) - getTransactions(): Observable { - return this.walletService.getTransactions(); + @ApiQuery({ + name: "limit", + required: false, + type: Number, + description: "Number of results to return per page", + }) + @ApiQuery({ + name: "offset", + required: false, + type: Number, + description: "The initial index from which to return the results", + }) + getTransactions( + @Query("limit") limit?: number, + @Query("offset") offset?: number, + ): Observable> { + return this.walletService.getTransactions(limit, offset); } @Get("/transactions/export") @@ -242,6 +370,7 @@ export class WalletController { }) @ApiQuery({ name: "type", + description: "Output file format", required: true, enum: WalletTransactionSupportedExportTypes, type: String, @@ -272,6 +401,10 @@ export class WalletController { status: 404, description: "Wallet transaction data not found", }) + @ApiParam({ + name: "transactionId", + description: "Id of the transaction to get", + }) getTransaction( @Param("transactionId") transactionId: string, ): Observable { @@ -279,23 +412,30 @@ export class WalletController { } @Post("/send") - @ApiOperation({ summary: "Sends a service wallet transaction" }) + @ApiOperation({ + summary: "Sends a service wallet transaction", + description: + "If the response HTTP Code is `201`, the content will be the submitted transaction data. If the response HTTP code is `202` the content will be the pending transaction data.", + }) @ApiResponse({ status: 201, - description: "The submitted transaction wallet data", - type: WalletTransactionSendResponse, + description: "The submitted transaction data", + type: WalletTransactionSubmitResultResponse, }) @ApiResponse({ status: 202, - description: "The pending transaction wallet data", - type: WalletTransactionSendResponse, + description: "The pending transaction data", + type: WalletPendingTransferEntity, }) async sendTransaction( @Body() payload: WalletTransactionSendPayload, @Res() response, - ): Promise { - const result = await this.walletService.sendTransaction(payload); - return response.status(result.requiresApproval ? 202 : 201).send(result); + ): Promise< + WalletTransactionSubmitResultResponse | WalletPendingTransferEntity + > { + const { requiresApproval, result } = + await this.walletService.sendTransaction(payload); + return response.status(requiresApproval ? 202 : 201).send(result); } @Post("/transactions/create") @@ -303,7 +443,7 @@ export class WalletController { @ApiResponse({ status: 201, description: "The transaction is created", - type: WalletTransactionSendResponse, + type: WalletTransactionCreateResponse, }) createUnsignedTransaction( @Body() payload: WalletTransactionCreatePayload, @@ -312,22 +452,30 @@ export class WalletController { } @Post("/transactions/submit") - @ApiOperation({ summary: "Submits a service wallet transaction" }) + @ApiOperation({ + summary: "Submits a service wallet transaction", + description: + "If the response HTTP Code is `201`, the content will be the submitted transaction data. If the response HTTP code is `202` the content will be the pending transaction data.", + }) @ApiResponse({ status: 201, - description: "The submitted transaction wallet data", - type: WalletTransactionSendResponse, + description: "The submitted transaction data", + type: WalletTransactionSubmitResultResponse, }) @ApiResponse({ status: 202, - description: "The pending transaction wallet data", - type: WalletTransactionSendResponse, + description: "The pending transaction data", + type: WalletPendingTransferEntity, }) async submitTransaction( @Body() payload: WalletTransactionSubmitPayload, @Res() response, - ): Promise { - const result = await this.walletService.submitTransaction(payload); - return response.status(result.requiresApproval ? 202 : 201).send(result); + ): Promise< + WalletTransactionSubmitResultResponse | WalletPendingTransferEntity + > { + const { requiresApproval, result } = + await this.walletService.submitTransaction(payload); + + return response.status(requiresApproval ? 202 : 201).send(result); } } diff --git a/src/wallet/wallet.service.spec.ts b/src/wallet/wallet.service.spec.ts index 1931207..ad901cd 100644 --- a/src/wallet/wallet.service.spec.ts +++ b/src/wallet/wallet.service.spec.ts @@ -128,6 +128,12 @@ describe("WalletService", () => { expect(rinoService.getWalletSubaddresses).toHaveBeenCalled(); }); + it("get single subaddress in the configured wallet", async () => { + await service.getSubaddress(ADDRESS); + + expect(rinoService.getWalletSubaddress).toHaveBeenCalledWith(ADDRESS); + }); + it("creates a subaddress in the configured wallet", () => { return new Promise((resolve) => { setTimeout(async () => { diff --git a/src/wallet/wallet.service.ts b/src/wallet/wallet.service.ts index 88fa592..091c3cd 100644 --- a/src/wallet/wallet.service.ts +++ b/src/wallet/wallet.service.ts @@ -10,7 +10,6 @@ import { AccountInfoEntity, FileResponseEntity, TaskResponseEntity, - TaskResponseSubmitTxResult, TaskResponseSubmitTxParams, WalletActivityEntity, WalletEntity, @@ -30,8 +29,10 @@ import { WalletTransactionCreateResponse, WalletTransactionSubmitResponse, WalletTransactionSupportedExportTypes, + WalletTransactionSubmitResultResponse, } from "../entities"; import { MoneroWallet } from "../monero/Wallet"; +import { Page } from "../types"; import { decryptKeys, deriveUserKeys, @@ -85,20 +86,32 @@ export class WalletService { return this.rinoService.getWallet(); } - getActivity(): Observable { - return this.rinoService.getWalletActivity(); + getActivity( + limit?: number, + offset?: number, + ): Observable> { + return this.rinoService.getWalletActivity(limit, offset); } - getMembers(): Observable { - return this.rinoService.getWalletMembers(); + getMembers( + limit?: number, + offset?: number, + ): Observable> { + return this.rinoService.getWalletMembers(limit, offset); } - getRemovedSpenders(): Observable { - return this.rinoService.getWalletRemovedSpenders(); + getRemovedSpenders( + limit?: number, + offset?: number, + ): Observable> { + return this.rinoService.getWalletRemovedSpenders(limit, offset); } - getPendingTransfers(): Observable { - return this.rinoService.getWalletPendingTransfers(); + getPendingTransfers( + limit?: number, + offset?: number, + ): Observable> { + return this.rinoService.getWalletPendingTransfers(limit, offset); } getPendingTransfer( @@ -136,11 +149,16 @@ export class WalletService { return this.rinoService.rejectWalletPendingTransfer(pendingTransferId); } - async getSubaddresses() { - const subaddresses = await lastValueFrom( - this.rinoService.getWalletSubaddresses(), + async getSubaddresses( + limit?: number, + offset?: number, + ): Promise> { + const page = await lastValueFrom( + this.rinoService.getWalletSubaddresses(limit, offset), ); + const { results: subaddresses } = page; + const { username, keypair: { enc_private_key }, @@ -180,7 +198,49 @@ export class WalletService { cleanDerivedKeys(); - return processedSubaddresses; + return { + ...page, + results: processedSubaddresses, + }; + } + + async getSubaddress(address: string) { + const subaddress = await lastValueFrom( + this.rinoService.getWalletSubaddress(address), + ); + + const { + username, + keypair: { enc_private_key }, + } = this.accountInfo; + + const encPrivateKey = JSON.parse(enc_private_key); + + const { encryptionKey, clean: cleanDerivedKeys } = await deriveUserKeys( + this.password, + username, + ); + + let validated = false; + try { + if (!!subaddress.signature) { + validated = await verifySignature( + encPrivateKey, + encryptionKey, + subaddress.address, + Uint8Array.from(Buffer.from(subaddress.signature, "base64")), + ); + } + } catch (error) { + this.logger.error(`Error verifying signature of address ${subaddress}`); + this.logger.error(error); + } + + subaddress.validated = validated; + + cleanDerivedKeys(); + + return subaddress; } async createSubaddress(): Promise { @@ -240,8 +300,11 @@ export class WalletService { return this.rinoService.partialUpdateWalletSubaddress(address, payload); } - getTransactions(): Observable { - return this.rinoService.getWalletTransactions(); + getTransactions( + limit?: number, + offset?: number, + ): Observable> { + return this.rinoService.getWalletTransactions(limit, offset); } getTransaction(transactionId: string): Observable { @@ -294,18 +357,18 @@ export class WalletService { if (typeof submitTxResponse === "string") { const submitTxTaskResult = await this.pollTask< - TaskResponseSubmitTxResult, + TaskResponseEntity, TaskResponseSubmitTxParams >(submitTxResponse); response = { requiresApproval: false, - data: submitTxTaskResult, + result: submitTxTaskResult.result[0], }; } else { response = { requiresApproval: true, - data: submitTxResponse, + result: submitTxResponse, }; } @@ -393,18 +456,18 @@ export class WalletService { if (typeof submitTxResponse === "string") { const submitTxTaskResult = await this.pollTask< - TaskResponseSubmitTxResult, + TaskResponseEntity, TaskResponseSubmitTxParams >(submitTxResponse); response = { requiresApproval: false, - data: submitTxTaskResult, + result: submitTxTaskResult.result[0], }; } else { response = { requiresApproval: true, - data: submitTxResponse, + result: submitTxResponse, }; } diff --git a/yarn.lock b/yarn.lock index c29b3ee..a5e2c68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -73,6 +73,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.21.5": version "7.21.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" @@ -109,6 +117,23 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" @@ -125,6 +150,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" @@ -133,6 +163,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -140,6 +178,20 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-imports@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" @@ -166,6 +218,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-simple-access@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" @@ -180,16 +237,33 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" @@ -213,11 +287,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -253,6 +341,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" @@ -316,6 +411,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" +"@babel/runtime@^7.17.8": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -325,6 +427,15 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" @@ -341,6 +452,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.4.5": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -350,6 +477,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -367,6 +503,28 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@emotion/is-prop-valid@^1.1.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -399,6 +557,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== + "@golevelup/ts-jest@^0.3.7": version "0.3.7" resolved "https://registry.yarnpkg.com/@golevelup/ts-jest/-/ts-jest-0.3.7.tgz#6c66bd5cdea96d1052ac41a2d6c227c4a9509903" @@ -844,10 +1007,36 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@rino-wallet/monero-javascript@0.0.35": - version "0.0.35" - resolved "https://registry.yarnpkg.com/@rino-wallet/monero-javascript/-/monero-javascript-0.0.35.tgz#21ff9010dc2f78bc3b8199b14cf968ffac5c09b8" - integrity sha512-CIjICHsR/m+puQ/+KGWsabP2pDDa74tk0u94qNt+LqA083Y1WoSYetkoH/+2MCNmYDF9hs1cPaYGxKrtyZnCqA== +"@redocly/ajv@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.0.tgz#2fad322888dc0113af026e08fceb3e71aae495ae" + integrity sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +"@redocly/openapi-core@^1.0.0-beta.104": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.4.0.tgz#d1ce8e391b32452082f754315c8eb265690b784f" + integrity sha512-M4f0H3XExPvJ0dwbEou7YKLzkpz2ZMS9JoNvrbEECO7WCwjGZ4AjbiUjp2p0ZzFMNIiNgTVUJJmkxGxsXW471Q== + dependencies: + "@redocly/ajv" "^8.11.0" + "@types/node" "^14.11.8" + colorette "^1.2.0" + js-levenshtein "^1.1.6" + js-yaml "^4.1.0" + lodash.isequal "^4.5.0" + minimatch "^5.0.1" + node-fetch "^2.6.1" + pluralize "^8.0.0" + yaml-ast-parser "0.0.43" + +"@rino-wallet/monero-javascript@0.0.36": + version "0.0.36" + resolved "https://registry.yarnpkg.com/@rino-wallet/monero-javascript/-/monero-javascript-0.0.36.tgz#0966bfd9920436b2dc8f3d13805513f6810b57ba" + integrity sha512-bEacrCPTzcjmE6tfsQSymyq4rl0GEJ0Dw3oShv/hbJG8MULEomhbVbylw7TTScOzu7QwTzjjV4fApm6P+6bzBg== dependencies: "@babel/core" "^7.14.6" ajv "^6.12.6" @@ -1052,6 +1241,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.7": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== + "@types/libsodium-wrappers-sumo@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@types/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.5.tgz#c5191fc28d44edd39583552bd1855f6b7b77ca88" @@ -1084,6 +1278,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@^14.11.8": + version "14.18.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" + integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -1432,6 +1631,13 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + ansi-colors@4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -1513,6 +1719,16 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -1525,6 +1741,14 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +assert@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" + integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== + dependencies: + object.assign "^4.1.4" + util "^0.10.4" + async@2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" @@ -1590,6 +1814,17 @@ babel-plugin-jest-hoist@^29.5.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +"babel-plugin-styled-components@>= 1.12.0": + version "2.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092" + integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + lodash "^4.17.21" + picomatch "^2.3.1" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -1621,7 +1856,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -1652,6 +1887,16 @@ bluebird@^3.5.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -1688,6 +1933,20 @@ body-parser@1.20.2: type-is "~1.6.18" unpipe "1.0.0" +boxen@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1710,6 +1969,72 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.4" + inherits "^2.0.4" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.14.5, browserslist@^4.21.3: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" @@ -1739,6 +2064,20 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -1747,6 +2086,11 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + busboy@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" @@ -1767,6 +2111,20 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1782,6 +2140,11 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001449: version "1.0.30001482" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz#8b3fad73dc35b2674a5c96df2d4f9f1c561435de" @@ -1800,7 +2163,7 @@ chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1819,7 +2182,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@3.5.3, chokidar@^3.5.3: +chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1844,6 +2207,14 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" @@ -1854,6 +2225,16 @@ class-transformer@^0.5.1: resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== +classnames@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -1894,6 +2275,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +clsx@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1928,6 +2314,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1970,6 +2361,16 @@ consola@^2.15.0: resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -2036,6 +2437,37 @@ cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -2050,11 +2482,42 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + crypto-js@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2076,6 +2539,11 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +decko@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" + integrity sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ== + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -2098,6 +2566,24 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2108,6 +2594,14 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -2136,6 +2630,15 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2150,6 +2653,16 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +dompurify@^2.2.8: + version "2.4.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.7.tgz#277adeb40a2c84be2d42a8bcd45f582bfa4d0cfc" + integrity sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ== + dotenv-expand@10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" @@ -2178,6 +2691,19 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.382.tgz#87e659b0f0d5f7b19759038871bac0a327191f82" integrity sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg== +elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -2220,6 +2746,11 @@ es-module-lexer@^1.2.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2372,11 +2903,24 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -events@^3.2.0: +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -2515,7 +3059,7 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1: +fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -2602,6 +3146,11 @@ follow-redirects@^1.15.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +foreach@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2692,6 +3241,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2711,6 +3265,16 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -2800,6 +3364,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -2810,6 +3381,18 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2833,6 +3416,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -2845,11 +3440,51 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -2880,6 +3515,16 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -2902,7 +3547,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -2941,11 +3586,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + inquirer@8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" @@ -3069,7 +3719,7 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -isarray@~1.0.0: +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -3512,12 +4162,17 @@ joi@^17.9.2: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" +js-levenshtein@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + js-sdsl@^4.1.4: version "4.4.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -3552,6 +4207,13 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-pointer@0.6.2, json-pointer@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -3672,6 +4334,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -3695,6 +4362,13 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -3714,6 +4388,11 @@ lru-cache@^9.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + macos-release@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.1.tgz#bccac4a8f7b93163a8d163b8ebf385b3c5f55bf9" @@ -3745,6 +4424,25 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + +marked@^4.0.15: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -3785,6 +4483,14 @@ micromatch@^4.0.0, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -3812,6 +4518,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -3819,6 +4535,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^8.0.2: version "8.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" @@ -3826,7 +4549,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.6: +minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -3848,6 +4571,28 @@ mkdirp@^0.5.4: dependencies: minimist "^1.2.6" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mobx-react-lite@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.4.3.tgz#3a4c22c30bfaa8b1b2aa48d12b2ba811c0947ab7" + integrity sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg== + +mobx-react@^7.2.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-7.6.0.tgz#ebf0456728a9bd2e5c24fdcf9b36e285a222a7d6" + integrity sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA== + dependencies: + mobx-react-lite "^3.4.0" + +mobx@^6.3.2: + version "6.10.2" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.10.2.tgz#96e123deef140750360ca9a5b02a8b91fbffd4d9" + integrity sha512-B1UGC3ieK3boCjnMEcZSwxqRDMdzX65H/8zOHbuTY8ZhvrIjTUoLRR2TP2bPqIgYRfb3+dUigu8yMZufNjn0LQ== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3918,6 +4663,13 @@ node-emoji@1.11.0: dependencies: lodash "^4.17.21" +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + node-fetch@^2.6.1: version "2.6.9" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" @@ -3930,6 +4682,42 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== + dependencies: + es6-promise "^3.2.1" + node-releases@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" @@ -3947,6 +4735,52 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -3962,6 +4796,21 @@ object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -3983,6 +4832,14 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +openapi-sampler@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.3.1.tgz#eebb2a1048f830cc277398bc8022b415f887e859" + integrity sha512-Ert9mvc2tLPmmInwSyGZS+v4Ogu9/YoZuq9oP3EdUklg2cad6+IGndP9yqJJwbgdXwZibiq5fpv6vYujchdJFg== + dependencies: + "@types/json-schema" "^7.0.7" + json-pointer "0.6.2" + optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -4010,6 +4867,11 @@ ora@5.4.1, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + os-name@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555" @@ -4056,6 +4918,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4063,6 +4930,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -4078,6 +4956,16 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -4121,6 +5009,22 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +perfect-scrollbar@^1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz#41a211a2fb52a7191eff301432134ea47052b27f" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -4148,11 +5052,23 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pluralize@8.0.0: +pluralize@8.0.0, pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +polished@^4.1.3: + version "4.2.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== + dependencies: + "@babel/runtime" "^7.17.8" + +postcss-value-parser@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4179,11 +5095,21 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + promise-throttle@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/promise-throttle/-/promise-throttle-1.1.2.tgz#8a59d0424b6f9673aa8405c8b6bd4b5e4f7f71db" @@ -4197,6 +5123,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +prop-types@^15.5.0, prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -4215,6 +5150,18 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -4223,6 +5170,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -4247,23 +5199,43 @@ qs@^6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -4289,12 +5261,42 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +react-dom@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -readable-stream@^2.2.2: +react-tabs@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.2.3.tgz#ccbb3e1241ad3f601047305c75db661239977f2f" + integrity sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg== + dependencies: + clsx "^1.1.0" + prop-types "^15.5.0" + +react@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -4307,7 +5309,7 @@ readable-stream@^2.2.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0: +readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -4330,11 +5332,66 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redoc-cli@^0.13.21: + version "0.13.21" + resolved "https://registry.yarnpkg.com/redoc-cli/-/redoc-cli-0.13.21.tgz#90bfca81c249422b806367e9a4691f4888626907" + integrity sha512-pjuPf0HkKqo9qtoHxMK4x5dhC/lJ08O0hO0rJISbSRCf19bPBjQ5lb2mHRu9j6vypTMltyaLtFIfVNveuyF5fQ== + dependencies: + boxen "5.1.2" + chokidar "^3.5.1" + handlebars "^4.7.7" + mkdirp "^1.0.4" + mobx "^6.3.2" + node-libs-browser "^2.2.1" + react "^17.0.1" + react-dom "^17.0.1" + redoc "2.0.0" + styled-components "^5.3.0" + yargs "^17.3.1" + +redoc@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0.tgz#8b3047ca75b84d31558c6c92da7f84affef35c3e" + integrity sha512-rU8iLdAkT89ywOkYk66Mr+IofqaMASlRvTew0dJvopCORMIPUcPMxjlJbJNC6wsn2vvMnpUFLQ/0ISDWn9BWag== + dependencies: + "@redocly/openapi-core" "^1.0.0-beta.104" + classnames "^2.3.1" + decko "^1.2.0" + dompurify "^2.2.8" + eventemitter3 "^4.0.7" + json-pointer "^0.6.2" + lunr "^2.3.9" + mark.js "^8.11.1" + marked "^4.0.15" + mobx-react "^7.2.0" + openapi-sampler "^1.3.0" + path-browserify "^1.0.1" + perfect-scrollbar "^1.5.5" + polished "^4.1.3" + prismjs "^1.27.0" + prop-types "^15.7.2" + react-tabs "^3.2.2" + slugify "~1.4.7" + stickyfill "^1.1.1" + style-loader "^3.3.1" + swagger2openapi "^7.0.6" + url-template "^2.0.8" + reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + request-promise-core@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" @@ -4446,6 +5503,14 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -4472,7 +5537,7 @@ rxjs@^7.2.0, rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4487,6 +5552,14 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^3.1.1, schema-utils@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" @@ -4551,11 +5624,39 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4577,6 +5678,50 @@ shelljs@0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -4601,6 +5746,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slugify@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" + integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -4664,6 +5814,30 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA== + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -4677,7 +5851,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4686,7 +5860,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -4727,6 +5901,27 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +style-loader@^3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== + +styled-components@^5.3.0: + version "5.3.11" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8" + integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + superagent@^8.0.5: version "8.0.9" resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.0.9.tgz#2c6fda6fadb40516515f93e9098c0eb1602e0535" @@ -4751,7 +5946,7 @@ supertest@^6.1.3: methods "^1.1.2" superagent "^8.0.5" -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -4782,6 +5977,23 @@ swagger-ui-dist@4.18.2: resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-4.18.2.tgz#323308f1c1d87a7c22ce3e273c31835eb680a71b" integrity sha512-oVBoBl9Dg+VJw8uRWDxlyUyHoNEDC0c1ysT6+Boy6CTgr2rUcLcfPon4RvxgS2/taNW6O0+US+Z/dlAsWFjOAQ== +swagger2openapi@^7.0.6: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + symbol-observable@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" @@ -4837,6 +6049,13 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tls@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tls/-/tls-0.0.1.tgz#0ab2bf5968d71df2f8c0e1515d24a2240b98aac8" @@ -4854,6 +6073,11 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -4976,6 +6200,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5028,6 +6257,11 @@ typescript@4.9.5, typescript@^4.7.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + uid@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/uid/-/uid-2.0.2.tgz#4b5782abf0f2feeefc00fa88006b2b3b7af3e3b9" @@ -5060,11 +6294,38 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== + +url@^0.11.0: + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== + dependencies: + punycode "^1.4.1" + qs "^6.11.2" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -5108,6 +6369,11 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -5195,6 +6461,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + windows-release@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377" @@ -5207,6 +6480,11 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -5249,6 +6527,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" @@ -5259,7 +6542,7 @@ yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.3.1: +yargs@^17.0.1, yargs@^17.3.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==