diff --git a/.verdaccio/config.yml b/.verdaccio/config.yml new file mode 100644 index 000000000..5d7b31229 --- /dev/null +++ b/.verdaccio/config.yml @@ -0,0 +1,28 @@ +# path to a directory with all packages +storage: ../tmp/local-registry/storage + +# a list of other known repositories we can talk to +uplinks: + npmjs: + url: https://registry.yarnpkg.com + maxage: 60m + +packages: + '**': + # give all users (including non-authenticated users) full access + # because it is a local registry + access: $all + publish: $all + unpublish: $all + + # if package is not available locally, proxy requests to npm registry + proxy: npmjs + +# log settings +logs: + type: stdout + format: pretty + level: warn + +publish: + allow_offline: true # set offline to true to allow publish offline diff --git a/apps/explorer/tailwind.config.js b/apps/explorer/tailwind.config.js index beac189d1..51a2045f1 100644 --- a/apps/explorer/tailwind.config.js +++ b/apps/explorer/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../../libs/tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../../libs/tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../../libs/tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../../libs/tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/apps/governance/tailwind.config.js b/apps/governance/tailwind.config.js index f3331619e..9f4de5379 100644 --- a/apps/governance/tailwind.config.js +++ b/apps/governance/tailwind.config.js @@ -1,9 +1,11 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../../libs/tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../../libs/tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../../libs/tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../../libs/tailwindcss-config/src/vega-custom-classes'); -module.exports = { +export default { content: [ join(__dirname, 'src/**/*.{js,ts,jsx,tsx}'), 'libs/ui-toolkit/src/utils/shared.ts', diff --git a/apps/liquidity-provision-dashboard/.babelrc b/apps/liquidity-provision-dashboard/.babelrc deleted file mode 100644 index 88ee27b14..000000000 --- a/apps/liquidity-provision-dashboard/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic" - } - ] - ], - "plugins": [] -} diff --git a/apps/liquidity-provision-dashboard/.browserslistrc b/apps/liquidity-provision-dashboard/.browserslistrc deleted file mode 100644 index f1d12df4f..000000000 --- a/apps/liquidity-provision-dashboard/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by: -# 1. autoprefixer to adjust CSS to support the below specified browsers -# 2. babel preset-env to adjust included polyfills -# -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries -# -# If you need to support different browsers in production, you may tweak the list below. - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major version -last 2 iOS major versions -Firefox ESR -not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/apps/liquidity-provision-dashboard/.env b/apps/liquidity-provision-dashboard/.env deleted file mode 100644 index 5cc9dfb8c..000000000 --- a/apps/liquidity-provision-dashboard/.env +++ /dev/null @@ -1,28 +0,0 @@ -# React Environment Variables -# https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables#expanding-environment-variables-in-env - -# Netlify Environment Variables -# https://www.netlify.com/docs/continuous-deployment/#environment-variables -NX_VERSION=\$npm_package_version -NX_REPOSITORY_URL=\$REPOSITORY_URL -NX_BRANCH=\$BRANCH -NX_PULL_REQUEST=\$PULL_REQUEST -NX_HEAD=\$HEAD -NX_COMMIT_REF=\$COMMIT_REF -NX_CONTEXT=\$CONTEXT -NX_REVIEW_ID=\$REVIEW_ID -NX_INCOMING_HOOK_TITLE=\$INCOMING_HOOK_TITLE -NX_INCOMING_HOOK_URL=\$INCOMING_HOOK_URL -NX_INCOMING_HOOK_BODY=\$INCOMING_HOOK_BODY -NX_URL=\$URL -NX_DEPLOY_URL=\$DEPLOY_URL -NX_DEPLOY_PRIME_URL=\$DEPLOY_PRIME_URL -NX_VEGA_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/networks-internal/main/fairground/vegawallet-fairground.toml -NX_VEGA_ENV = 'TESTNET' -NX_VEGA_URL="https://api.n07.testnet.vega.xyz/graphql" -NX_VEGA_WALLET_URL=http://localhost:1789 -NX_ETHEREUM_PROVIDER_URL=https://sepolia.infura.io/v3/4f846e79e13f44d1b51bbd7ed9edefb8 -NX_ETHERSCAN_URL=https://sepolia.etherscan.io -NX_VEGA_NETWORKS={\"TESTNET\":\"https://console.fairground.wtf\",\"STAGNET1\":\"https://trading.stagnet1.vega.rocks\"} -NX_VEGA_EXPLORER_URL=https://explorer.fairground.wtf -NX_VEGA_CONSOLE_URL=https://console.fairground.wtf diff --git a/apps/liquidity-provision-dashboard/.env.capsule b/apps/liquidity-provision-dashboard/.env.capsule deleted file mode 100644 index 6bc5b34a1..000000000 --- a/apps/liquidity-provision-dashboard/.env.capsule +++ /dev/null @@ -1,3 +0,0 @@ -# App configuration variables -NX_VEGA_URL=http://localhost:3008/graphql -NX_VEGA_ENV=LOCAL diff --git a/apps/liquidity-provision-dashboard/.env.devnet b/apps/liquidity-provision-dashboard/.env.devnet deleted file mode 100644 index 112c12354..000000000 --- a/apps/liquidity-provision-dashboard/.env.devnet +++ /dev/null @@ -1,8 +0,0 @@ -# App configuration variables -NX_VEGA_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/networks-internal/main/devnet1/vegawallet-devnet1.toml -NX_VEGA_URL=https://api.n04.d.vega.xyz/graphql -NX_VEGA_ENV=DEVNET -NX_VEGA_NETWORKS={\"TESTNET\":\"https://console.fairground.wtf\",\"STAGNET1\":\"https://trading.stagnet1.vega.rocks\"} -NX_ETHEREUM_PROVIDER_URL=https://sepolia.infura.io/v3/4f846e79e13f44d1b51bbd7ed9edefb8 -NX_ETHERSCAN_URL=https://sepolia.etherscan.io -NX_VEGA_EXPLORER_URL=# diff --git a/apps/liquidity-provision-dashboard/.env.mainnet b/apps/liquidity-provision-dashboard/.env.mainnet deleted file mode 100644 index f49f68cbd..000000000 --- a/apps/liquidity-provision-dashboard/.env.mainnet +++ /dev/null @@ -1,9 +0,0 @@ -# App configuration variables -NX_VEGA_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/networks/master/mainnet1/mainnet1.toml -NX_VEGA_URL=https://api.vega.community/graphql -NX_VEGA_ENV=MAINNET -NX_VEGA_NETWORKS={\"TESTNET\":\"https://console.fairground.wtf\"} -NX_ETHEREUM_PROVIDER_URL=https://mainnet.infura.io/v3/4f846e79e13f44d1b51bbd7ed9edefb8 -NX_ETHERSCAN_URL=https://etherscan.io -NX_VEGA_EXPLORER_URL=https://explorer.vega.xyz -NX_VEGA_CONSOLE_URL=https://console.vega.xyz diff --git a/apps/liquidity-provision-dashboard/.env.stagnet1 b/apps/liquidity-provision-dashboard/.env.stagnet1 deleted file mode 100644 index 035c634de..000000000 --- a/apps/liquidity-provision-dashboard/.env.stagnet1 +++ /dev/null @@ -1,9 +0,0 @@ -# App configuration variables -NX_VEGA_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/networks-internal/main/stagnet1/vegawallet-stagnet1.toml -NX_VEGA_URL=https://api.n00.stagnet1.vega.xyz/graphql -NX_VEGA_ENV=STAGNET1 -NX_ETHEREUM_PROVIDER_URL=https://sepolia.infura.io/v3/4f846e79e13f44d1b51bbd7ed9edefb8 -NX_ETHERSCAN_URL=https://sepolia.etherscan.io -NX_VEGA_EXPLORER_URL=https://explorer.stagnet1.vega.rocks -NX_VEGA_NETWORKS={\"TESTNET\":\"https://console.fairground.wtf\",\"STAGNET1\":\"https://trading.stagnet1.vega.rocks\"} - diff --git a/apps/liquidity-provision-dashboard/.env.testnet b/apps/liquidity-provision-dashboard/.env.testnet deleted file mode 100644 index 8b73dcbca..000000000 --- a/apps/liquidity-provision-dashboard/.env.testnet +++ /dev/null @@ -1,9 +0,0 @@ -# App configuration variables -NX_VEGA_CONFIG_URL=https://raw.githubusercontent.com/vegaprotocol/networks-internal/main/fairground/vegawallet-fairground.toml -NX_VEGA_URL=https://api.n07.testnet.vega.xyz/graphql -NX_VEGA_ENV=TESTNET -NX_VEGA_NETWORKS={\"TESTNET\":\"https://console.fairground.wtf\"} -NX_ETHEREUM_PROVIDER_URL=https://sepolia.infura.io/v3/4f846e79e13f44d1b51bbd7ed9edefb8 -NX_ETHERSCAN_URL=https://sepolia.etherscan.io -NX_VEGA_EXPLORER_URL=https://explorer.fairground.wtf -NX_VEGA_CONSOLE_URL=https://console.fairground.wtf diff --git a/apps/liquidity-provision-dashboard/.eslintrc.json b/apps/liquidity-provision-dashboard/.eslintrc.json deleted file mode 100644 index f3153d3b4..000000000 --- a/apps/liquidity-provision-dashboard/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": ["plugin:@nx/react", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*", "__generated__"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/apps/liquidity-provision-dashboard/jest.config.ts b/apps/liquidity-provision-dashboard/jest.config.ts deleted file mode 100644 index 03d03da6c..000000000 --- a/apps/liquidity-provision-dashboard/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'liquidity-provision-dashboard', - preset: '../../jest.preset.js', - transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/next/babel'] }], - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - coverageDirectory: '../../coverage/apps/liquidity-provision-dashboard', -}; diff --git a/apps/liquidity-provision-dashboard/postcss.config.js b/apps/liquidity-provision-dashboard/postcss.config.js deleted file mode 100644 index cbdd9c22c..000000000 --- a/apps/liquidity-provision-dashboard/postcss.config.js +++ /dev/null @@ -1,10 +0,0 @@ -const { join } = require('path'); - -module.exports = { - plugins: { - tailwindcss: { - config: join(__dirname, 'tailwind.config.js'), - }, - autoprefixer: {}, - }, -}; diff --git a/apps/liquidity-provision-dashboard/project.json b/apps/liquidity-provision-dashboard/project.json deleted file mode 100644 index c8193aeee..000000000 --- a/apps/liquidity-provision-dashboard/project.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "liquidity-provision-dashboard", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "apps/liquidity-provision-dashboard/src", - "projectType": "application", - "targets": { - "build": { - "executor": "@nx/webpack:webpack", - "outputs": ["{options.outputPath}"], - "defaultConfiguration": "production", - "options": { - "compiler": "babel", - "outputPath": "dist/apps/liquidity-provision-dashboard", - "index": "apps/liquidity-provision-dashboard/src/index.html", - "baseHref": "/", - "main": "apps/liquidity-provision-dashboard/src/main.tsx", - "polyfills": "apps/liquidity-provision-dashboard/src/polyfills.ts", - "tsConfig": "apps/liquidity-provision-dashboard/tsconfig.app.json", - "assets": [ - "apps/liquidity-provision-dashboard/src/favicon.ico", - "apps/liquidity-provision-dashboard/src/assets" - ], - "styles": ["apps/liquidity-provision-dashboard/src/styles.scss"], - "scripts": [], - "webpackConfig": "@nx/react/plugins/webpack" - }, - "configurations": { - "development": { - "extractLicenses": false, - "optimization": false, - "sourceMap": true, - "vendorChunk": true - }, - "production": { - "fileReplacements": [ - { - "replace": "apps/liquidity-provision-dashboard/src/environments/environment.ts", - "with": "apps/liquidity-provision-dashboard/src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false - } - } - }, - "serve": { - "executor": "@nx/webpack:dev-server", - "options": { - "buildTarget": "liquidity-provision-dashboard:build", - "hmr": true, - "port": 4201 - }, - "configurations": { - "development": { - "buildTarget": "liquidity-provision-dashboard:build:development" - }, - "production": { - "buildTarget": "liquidity-provision-dashboard:build:production", - "hmr": false - } - } - }, - "lint": { - "executor": "@nx/eslint:lint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": [ - "apps/liquidity-provision-dashboard/**/*.{ts,tsx,js,jsx}" - ] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/apps/liquidity-provision-dashboard" - ], - "options": { - "jestConfig": "apps/liquidity-provision-dashboard/jest.config.ts" - } - }, - "build-spec": { - "executor": "nx:run-commands", - "outputs": [], - "options": { - "command": "yarn tsc --project ./apps/liquidity-provision-dashboard/tsconfig.spec.json" - } - } - }, - "tags": [] -} diff --git a/apps/liquidity-provision-dashboard/src/app/app.tsx b/apps/liquidity-provision-dashboard/src/app/app.tsx deleted file mode 100644 index 357d05186..000000000 --- a/apps/liquidity-provision-dashboard/src/app/app.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import type { InMemoryCacheConfig } from '@apollo/client'; -import { NetworkLoader, useInitializeEnv } from '@vegaprotocol/environment'; -import { useRoutes } from 'react-router-dom'; - -import '../styles.scss'; -import { Navbar } from './components/navbar'; - -import { routerConfig } from './routes/router-config'; - -const cache: InMemoryCacheConfig = { - typePolicies: { - Market: { - merge: true, - }, - Party: { - merge: true, - }, - Query: {}, - Account: { - keyFields: false, - fields: { - balanceFormatted: {}, - }, - }, - Node: { - keyFields: false, - }, - Instrument: { - keyFields: false, - }, - }, -}; -const AppRouter = () => useRoutes(routerConfig); - -export function App() { - useInitializeEnv(); - return ( - -
- - -
-
- ); -} - -export default App; diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/dashboard.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/dashboard.tsx deleted file mode 100644 index 58a4bf70f..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/dashboard.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { t } from '@vegaprotocol/i18n'; - -import { Intro } from './intro'; -import { MarketList } from './market-list'; - -export function Dashboard() { - return ( - <> -
-
-

- {t('Top liquidity opportunities')} -

- - -
-
-
-
- -
-
- - ); -} diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/index.tsx deleted file mode 100644 index b58b6c922..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './dashboard'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/index.tsx deleted file mode 100644 index b2a6383e2..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './intro'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/intro.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/intro.tsx deleted file mode 100644 index 013c54191..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/intro/intro.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { t } from '@vegaprotocol/i18n'; -import { ExternalLink } from '@vegaprotocol/ui-toolkit'; - -// TODO: add mainnet links once docs have been updated -const LINKS = { - testnet: [ - { - label: 'Learn about liquidity fees', - url: 'https://docs.vega.xyz/testnet/tutorials/providing-liquidity#resources', - }, - { - label: 'Provide liquidity', - url: 'https://docs.vega.xyz/testnet/tutorials/providing-liquidity#overview', - }, - { - label: 'View your liquidity provisions', - url: 'https://docs.vega.xyz/testnet/tutorials/providing-liquidity#viewing-existing-liquidity-provisions', - }, - { - label: 'Amend or remove liquidity', - url: 'https://docs.vega.xyz/testnet/tutorials/providing-liquidity#amending-a-liquidity-commitment', - }, - ], - mainnet: [], -}; - -// TODO: update this when network switcher is added -type Network = 'testnet' | 'mainnet'; - -export const Intro = ({ network = 'testnet' }: { network?: Network }) => { - return ( -
-

- {t( - 'Become a liquidity provider and earn a cut of the fees paid during trading.' - )} -

-
- -
-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/index.tsx deleted file mode 100644 index 9c45ed531..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './market-list'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/market-list.tsx b/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/market-list.tsx deleted file mode 100644 index 0ad2c2446..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/dashboard/market-list/market-list.tsx +++ /dev/null @@ -1,296 +0,0 @@ -import { DApp, useLinks } from '@vegaprotocol/environment'; -import { type Market } from '@vegaprotocol/liquidity'; -import { - displayChange, - formatWithAsset, - useMarketsLiquidity, -} from '@vegaprotocol/liquidity'; -import { - addDecimalsFormatNumber, - formatNumberPercentage, - getExpiryDate, - toBigNum, -} from '@vegaprotocol/utils'; -import { t } from '@vegaprotocol/i18n'; -import { type VegaValueFormatterParams } from '@vegaprotocol/datagrid'; -import { PriceChangeCell } from '@vegaprotocol/datagrid'; -import type * as Schema from '@vegaprotocol/types'; -import { - AsyncRenderer, - Icon, - HealthBar, - TooltipCellComponent, -} from '@vegaprotocol/ui-toolkit'; -import { - type GetRowIdParams, - type RowClickedEvent, - type ColDef, -} from 'ag-grid-community'; -import 'ag-grid-community/styles/ag-grid.css'; -import 'ag-grid-community/styles/ag-theme-alpine.css'; -import { useCallback, useState, useMemo } from 'react'; - -import { Grid } from '../../grid'; -import { HealthDialog } from '../../health-dialog'; -import { Status } from '../../status'; -import { intentForStatus } from '../../../lib/utils'; -import { formatDistanceToNow } from 'date-fns'; -import { getAsset } from '@vegaprotocol/markets'; - -export const MarketList = () => { - const { data, error, loading } = useMarketsLiquidity(); - const [isHealthDialogOpen, setIsHealthDialogOpen] = useState(false); - const consoleLink = useLinks(DApp.Console); - - const getRowId = useCallback(({ data }: GetRowIdParams) => data.id, []); - const columnDefs = useMemo( - () => [ - { - headerName: t('Market (futures)'), - field: 'tradableInstrument.instrument.name', - cellRenderer: ({ value, data }: { value: string; data: Market }) => { - return ( - <> - {value} - {getAsset(data).symbol} - - ); - }, - minWidth: 100, - flex: 1, - headerTooltip: t('The market name and settlement asset'), - }, - - { - headerName: t('Market Code'), - headerTooltip: t( - 'The market code is a unique identifier for this market' - ), - field: 'tradableInstrument.instrument.code', - }, - - { - headerName: t('Type'), - headerTooltip: t('Type'), - field: 'tradableInstrument.instrument.product.__typename', - }, - - { - headerName: t('Last Price'), - headerTooltip: t('Latest price for this market'), - field: 'data.markPrice', - valueFormatter: ({ - value, - data, - }: VegaValueFormatterParams) => - value && data ? formatWithAsset(value, getAsset(data)) : '-', - }, - - { - headerName: t('Change (24h)'), - headerTooltip: t('Change in price over the last 24h'), - cellRenderer: ({ - data, - }: VegaValueFormatterParams) => { - if (data && data.candles) { - const prices = data.candles.map((candle) => candle.close); - return ( - - ); - } else return
{t('-')}
; - }, - }, - - { - headerName: t('Volume (24h)'), - field: 'dayVolume', - valueFormatter: ({ - value, - data, - }: VegaValueFormatterParams) => - value && data - ? `${addDecimalsFormatNumber( - value, - getAsset(data).decimals || 0 - )} (${displayChange(data.volumeChange)})` - : '-', - headerTooltip: t('The trade volume over the last 24h'), - }, - - { - headerName: t('Total staked by LPs'), - field: 'liquidityCommitted', - valueFormatter: ({ - value, - data, - }: VegaValueFormatterParams) => - data && value - ? formatWithAsset(value.toString(), getAsset(data)) - : '-', - headerTooltip: t('The amount of funds allocated to provide liquidity'), - }, - - { - headerName: t('Target stake'), - field: 'target', - valueFormatter: ({ - value, - data, - }: VegaValueFormatterParams) => - data && value ? formatWithAsset(value, getAsset(data)) : '-', - headerTooltip: t( - 'The ideal committed liquidity to operate the market. If total commitment currently below this level then LPs can set the fee level with new commitment.' - ), - }, - - { - headerName: t('% Target stake met'), - valueFormatter: ({ data }: VegaValueFormatterParams) => { - if (data) { - const roundedPercentage = - parseInt( - (data.liquidityCommitted / parseFloat(data.target)).toFixed(0) - ) * 100; - const display = Number.isNaN(roundedPercentage) - ? 'N/A' - : formatNumberPercentage(toBigNum(roundedPercentage, 0), 0); - return display; - } else return '-'; - }, - headerTooltip: t('% Target stake met'), - }, - - { - headerName: t('Fee levels'), - field: 'fees', - valueFormatter: ({ value }: VegaValueFormatterParams) => - value ? `${value.factors.liquidityFee}%` : '-', - headerTooltip: t('Fee level for this market'), - }, - - { - headerName: t('Status'), - field: 'tradingMode', - cellRenderer: ({ - value, - data, - }: { - value: Schema.MarketTradingMode; - data: Market; - }) => { - return ; - }, - headerTooltip: t( - 'The current market status - those below the target stake mark are most in need of liquidity' - ), - }, - - { - headerComponent: () => { - return ( -
- {t('Health')}{' '} - -
- ); - }, - field: 'tradingMode', - cellRenderer: ({ - value, - data, - }: { - value: Schema.MarketTradingMode; - data: Market; - }) => ( - - ), - sortable: false, - cellStyle: { overflow: 'unset' }, - }, - { - headerName: t('Age'), - field: 'marketTimestamps.open', - headerTooltip: t('Age of the market'), - valueFormatter: ({ - value, - }: VegaValueFormatterParams) => { - return value ? formatDistanceToNow(new Date(value)) : '-'; - }, - }, - { - headerName: t('Closing Time'), - field: 'tradableInstrument.instrument.metadata.tags', - headerTooltip: t('Closing time of the market'), - valueFormatter: ({ data }: VegaValueFormatterParams) => { - let expiry; - if (data?.tradableInstrument.instrument.metadata.tags) { - expiry = getExpiryDate( - data?.tradableInstrument.instrument.metadata.tags, - data?.marketTimestamps.close, - data?.state - ); - } - return expiry ? expiry : '-'; - }, - }, - ], - [] - ); - - return ( - -
- { - window.open( - liquidityDetailsConsoleLink(data.id, consoleLink), - '_blank', - 'noopener,noreferrer' - ); - }, - }} - rowData={data} - defaultColDef={{ - resizable: true, - sortable: true, - unSortIcon: true, - cellClass: ['flex', 'flex-col', 'justify-center'], - tooltipComponent: TooltipCellComponent, - }} - columnDefs={columnDefs} - getRowId={getRowId} - isRowClickable - tooltipShowDelay={500} - /> - { - setIsHealthDialogOpen(!isHealthDialogOpen); - }} - /> -
-
- ); -}; - -const liquidityDetailsConsoleLink = ( - marketId: string, - consoleLink: (url: string | undefined) => string -) => consoleLink(`/#/liquidity/${marketId}`); diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/detail.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/detail.tsx deleted file mode 100644 index 846ccfaf6..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/detail.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { useParams } from 'react-router-dom'; -import { makeDerivedDataProvider } from '@vegaprotocol/data-provider'; -import { t } from '@vegaprotocol/i18n'; -import { useDataProvider } from '@vegaprotocol/data-provider'; -import { AsyncRenderer } from '@vegaprotocol/ui-toolkit'; - -import { - getFeeLevels, - sumLiquidityCommitted, - lpAggregatedDataProvider, -} from '@vegaprotocol/liquidity'; -import { getAsset, marketWithDataProvider } from '@vegaprotocol/markets'; -import type { MarketWithData } from '@vegaprotocol/markets'; - -import { Market } from './market'; -import { Header } from './header'; -import { LPProvidersGrid } from './providers'; - -const formatMarket = (market: MarketWithData) => { - return { - name: market?.tradableInstrument.instrument.name, - symbol: getAsset(market).symbol, - settlementAsset: getAsset(market), - targetStake: market?.data?.targetStake, - tradingMode: market?.data?.marketTradingMode, - trigger: market?.data?.trigger, - }; -}; - -export const lpDataProvider = makeDerivedDataProvider( - [marketWithDataProvider, lpAggregatedDataProvider], - ([market, lpAggregatedData]) => ({ - market: { ...formatMarket(market) }, - liquidityProviders: lpAggregatedData || [], - }) -); - -const useMarketDetails = (marketId: string | undefined) => { - const { data, loading, error } = useDataProvider({ - dataProvider: lpDataProvider, - skipUpdates: true, - variables: { marketId: marketId || '' }, - }); - - const liquidityProviders = data?.liquidityProviders || []; - - return { - data: { - name: data?.market?.name, - symbol: data?.market?.symbol, - liquidityProviders: liquidityProviders, - feeLevels: getFeeLevels(liquidityProviders), - comittedLiquidity: sumLiquidityCommitted(liquidityProviders) || 0, - settlementAsset: data?.market?.settlementAsset || {}, - targetStake: data?.market?.targetStake || '0', - tradingMode: data?.market.tradingMode, - }, - error, - loading: loading, - }; -}; - -type Params = { marketId: string }; - -export const Detail = () => { - const { marketId } = useParams(); - const { data, loading, error } = useMarketDetails(marketId); - - return ( - -
-
-
-
-
-
-
-
- {marketId && ( - - )} -
-
-

- {t('Current Liquidity Provision')} -

- -
-
-
-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/header/header.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/header/header.tsx deleted file mode 100644 index abf8efc7c..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/header/header.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { t } from '@vegaprotocol/i18n'; -import { Link } from 'react-router-dom'; -import { Icon } from '@vegaprotocol/ui-toolkit'; - -export const Header = ({ - name, - symbol, -}: { - name?: string; - symbol?: string; -}) => { - return ( -
-
- - - - {t('Liquidity opportunities')} - - -
-

{name}

-

{symbol}

-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/header/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/header/index.tsx deleted file mode 100644 index 677ca79d4..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/header/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './header'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/index.tsx deleted file mode 100644 index 15e42dcdb..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './detail'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/index.tsx deleted file mode 100644 index 14d12f818..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './last-24h-volume'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/last-24h-volume.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/last-24h-volume.tsx deleted file mode 100644 index 5a572a3ff..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/last-24h-volume/last-24h-volume.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { useState, useMemo, useRef, useCallback } from 'react'; -import throttle from 'lodash/throttle'; -import { addDecimalsFormatNumber } from '@vegaprotocol/utils'; -import { useYesterday } from '@vegaprotocol/react-helpers'; -import { useDataProvider } from '@vegaprotocol/data-provider'; -import * as Schema from '@vegaprotocol/types'; -import { - calcDayVolume, - getChange, - displayChange, -} from '@vegaprotocol/liquidity'; - -import type { Candle } from '@vegaprotocol/markets'; -import { marketCandlesProvider } from '@vegaprotocol/markets'; - -const THROTTLE_UPDATE_TIME = 500; - -export const Last24hVolume = ({ - marketId, - decimals, -}: { - marketId: string; - decimals: number; -}) => { - const [candleVolume, setCandleVolume] = useState(); - const [volumeChange, setVolumeChange] = useState(' - '); - - const yesterday = useYesterday(); - - const yTimestamp = useMemo(() => { - return new Date(yesterday).toISOString(); - }, [yesterday]); - - const variables = useMemo( - () => ({ - marketId: marketId, - interval: Schema.Interval.INTERVAL_I1H, - since: yTimestamp, - }), - [marketId, yTimestamp] - ); - - const variables24hAgo = { - marketId: marketId, - interval: Schema.Interval.INTERVAL_I1D, - since: yTimestamp, - }; - - const throttledSetCandles = useRef( - throttle((data: Candle[]) => { - setCandleVolume(calcDayVolume(data)); - }, THROTTLE_UPDATE_TIME) - ).current; - - const update = useCallback( - ({ data }: { data: Candle[] | null }) => { - if (data) { - throttledSetCandles(data); - } - return true; - }, - [throttledSetCandles] - ); - - const { data, error } = useDataProvider({ - dataProvider: marketCandlesProvider, - variables: variables, - update, - skip: !marketId, - }); - - const throttledSetVolumeChange = useRef( - throttle((candles: Candle[]) => { - const candle24hAgo = candles?.[0]; - setVolumeChange(getChange(data || [], candle24hAgo?.close)); - }, THROTTLE_UPDATE_TIME) - ).current; - - const updateCandle24hAgo = useCallback( - ({ data }: { data: Candle[] | null }) => { - if (data) { - throttledSetVolumeChange(data); - } - return true; - }, - [throttledSetVolumeChange] - ); - - useDataProvider({ - dataProvider: marketCandlesProvider, - update: updateCandle24hAgo, - variables: variables24hAgo, - skip: !marketId || !data, - }); - - return ( -
- - {!error && candleVolume - ? addDecimalsFormatNumber(candleVolume, decimals) - : '0'}{' '} - - - ({displayChange(volumeChange)}) - -
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/market/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/market/index.tsx deleted file mode 100644 index 9fc9e360b..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/market/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './market'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/market/market.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/market/market.tsx deleted file mode 100644 index 9a371165a..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/market/market.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { useState } from 'react'; -import { t } from '@vegaprotocol/i18n'; -import { Icon, HealthBar } from '@vegaprotocol/ui-toolkit'; -import { formatWithAsset } from '@vegaprotocol/liquidity'; - -import type * as Schema from '@vegaprotocol/types'; -import { HealthDialog } from '../../health-dialog'; -import { Last24hVolume } from '../last-24h-volume'; -import { Status } from '../../status'; -import { intentForStatus } from '../../../lib/utils'; - -interface Levels { - fee: string; - commitmentAmount: number; -} - -interface settlementAsset { - symbol?: string; - decimals?: number; -} - -export const Market = ({ - marketId, - feeLevels, - comittedLiquidity, - settlementAsset, - targetStake, - tradingMode, - trigger, -}: { - marketId: string; - feeLevels: Levels[]; - comittedLiquidity: number; - targetStake: string; - settlementAsset?: settlementAsset; - tradingMode?: Schema.MarketTradingMode; - trigger?: Schema.AuctionTrigger; -}) => { - const [isHealthDialogOpen, setIsHealthDialogOpen] = useState(false); - - return ( -
-
- - - - - - - - - - - - - - - - - - - -
{t('Volume (24h)')}{t('Commited Liquidity')}{t('Status')} - {t('Health')}{' '} - - {t('Est. APY')}
-
- {marketId && settlementAsset?.decimals && ( - - )} -
-
- - {comittedLiquidity && settlementAsset - ? formatWithAsset(`${comittedLiquidity}`, settlementAsset) - : '0'} - - - - - {tradingMode && settlementAsset?.decimals && feeLevels && ( - - )} - - -
-
- - { - setIsHealthDialogOpen(!isHealthDialogOpen); - }} - /> -
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/providers/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/providers/index.tsx deleted file mode 100644 index 254ec8d9f..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/providers/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './providers'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/detail/providers/providers.tsx b/apps/liquidity-provision-dashboard/src/app/components/detail/providers/providers.tsx deleted file mode 100644 index 1c9915deb..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/detail/providers/providers.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { useCallback, useMemo } from 'react'; - -import { type GetRowIdParams, type ColDef } from 'ag-grid-community'; -import { t } from '@vegaprotocol/i18n'; - -import { - type LiquidityProviderFeeShareFieldsFragment, - type LiquidityProvisionFieldsFragment, -} from '@vegaprotocol/liquidity'; -import { formatWithAsset } from '@vegaprotocol/liquidity'; - -import { Grid } from '../../grid'; -import { TooltipCellComponent } from '@vegaprotocol/ui-toolkit'; - -const formatToHours = ({ value }: { value?: string | null }) => { - if (!value) { - return '-'; - } - - const MS_IN_HOUR = 1000 * 60 * 60; - const created = new Date(value).getTime(); - const now = new Date().getTime(); - return `${Math.round(Math.abs(now - created) / MS_IN_HOUR)}h`; -}; - -export const LPProvidersGrid = ({ - liquidityProviders, - settlementAsset, -}: { - liquidityProviders: LiquidityProvisionFieldsFragment & - LiquidityProviderFeeShareFieldsFragment[]; - settlementAsset: { - decimals?: number; - symbol?: string; - }; -}) => { - const getRowId = useCallback(({ data }: GetRowIdParams) => data.party.id, []); - const columnDefs = useMemo( - () => [ - { - headerName: t('LPs'), - field: 'party.id', - flex: 1, - minWidth: 100, - headerTooltip: t('Liquidity providers'), - }, - { - headerName: t('Duration'), - valueFormatter: formatToHours, - field: 'createdAt', - headerTooltip: t('Time in market'), - }, - { - headerName: t('Equity-like share'), - field: 'equityLikeShare', - valueFormatter: ({ value }: { value?: string | null }) => { - return value - ? `${parseFloat(parseFloat(value).toFixed(2)) * 100}%` - : ''; - }, - headerTooltip: t( - 'The share of the markets liquidity held - the earlier you commit liquidity the greater % fees you earn' - ), - minWidth: 140, - }, - { - headerName: t('committed bond'), - field: 'commitmentAmount', - valueFormatter: ({ value }: { value?: string | null }) => - value ? formatWithAsset(value, settlementAsset) : '0', - headerTooltip: t('The amount of funds allocated to provide liquidity'), - minWidth: 140, - }, - { - headerName: t('Margin Req.'), - field: 'margin', - headerTooltip: t( - 'Margin required for arising positions based on liquidity commitment' - ), - }, - { - headerName: t('24h Fees'), - field: 'fees', - headerTooltip: t( - 'Total fees earned by the liquidity provider in the last 24 hours' - ), - }, - { - headerName: t('Fee level'), - valueFormatter: ({ value }: { value?: string | null }) => `${value}%`, - field: 'fee', - headerTooltip: t( - "The market's liquidity fee, or the percentage of a trade's value which is collected from the price taker for every trade" - ), - }, - - { - headerName: t('APY'), - field: 'apy', - headerTooltip: t( - 'An annualised estimate based on the total liquidity provision fees and maker fees collected by liquidity providers, the maximum margin needed and maximum commitment (bond) over the course of 7 epochs' - ), - }, - ], - [settlementAsset] - ); - - return ( - - ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/grid/grid.scss b/apps/liquidity-provision-dashboard/src/app/components/grid/grid.scss deleted file mode 100644 index 2b1ac6601..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/grid/grid.scss +++ /dev/null @@ -1,50 +0,0 @@ -.ag-theme-alpine { - --ag-line-height: 24px; - --ag-row-hover-color: transparent; - --ag-header-background-color: transparent; - --ag-odd-row-background-color: transparent; - --ag-header-foreground-color: #626262; - --ag-secondary-foreground-color: #626262; - --ag-font-size: 16px; - --ag-background-color: transparent; - --ag-range-selection-border-color: transparent; - - font-family: AlphaLyrae, Helvetica Neue, -apple-system, BlinkMacSystemFont, - Segoe UI, Roboto, Arial, Noto Sans, sans-serif, Apple Color Emoji, - Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; - font-feature-settings: 'liga' off, 'calt' off; -} - -.ag-theme-alpine .ag-cell { - display: flex; -} - -.ag-theme-alpine .ag-header { - border-bottom: 1px solid #a7a7a7; - font-size: 15px; - line-height: 1em; - text-transform: uppercase; -} - -.ag-theme-alpine .ag-root-wrapper { - border: none; -} - -.ag-theme-alpine .ag-header-row { - font-weight: 500; -} - -.ag-theme-alpine .ag-row { - border: none; - border-bottom: 1px solid #bfccd6; - font-size: 12px; -} - -.ag-theme-alpine .ag-root-wrapper-body.ag-layout-normal { - height: auto; -} - -.ag-theme-alpine.row-hover .ag-row:hover { - background: #f0f0f0; - cursor: pointer; -} diff --git a/apps/liquidity-provision-dashboard/src/app/components/grid/grid.tsx b/apps/liquidity-provision-dashboard/src/app/components/grid/grid.tsx deleted file mode 100644 index 8483b97af..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/grid/grid.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { useRef, useCallback, useEffect } from 'react'; -import { AgGridReact } from 'ag-grid-react'; -import { - type AgGridReactProps, - type AgReactUiProps, - type AgGridReact as AgGridReactType, -} from 'ag-grid-react'; -import classNames from 'classnames'; -import 'ag-grid-community/styles/ag-grid.css'; -import 'ag-grid-community/styles/ag-theme-alpine.css'; - -import './grid.scss'; - -type Props = (AgGridReactProps | AgReactUiProps) & { - isRowClickable?: boolean; - style?: React.CSSProperties; -}; - -export const Grid = ({ isRowClickable, ...props }: Props) => { - const gridRef = useRef(null); - - const resizeGrid = useCallback(() => { - gridRef.current?.api?.sizeColumnsToFit(); - }, [gridRef]); - - const handleOnGridReady = useCallback(() => { - resizeGrid(); - }, [resizeGrid]); - - useEffect(() => { - window.addEventListener('resize', resizeGrid); - return () => window.removeEventListener('resize', resizeGrid); - }, [resizeGrid]); - - return ( - - ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/grid/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/grid/index.tsx deleted file mode 100644 index d24d1bdc0..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/grid/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './grid'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/health-dialog/health-dialog.tsx b/apps/liquidity-provision-dashboard/src/app/components/health-dialog/health-dialog.tsx deleted file mode 100644 index 54154316f..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/health-dialog/health-dialog.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { t } from '@vegaprotocol/i18n'; -import { Dialog, HealthBar } from '@vegaprotocol/ui-toolkit'; -import * as Schema from '@vegaprotocol/types'; -import classNames from 'classnames'; -import { intentForStatus } from '../../lib/utils'; - -interface HealthDialogProps { - isOpen: boolean; - onChange: (isOpen: boolean) => void; -} - -const ROWS = [ - { - key: '1', - title: 'Continuous', - copy: 'Markets that have committed liquidity equal or greater than the target stake are trading continuously.', - data: { - status: Schema.MarketTradingMode.TRADING_MODE_CONTINUOUS, - target: '171320', - decimals: 5, - levels: [ - { fee: '0.6', commitmentAmount: 150000 }, - { fee: '1', commitmentAmount: 150000 }, - { fee: '2', commitmentAmount: 30000 }, - ], - }, - }, - { - key: '2', - title: 'Monitoring auction (liquidity)', - copy: 'Markets below the target stake will see trading suspended and go into liquidity auction.', - data: { - status: Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION, - target: '171320', - decimals: 5, - levels: [ - { fee: '0.6', commitmentAmount: 110000 }, - { fee: '1', commitmentAmount: 50000 }, - ], - }, - }, - { - key: '3', - title: 'Opening auction', - copy: 'A newly created market looking for a target liquidity amount to start trading.', - data: { - status: Schema.MarketTradingMode.TRADING_MODE_OPENING_AUCTION, - target: '171320', - decimals: 3, - levels: [ - { fee: '0.6', commitmentAmount: 110000 }, - { fee: '1', commitmentAmount: 50000 }, - ], - }, - }, -]; - -export const HealthDialog = ({ onChange, isOpen }: HealthDialogProps) => { - return ( - -

- {t('Health')} -

-

- {t( - 'Market health is a representation of market and liquidity status and how close that market is to moving from one fee level to another.' - )} -

- - - - - - - - {ROWS.map((r, index) => { - const isFirstRow = index === 0; - return ( - - - - - ); - })} - -
- {t('Market status')} - - {t('Liquidity status')} -
-

- {t(r.title)} -

-

{t(r.copy)}

-
- -
-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/health-dialog/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/health-dialog/index.tsx deleted file mode 100644 index 935474263..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/health-dialog/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './health-dialog'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/indicator/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/indicator/index.tsx deleted file mode 100644 index ef086afd6..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/indicator/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './indicator'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/indicator/indicator.tsx b/apps/liquidity-provision-dashboard/src/app/components/indicator/indicator.tsx deleted file mode 100644 index 290b2d9f4..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/indicator/indicator.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type * as Schema from '@vegaprotocol/types'; - -import { getColorForStatus } from '../../lib/utils'; - -export const Indicator = ({ - status, - opacity, -}: { - status?: Schema.MarketTradingMode; - opacity?: number; -}) => { - const backgroundColor = status ? getColorForStatus(status) : undefined; - return ( -
-
-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/market-list/market-list.scss b/apps/liquidity-provision-dashboard/src/app/components/market-list/market-list.scss deleted file mode 100644 index 609fe7b6c..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/market-list/market-list.scss +++ /dev/null @@ -1,35 +0,0 @@ -.ag-theme-alpine { - --ag-line-height: 24px; - --ag-row-hover-color: transparent; - --ag-header-background-color: #f5f5f5; - --ag-odd-row-background-color: transparent; - --ag-header-foreground-color: #000; - --ag-secondary-foreground-color: #fff; - --ag-font-family: 'Helvetica Neue'; - --ag-font-size: 12px; - - font-family: 'Helvetica Neue', -apple-system, BlinkMacSystemFont, 'Segoe UI', - Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif; -} - -.ag-theme-alpine .ag-cell { - display: flex; -} - -.ag-theme-alpine .ag-header { - border: 1px solid #bfccd6; -} - -.ag-theme-alpine .ag-root-wrapper { - border: none; -} - -.ag-theme-alpine .ag-row { - border: none; - border-bottom: 1px solid #bfccd6; - font-size: 12px; -} - -.ag-theme-alpine .ag-root-wrapper-body.ag-layout-normal { - height: auto; -} diff --git a/apps/liquidity-provision-dashboard/src/app/components/navbar/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/navbar/index.tsx deleted file mode 100644 index f5899d036..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/navbar/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './navbar'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/navbar/navbar.tsx b/apps/liquidity-provision-dashboard/src/app/components/navbar/navbar.tsx deleted file mode 100644 index ed1856f14..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/navbar/navbar.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Link } from 'react-router-dom'; -import { VegaLogo } from '@vegaprotocol/ui-toolkit'; - -export const Navbar = () => { - return ( -
-
- - - -
-
-
- ); -}; diff --git a/apps/liquidity-provision-dashboard/src/app/components/status/index.tsx b/apps/liquidity-provision-dashboard/src/app/components/status/index.tsx deleted file mode 100644 index 420cc02aa..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/status/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './status'; diff --git a/apps/liquidity-provision-dashboard/src/app/components/status/status.tsx b/apps/liquidity-provision-dashboard/src/app/components/status/status.tsx deleted file mode 100644 index 382ea4ef3..000000000 --- a/apps/liquidity-provision-dashboard/src/app/components/status/status.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import { Lozenge, Tooltip } from '@vegaprotocol/ui-toolkit'; -import classNames from 'classnames'; - -import * as Schema from '@vegaprotocol/types'; -import { t } from '@vegaprotocol/i18n'; - -import { Indicator } from '../indicator'; -import type { AuctionTrigger } from '@vegaprotocol/types'; - -export const Status = ({ - tradingMode, - trigger, - size = 'small', -}: { - tradingMode?: Schema.MarketTradingMode; - trigger?: Schema.AuctionTrigger; - size?: 'small' | 'large'; -}) => { - const getStatus = () => { - if (!tradingMode) return ''; - if ( - tradingMode === Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION - ) { - if ( - trigger && - trigger !== Schema.AuctionTrigger.AUCTION_TRIGGER_UNSPECIFIED - ) { - return `${Schema.MarketTradingModeMapping[tradingMode]} - ${Schema.AuctionTriggerMapping[trigger]}`; - } - } - return Schema.MarketTradingModeMapping[tradingMode]; - }; - - const status = getStatus(); - const tooltipDescription = - tradingMode && getTooltipDescription(tradingMode, trigger); - - return ( -
- -
- - - {status} - -
-
-
- ); -}; - -const getTooltipDescription = ( - status: Schema.MarketTradingMode, - trigger?: Schema.AuctionTrigger -) => { - switch (status) { - case Schema.MarketTradingMode.TRADING_MODE_CONTINUOUS: - return t( - 'This is the standard trading mode where trades are executed whenever orders are received' - ); - case Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION: - return getMonitoringDescriptionTooltip(trigger); - case Schema.MarketTradingMode.TRADING_MODE_OPENING_AUCTION: - return t( - 'This is a new market in an opening auction to determine a fair mid-price before starting continuous trading.' - ); - default: - return ''; - } -}; - -const getMonitoringDescriptionTooltip = (trigger?: AuctionTrigger) => { - switch (trigger) { - case Schema.AuctionTrigger.AUCTION_TRIGGER_LIQUIDITY_TARGET_NOT_MET: - return t( - `This market is in auction until it reaches sufficient liquidity.` - ); - case Schema.AuctionTrigger.AUCTION_TRIGGER_UNABLE_TO_DEPLOY_LP_ORDERS: - return t( - `This market may have sufficient liquidity but there are not enough priced limit orders in the order book, which are required to deploy liquidity commitment pegged orders.` - ); - case Schema.AuctionTrigger.AUCTION_TRIGGER_PRICE: - return t(`This market is in auction due to high price volatility.`); - case Schema.AuctionTrigger.AUCTION_TRIGGER_OPENING: - return t( - `This is a new market in an opening auction to determine a fair mid-price before starting continuous trading` - ); - default: - return ''; - } -}; diff --git a/apps/liquidity-provision-dashboard/src/app/lib/utils.tsx b/apps/liquidity-provision-dashboard/src/app/lib/utils.tsx deleted file mode 100644 index f83683be6..000000000 --- a/apps/liquidity-provision-dashboard/src/app/lib/utils.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as Schema from '@vegaprotocol/types'; -import { Intent } from '@vegaprotocol/ui-toolkit'; - -const marketTradingModeStyle = { - [Schema.MarketTradingMode.TRADING_MODE_CONTINUOUS]: '#00D46E', - [Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION]: '#CF0064', - [Schema.MarketTradingMode.TRADING_MODE_OPENING_AUCTION]: '#0046CD', - [Schema.MarketTradingMode.TRADING_MODE_BATCH_AUCTION]: '#CF0064', - [Schema.MarketTradingMode.TRADING_MODE_NO_TRADING]: '#CF0064', - [Schema.MarketTradingMode.TRADING_MODE_SUSPENDED_VIA_GOVERNANCE]: '#CF0064', -}; - -export const getColorForStatus = (status: Schema.MarketTradingMode) => - marketTradingModeStyle[status]; - -const marketTradingModeIntent = { - [Schema.MarketTradingMode.TRADING_MODE_CONTINUOUS]: Intent.Success, - [Schema.MarketTradingMode.TRADING_MODE_MONITORING_AUCTION]: Intent.Danger, - [Schema.MarketTradingMode.TRADING_MODE_OPENING_AUCTION]: Intent.Primary, - [Schema.MarketTradingMode.TRADING_MODE_BATCH_AUCTION]: Intent.Danger, - [Schema.MarketTradingMode.TRADING_MODE_NO_TRADING]: Intent.Danger, - [Schema.MarketTradingMode.TRADING_MODE_SUSPENDED_VIA_GOVERNANCE]: - Intent.Danger, -}; - -export const intentForStatus = (status: Schema.MarketTradingMode) => { - return marketTradingModeIntent[status]; -}; diff --git a/apps/liquidity-provision-dashboard/src/app/routes/index.ts b/apps/liquidity-provision-dashboard/src/app/routes/index.ts deleted file mode 100644 index b41a85505..000000000 --- a/apps/liquidity-provision-dashboard/src/app/routes/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './router-config'; diff --git a/apps/liquidity-provision-dashboard/src/app/routes/router-config.tsx b/apps/liquidity-provision-dashboard/src/app/routes/router-config.tsx deleted file mode 100644 index 1568b43b8..000000000 --- a/apps/liquidity-provision-dashboard/src/app/routes/router-config.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { t } from '@vegaprotocol/i18n'; - -import { Dashboard } from '../components/dashboard'; -import { Detail } from '../components/detail'; - -export const ROUTES = { - MARKETS: 'markets', -}; - -export const routerConfig = [ - { path: '/', element: , icon: '' }, - { - path: ROUTES.MARKETS, - name: 'Markets', - text: t('Markets'), - children: [ - { - path: ':marketId', - element: , - }, - ], - icon: 'trade', - isNavItem: true, - }, -]; diff --git a/apps/liquidity-provision-dashboard/src/assets/.gitkeep b/apps/liquidity-provision-dashboard/src/assets/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/liquidity-provision-dashboard/src/environments/environment.prod.ts b/apps/liquidity-provision-dashboard/src/environments/environment.prod.ts deleted file mode 100644 index c9669790b..000000000 --- a/apps/liquidity-provision-dashboard/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true, -}; diff --git a/apps/liquidity-provision-dashboard/src/environments/environment.ts b/apps/liquidity-provision-dashboard/src/environments/environment.ts deleted file mode 100644 index 7ed83767f..000000000 --- a/apps/liquidity-provision-dashboard/src/environments/environment.ts +++ /dev/null @@ -1,6 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// When building for production, this file is replaced with `environment.prod.ts`. - -export const environment = { - production: false, -}; diff --git a/apps/liquidity-provision-dashboard/src/favicon.ico b/apps/liquidity-provision-dashboard/src/favicon.ico deleted file mode 100644 index 317ebcb23..000000000 Binary files a/apps/liquidity-provision-dashboard/src/favicon.ico and /dev/null differ diff --git a/apps/liquidity-provision-dashboard/src/index.html b/apps/liquidity-provision-dashboard/src/index.html deleted file mode 100644 index 0d91f9033..000000000 --- a/apps/liquidity-provision-dashboard/src/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Liquidity Provision Dashboard - - - - - - - - - -
- - diff --git a/apps/liquidity-provision-dashboard/src/main.tsx b/apps/liquidity-provision-dashboard/src/main.tsx deleted file mode 100644 index 7615e405e..000000000 --- a/apps/liquidity-provision-dashboard/src/main.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { StrictMode } from 'react'; -import { createRoot } from 'react-dom/client'; -import { BrowserRouter } from 'react-router-dom'; - -import App from './app/app'; - -const rootElement = document.getElementById('root'); -const root = rootElement && createRoot(rootElement); -root?.render( - - - - - -); diff --git a/apps/liquidity-provision-dashboard/src/polyfills.ts b/apps/liquidity-provision-dashboard/src/polyfills.ts deleted file mode 100644 index 2adf3d05b..000000000 --- a/apps/liquidity-provision-dashboard/src/polyfills.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Polyfill stable language features. These imports will be optimized by `@babel/preset-env`. - * - * See: https://github.com/zloirock/core-js#babel - */ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; diff --git a/apps/liquidity-provision-dashboard/src/styles.scss b/apps/liquidity-provision-dashboard/src/styles.scss deleted file mode 100644 index 670fe053c..000000000 --- a/apps/liquidity-provision-dashboard/src/styles.scss +++ /dev/null @@ -1,10 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -html, -body { - @apply h-full; - - font-family: 'Helvetica Neue', Helvetica, sans-serif; -} diff --git a/apps/liquidity-provision-dashboard/tailwind.config.js b/apps/liquidity-provision-dashboard/tailwind.config.js deleted file mode 100644 index 9a8169a76..000000000 --- a/apps/liquidity-provision-dashboard/tailwind.config.js +++ /dev/null @@ -1,29 +0,0 @@ -const { join } = require('path'); -const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../../libs/tailwindcss-config/src/theme-lite'); -const vegaCustomClasses = require('../../libs/tailwindcss-config/src/vega-custom-classes'); -const vegaCustomClassesLite = require('../../libs/tailwindcss-config/src/vega-custom-classes-lite'); - -module.exports = { - content: [ - join(__dirname, 'src/**/*.{js,ts,jsx,tsx}'), - 'libs/ui-toolkit/src/utils/shared.ts', - ...createGlobPatternsForDependencies(__dirname), - ], - darkMode: 'class', - theme: { - ...theme, - colors: { - ...theme.colors, - greys: { - light: { - 100: '#F0F0F0', - 200: '#D2D2D2', - 300: '#A7A7A7', - 400: '#626262', - }, - }, - }, - }, - plugins: [vegaCustomClasses, vegaCustomClassesLite], -}; diff --git a/apps/liquidity-provision-dashboard/tsconfig.app.json b/apps/liquidity-provision-dashboard/tsconfig.app.json deleted file mode 100644 index b278fbb45..000000000 --- a/apps/liquidity-provision-dashboard/tsconfig.app.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": [ - "node", - "@nx/react/typings/cssmodule.d.ts", - "@nx/react/typings/image.d.ts" - ] - }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": [ - "jest.config.ts", - "**/*.spec.ts", - "**/*.test.ts", - "**/*.spec.tsx", - "**/*.test.tsx", - "**/*.spec.js", - "**/*.test.js", - "**/*.spec.jsx", - "**/*.test.jsx" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] -} diff --git a/apps/liquidity-provision-dashboard/tsconfig.json b/apps/liquidity-provision-dashboard/tsconfig.json deleted file mode 100644 index 842a5c68a..000000000 --- a/apps/liquidity-provision-dashboard/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "jsx": "react-jsx", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/apps/liquidity-provision-dashboard/tsconfig.spec.json b/apps/liquidity-provision-dashboard/tsconfig.spec.json deleted file mode 100644 index 1e42db7ff..000000000 --- a/apps/liquidity-provision-dashboard/tsconfig.spec.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": [ - "jest", - "node", - "@testing-library/jest-dom", - "@nx/react/typings/cssmodule.d.ts", - "@nx/react/typings/image.d.ts" - ], - "jsx": "react", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true - }, - "include": [ - "jest.config.ts", - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts" - ], - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ] -} diff --git a/apps/multisig-signer/tailwind.config.js b/apps/multisig-signer/tailwind.config.js index beac189d1..51a2045f1 100644 --- a/apps/multisig-signer/tailwind.config.js +++ b/apps/multisig-signer/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../../libs/tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../../libs/tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../../libs/tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../../libs/tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/apps/trading/tailwind.config.js b/apps/trading/tailwind.config.js index c7c567cf4..f2d9793e7 100644 --- a/apps/trading/tailwind.config.js +++ b/apps/trading/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/next/tailwind'); -const theme = require('../../libs/tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../../libs/tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../../libs/tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../../libs/tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/jest.config.ts b/jest.config.ts index 0830aab5b..d0dbd1b88 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,4 +1,4 @@ -const { getJestProjects } = require('@nx/jest'); +import { getJestProjects } from '@nx/jest'; export default { projects: getJestProjects(), diff --git a/libs/accounts/src/lib/transfer-form.tsx b/libs/accounts/src/lib/transfer-form.tsx index 90b61fa68..7de0e71e3 100644 --- a/libs/accounts/src/lib/transfer-form.tsx +++ b/libs/accounts/src/lib/transfer-form.tsx @@ -19,7 +19,6 @@ import { TradingButton, } from '@vegaprotocol/ui-toolkit'; import type { Transfer } from '@vegaprotocol/wallet'; -import { normalizeTransfer } from '@vegaprotocol/wallet'; import BigNumber from 'bignumber.js'; import type { ReactNode } from 'react'; import { useCallback, useEffect, useState } from 'react'; @@ -27,6 +26,7 @@ import { Controller, useForm } from 'react-hook-form'; import { AssetOption, Balance } from '@vegaprotocol/assets'; import { AccountType, AccountTypeMapping } from '@vegaprotocol/types'; import { useTransferFeeQuery } from './__generated__/TransferFee'; +import { normalizeTransfer } from './utils'; interface FormFields { toVegaKey: string; diff --git a/libs/accounts/src/lib/utils.ts b/libs/accounts/src/lib/utils.ts new file mode 100644 index 000000000..8f176d155 --- /dev/null +++ b/libs/accounts/src/lib/utils.ts @@ -0,0 +1,26 @@ +import type { Exact } from 'type-fest'; +import { type Transfer } from '@vegaprotocol/wallet'; +import { removeDecimal } from '@vegaprotocol/utils'; +import { type AccountType } from '@vegaprotocol/types'; + +export const normalizeTransfer = >( + address: string, + amount: string, + fromAccountType: AccountType, + toAccountType: AccountType, + asset: { + id: string; + decimals: number; + } +): Transfer => { + return { + to: address, + fromAccountType, + toAccountType, + asset: asset.id, + amount: removeDecimal(amount, asset.decimals), + // oneOff or recurring required otherwise wallet will error + // default oneOff is immediate transfer + oneOff: {}, + }; +}; diff --git a/libs/fills/tailwind.config.js b/libs/fills/tailwind.config.js index 897f6c3cc..f048d347a 100644 --- a/libs/fills/tailwind.config.js +++ b/libs/fills/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/funding-payments/tailwind.config.js b/libs/funding-payments/tailwind.config.js index 897f6c3cc..f048d347a 100644 --- a/libs/funding-payments/tailwind.config.js +++ b/libs/funding-payments/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/liquidity/src/lib/utils/liquidity-utils.spec.tsx b/libs/liquidity/src/lib/utils/liquidity-utils.spec.tsx index d8bac4074..1ab8cca2e 100644 --- a/libs/liquidity/src/lib/utils/liquidity-utils.spec.tsx +++ b/libs/liquidity/src/lib/utils/liquidity-utils.spec.tsx @@ -2,7 +2,6 @@ import { renderHook } from '@testing-library/react'; import { Intent } from '@vegaprotocol/ui-toolkit'; import BigNumber from 'bignumber.js'; import { - formatWithAsset, sumLiquidityCommitted, getFeeLevels, calcDayVolume, @@ -23,17 +22,6 @@ const CANDLES_2 = [ { volume: '10', open: '21', close: '21' }, ]; -describe('formatWithAsset', () => { - it('should return formatted string', () => { - const result = formatWithAsset('103926176181', { - decimals: 5, - symbol: 'tEURO', - }); - - expect(result).toEqual('1,039,261.76181 tEURO'); - }); -}); - describe('sumLiquidityCommitted', () => { it('should return the total sum', () => { const provider1 = 10; diff --git a/libs/liquidity/src/lib/utils/liquidity-utils.ts b/libs/liquidity/src/lib/utils/liquidity-utils.ts index 65b9f41e1..27916a8f2 100644 --- a/libs/liquidity/src/lib/utils/liquidity-utils.ts +++ b/libs/liquidity/src/lib/utils/liquidity-utils.ts @@ -1,5 +1,4 @@ import BigNumber from 'bignumber.js'; -import { addDecimalsFormatNumber } from '@vegaprotocol/utils'; import type { MarketNodeFragment } from './../__generated__/MarketsLiquidity'; import { Intent } from '@vegaprotocol/ui-toolkit'; @@ -21,20 +20,6 @@ export const sumLiquidityCommitted = ( : 0; }; -export const formatWithAsset = ( - value: string, - settlementAsset: { - decimals?: number; - symbol?: string; - } -) => { - const { decimals, symbol } = settlementAsset; - const formattedValue = decimals - ? addDecimalsFormatNumber(value, decimals) - : value; - return `${formattedValue} ${symbol}`; -}; - interface Candle { open: string; close: string; @@ -48,10 +33,6 @@ export const getCandle24hAgo = ( return candles24hAgo.find((c) => c.marketId === marketId)?.candles?.[0]; }; -export const displayChange = (value: string) => { - return parseFloat(value) > 0 ? `+${value}` : value; -}; - export const EMPTY_VALUE = ' - '; export const getChange = (candles: (Candle | null)[], lastClose?: string) => { const firstCandle = candles.find((item) => item?.open); diff --git a/libs/market-depth/tailwind.config.js b/libs/market-depth/tailwind.config.js index 897f6c3cc..f048d347a 100644 --- a/libs/market-depth/tailwind.config.js +++ b/libs/market-depth/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/markets/tailwind.config.js b/libs/markets/tailwind.config.js index 3140d47a1..336d45665 100644 --- a/libs/markets/tailwind.config.js +++ b/libs/markets/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/orders/src/lib/components/order-list-manager/order-list-manager.tsx b/libs/orders/src/lib/components/order-list-manager/order-list-manager.tsx index aa08064af..c1827ea97 100644 --- a/libs/orders/src/lib/components/order-list-manager/order-list-manager.tsx +++ b/libs/orders/src/lib/components/order-list-manager/order-list-manager.tsx @@ -3,7 +3,6 @@ import { type AgGridReact } from 'ag-grid-react'; import { Pagination, type useDataGridEvents } from '@vegaprotocol/datagrid'; import { Splash } from '@vegaprotocol/ui-toolkit'; import { useDataProvider } from '@vegaprotocol/data-provider'; -import { normalizeOrderAmendment } from '@vegaprotocol/wallet'; import { useVegaTransactionStore } from '@vegaprotocol/web3'; import type { OrderTxUpdateFieldsFragment } from '@vegaprotocol/web3'; import { OrderEditDialog } from '../order-list/order-edit-dialog'; @@ -12,6 +11,7 @@ import { OrderViewDialog } from '../order-list/order-view-dialog'; import { OrderListTable } from '../order-list'; import { ordersWithMarketProvider } from '../order-data-provider/order-data-provider'; import { useT } from '../../use-t'; +import { normalizeOrderAmendment } from '../../utils'; export enum Filter { 'Open' = 'Open', diff --git a/libs/orders/src/lib/utils.spec.ts b/libs/orders/src/lib/utils.spec.ts new file mode 100644 index 000000000..a6f8c2e04 --- /dev/null +++ b/libs/orders/src/lib/utils.spec.ts @@ -0,0 +1,56 @@ +import { OrderTimeInForce } from '@vegaprotocol/types'; +import { normalizeOrderAmendment } from './utils'; + +describe('normalizeOrderAmendment', () => { + type Order = Parameters[0]; + type Market = Parameters[1]; + const order: Order = { + id: '123', + timeInForce: OrderTimeInForce.TIME_IN_FORCE_GTT, + size: '100', + expiresAt: '2022-01-01T00:00:00.000Z', + }; + const market: Market = { + id: '456', + decimalPlaces: 1, + positionDecimalPlaces: 1, + }; + + it('sets and formats order id, market id, expires and timeInForce as given', () => { + const orderAmendment = normalizeOrderAmendment(order, market, '1', '1'); + expect(orderAmendment.orderId).toEqual('123'); + expect(orderAmendment.marketId).toEqual('456'); + expect(orderAmendment.expiresAt).toEqual('1640995200000000000'); + expect(orderAmendment.timeInForce).toEqual( + OrderTimeInForce.TIME_IN_FORCE_GTT + ); + }); + + it.each([ + ['1.1', 1, '11'], + ['1.1', 2, '110'], + ['0.001', 8, '100000'], + ])('sets and formats price', (price, decimalPlaces, output) => { + const orderAmendment = normalizeOrderAmendment( + order, + { ...market, decimalPlaces }, + price, + '1' + ); + expect(orderAmendment.price).toEqual(output); + }); + + it.each([ + ['9', 1, -10], + ['90', 2, 8900], + ['0.001', 8, 99900], + ])('sets and formats size delta', (size, positionDecimalPlaces, output) => { + const orderAmendment = normalizeOrderAmendment( + order, + { ...market, positionDecimalPlaces }, + '1', + size + ); + expect(orderAmendment.sizeDelta).toEqual(output); + }); +}); diff --git a/libs/orders/src/lib/utils.ts b/libs/orders/src/lib/utils.ts new file mode 100644 index 000000000..8e402b4fb --- /dev/null +++ b/libs/orders/src/lib/utils.ts @@ -0,0 +1,25 @@ +import BigNumber from 'bignumber.js'; +import type { Exact } from 'type-fest'; +import { type OrderAmendment } from '@vegaprotocol/wallet'; +import { removeDecimal, toNanoSeconds } from '@vegaprotocol/utils'; +import { type Market, type Order } from '@vegaprotocol/types'; + +export const normalizeOrderAmendment = >( + order: Pick, + market: Pick, + price: string, + size: string +): OrderAmendment => ({ + orderId: order.id, + marketId: market.id, + price: removeDecimal(price, market.decimalPlaces), + timeInForce: order.timeInForce, + sizeDelta: size + ? new BigNumber(removeDecimal(size, market.positionDecimalPlaces)) + .minus(order.size) + .toNumber() + : 0, + expiresAt: order.expiresAt + ? toNanoSeconds(order.expiresAt) // Wallet expects timestamp in nanoseconds + : undefined, +}); diff --git a/libs/orders/tailwind.config.js b/libs/orders/tailwind.config.js index 897f6c3cc..f048d347a 100644 --- a/libs/orders/tailwind.config.js +++ b/libs/orders/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/positions/tailwind.config.js b/libs/positions/tailwind.config.js index 897f6c3cc..f048d347a 100644 --- a/libs/positions/tailwind.config.js +++ b/libs/positions/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/tailwindcss-config/.eslintrc.json b/libs/tailwindcss-config/.eslintrc.json index 9d9c0db55..5dc06da46 100644 --- a/libs/tailwindcss-config/.eslintrc.json +++ b/libs/tailwindcss-config/.eslintrc.json @@ -13,6 +13,18 @@ { "files": ["*.js", "*.jsx"], "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": [ + "error", + { + "ignoredFiles": ["{projectRoot}/rollup.config.{js,ts,mjs,mts}"] + } + ] + } } ] } diff --git a/libs/tailwindcss-config/.swcrc b/libs/tailwindcss-config/.swcrc new file mode 100644 index 000000000..28e88ec1c --- /dev/null +++ b/libs/tailwindcss-config/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/libs/tailwindcss-config/jest.config.js b/libs/tailwindcss-config/jest.config.js deleted file mode 100644 index 9d3d26141..000000000 --- a/libs/tailwindcss-config/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - displayName: 'tailwindcss-config', - preset: '../../jest.preset.js', - globals: {}, - transform: { - '^.+\\.[tj]s$': [ - 'ts-jest', - { - tsconfig: '/tsconfig.spec.json', - }, - ], - }, - moduleFileExtensions: ['ts', 'js', 'html'], - coverageDirectory: '../../coverage/libs/tailwindcss-config', -}; diff --git a/libs/tailwindcss-config/package.json b/libs/tailwindcss-config/package.json index bbfd20804..aff9dbcb4 100644 --- a/libs/tailwindcss-config/package.json +++ b/libs/tailwindcss-config/package.json @@ -1,4 +1,7 @@ { "name": "@vegaprotocol/tailwindcss-config", - "version": "0.0.5" + "version": "0.0.6", + "dependencies": { + "tailwindcss": "3.3.3" + } } diff --git a/libs/tailwindcss-config/project.json b/libs/tailwindcss-config/project.json index 7255cf92a..4a770400b 100644 --- a/libs/tailwindcss-config/project.json +++ b/libs/tailwindcss-config/project.json @@ -5,28 +5,30 @@ "projectType": "library", "targets": { "build": { - "executor": "@nx/js:tsc", + "executor": "@nx/rollup:rollup", "outputs": ["{options.outputPath}"], - "format": ["esm", "cjs"], "options": { "outputPath": "dist/libs/tailwindcss-config", - "main": "libs/tailwindcss-config/src/index.js", + "main": "libs/tailwindcss-config/src/index.ts", "tsConfig": "libs/tailwindcss-config/tsconfig.lib.json", - "assets": ["libs/tailwindcss-config/*.md"] + "assets": [], + "project": "libs/tailwindcss-config/package.json", + "compiler": "swc", + "format": ["esm", "cjs"] } }, + "publish": { + "command": "node tools/scripts/publish.mjs tailwindcss-config {args.ver} {args.tag}", + "dependsOn": ["build"] + }, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": ["libs/tailwindcss-config/**/*.js"] - } - }, - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/tailwindcss-config"], - "options": { - "jestConfig": "libs/tailwindcss-config/jest.config.js" + "lintFilePatterns": [ + "libs/tailwindcss-config/**/*.ts", + "libs/tailwindcss-config/package.json" + ] } } }, diff --git a/libs/tailwindcss-config/src/index.js b/libs/tailwindcss-config/src/index.js deleted file mode 100644 index da1dd36ba..000000000 --- a/libs/tailwindcss-config/src/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const theme = require('./theme'); -const themelite = require('./theme-lite'); -const vegaCustomClasses = require('./vega-custom-classes'); -const { VegaColours } = require('./vega-colours'); - -module.exports = { - theme, - themelite, - plugins: [vegaCustomClasses], - VegaColours, -}; diff --git a/libs/tailwindcss-config/src/index.ts b/libs/tailwindcss-config/src/index.ts new file mode 100644 index 000000000..c0c8fcc8a --- /dev/null +++ b/libs/tailwindcss-config/src/index.ts @@ -0,0 +1,4 @@ +export { theme } from './theme'; +export { themeLite } from './theme-lite'; +export { vegaCustomClasses } from './vega-custom-classes'; +export { VegaColours } from './vega-colours'; diff --git a/libs/tailwindcss-config/src/theme-lite.js b/libs/tailwindcss-config/src/theme-lite.ts similarity index 88% rename from libs/tailwindcss-config/src/theme-lite.js rename to libs/tailwindcss-config/src/theme-lite.ts index 7e0e889b8..c4371c60e 100644 --- a/libs/tailwindcss-config/src/theme-lite.js +++ b/libs/tailwindcss-config/src/theme-lite.ts @@ -1,8 +1,8 @@ -const defaultTheme = require('tailwindcss/defaultTheme'); -const colors = require('tailwindcss/colors'); -const theme = require('./theme'); +import defaultTheme from 'tailwindcss/defaultTheme'; +import colors from 'tailwindcss/colors'; +import { theme } from './theme'; -module.exports = { +export const themeLite = { ...theme, colors: { ...theme.colors, diff --git a/libs/tailwindcss-config/src/theme.js b/libs/tailwindcss-config/src/theme.ts similarity index 99% rename from libs/tailwindcss-config/src/theme.js rename to libs/tailwindcss-config/src/theme.ts index 34c4e36a0..5b05eb144 100644 --- a/libs/tailwindcss-config/src/theme.js +++ b/libs/tailwindcss-config/src/theme.ts @@ -1,4 +1,4 @@ -module.exports = { +export const theme = { screens: { xs: '500px', sm: '640px', diff --git a/libs/tailwindcss-config/src/vega-colours.js b/libs/tailwindcss-config/src/vega-colours.ts similarity index 89% rename from libs/tailwindcss-config/src/vega-colours.js rename to libs/tailwindcss-config/src/vega-colours.ts index 88d987e05..8e6fe106a 100644 --- a/libs/tailwindcss-config/src/vega-colours.js +++ b/libs/tailwindcss-config/src/vega-colours.ts @@ -1,4 +1,4 @@ -const VegaColours = { +export const VegaColours = { yellow: { DEFAULT: '#D7FB50', dark: '#9BE106', @@ -32,7 +32,3 @@ const VegaColours = { 400: '#626262', }, }; - -module.exports = { - VegaColours, -}; diff --git a/libs/tailwindcss-config/src/vega-custom-classes-lite.js b/libs/tailwindcss-config/src/vega-custom-classes-lite.ts similarity index 77% rename from libs/tailwindcss-config/src/vega-custom-classes-lite.js rename to libs/tailwindcss-config/src/vega-custom-classes-lite.ts index 6e86b3ace..434eb4935 100644 --- a/libs/tailwindcss-config/src/vega-custom-classes-lite.js +++ b/libs/tailwindcss-config/src/vega-custom-classes-lite.ts @@ -1,8 +1,8 @@ -const plugin = require('tailwindcss/plugin'); -const colors = require('tailwindcss/colors'); -const themelite = require('./theme-lite'); +import plugin from 'tailwindcss/plugin'; +import colors from 'tailwindcss/colors'; +import { themeLite } from './theme-lite'; -const vegaCustomClassesLite = plugin(function ({ addUtilities }) { +export const vegaCustomClassesLite = plugin(function ({ addUtilities }) { addUtilities({ '.percent-change-up::before': { content: ' ', @@ -35,19 +35,19 @@ const vegaCustomClassesLite = plugin(function ({ addUtilities }) { textTransform: 'uppercase', textDecoration: 'none', backgroundColor: 'rgba(0, 143, 74, 0.1)', - border: `1px solid ${themelite.colors.darkerGreen}`, - color: themelite.colors.darkerGreen, + border: `1px solid ${themeLite.colors.darkerGreen}`, + color: themeLite.colors.darkerGreen, '&:hover': { - backgroundColor: themelite.colors.darkerGreen, + backgroundColor: themeLite.colors.darkerGreen, color: colors.white, }, '&.selected': { - backgroundColor: themelite.colors.darkerGreen, + backgroundColor: themeLite.colors.darkerGreen, color: colors.white, }, }, '.buyButtonDark': { - color: themelite.colors.darkerGreen, + color: themeLite.colors.darkerGreen, '&:hover': { color: colors.black, }, @@ -59,19 +59,19 @@ const vegaCustomClassesLite = plugin(function ({ addUtilities }) { textTransform: 'uppercase', textDecoration: 'none', backgroundColor: 'rgba(255, 8, 126, 0.1)', - border: `1px solid ${themelite.colors.pink}`, - color: themelite.colors.pink, + border: `1px solid ${themeLite.colors.pink}`, + color: themeLite.colors.pink, '&:hover': { color: colors.white, - backgroundColor: themelite.colors.pink, + backgroundColor: themeLite.colors.pink, }, '&.selected': { - backgroundColor: themelite.colors.pink, + backgroundColor: themeLite.colors.pink, color: colors.white, }, }, '.sellButtonDark': { - color: themelite.colors.pink, + color: themeLite.colors.pink, '&:hover': { color: colors.black, }, @@ -110,5 +110,3 @@ const vegaCustomClassesLite = plugin(function ({ addUtilities }) { // }, }); }); - -module.exports = vegaCustomClassesLite; diff --git a/libs/tailwindcss-config/src/vega-custom-classes.js b/libs/tailwindcss-config/src/vega-custom-classes.ts similarity index 87% rename from libs/tailwindcss-config/src/vega-custom-classes.js rename to libs/tailwindcss-config/src/vega-custom-classes.ts index 8bbcd86dd..e1eda0eab 100644 --- a/libs/tailwindcss-config/src/vega-custom-classes.js +++ b/libs/tailwindcss-config/src/vega-custom-classes.ts @@ -1,8 +1,8 @@ -const plugin = require('tailwindcss/plugin'); -const colors = require('tailwindcss/colors'); -const theme = require('./theme'); +import plugin from 'tailwindcss/plugin'; +import colors from 'tailwindcss/colors'; +import { theme } from './theme'; -const vegaCustomClasses = plugin(function ({ addUtilities }) { +export const vegaCustomClasses = plugin(function ({ addUtilities }) { addUtilities({ '.calt': { fontFeatureSettings: "'calt'", @@ -32,7 +32,7 @@ const vegaCustomClasses = plugin(function ({ addUtilities }) { '.dark .syntax-highlighter-wrapper .hljs': { background: theme.colors.vega.cdark[900], color: theme.colors.vega.green.DEFAULT, - border: 0, + border: '0', }, '.syntax-highlighter-wrapper .hljs-literal': { color: theme.colors.vega.pink.DEFAULT, @@ -60,5 +60,3 @@ const vegaCustomClasses = plugin(function ({ addUtilities }) { }, }); }); - -module.exports = vegaCustomClasses; diff --git a/libs/tailwindcss-config/tsconfig.spec.json b/libs/tailwindcss-config/tsconfig.spec.json deleted file mode 100644 index a18afb604..000000000 --- a/libs/tailwindcss-config/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/libs/types/.babelrc b/libs/types/.babelrc deleted file mode 100644 index 1ea870ead..000000000 --- a/libs/types/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic", - "useBuiltIns": "usage" - } - ] - ], - "plugins": [] -} diff --git a/libs/types/.eslintrc.json b/libs/types/.eslintrc.json index f3153d3b4..9c228f61a 100644 --- a/libs/types/.eslintrc.json +++ b/libs/types/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["plugin:@nx/react", "../../.eslintrc.json"], + "extends": ["../../.eslintrc.json"], "ignorePatterns": ["!**/*", "__generated__"], "overrides": [ { @@ -13,6 +13,18 @@ { "files": ["*.js", "*.jsx"], "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": [ + "error", + { + "ignoredFiles": ["{projectRoot}/rollup.config.{js,ts,mjs,mts}"] + } + ] + } } ] } diff --git a/libs/types/.swcrc b/libs/types/.swcrc new file mode 100644 index 000000000..28e88ec1c --- /dev/null +++ b/libs/types/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/libs/types/jest.config.ts b/libs/types/jest.config.ts index 98e7ee35c..dfdce99c6 100644 --- a/libs/types/jest.config.ts +++ b/libs/types/jest.config.ts @@ -1,11 +1,30 @@ /* eslint-disable */ +import { readFileSync } from 'fs'; + +// Reading the SWC compilation config and remove the "exclude" +// for the test files to be compiled by SWC +const { exclude: _, ...swcJestConfig } = JSON.parse( + readFileSync(`${__dirname}/.swcrc`, 'utf-8') +); + +// disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves. +// If we do not disable this, SWC Core will read .swcrc and won't transform our test files due to "exclude" +if (swcJestConfig.swcrc === undefined) { + swcJestConfig.swcrc = false; +} + +// Uncomment if using global setup/teardown files being transformed via swc +// https://nx.dev/packages/jest/documents/overview#global-setup/teardown-with-nx-libraries +// jest needs EsModule Interop to find the default exported setup/teardown functions +// swcJestConfig.module.noInterop = false; + export default { displayName: 'types', preset: '../../jest.preset.js', transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], + '^.+\\.[tj]s$': ['@swc/jest', swcJestConfig], }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + moduleFileExtensions: ['ts', 'js', 'html'], + testEnvironment: 'node', coverageDirectory: '../../coverage/libs/types', }; diff --git a/libs/types/package.json b/libs/types/package.json index c68242264..d08120856 100644 --- a/libs/types/package.json +++ b/libs/types/package.json @@ -1,4 +1,7 @@ { "name": "@vegaprotocol/types", - "version": "0.0.6" + "version": "0.0.7", + "dependencies": {}, + "type": "module", + "module": "./index.js" } diff --git a/libs/types/project.json b/libs/types/project.json index 67b26922f..7abcc446c 100644 --- a/libs/types/project.json +++ b/libs/types/project.json @@ -3,48 +3,38 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "libs/types/src", "projectType": "library", - "tags": [], "targets": { "build": { "executor": "@nx/rollup:rollup", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/libs/types", + "main": "libs/types/src/index.ts", "tsConfig": "libs/types/tsconfig.lib.json", + "assets": [], "project": "libs/types/package.json", - "entryFile": "libs/types/src/index.ts", - "rollupConfig": "@nx/react/plugins/bundle-rollup", - "compiler": "babel", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "libs/types/README.md", - "input": ".", - "output": "." - } - ] + "compiler": "swc", + "format": ["esm"] } }, + "publish": { + "command": "node tools/scripts/publish.mjs types {args.ver} {args.tag}", + "dependsOn": ["build"] + }, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": ["libs/types/**/*.{ts,tsx,js,jsx}"] + "lintFilePatterns": ["libs/types/**/*.ts", "libs/types/package.json"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/types"], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/types/jest.config.ts" } - }, - "generate": { - "executor": "nx:run-commands", - "options": { - "commands": ["npx graphql-codegen --config=libs/types/codegen.yml"], - "parallel": false - } } - } + }, + "tags": [] } diff --git a/libs/types/tsconfig.json b/libs/types/tsconfig.json index a60de721b..330b9970f 100644 --- a/libs/types/tsconfig.json +++ b/libs/types/tsconfig.json @@ -1,17 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "jsx": "react-jsx", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, + "module": "esnext", "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": false, + "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true }, + "files": [], "include": [], "references": [ { diff --git a/libs/types/tsconfig.lib.json b/libs/types/tsconfig.lib.json index 621db72d7..33eca2c2c 100644 --- a/libs/types/tsconfig.lib.json +++ b/libs/types/tsconfig.lib.json @@ -2,22 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", + "declaration": true, "types": ["node"] }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": [ - "**/*.spec.ts", - "**/*.test.ts", - "**/*.spec.tsx", - "**/*.test.tsx", - "**/*.spec.js", - "**/*.test.js", - "**/*.spec.jsx", - "**/*.test.jsx", - "jest.config.ts" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] } diff --git a/libs/types/tsconfig.spec.json b/libs/types/tsconfig.spec.json index a85d573fc..9b2a121d1 100644 --- a/libs/types/tsconfig.spec.json +++ b/libs/types/tsconfig.spec.json @@ -6,15 +6,9 @@ "types": ["jest", "node"] }, "include": [ - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts", - "jest.config.ts" + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" ] } diff --git a/libs/ui-toolkit/package.json b/libs/ui-toolkit/package.json index 5ea4c6ddb..f6cd7ca10 100644 --- a/libs/ui-toolkit/package.json +++ b/libs/ui-toolkit/package.json @@ -1,4 +1,7 @@ { "name": "@vegaprotocol/ui-toolkit", - "version": "0.12.9" + "version": "0.12.9", + "devDependencies": { + "@vegaprotocol/tailwindcss-config": "0.0.6" + } } diff --git a/libs/ui-toolkit/src/components/healthbar/healthbar.tsx b/libs/ui-toolkit/src/components/healthbar/healthbar.tsx deleted file mode 100644 index 925a3f72d..000000000 --- a/libs/ui-toolkit/src/components/healthbar/healthbar.tsx +++ /dev/null @@ -1,283 +0,0 @@ -import classNames from 'classnames'; -import { - addDecimalsFormatNumber, - formatNumberPercentage, -} from '@vegaprotocol/utils'; -import { BigNumber } from 'bignumber.js'; -import { getIntentBackground, Intent } from '../../utils/intent'; -import { Indicator } from '../indicator'; -import { Tooltip } from '../tooltip'; -import { useT } from '../../use-t'; - -const Remainder = () => ( -
-); - -const Target = ({ - target, - decimals, - isLarge, -}: { - isLarge: boolean; - target: string; - decimals: number; -}) => { - const t = useT(); - return ( - -
- -
- - {t('Target stake {{target}}', { - target: addDecimalsFormatNumber(target, decimals), - })}{' '} - -
- } - > -
-
-
- - ); -}; - -const AuctionTarget = ({ - trigger, - isLarge, - rangeLimit, - decimals, -}: { - isLarge: boolean; - trigger: number; - rangeLimit: number; - decimals: number; -}) => { - const t = useT(); - const leftPosition = new BigNumber(trigger).div(rangeLimit).multipliedBy(100); - return ( - -
- -
- - {t('Auction Trigger stake {{trigger}}', { - trigger: addDecimalsFormatNumber(trigger, decimals), - })} - -
- } - > -
-
-
- - ); -}; - -const Level = ({ - commitmentAmount, - rangeLimit, - opacity, - fee, - prevLevel, - decimals, - intent, -}: { - commitmentAmount: number; - rangeLimit: number; - opacity: number; - fee: string; - prevLevel: number; - decimals: number; - intent: Intent; -}) => { - const t = useT(); - const width = new BigNumber(commitmentAmount) - .div(rangeLimit) - .multipliedBy(100) - .toNumber(); - - const formattedFee = fee - ? formatNumberPercentage(new BigNumber(fee).times(100), 2) - : '-'; - - const tooltipContent = ( -
-
- -
- {t('{{fee}} Fee', { fee: formattedFee })} -
- - {prevLevel ? addDecimalsFormatNumber(prevLevel, decimals) : '0'} -{' '} - {addDecimalsFormatNumber(commitmentAmount, decimals)} - -
-
- ); - - return ( - -
-
-
- - ); -}; - -const Full = () => ( -
-); - -interface Levels { - fee: string; - commitmentAmount: number; -} - -export const HealthBar = ({ - target = '0', - decimals, - levels, - size = 'small', - intent, - triggerRatio, -}: { - target: string; - decimals: number; - levels: Levels[]; - size?: 'small' | 'large'; - intent: Intent; - triggerRatio?: string; -}) => { - const t = useT(); - const targetNumber = parseInt(target, 10); - const rangeLimit = targetNumber * 2; - - const triggerRatioNumber = triggerRatio ? parseFloat(triggerRatio) : 0; - const auctionTrigger = targetNumber * triggerRatioNumber; - - let lastVisibleLevel = 0; - const committedNumber = levels - .reduce((total, current, index) => { - const newTotal = total.plus(current.commitmentAmount); - if (total.isLessThan(rangeLimit) && newTotal.isGreaterThan(rangeLimit)) { - lastVisibleLevel = index; - } - return newTotal; - }, new BigNumber(0)) - .toNumber(); - - const isLarge = size === 'large'; - const showRemainder = committedNumber < rangeLimit || levels.length === 0; - const showOverflow = !showRemainder && lastVisibleLevel < levels.length - 1; - - return ( -
-
-
- - -
- {levels.map((p, index) => { - const { commitmentAmount, fee } = p; - const prevLevel = levels[index - 1]?.commitmentAmount; - const opacity = 1 - 0.2 * index; - return index <= lastVisibleLevel ? ( - - ) : null; - })} - {showRemainder && } - {showOverflow && ( - - {t('Providers greater than 2x target stake not shown')} -
- } - > -
...
- - )} -
-
- {triggerRatio && ( - - )} - - -
-
- ); -}; diff --git a/libs/ui-toolkit/src/components/healthbar/index.ts b/libs/ui-toolkit/src/components/healthbar/index.ts deleted file mode 100644 index 3011e2c6e..000000000 --- a/libs/ui-toolkit/src/components/healthbar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './healthbar'; diff --git a/libs/ui-toolkit/src/components/index.ts b/libs/ui-toolkit/src/components/index.ts index 32c2c1847..b9e3a9044 100644 --- a/libs/ui-toolkit/src/components/index.ts +++ b/libs/ui-toolkit/src/components/index.ts @@ -13,7 +13,6 @@ export * from './divider'; export * from './drawer'; export * from './dropdown-menu'; export * from './form-group'; -export * from './healthbar'; export * from './icon'; export * from './indicator'; export * from './input'; diff --git a/libs/ui-toolkit/tailwind.config.js b/libs/ui-toolkit/tailwind.config.js index 3140d47a1..336d45665 100644 --- a/libs/ui-toolkit/tailwind.config.js +++ b/libs/ui-toolkit/tailwind.config.js @@ -1,7 +1,9 @@ const { join } = require('path'); const { createGlobPatternsForDependencies } = require('@nx/react/tailwind'); -const theme = require('../tailwindcss-config/src/theme'); -const vegaCustomClasses = require('../tailwindcss-config/src/vega-custom-classes'); +const { theme } = require('../tailwindcss-config/src/theme'); +const { + vegaCustomClasses, +} = require('../tailwindcss-config/src/vega-custom-classes'); module.exports = { content: [ diff --git a/libs/utils/.eslintrc.json b/libs/utils/.eslintrc.json index e8c3634b5..a871f3e05 100644 --- a/libs/utils/.eslintrc.json +++ b/libs/utils/.eslintrc.json @@ -1,6 +1,6 @@ { "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], + "ignorePatterns": ["!**/*", "__generated__"], "overrides": [ { "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], @@ -32,6 +32,18 @@ { "files": ["*.js", "*.jsx"], "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": [ + "error", + { + "ignoredFiles": ["{projectRoot}/rollup.config.{js,ts,mjs,mts}"] + } + ] + } } ] } diff --git a/libs/utils/.swcrc b/libs/utils/.swcrc index fb42f4b04..28e88ec1c 100644 --- a/libs/utils/.swcrc +++ b/libs/utils/.swcrc @@ -15,9 +15,7 @@ "loose": true }, "module": { - "type": "commonjs", - "strict": true, - "noInterop": true + "type": "es6" }, "sourceMaps": true, "exclude": [ diff --git a/libs/utils/jest.config.ts b/libs/utils/jest.config.ts index 7bb492626..cb1d2ad10 100644 --- a/libs/utils/jest.config.ts +++ b/libs/utils/jest.config.ts @@ -1,16 +1,30 @@ /* eslint-disable */ +import { readFileSync } from 'fs'; + +// Reading the SWC compilation config and remove the "exclude" +// for the test files to be compiled by SWC +const { exclude: _, ...swcJestConfig } = JSON.parse( + readFileSync(`${__dirname}/.swcrc`, 'utf-8') +); + +// disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves. +// If we do not disable this, SWC Core will read .swcrc and won't transform our test files due to "exclude" +if (swcJestConfig.swcrc === undefined) { + swcJestConfig.swcrc = false; +} + +// Uncomment if using global setup/teardown files being transformed via swc +// https://nx.dev/packages/jest/documents/overview#global-setup/teardown-with-nx-libraries +// jest needs EsModule Interop to find the default exported setup/teardown functions +// swcJestConfig.module.noInterop = false; + export default { displayName: 'utils', preset: '../../jest.preset.js', - globals: {}, transform: { - '^.+\\.[tj]s$': [ - 'ts-jest', - { - tsconfig: '/tsconfig.spec.json', - }, - ], + '^.+\\.[tj]s$': ['@swc/jest', swcJestConfig], }, moduleFileExtensions: ['ts', 'js', 'html'], + testEnvironment: 'jsdom', coverageDirectory: '../../coverage/libs/utils', }; diff --git a/libs/utils/package.json b/libs/utils/package.json index 13438b08c..8f2be33f4 100644 --- a/libs/utils/package.json +++ b/libs/utils/package.json @@ -1,5 +1,16 @@ { "name": "@vegaprotocol/utils", - "version": "0.0.10", - "type": "commonjs" + "version": "0.0.11", + "dependencies": { + "@vegaprotocol/types": "0.0.7", + "bignumber.js": "^9.0.2", + "date-fns": "^2.28.0", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "18.2.0", + "react-i18next": "13.5.0" + }, + "type": "module", + "module": "./index.js" } diff --git a/libs/utils/project.json b/libs/utils/project.json index 1458872ac..cdfc2f354 100644 --- a/libs/utils/project.json +++ b/libs/utils/project.json @@ -5,37 +5,33 @@ "projectType": "library", "targets": { "build": { - "executor": "@nx/js:swc", + "executor": "@nx/rollup:rollup", "outputs": ["{options.outputPath}"], - "format": ["esm", "cjs"], "options": { "outputPath": "dist/libs/utils", "main": "libs/utils/src/index.ts", "tsConfig": "libs/utils/tsconfig.lib.json", - "assets": ["libs/utils/*.md"] + "assets": [], + "project": "libs/utils/package.json", + "compiler": "swc", + "format": ["esm"], + "external": ["@vegaprotocol/types"] } }, "publish": { - "executor": "nx:run-commands", - "options": { - "command": "node tools/scripts/publish.mjs utils {args.ver} {args.tag}" - }, - "dependsOn": [ - { - "target": "build" - } - ] + "command": "node tools/scripts/publish.mjs utils {args.ver} {args.tag}", + "dependsOn": ["build"] }, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": ["libs/utils/**/*.ts"] + "lintFilePatterns": ["libs/utils/**/*.ts", "libs/utils/package.json"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/utils"], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/utils/jest.config.ts" } diff --git a/libs/utils/src/lib/format/trigger.ts b/libs/utils/src/lib/format/trigger.ts index fe6bad348..3c869da90 100644 --- a/libs/utils/src/lib/format/trigger.ts +++ b/libs/utils/src/lib/format/trigger.ts @@ -1,4 +1,4 @@ -import * as Schema from '@vegaprotocol/types'; +import { type StopOrder, StopOrderTriggerDirection } from '@vegaprotocol/types'; import { addDecimalsFormatNumber } from './number'; import { useCallback } from 'react'; import { useT } from '../use-t'; @@ -7,14 +7,14 @@ export const useFormatTrigger = () => { const t = useT(); return useCallback( ( - data: Pick | undefined, + data: Pick | undefined, marketDecimalPlaces: number, defaultValue = '-' ) => { if (data && data?.trigger?.__typename === 'StopOrderPrice') { return `${t('Mark')} ${ data?.triggerDirection === - Schema.StopOrderTriggerDirection.TRIGGER_DIRECTION_FALLS_BELOW + StopOrderTriggerDirection.TRIGGER_DIRECTION_FALLS_BELOW ? '<' : '>' } ${addDecimalsFormatNumber(data.trigger.price, marketDecimalPlaces)}`; @@ -25,7 +25,7 @@ export const useFormatTrigger = () => { ) { return `${t('Mark')} ${ data?.triggerDirection === - Schema.StopOrderTriggerDirection.TRIGGER_DIRECTION_FALLS_BELOW + StopOrderTriggerDirection.TRIGGER_DIRECTION_FALLS_BELOW ? '+' : '-' }${(Number(data?.trigger.trailingPercentOffset) * 100).toFixed(1)}%`; diff --git a/libs/utils/tsconfig.json b/libs/utils/tsconfig.json index e302a4d20..063f097fd 100644 --- a/libs/utils/tsconfig.json +++ b/libs/utils/tsconfig.json @@ -1,14 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", + "module": "esnext", "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": false, + "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, - "esModuleInterop": true + "allowSyntheticDefaultImports": true }, "files": [], "include": [], diff --git a/libs/utils/tsconfig.lib.json b/libs/utils/tsconfig.lib.json index e85ef50f6..33eca2c2c 100644 --- a/libs/utils/tsconfig.lib.json +++ b/libs/utils/tsconfig.lib.json @@ -3,8 +3,8 @@ "compilerOptions": { "outDir": "../../dist/out-tsc", "declaration": true, - "types": [] + "types": ["node"] }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] } diff --git a/libs/utils/tsconfig.spec.json b/libs/utils/tsconfig.spec.json index 546f12877..9b2a121d1 100644 --- a/libs/utils/tsconfig.spec.json +++ b/libs/utils/tsconfig.spec.json @@ -5,5 +5,10 @@ "module": "commonjs", "types": ["jest", "node"] }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] } diff --git a/libs/wallet/.babelrc b/libs/wallet/.babelrc deleted file mode 100644 index 1ea870ead..000000000 --- a/libs/wallet/.babelrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "presets": [ - [ - "@nx/react/babel", - { - "runtime": "automatic", - "useBuiltIns": "usage" - } - ] - ], - "plugins": [] -} diff --git a/libs/wallet/.eslintrc.json b/libs/wallet/.eslintrc.json index f3153d3b4..9c228f61a 100644 --- a/libs/wallet/.eslintrc.json +++ b/libs/wallet/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["plugin:@nx/react", "../../.eslintrc.json"], + "extends": ["../../.eslintrc.json"], "ignorePatterns": ["!**/*", "__generated__"], "overrides": [ { @@ -13,6 +13,18 @@ { "files": ["*.js", "*.jsx"], "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": [ + "error", + { + "ignoredFiles": ["{projectRoot}/rollup.config.{js,ts,mjs,mts}"] + } + ] + } } ] } diff --git a/libs/wallet/.swcrc b/libs/wallet/.swcrc new file mode 100644 index 000000000..28e88ec1c --- /dev/null +++ b/libs/wallet/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/libs/wallet/__mocks__/zustand.ts b/libs/wallet/__mocks__/zustand.ts index b42750b88..45c0b4bd0 100644 --- a/libs/wallet/__mocks__/zustand.ts +++ b/libs/wallet/__mocks__/zustand.ts @@ -1,5 +1,4 @@ import type { StateCreator } from 'zustand'; -import { act } from 'react-dom/test-utils'; const { create: actualCreate } = jest.requireActual('zustand'); // if using jest // a variable to hold reset functions for all stores declared in the app @@ -17,5 +16,5 @@ export const create = // Reset all stores after each test run beforeEach(() => { - act(() => storeResetFns.forEach((resetFn) => resetFn())); + storeResetFns.forEach((resetFn) => resetFn()); }); diff --git a/libs/wallet/jest.config.ts b/libs/wallet/jest.config.ts index 5b06be7c8..a2d5676be 100644 --- a/libs/wallet/jest.config.ts +++ b/libs/wallet/jest.config.ts @@ -1,12 +1,30 @@ /* eslint-disable */ +import { readFileSync } from 'fs'; + +// Reading the SWC compilation config and remove the "exclude" +// for the test files to be compiled by SWC +const { exclude: _, ...swcJestConfig } = JSON.parse( + readFileSync(`${__dirname}/.swcrc`, 'utf-8') +); + +// disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves. +// If we do not disable this, SWC Core will read .swcrc and won't transform our test files due to "exclude" +if (swcJestConfig.swcrc === undefined) { + swcJestConfig.swcrc = false; +} + +// Uncomment if using global setup/teardown files being transformed via swc +// https://nx.dev/packages/jest/documents/overview#global-setup/teardown-with-nx-libraries +// jest needs EsModule Interop to find the default exported setup/teardown functions +// swcJestConfig.module.noInterop = false; + export default { displayName: 'wallet', preset: '../../jest.preset.js', transform: { - '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', - '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], + '^.+\\.[tj]s$': ['@swc/jest', swcJestConfig], }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + moduleFileExtensions: ['ts', 'js', 'html'], + testEnvironment: 'jsdom', coverageDirectory: '../../coverage/libs/wallet', - setupFilesAfterEnv: ['./src/setup-tests.ts'], }; diff --git a/libs/wallet/package.json b/libs/wallet/package.json index 5351a14e1..9b4e6c607 100644 --- a/libs/wallet/package.json +++ b/libs/wallet/package.json @@ -1,4 +1,14 @@ { "name": "@vegaprotocol/wallet", - "version": "0.0.2" + "version": "0.0.3", + "dependencies": { + "@vegaprotocol/types": "0.0.7", + "@vegaprotocol/utils": "0.0.11", + "ethers": "^5.6.0", + "eventemitter3": "^5.0.1", + "js-sha3": "^0.8.0", + "zustand": "^4.5.0" + }, + "type": "module", + "module": "./index.js" } diff --git a/libs/wallet/project.json b/libs/wallet/project.json index 273238344..828e11399 100644 --- a/libs/wallet/project.json +++ b/libs/wallet/project.json @@ -3,55 +3,39 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "libs/wallet/src", "projectType": "library", - "tags": [], "targets": { "build": { "executor": "@nx/rollup:rollup", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/libs/wallet", + "main": "libs/wallet/src/index.ts", "tsConfig": "libs/wallet/tsconfig.lib.json", + "assets": [], "project": "libs/wallet/package.json", - "entryFile": "libs/wallet/src/index.ts", - "external": [ - "react", - "react-dom", - "react/jsx-runtime", - "@vegaprotocol/types", - "@vegaprotocol/utils" - ], - "rollupConfig": "@nx/react/plugins/bundle-rollup", "compiler": "swc", - "format": ["esm", "cjs"], - "assets": [ - { - "glob": "libs/wallet/README.md", - "input": ".", - "output": "." - } - ] + "format": ["esm"], + "external": ["@vegaprotocol/types", "@vegaprotocol/utils"] } }, + "publish": { + "command": "node tools/scripts/publish.mjs wallet {args.ver} {args.tag}", + "dependsOn": ["build"] + }, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], "options": { - "lintFilePatterns": ["libs/wallet/**/*.{ts,tsx,js,jsx}"] + "lintFilePatterns": ["libs/wallet/**/*.ts", "libs/wallet/package.json"] } }, "test": { "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/wallet"], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "libs/wallet/jest.config.ts" } - }, - "build-spec": { - "executor": "nx:run-commands", - "outputs": [], - "options": { - "command": "yarn tsc --project ./libs/wallet/tsconfig.spec.json" - } } - } + }, + "tags": [] } diff --git a/libs/wallet/src/setup-tests.ts b/libs/wallet/src/setup-tests.ts deleted file mode 100644 index 7b0828bfa..000000000 --- a/libs/wallet/src/setup-tests.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom'; diff --git a/libs/wallet/src/test-helpers.ts b/libs/wallet/src/test-helpers.ts deleted file mode 100644 index 00fc63713..000000000 --- a/libs/wallet/src/test-helpers.ts +++ /dev/null @@ -1,42 +0,0 @@ -export function mockBrowserWallet(overrides?: Partial) { - const vega: Vega = { - connectWallet: jest.fn().mockResolvedValue(null), - disconnectWallet: jest.fn().mockResolvedValue(undefined), - listKeys: jest - .fn() - .mockReturnValue({ keys: [{ name: 'test key', publicKey: '0x123' }] }), - sendTransaction: jest.fn().mockReturnValue({ - code: 1, - data: '', - height: '1', - log: '', - success: true, - txHash: '0x123', - }), - getChainId: jest.fn().mockResolvedValue({ chainID: 'mock chain' }), - on: jest.fn(), - off: jest.fn(), - isConnected: jest.fn().mockRejectedValue(Promise.resolve(true)), - ...overrides, - }; - // @ts-ignore globalThis has no index signature - globalThis.vega = vega; - return vega; -} - -export function clearBrowserWallet() { - // @ts-ignore no index signature on globalThis - delete globalThis['vega']; -} - -export function delayedResolve(result: T, delay = 0): Promise { - return new Promise((resolve) => { - setTimeout(() => resolve(result), delay); - }); -} - -export function delayedReject(result: T, delay = 0): Promise { - return new Promise((_, reject) => { - setTimeout(() => reject(result), delay); - }); -} diff --git a/libs/wallet/src/utils.spec.ts b/libs/wallet/src/utils.spec.ts index 898dc4436..0855d54a2 100644 --- a/libs/wallet/src/utils.spec.ts +++ b/libs/wallet/src/utils.spec.ts @@ -1,5 +1,4 @@ -import { determineId, normalizeOrderAmendment } from './utils'; -import * as Schema from '@vegaprotocol/types'; +import { determineId } from './utils'; describe('determineId', () => { it('produces a known result for an ID', () => { @@ -11,57 +10,3 @@ describe('determineId', () => { ); }); }); - -describe('normalizeOrderAmendment', () => { - type Order = Parameters[0]; - type Market = Parameters[1]; - const order: Order = { - id: '123', - timeInForce: Schema.OrderTimeInForce.TIME_IN_FORCE_GTT, - size: '100', - expiresAt: '2022-01-01T00:00:00.000Z', - }; - const market: Market = { - id: '456', - decimalPlaces: 1, - positionDecimalPlaces: 1, - }; - - it('sets and formats order id, market id, expires and timeInForce as given', () => { - const orderAmendment = normalizeOrderAmendment(order, market, '1', '1'); - expect(orderAmendment.orderId).toEqual('123'); - expect(orderAmendment.marketId).toEqual('456'); - expect(orderAmendment.expiresAt).toEqual('1640995200000000000'); - expect(orderAmendment.timeInForce).toEqual( - Schema.OrderTimeInForce.TIME_IN_FORCE_GTT - ); - }); - - it.each([ - ['1.1', 1, '11'], - ['1.1', 2, '110'], - ['0.001', 8, '100000'], - ])('sets and formats price', (price, decimalPlaces, output) => { - const orderAmendment = normalizeOrderAmendment( - order, - { ...market, decimalPlaces }, - price, - '1' - ); - expect(orderAmendment.price).toEqual(output); - }); - - it.each([ - ['9', 1, -10], - ['90', 2, 8900], - ['0.001', 8, 99900], - ])('sets and formats size delta', (size, positionDecimalPlaces, output) => { - const orderAmendment = normalizeOrderAmendment( - order, - { ...market, positionDecimalPlaces }, - '1', - size - ); - expect(orderAmendment.sizeDelta).toEqual(output); - }); -}); diff --git a/libs/wallet/src/utils.ts b/libs/wallet/src/utils.ts index 24bb26067..5678a9174 100644 --- a/libs/wallet/src/utils.ts +++ b/libs/wallet/src/utils.ts @@ -1,9 +1,5 @@ -import { removeDecimal, toNanoSeconds } from '@vegaprotocol/utils'; -import { type AccountType, type Market, type Order } from '@vegaprotocol/types'; -import BigNumber from 'bignumber.js'; import { ethers } from 'ethers'; import { sha3_256 } from 'js-sha3'; -import type { Exact } from 'type-fest'; import { type ApplyReferralCode, type BatchMarketInstructionSubmissionBody, @@ -16,8 +12,6 @@ import { type TransferBody, type UpdateMarginModeBody, type WithdrawSubmissionBody, - type Transfer, - type OrderAmendment, type Transaction, } from './transaction-types'; @@ -38,48 +32,6 @@ export const encodeTransaction = (tx: Transaction): string => { ); }; -export const normalizeOrderAmendment = >( - order: Pick, - market: Pick, - price: string, - size: string -): OrderAmendment => ({ - orderId: order.id, - marketId: market.id, - price: removeDecimal(price, market.decimalPlaces), - timeInForce: order.timeInForce, - sizeDelta: size - ? new BigNumber(removeDecimal(size, market.positionDecimalPlaces)) - .minus(order.size) - .toNumber() - : 0, - expiresAt: order.expiresAt - ? toNanoSeconds(order.expiresAt) // Wallet expects timestamp in nanoseconds - : undefined, -}); - -export const normalizeTransfer = >( - address: string, - amount: string, - fromAccountType: AccountType, - toAccountType: AccountType, - asset: { - id: string; - decimals: number; - } -): Transfer => { - return { - to: address, - fromAccountType, - toAccountType, - asset: asset.id, - amount: removeDecimal(amount, asset.decimals), - // oneOff or recurring required otherwise wallet will error - // default oneOff is immediate transfer - oneOff: {}, - }; -}; - /** * TODO: We may want to create a package similar to @metamask/detect-ethereum-provider as this wont suffice * if called immeidately, and before the extension has been able to add the vega object to the window diff --git a/libs/wallet/tsconfig.json b/libs/wallet/tsconfig.json index a60de721b..330b9970f 100644 --- a/libs/wallet/tsconfig.json +++ b/libs/wallet/tsconfig.json @@ -1,17 +1,15 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "jsx": "react-jsx", - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, + "module": "esnext", "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": false, + "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true }, + "files": [], "include": [], "references": [ { diff --git a/libs/wallet/tsconfig.lib.json b/libs/wallet/tsconfig.lib.json index 867a2ffa8..33eca2c2c 100644 --- a/libs/wallet/tsconfig.lib.json +++ b/libs/wallet/tsconfig.lib.json @@ -2,23 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", + "declaration": true, "types": ["node"] }, - "files": [ - "../../node_modules/@nx/react/typings/cssmodule.d.ts", - "../../node_modules/@nx/react/typings/image.d.ts" - ], - "exclude": [ - "**/*.spec.ts", - "**/*.test.ts", - "**/*.spec.tsx", - "**/*.test.tsx", - "**/*.spec.js", - "**/*.test.js", - "**/*.spec.jsx", - "**/*.test.jsx", - "jest.config.ts", - "__mocks__" - ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] } diff --git a/libs/wallet/tsconfig.spec.json b/libs/wallet/tsconfig.spec.json index 3da863401..9b2a121d1 100644 --- a/libs/wallet/tsconfig.spec.json +++ b/libs/wallet/tsconfig.spec.json @@ -3,18 +3,12 @@ "compilerOptions": { "outDir": "../../dist/out-tsc", "module": "commonjs", - "types": ["jest", "node", "@testing-library/jest-dom"] + "types": ["jest", "node"] }, "include": [ - "**/*.test.ts", - "**/*.spec.ts", - "**/*.test.tsx", - "**/*.spec.tsx", - "**/*.test.js", - "**/*.spec.js", - "**/*.test.jsx", - "**/*.spec.jsx", - "**/*.d.ts", - "jest.config.ts" + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" ] } diff --git a/package.json b/package.json index 6fb84db75..538d2edcd 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@sentry/nextjs": "^6.19.3", "@sentry/react": "^6.19.2", "@sentry/tracing": "^6.19.2", + "@swc/helpers": "~0.5.2", "@walletconnect/ethereum-provider": "^2.6.0", "@web3-react/coinbase-wallet": "8.1.2-beta.0", "@web3-react/core": "^8.1.2-beta.0", @@ -201,6 +202,7 @@ "jest": "29.4.3", "jest-canvas-mock": "^2.3.1", "jest-environment-jsdom": "^29.4.1", + "jest-environment-node": "^29.4.1", "jest-websocket-mock": "^2.3.0", "lint-staged": "^12.3.3", "mock-apollo-client": "^1.2.0", @@ -227,6 +229,7 @@ "type-fest": "^3.8.0", "typescript": "5.2.2", "url-loader": "^4.1.1", + "verdaccio": "^5.0.4", "webpack": "5.89.0", "webpack-merge": "^5.8.0" }, @@ -238,5 +241,8 @@ "graphql": "15.8.0", "//": "workaround storybook issue: https://github.com/storybookjs/storybook/issues/21642", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.cd77847.0" + }, + "nx": { + "includedScripts": [] } } diff --git a/project.json b/project.json new file mode 100644 index 000000000..3759d04a5 --- /dev/null +++ b/project.json @@ -0,0 +1,14 @@ +{ + "name": "nx-monorepo", + "$schema": "node_modules/nx/schemas/project-schema.json", + "targets": { + "local-registry": { + "executor": "@nx/js:verdaccio", + "options": { + "port": 4873, + "config": ".verdaccio/config.yml", + "storage": "tmp/local-registry/storage" + } + } + } +} diff --git a/tsconfig.base.json b/tsconfig.base.json index ee5b3fff8..9c202fcc9 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -47,7 +47,7 @@ "@vegaprotocol/react-helpers": ["libs/react-helpers/src/index.ts"], "@vegaprotocol/smart-contracts": ["libs/smart-contracts/src/index.ts"], "@vegaprotocol/tailwindcss-config": [ - "libs/tailwindcss-config/src/index.js" + "libs/tailwindcss-config/src/index.ts" ], "@vegaprotocol/tendermint": ["libs/tendermint/src/index.ts"], "@vegaprotocol/trades": ["libs/trades/src/index.ts"], diff --git a/yarn.lock b/yarn.lock index 7439c578b..202353fd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1467,7 +1467,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.13.10", "@babel/runtime@^7.21.0": +"@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.21.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== @@ -1759,7 +1759,7 @@ find-test-names "^1.19.0" globby "^11.0.4" -"@cypress/request@^3.0.0": +"@cypress/request@3.0.1", "@cypress/request@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960" integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== @@ -6781,6 +6781,13 @@ dependencies: tslib "^2.4.0" +"@swc/helpers@~0.5.2": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.6.tgz#d16d8566b7aea2bef90d059757e2d77f48224160" + integrity sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA== + dependencies: + tslib "^2.4.0" + "@swc/jest@0.2.20": version "0.2.20" resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.20.tgz#2bddb4348fb730296b86cdcd96748be131b11395" @@ -7325,7 +7332,7 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.201.tgz#76f47cb63124e806824b6c18463daf3e1d480239" integrity sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ== -"@types/lodash@^4.14.168": +"@types/lodash@^4.14.168", "@types/lodash@^4.14.175": version "4.14.202" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== @@ -7875,6 +7882,166 @@ "@typescript-eslint/types" "6.11.0" eslint-visitor-keys "^3.4.1" +"@verdaccio/commons-api@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-10.2.0.tgz#3b684c31749837b0574375bb2e10644ecea9fcca" + integrity sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ== + dependencies: + http-errors "2.0.0" + http-status-codes "2.2.0" + +"@verdaccio/config@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/config/-/config-7.0.0-next-7.10.tgz#7c6c7f1a599152df25a30e0f53de7d8f508781f2" + integrity sha512-mB3qaf8wW4sUgS0h3Z4TXYH/V9spjjFA33kNqWl78IMJHipBddbyBvdmfh/vo/NGtfju8DrDbRZlhKCl6293Qg== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/utils" "7.0.0-next-7.10" + debug "4.3.4" + js-yaml "4.1.0" + lodash "4.17.21" + minimatch "7.4.6" + yup "0.32.11" + +"@verdaccio/core@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/core/-/core-7.0.0-next-7.10.tgz#4416e0c32c6805bbefd7e9d2573e6203219ac67e" + integrity sha512-kS7/x5y9knbkSksHeawRV5Af8p/g0qk9GgQOZjuvOtv08kMFSttYk/eDglE9++SbvqP34+sDraUIMB/C3tZ2fw== + dependencies: + ajv "8.12.0" + core-js "3.35.0" + http-errors "2.0.0" + http-status-codes "2.3.0" + process-warning "1.0.0" + semver "7.5.4" + +"@verdaccio/file-locking@10.3.1": + version "10.3.1" + resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-10.3.1.tgz#cfc2436e0715954e0965f97dfcd87381d116f749" + integrity sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g== + dependencies: + lockfile "1.0.4" + +"@verdaccio/file-locking@12.0.0-next.1": + version "12.0.0-next.1" + resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-12.0.0-next.1.tgz#ba0963020fedfc5bb7cb7b210a6d4e340301d295" + integrity sha512-Zb5G2HEhVRB0jCq4z7QA4dqTdRv/2kIsw2Nkm3j2HqC1OeJRxas3MJAF/OxzbAb1IN32lbg1zycMSk6NcbQkgQ== + dependencies: + lockfile "1.0.4" + +"@verdaccio/local-storage@10.3.3": + version "10.3.3" + resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-10.3.3.tgz#fc31eea9e3da2f27e0cfaf5fe713834ed1fab9e9" + integrity sha512-/n0FH+1hxVg80YhYBfJuW7F2AuvLY2fra8/DTCilWDll9Y5yZDxwntZfcKHJLerCA4atrbJtvaqpWkoV3Q9x8w== + dependencies: + "@verdaccio/commons-api" "10.2.0" + "@verdaccio/file-locking" "10.3.1" + "@verdaccio/streams" "10.2.1" + async "3.2.4" + debug "4.3.4" + lodash "4.17.21" + lowdb "1.0.0" + mkdirp "1.0.4" + +"@verdaccio/logger-7@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/logger-7/-/logger-7-7.0.0-next-7.10.tgz#aeac8cde73e92f7037e3b479e4708d9abac6a95c" + integrity sha512-UgbZnnapLmvcVMz7HzJhsyMTFLhVcAKTwKW/5dtaSwD2XrP721YawdTwJEPZnhcNrTcD9dUvRGfW4Dr/5QzJcg== + dependencies: + "@verdaccio/logger-commons" "7.0.0-next-7.10" + pino "7.11.0" + +"@verdaccio/logger-commons@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/logger-commons/-/logger-commons-7.0.0-next-7.10.tgz#f5153c06a41f396a644996f9b9f87bf6362209ea" + integrity sha512-RTA4K6KvoCrgqA1aVP4n8IDZfUQtaza2FcPjEsBShLQg0rHFJi/5/yQg+J4MpOvYlKbrusOy9pwN86h9pCe+CA== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/logger-prettify" "7.0.0-next.1" + colorette "2.0.20" + debug "4.3.4" + +"@verdaccio/logger-prettify@7.0.0-next.1": + version "7.0.0-next.1" + resolved "https://registry.yarnpkg.com/@verdaccio/logger-prettify/-/logger-prettify-7.0.0-next.1.tgz#00cd245f1ca1fa44473f5af91fffc06a922e295e" + integrity sha512-ZF71AS2k0OiSnKVT05+NUWARZ+yn0keGAlpkgNWU7SHiYeFS1ZDVpapi9PXR23gJ5U756fyPKaqvlRcYgEpsgA== + dependencies: + colorette "2.0.20" + dayjs "1.11.7" + lodash "4.17.21" + pino-abstract-transport "1.0.0" + sonic-boom "3.3.0" + +"@verdaccio/middleware@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/middleware/-/middleware-7.0.0-next-7.10.tgz#3a29e9811ab6369d190ec8192ea627f9afea23f5" + integrity sha512-NBQxi6ag2zSIoUUmnQn/n0YwJDnnHqqtyV5c73YTdQV5RSPn5i2YKz+8DSA+iJYa2ff8G4fx8hOdJR+QZZQ24w== + dependencies: + "@verdaccio/config" "7.0.0-next-7.10" + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/url" "12.0.0-next-7.10" + "@verdaccio/utils" "7.0.0-next-7.10" + debug "4.3.4" + express "4.18.2" + express-rate-limit "5.5.1" + lodash "4.17.21" + lru-cache "7.18.3" + mime "2.6.0" + +"@verdaccio/search@7.0.0-next.2": + version "7.0.0-next.2" + resolved "https://registry.yarnpkg.com/@verdaccio/search/-/search-7.0.0-next.2.tgz#ddcbc29f3a7ab02f3d52999fff8e871bc6f3f81f" + integrity sha512-NoGSpubKB+SB4gRMIoEl3E3NkoKE5f0DnANghB3SnMtVxpJGdwZgylosqDxt8swhQ80+16hYdAp6g44uhjVE6Q== + +"@verdaccio/signature@7.0.0-next.3": + version "7.0.0-next.3" + resolved "https://registry.yarnpkg.com/@verdaccio/signature/-/signature-7.0.0-next.3.tgz#a74c7d352c365b6d73a65b23c9772f6439c59010" + integrity sha512-egs1VmEe+COUUZ83I6gzDy79Jo3b/AExPvp9EDuJHkmwxJj+9gb231Rv4wk+UoNPrQRNLljUepQwVrDmbqP5DQ== + dependencies: + debug "4.3.4" + jsonwebtoken "9.0.2" + +"@verdaccio/streams@10.2.1": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-10.2.1.tgz#9443d24d4f17672b8f8c8e147690557918ed2bcb" + integrity sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ== + +"@verdaccio/tarball@12.0.0-next-7.10": + version "12.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/tarball/-/tarball-12.0.0-next-7.10.tgz#9f67928f529567816889abd0f0addcab70c0880a" + integrity sha512-kxctkPREUpe0oRDsTelKcLsWGv2llRBcK2AlyCAX7UENKGWvVqITTk81PkVpzlwXOpcRWdLJQmEE+dtXGwLr6Q== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/url" "12.0.0-next-7.10" + "@verdaccio/utils" "7.0.0-next-7.10" + debug "4.3.4" + lodash "4.17.21" + +"@verdaccio/ui-theme@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-7.0.0-next-7.10.tgz#8b83a8308d48ceb035072c31477d64e2bdfbdac0" + integrity sha512-I1War/XBg3WzzAojXDtEDjZw/1qPKW0d8EIsJD3h6Xi5Atzvz/xBTbHjgbwApjmISyDWQ8Vevp8zOtGO33zLSw== + +"@verdaccio/url@12.0.0-next-7.10": + version "12.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/url/-/url-12.0.0-next-7.10.tgz#833c395d1404d103e25b1f822618d037b93ad9a4" + integrity sha512-AiFG+W/H1iD+iXkh4b6zm3AsZdGdI7tiAPCHymN7jSV6dAvWTuhIEK30mmFyCSmOE0iwyn8ZN4xqsf9Qcu1emw== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + debug "4.3.4" + lodash "4.17.21" + validator "13.11.0" + +"@verdaccio/utils@7.0.0-next-7.10": + version "7.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/@verdaccio/utils/-/utils-7.0.0-next-7.10.tgz#2577e25cf9f2341c9510b0d8b1ce33edb6376917" + integrity sha512-3sGyBj0leN3RjwPJPDkdsD9j1ahzQccHPj86IlIJqUJFhAcOT/nD6z9+W3sBAiro6Q2psWyWHxBJ8H3LhtlLeA== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + lodash "4.17.21" + minimatch "7.4.6" + semver "7.5.4" + "@walletconnect/browser-utils@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" @@ -8593,7 +8760,7 @@ dependencies: argparse "^2.0.1" -JSONStream@^1.0.4, JSONStream@^1.3.5: +JSONStream@1.3.5, JSONStream@^1.0.4, JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -8606,6 +8773,13 @@ abab@^2.0.5, abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -8733,6 +8907,16 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" +ajv@8.12.0, ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -8743,16 +8927,6 @@ ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - allotment@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/allotment/-/allotment-1.19.0.tgz#8241a2e3db45e6b1e23f6ade29e392eab4297958" @@ -8850,6 +9024,11 @@ anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apache-md5@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.8.tgz#ea79c6feb03abfed42b2830dde06f75df5e3bbd9" + integrity sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA== + apollo-link-timeout@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/apollo-link-timeout/-/apollo-link-timeout-4.0.0.tgz#3e255bcced6a6babdcc080b1919dd958c036e235" @@ -9118,6 +9297,16 @@ async-mutex@^0.2.6: dependencies: tslib "^2.0.0" +async@3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +async@3.2.5, async@^3.2.0, async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + async@^2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" @@ -9125,11 +9314,6 @@ async@^2.6.4: dependencies: lodash "^4.17.14" -async@^3.2.0, async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - asynciterator.prototype@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" @@ -9507,6 +9691,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bcryptjs@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== + bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -9761,6 +9950,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -10207,6 +10401,13 @@ client-only@0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== +clipanion@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-3.2.1.tgz#2887db4cb232e80ba57cf19347a4e3a1c4a74133" + integrity sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA== + dependencies: + typanion "^3.8.0" + clipboardy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-3.0.0.tgz#f3876247404d334c9ed01b6f269c11d09a5e3092" @@ -10327,16 +10528,16 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +colorette@2.0.20, colorette@^2.0.10, colorette@^2.0.16, colorette@^2.0.19, colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colorette@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colorette@^2.0.10, colorette@^2.0.16, colorette@^2.0.19, colorette@^2.0.20: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - columnify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" @@ -10427,7 +10628,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4: +compression@1.7.4, compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -10567,6 +10768,14 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookies@0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" @@ -10605,6 +10814,11 @@ core-js-pure@^3.23.3: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.2.tgz#644830db2507ef84d068a70980ccd99c275f5fa6" integrity sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q== +core-js@3.35.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4" + integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg== + core-js@^3.0.0, core-js@^3.6.4, core-js@^3.6.5, core-js@^3.8.2: version "3.33.2" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb" @@ -10620,6 +10834,14 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cors@2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + corser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" @@ -11286,6 +11508,11 @@ dateformat@^4.5.1: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== +dayjs@1.11.7: + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + dayjs@^1.10.4: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" @@ -11303,7 +11530,7 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -11506,7 +11733,7 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -11813,6 +12040,13 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -11942,7 +12176,7 @@ env-cmd@^10.1.0: commander "^4.0.0" cross-spawn "^7.0.0" -envinfo@^7.7.3: +envinfo@7.11.0, envinfo@^7.7.3: version "7.11.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== @@ -12655,6 +12889,11 @@ ethers@^5.6.0, ethers@^5.7.0: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter2@6.4.7: version "6.4.7" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" @@ -12741,7 +12980,12 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -express@^4.17.3: +express-rate-limit@5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.5.1.tgz#110c23f6a65dfa96ab468eda95e71697bc6987a2" + integrity sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg== + +express@4.18.2, express@^4.17.3: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -12922,7 +13166,7 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== -fast-safe-stringify@^2.0.6: +fast-safe-stringify@2.1.1, fast-safe-stringify@^2.0.6: 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== @@ -13651,6 +13895,17 @@ glob@^10.0.0: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -13777,7 +14032,7 @@ got@^11.8.5: p-cancelable "^2.0.0" responselike "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -13893,7 +14148,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.7: +handlebars@4.7.8, handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -14242,6 +14497,16 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" +http-status-codes@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be" + integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== + +http-status-codes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.3.0.tgz#987fefb28c69f92a43aecc77feec2866349a8bfc" + integrity sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA== + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -14250,6 +14515,14 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" @@ -14258,14 +14531,6 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - https-proxy-agent@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz#0965ab47371b3e531cf6794d1eb148710a992ba7" @@ -14866,6 +15131,11 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-reference@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -15288,7 +15558,7 @@ jest-environment-jsdom@^29.4.1: jest-util "^29.7.0" jsdom "^20.0.0" -jest-environment-node@^29.7.0: +jest-environment-node@^29.4.1, jest-environment-node@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== @@ -15791,6 +16061,22 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsonwebtoken@9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + jsprim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" @@ -15811,6 +16097,23 @@ jsprim@^2.0.2: object.assign "^4.1.4" object.values "^1.1.6" +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + keccak@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" @@ -15820,6 +16123,13 @@ keccak@^3.0.1: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + keyv@^4.0.0, keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -15837,16 +16147,16 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kleur@4.1.5, kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -kleur@^4.0.3: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - klona@^2.0.4, klona@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" @@ -16124,6 +16434,18 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" +lockfile@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -16144,11 +16466,21 @@ lodash.defaults@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + lodash.isarguments@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" @@ -16164,11 +16496,26 @@ lodash.isfunction@^3.0.9: resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" @@ -16184,7 +16531,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.once@^4.1.1: +lodash.once@^4.0.0, lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== @@ -16199,7 +16546,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: +lodash@4, lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -16234,6 +16581,17 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lowdb@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-1.0.0.tgz#5243be6b22786ccce30e50c9a33eac36b20c8064" + integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== + dependencies: + graceful-fs "^4.1.3" + is-promise "^2.1.0" + lodash "4" + pify "^3.0.0" + steno "^0.4.1" + lower-case-first@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" @@ -16261,6 +16619,11 @@ lowlight@^1.17.0: fault "^1.0.0" highlight.js "~10.7.0" +lru-cache@7.18.3, lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + lru-cache@^10.0.0, lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": version "10.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7" @@ -16290,11 +16653,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -16905,12 +17263,12 @@ mime@1.6.0, mime@^1.4.1, mime@^1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.4.6: +mime@2.6.0, mime@^2.0.3, mime@^2.4.6: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@^3.0.0: +mime@3.0.0, mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== @@ -16964,6 +17322,13 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +"minimatch@2 || 3", minimatch@^3.0.2, 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" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -16978,12 +17343,12 @@ minimatch@4.2.3: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.2, 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" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" minimatch@^5.0.1: version "5.1.6" @@ -17043,18 +17408,18 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@^0.5.6: +mkdirp@1.0.4, mkdirp@^1.0.3, mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@^0.5.6, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mlly@^1.2.0, mlly@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" @@ -17180,6 +17545,15 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mv@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -17189,6 +17563,11 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + nanoid@^3.3.1, nanoid@^3.3.4, nanoid@^3.3.6: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -17204,6 +17583,11 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + needle@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" @@ -17294,6 +17678,13 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@cjs: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -17474,7 +17865,7 @@ nx@17.1.2: "@nx/nx-win32-arm64-msvc" "17.1.2" "@nx/nx-win32-x64-msvc" "17.1.2" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -18070,6 +18461,14 @@ pify@^5.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== +pino-abstract-transport@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + pino-abstract-transport@v0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" @@ -18142,6 +18541,11 @@ pkg-types@^1.0.3: mlly "^1.2.0" pathe "^1.1.0" +pkginfo@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" + integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== + pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -18786,7 +19190,7 @@ process-nextick-args@~2.0.0: 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-warning@^1.0.0: +process-warning@1.0.0, process-warning@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== @@ -18830,6 +19234,11 @@ prop-types@^15.0.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +property-expr@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" + integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== + property-information@^5.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" @@ -19377,6 +19786,17 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readable-web-to-node-stream@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" @@ -19805,6 +20225,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -20130,7 +20557,7 @@ semver@7.5.3: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@7.5.4, semver@7.x, semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -20402,6 +20829,13 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" +sonic-boom@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== + dependencies: + atomic-sleep "^1.0.0" + sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -20629,6 +21063,13 @@ std-env@^3.4.3: resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910" integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q== +steno@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" + integrity sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w== + dependencies: + graceful-fs "^4.1.3" + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -20777,7 +21218,7 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: 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== @@ -21339,6 +21780,11 @@ toml@^3.0.0: resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + tough-cookie@^4.1.2, tough-cookie@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -21533,6 +21979,11 @@ tslib@~2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -21552,6 +22003,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== +typanion@^3.8.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/typanion/-/typanion-3.14.0.tgz#a766a91810ce8258033975733e836c43a2929b94" + integrity sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -21871,6 +22327,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== +unix-crypt-td-js@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz#4912dfad1c8aeb7d20fa0a39e4c31918c1d5d5dd" + integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" @@ -22114,7 +22575,7 @@ validate-npm-package-name@^5.0.0: dependencies: builtins "^5.0.0" -validator@^13.6.0: +validator@13.11.0, validator@^13.6.0: version "13.11.0" resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== @@ -22132,11 +22593,80 @@ value-or-promise@1.0.12, value-or-promise@^1.0.11, value-or-promise@^1.0.12: resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +verdaccio-audit@12.0.0-next-7.10: + version "12.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/verdaccio-audit/-/verdaccio-audit-12.0.0-next-7.10.tgz#019a96a4bcfa677d2f196eab73d1927e5e06f673" + integrity sha512-inL8J7c4y9BpFIkqLsw9yrdh8/CBKWbBrREiQHQ9ZnD7jLkHxTWsWW8jt4aUt9t2azc6eO5rUIqdo1W6VsYKeA== + dependencies: + "@verdaccio/config" "7.0.0-next-7.10" + "@verdaccio/core" "7.0.0-next-7.10" + express "4.18.2" + https-proxy-agent "5.0.1" + node-fetch cjs + +verdaccio-htpasswd@12.0.0-next-7.10: + version "12.0.0-next-7.10" + resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-12.0.0-next-7.10.tgz#a3017649ea0f365d2b78bf052684c2d2b31452c0" + integrity sha512-+P7kxWgWSxRyTlP+IFySwgvQjt529zXTetNmupUgYtu09qCZMffdZ74aGASuCvWa4Vcqavmytzg8McqCNheFiA== + dependencies: + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/file-locking" "12.0.0-next.1" + apache-md5 "1.1.8" + bcryptjs "2.4.3" + core-js "3.35.0" + debug "4.3.4" + http-errors "2.0.0" + unix-crypt-td-js "1.1.4" + +verdaccio@^5.0.4: + version "5.29.2" + resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-5.29.2.tgz#1d2a8ddbdc310d6d4a9753af02f85d2d0ed1a70b" + integrity sha512-Ra9Bv8mMsGaFnvFJl80gSNg6yhHRFUYATA03xpVrfqC1Z1IDZt/f0jZ94tPnfyaY1ljUS5jKsZsj6ihN/ZSVbQ== + dependencies: + "@cypress/request" "3.0.1" + "@verdaccio/config" "7.0.0-next-7.10" + "@verdaccio/core" "7.0.0-next-7.10" + "@verdaccio/local-storage" "10.3.3" + "@verdaccio/logger-7" "7.0.0-next-7.10" + "@verdaccio/middleware" "7.0.0-next-7.10" + "@verdaccio/search" "7.0.0-next.2" + "@verdaccio/signature" "7.0.0-next.3" + "@verdaccio/streams" "10.2.1" + "@verdaccio/tarball" "12.0.0-next-7.10" + "@verdaccio/ui-theme" "7.0.0-next-7.10" + "@verdaccio/url" "12.0.0-next-7.10" + "@verdaccio/utils" "7.0.0-next-7.10" + JSONStream "1.3.5" + async "3.2.5" + clipanion "3.2.1" + compression "1.7.4" + cookies "0.9.1" + cors "2.8.5" + debug "^4.3.4" + envinfo "7.11.0" + express "4.18.2" + express-rate-limit "5.5.1" + fast-safe-stringify "2.1.1" + handlebars "4.7.8" + js-yaml "4.1.0" + jsonwebtoken "9.0.2" + kleur "4.1.5" + lodash "4.17.21" + lru-cache "7.18.3" + mime "3.0.0" + mkdirp "1.0.4" + mv "2.1.1" + pkginfo "0.4.1" + semver "7.5.4" + validator "13.11.0" + verdaccio-audit "12.0.0-next-7.10" + verdaccio-htpasswd "12.0.0-next-7.10" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -22779,6 +23309,19 @@ yocto-queue@^1.0.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== +yup@0.32.11: + version "0.32.11" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2" + zen-observable-ts@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58"