From 6df49c701336a517565809a08e48b0777a375e16 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Tue, 6 Feb 2024 13:43:07 +0530 Subject: [PATCH 01/11] feat: use `BigNumber` in `FeeInput` component --- packages/ui/package.json | 3 +- .../components/molecules/Send/FeesInput.tsx | 34 +- packages/utils/src/bigNumber.ts | 4 + pnpm-lock.yaml | 788 +++++++++--------- 4 files changed, 430 insertions(+), 399 deletions(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index b2cf665d6..e635a194c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -83,7 +83,8 @@ "react-tsparticles": "^2.10.1", "react-virtualized": "^9.22.5", "styled-components": "6.0.0-rc.1", - "tsparticles": "^2.10.1" + "tsparticles": "^2.10.1", + "@cypherock/cysync-utils": "workspace:^" }, "lint-staged": { "*.{ts,tsx}": [ diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 347dfa707..d619c2941 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -1,5 +1,6 @@ import React, { useCallback, useEffect, useState } from 'react'; +import { BigNumber } from '@cypherock/cysync-utils'; import { CustomInputSend } from './RecipientAddress'; import { Input, Typography } from '../../atoms'; @@ -21,26 +22,32 @@ export const FeesInput: React.FC = ({ }) => { const [valueInternal, setValueInternal] = useState(value); - const parseNumber = useCallback( - (val: string) => { - if (val === '') return 0; - return valueType === 'float' ? parseFloat(val) : parseInt(val, 10); + const parseNumber: (val: string) => BigNumber = useCallback( + (val: string): BigNumber => { + if (val === '') return new BigNumber(0); + const parsedResult = + valueType === 'float' + ? new BigNumber(val).toFixed() + : new BigNumber(val).toFixed(0); + return new BigNumber(parsedResult); }, [valueType], ); const updateInternalValue = useCallback(() => { - if (parseNumber(valueInternal) === parseNumber(value)) return; - setValueInternal(value); + const bigNumValueInternal = parseNumber(valueInternal); + const bigNumValueExternal = parseNumber(value); + if (bigNumValueInternal.isEqualTo(bigNumValueExternal)) return; + setValueInternal(bigNumValueExternal.toFixed()); }, [valueInternal, value, parseNumber]); useEffect(updateInternalValue, [value]); const onChangeProxy = useCallback( - (newValue: number) => { + (newValue: BigNumber) => { if (!onChange) return; - if (newValue === parseNumber(value)) return; - onChange(newValue); + if (newValue.isEqualTo(parseNumber(value))) return; + onChange(newValue.toNumber()); }, [valueInternal, value, parseNumber, onChange], ); @@ -49,7 +56,7 @@ export const FeesInput: React.FC = ({ (val: string) => { if (val === '') { setValueInternal(val); - onChangeProxy(0); + onChangeProxy(new BigNumber(0)); return; } @@ -58,12 +65,11 @@ export const FeesInput: React.FC = ({ if (!isValidInput) return; if (valueType === 'integer' && val.includes('.')) return; - const numberValue = parseNumber(val); - - if (Number.isNaN(numberValue)) return; + const bigNumVal = parseNumber(val); + if (bigNumVal.isNaN()) return; setValueInternal(val); - onChangeProxy(numberValue); + onChangeProxy(bigNumVal); }, [valueType, onChangeProxy, parseNumber], ); diff --git a/packages/utils/src/bigNumber.ts b/packages/utils/src/bigNumber.ts index 2c36ef14d..c7532db71 100644 --- a/packages/utils/src/bigNumber.ts +++ b/packages/utils/src/bigNumber.ts @@ -121,6 +121,10 @@ export class BigNumber { return this.num.comparedTo(new BigNumberJS(BigNumber.getNumberLike(n))); } + isEqualTo(n: NumberLike) { + return this.num.isEqualTo(BigNumber.getNumberLike(n)); + } + private static getNumberLike(n: NumberLike) { if (n instanceof BigNumber) { return n.getRawNumber(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa98843ed..ea893deb1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -311,13 +311,13 @@ importers: version: 4.0.0(vite@4.3.9) babel-loader: specifier: ^9.1.2 - version: 9.1.2(@babel/core@7.22.5)(webpack@5.90.0) + version: 9.1.2(@babel/core@7.22.5)(webpack@5.90.1) cross-env: specifier: ^7.0.3 version: 7.0.3 css-loader: specifier: ^6.8.1 - version: 6.8.1(webpack@5.90.0) + version: 6.8.1(webpack@5.90.1) decompress: specifier: ^4.2.1 version: 4.2.1 @@ -347,13 +347,13 @@ importers: version: 13.2.2 node-loader: specifier: ^2.0.0 - version: 2.0.0(webpack@5.90.0) + version: 2.0.0(webpack@5.90.1) prettier: specifier: ^2.8.8 version: 2.8.8 style-loader: specifier: ^3.3.3 - version: 3.3.3(webpack@5.90.0) + version: 3.3.3(webpack@5.90.1) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -1805,6 +1805,9 @@ importers: packages/ui: dependencies: + '@cypherock/cysync-utils': + specifier: workspace:^ + version: link:../utils '@storybook/addon-docs': specifier: ^7.2.1 version: 7.2.1(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) @@ -1895,7 +1898,7 @@ importers: version: 1.0.8(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-styling': specifier: ^1.3.5 - version: 1.3.5(@types/react-dom@18.2.6)(@types/react@18.2.13)(less@4.2.0)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.90.0) + version: 1.3.5(@types/react-dom@18.2.6)(@types/react@18.2.13)(less@4.2.0)(postcss@8.4.34)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.90.1) '@storybook/blocks': specifier: 7.2.0 version: 7.2.0(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) @@ -2323,8 +2326,8 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.9(@babel/core@7.22.5): - resolution: {integrity: sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==} + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.22.5): + resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -2571,7 +2574,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-proposal-decorators@7.22.15(@babel/core@7.22.5): @@ -2581,7 +2584,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.5) '@babel/helper-split-export-declaration': 7.22.6 @@ -2636,7 +2639,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -2903,7 +2906,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.22.5): @@ -2913,7 +2916,7 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) @@ -3213,7 +3216,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.22.5): @@ -3224,7 +3227,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) @@ -3371,7 +3374,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.22.5) + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.22.5) @@ -4720,7 +4723,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4949,7 +4952,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 3.1.2 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 ansi-escapes: 4.3.2 chalk: 4.1.2 figures: 3.2.0 @@ -4960,7 +4963,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 6.0.0 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 chalk: 4.1.2 dev: false @@ -4968,9 +4971,9 @@ packages: resolution: {integrity: sha512-lR2GaqBkp42Ew9BOAOqf2pSp+ymVES1qN8OC90WWh45yeoYLl0Ty1GyCxmkKqBJtq/+Ea1MF12AdFcZcpRNFsw==} engines: {node: '>=14.18.0'} dependencies: - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 '@types/mute-stream': 0.0.1 - '@types/node': 20.11.10 + '@types/node': 20.11.16 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -4987,9 +4990,9 @@ packages: resolution: {integrity: sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw==} engines: {node: '>=14.18.0'} dependencies: - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 '@types/mute-stream': 0.0.4 - '@types/node': 20.11.10 + '@types/node': 20.11.16 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -5008,7 +5011,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 6.0.0 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 chalk: 4.1.2 external-editor: 3.1.0 dev: false @@ -5018,7 +5021,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 6.0.0 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 chalk: 4.1.2 figures: 3.2.0 dev: false @@ -5028,7 +5031,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 3.1.2 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 chalk: 4.1.2 dev: false @@ -5037,7 +5040,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 6.0.0 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 ansi-escapes: 4.3.2 chalk: 4.1.2 dev: false @@ -5062,7 +5065,7 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 6.0.0 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 chalk: 4.1.2 dev: false @@ -5071,15 +5074,15 @@ packages: engines: {node: '>=14.18.0'} dependencies: '@inquirer/core': 3.1.2 - '@inquirer/type': 1.1.6 + '@inquirer/type': 1.2.0 ansi-escapes: 4.3.2 chalk: 4.1.2 figures: 3.2.0 dev: false - /@inquirer/type@1.1.6: - resolution: {integrity: sha512-OCKOpn0CrFDslR8s3who7hlr823zXTb1iShGCaaWgEJFfkIV0T9aLZV2QGnOuU78IrsPYLkr3oKx9dZwwCH3Rw==} - engines: {node: '>=14.18.0'} + /@inquirer/type@1.2.0: + resolution: {integrity: sha512-/vvkUkYhrjbm+RolU7V1aUFDydZVKNKqKHR5TsE+j5DXgXFwrsOPcoGUJ02K0O7q7O53CU2DOTMYCHeGZ25WHA==} + engines: {node: '>=18'} dev: false /@ioredis/commands@1.2.0: @@ -5431,7 +5434,7 @@ packages: resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 dev: true /@lmdb/lmdb-darwin-arm64@2.7.11: @@ -5526,7 +5529,7 @@ packages: peerDependencies: react: '>=16' dependencies: - '@types/mdx': 2.0.10 + '@types/mdx': 2.0.11 '@types/react': 18.2.13 react: 18.2.0 @@ -5743,7 +5746,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.0 + fastq: 1.17.1 /@npmcli/arborist@4.3.1: resolution: {integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==} @@ -6071,7 +6074,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) http-call: 5.3.0 lodash.template: 4.5.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -6464,7 +6467,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.3.107 + '@swc/core': 1.4.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -6738,7 +6741,7 @@ packages: '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - '@swc/helpers': 0.5.3 + '@swc/helpers': 0.5.6 browserslist: 4.22.3 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 @@ -7996,7 +7999,7 @@ packages: '@storybook/types': 7.2.0 dequal: 2.0.3 lodash: 4.17.21 - polished: 4.2.2 + polished: 4.3.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -8195,7 +8198,7 @@ packages: '@storybook/theming': 7.2.0(react-dom@18.2.0)(react@18.2.0) '@storybook/types': 7.2.0 jest-mock: 27.5.1 - polished: 4.2.2 + polished: 4.3.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -8263,7 +8266,7 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/telemetry': 7.6.10 + '@storybook/telemetry': 7.6.12 react: 18.2.0 react-confetti: 6.1.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0) @@ -8298,7 +8301,7 @@ packages: - '@types/react-dom' dev: true - /@storybook/addon-styling@1.3.5(@types/react-dom@18.2.6)(@types/react@18.2.13)(less@4.2.0)(postcss@8.4.33)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.90.0): + /@storybook/addon-styling@1.3.5(@types/react-dom@18.2.6)(@types/react@18.2.13)(less@4.2.0)(postcss@8.4.34)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.90.1): resolution: {integrity: sha512-W0oejixqUEd2yhy3ZAu9urKJZNCLrRFwpz7JD7OgN9HiUefLw3Rn2NHeP7v4Q1oznIxpYcsgYFzv10zX21Mq5w==} hasBin: true peerDependencies: @@ -8321,27 +8324,27 @@ packages: dependencies: '@babel/template': 7.23.9 '@babel/types': 7.23.9 - '@storybook/api': 7.6.10(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.6.10(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.6.10 - '@storybook/core-events': 7.6.10 - '@storybook/manager-api': 7.6.10(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.6.10 - '@storybook/preview-api': 7.6.10 - '@storybook/theming': 7.6.10(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.10 - css-loader: 6.8.1(webpack@5.90.0) + '@storybook/api': 7.6.12(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.6.12(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.6.12 + '@storybook/core-events': 7.6.12 + '@storybook/manager-api': 7.6.12(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.12 + '@storybook/preview-api': 7.6.12 + '@storybook/theming': 7.6.12(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.12 + css-loader: 6.8.1(webpack@5.90.1) less: 4.2.0 - less-loader: 11.1.4(less@4.2.0)(webpack@5.90.0) - postcss: 8.4.33 - postcss-loader: 7.3.4(postcss@8.4.33)(typescript@4.9.5)(webpack@5.90.0) + less-loader: 11.1.4(less@4.2.0)(webpack@5.90.1) + postcss: 8.4.34 + postcss-loader: 7.3.4(postcss@8.4.34)(typescript@4.9.5)(webpack@5.90.1) prettier: 2.8.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) resolve-url-loader: 5.0.0 - sass-loader: 13.3.3(webpack@5.90.0) - style-loader: 3.3.3(webpack@5.90.0) - webpack: 5.90.0(esbuild@0.18.20) + sass-loader: 13.3.3(webpack@5.90.1) + style-loader: 3.3.3(webpack@5.90.1) + webpack: 5.90.1(esbuild@0.18.20) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -8404,11 +8407,11 @@ packages: - '@types/react-dom' dev: true - /@storybook/api@7.6.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-28qfs7sdzcnKfGBVnWuKgqAPe++NLrMjL6cp/rxuRlAtGyl0Q3eC9jj1ggOm4SFVTu6NoFzTuTXFUEbskZVk1Q==} + /@storybook/api@7.6.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ePKOszvvpZ7gcprUHp1lM5wbrSngFLYbHeFnm6J1BWewEQ+TdWujlVxRJJs+HYEL1vW+se3IR2nvJVM1Sq7vLQ==} dependencies: - '@storybook/client-logger': 7.6.10 - '@storybook/manager-api': 7.6.10(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.12 + '@storybook/manager-api': 7.6.12(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - react - react-dom @@ -8437,7 +8440,7 @@ packages: lodash: 4.17.21 markdown-to-jsx: 7.4.1(react@18.2.0) memoizerific: 1.11.3 - polished: 4.2.2 + polished: 4.3.1 react: 18.2.0 react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-dom: 18.2.0(react@18.2.0) @@ -8475,7 +8478,7 @@ packages: lodash: 4.17.21 markdown-to-jsx: 7.4.1(react@18.2.0) memoizerific: 1.11.3 - polished: 4.2.2 + polished: 4.3.1 react: 18.2.0 react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-dom: 18.2.0(react@18.2.0) @@ -8544,7 +8547,7 @@ packages: express: 4.18.2 find-cache-dir: 3.3.2 fs-extra: 11.2.0 - magic-string: 0.30.5 + magic-string: 0.30.7 remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.29.4 @@ -8577,11 +8580,11 @@ packages: tiny-invariant: 1.3.1 dev: false - /@storybook/channels@7.6.10: - resolution: {integrity: sha512-ITCLhFuDBKgxetuKnWwYqMUWlU7zsfH3gEKZltTb+9/2OAWR7ez0iqU7H6bXP1ridm0DCKkt2UMWj2mmr9iQqg==} + /@storybook/channels@7.6.12: + resolution: {integrity: sha512-TaPl5Y3lOoVi5kTLgKNRX8xh2sUPekH0Id1l4Ymw+lpgriEY6r60bmkZLysLG1GhlskpQ/da2+S2ap2ht8P2TQ==} dependencies: - '@storybook/client-logger': 7.6.10 - '@storybook/core-events': 7.6.10 + '@storybook/client-logger': 7.6.12 + '@storybook/core-events': 7.6.12 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 @@ -8610,7 +8613,7 @@ packages: commander: 6.2.1 cross-spawn: 7.0.3 detect-indent: 6.1.0 - envinfo: 7.11.0 + envinfo: 7.11.1 execa: 5.1.1 express: 4.18.2 find-up: 5.0.0 @@ -8658,8 +8661,8 @@ packages: '@storybook/global': 5.0.0 dev: false - /@storybook/client-logger@7.6.10: - resolution: {integrity: sha512-U7bbpu21ntgePMz/mKM18qvCSWCUGCUlYru8mgVlXLCKqFqfTeP887+CsPEQf29aoE3cLgDrxqbRJ1wxX9kL9A==} + /@storybook/client-logger@7.6.12: + resolution: {integrity: sha512-hiRv6dXsOttMPqm9SxEuFoAtDe9rs7TUS8XcO5rmJ9BgfwBJsYlHzAxXkazxmvlyZtKL7gMx6m8OYbCdZgUqtA==} dependencies: '@storybook/global': 5.0.0 dev: true @@ -8717,7 +8720,7 @@ packages: '@storybook/client-logger': 7.2.1 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/icons': 1.2.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/icons': 1.2.5(react-dom@18.2.0)(react@18.2.0) '@storybook/theming': 7.2.1(react-dom@18.2.0)(react@18.2.0) '@storybook/types': 7.2.1 memoizerific: 1.11.3 @@ -8730,19 +8733,19 @@ packages: - '@types/react-dom' dev: false - /@storybook/components@7.6.10(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-H5hF8pxwtbt0LxV24KMMsPlbYG9Oiui3ObvAQkvGu6q62EYxRPeNSrq3GBI5XEbI33OJY9bT24cVaZx18dXqwQ==} + /@storybook/components@7.6.12(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PCijPqmlZd7qyTzNr+vD0Kf8sAI9vWJIaxbSjXwn/De3e63m4fsEcIf8FaUT8cMZ46AWZvaxaxX5km2u0UISJQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.13)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.10 + '@storybook/client-logger': 7.6.12 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.10(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.10 + '@storybook/theming': 7.6.12(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.12 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -8820,12 +8823,12 @@ packages: - supports-color dev: false - /@storybook/core-common@7.6.10: - resolution: {integrity: sha512-K3YWqjCKMnpvYsWNjOciwTH6zWbuuZzmOiipziZaVJ+sB1XYmH52Y3WGEm07TZI8AYK9DRgwA13dR/7W0nw72Q==} + /@storybook/core-common@7.6.12: + resolution: {integrity: sha512-kM9YiBBMM2x5v/oylL7gdO1PS4oehgJC21MivS9p5QZ8uuXKtCQ6UQvI3rzaV+1ZzUA4n+I8MyaMrNIQk8KDbw==} dependencies: - '@storybook/core-events': 7.6.10 - '@storybook/node-logger': 7.6.10 - '@storybook/types': 7.6.10 + '@storybook/core-events': 7.6.12 + '@storybook/node-logger': 7.6.12 + '@storybook/types': 7.6.12 '@types/find-cache-dir': 3.2.1 '@types/node': 18.15.11 '@types/node-fetch': 2.6.11 @@ -8859,8 +8862,8 @@ packages: resolution: {integrity: sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==} dev: false - /@storybook/core-events@7.6.10: - resolution: {integrity: sha512-yccDH67KoROrdZbRKwxgTswFMAco5nlCyxszCDASCLygGSV2Q2e+YuywrhchQl3U6joiWi3Ps1qWu56NeNafag==} + /@storybook/core-events@7.6.12: + resolution: {integrity: sha512-IO4cwk7bBCKH6lLnnIlHO9FwQXt/9CzLUAoZSY9msWsdPppCdKlw8ynJI5YarSNKDBUn8ArIfnRf0Mve0KQr9Q==} dependencies: ts-dedent: 2.2.0 dev: true @@ -8921,7 +8924,7 @@ packages: resolution: {integrity: sha512-UwRclUzBLQU6vhfR56QNOZZPz0d94rnMw9nRT62XZiYIFbBPOpHEDpU5iRk+liM2Uj4LaicV2mFpycTwW0oHsg==} dependencies: '@storybook/csf-tools': 7.2.0 - unplugin: 1.6.0 + unplugin: 1.7.1 transitivePeerDependencies: - supports-color dev: true @@ -8930,7 +8933,7 @@ packages: resolution: {integrity: sha512-qhxkKOsUjCS/hqsDgwgoM81ZXAXfTNrJJPHCs4Wa1dHoUVUn7rro7VANIO0GVNrRDnha3YR4fEmnD8kklLKmCQ==} dependencies: '@storybook/csf-tools': 7.2.1 - unplugin: 1.6.0 + unplugin: 1.7.1 transitivePeerDependencies: - supports-color dev: false @@ -8969,15 +8972,15 @@ packages: - supports-color dev: false - /@storybook/csf-tools@7.6.10: - resolution: {integrity: sha512-TnDNAwIALcN6SA4l00Cb67G02XMOrYU38bIpFJk5VMDX2dvgPjUtJNBuLmEbybGcOt7nPyyFIHzKcY5FCVGoWA==} + /@storybook/csf-tools@7.6.12: + resolution: {integrity: sha512-MdhkYYxSW5I6Jpk34gTkAZsuj9sxe0xdyeUQpNa8CgJxG43F+ehZ6scW/IPjoSG9gCXBUJMekq26UrmbVfsLCQ==} dependencies: '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 '@babel/traverse': 7.23.9 '@babel/types': 7.23.9 '@storybook/csf': 0.1.2 - '@storybook/types': 7.6.10 + '@storybook/types': 7.6.12 fs-extra: 11.2.0 recast: 0.23.4 ts-dedent: 2.2.0 @@ -9037,8 +9040,8 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/icons@1.2.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-A2egQFgdX8sQqcC/u/JUzKG8iO1g2CdkvIn88fZUy3kf4DTgHXSO8TK/KePHlaHReBvdW7egmegfzS6s3qLjVw==} + /@storybook/icons@1.2.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-m3jnuE+zmkZy6K+cdUDzAoUuCJyl0fWCAXPCji7VZCH1TzFohyvnPqhc9JMkQpanej2TOW3wWXaplPzHghcBSg==} engines: {node: '>=14.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -9058,14 +9061,14 @@ packages: '@storybook/preview-api': 7.2.0 dev: true - /@storybook/instrumenter@7.6.10: - resolution: {integrity: sha512-9FYXW1CKXnZ7yYmy2A6U0seqJMe1F7g55J28Vslk3ZLoGATFJ2BR0eoQS+cgfBly6djehjaVeuV3IcUYGnQ/6Q==} + /@storybook/instrumenter@7.6.12: + resolution: {integrity: sha512-BK+hCz2tuUSDPvN0kACR+Ev7lQj4SLlMdXiJgRGdnKWR7zr1OFEg9MEIwPHNC+Ywny1x7YOwrbNJ9sdISNIh0g==} dependencies: - '@storybook/channels': 7.6.10 - '@storybook/client-logger': 7.6.10 - '@storybook/core-events': 7.6.10 + '@storybook/channels': 7.6.12 + '@storybook/client-logger': 7.6.12 + '@storybook/core-events': 7.6.12 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.6.10 + '@storybook/preview-api': 7.6.12 '@vitest/utils': 0.34.7 util: 0.12.5 dev: true @@ -9074,7 +9077,7 @@ packages: resolution: {integrity: sha512-TmybnEXlv5Fu2/Hq4nRj7alS9mw4CasLR0RDwaAzS+Vpvu1TC4+j9rh+b1BHtmWebbJh0JMT6mgzPqOyJdgtQA==} dependencies: '@storybook/expect': 28.1.3-5 - '@storybook/instrumenter': 7.6.10 + '@storybook/instrumenter': 7.6.12 '@testing-library/jest-dom': 5.16.5 jest-mock: 27.5.1 dev: true @@ -9129,17 +9132,17 @@ packages: ts-dedent: 2.2.0 dev: false - /@storybook/manager-api@7.6.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8eGVpRlpunuFScDtc7nxpPJf/4kJBAAZlNdlhmX09j8M3voX6GpcxabBamSEX5pXZqhwxQCshD4IbqBmjvadlw==} + /@storybook/manager-api@7.6.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XA5KQpY44d6mlqt0AlesZ7fsPpm1PCpoV+nRGFBR0YtF6RdPFvrPyHhlGgLkJC4xSyb2YJmLKn8cERSluAcEgQ==} dependencies: - '@storybook/channels': 7.6.10 - '@storybook/client-logger': 7.6.10 - '@storybook/core-events': 7.6.10 + '@storybook/channels': 7.6.12 + '@storybook/client-logger': 7.6.12 + '@storybook/core-events': 7.6.12 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.10 - '@storybook/theming': 7.6.10(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.10 + '@storybook/router': 7.6.12 + '@storybook/theming': 7.6.12(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.12 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -9166,8 +9169,8 @@ packages: resolution: {integrity: sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==} dev: false - /@storybook/node-logger@7.6.10: - resolution: {integrity: sha512-ZBuqrv4bjJzKXyfRGFkVIi+z6ekn6rOPoQao4KmsfLNQAUUsEdR8Baw/zMnnU417zw5dSEaZdpuwx75SCQAeOA==} + /@storybook/node-logger@7.6.12: + resolution: {integrity: sha512-iS44/EjfF6hLecKzICmcpQoB9bmVi4tXx5gVXnbI5ZyziBibRQcg/U191Njl7wY2ScN/RCQOr8lh5k57rI3Prg==} dev: true /@storybook/postinstall@7.2.0: @@ -9216,15 +9219,15 @@ packages: util-deprecate: 1.0.2 dev: false - /@storybook/preview-api@7.6.10: - resolution: {integrity: sha512-5A3etoIwZCx05yuv3KSTv1wynN4SR4rrzaIs/CTBp3BC4q1RBL+Or/tClk0IJPXQMlx/4Y134GtNIBbkiDofpw==} + /@storybook/preview-api@7.6.12: + resolution: {integrity: sha512-uSzeMSLnCRROjiofJP0F0niLWL+sboQ5ktHW6BAYoPwprumXduPxKBUVEZNxMbVYoAz9v/kEZmaLauh8LRP2Hg==} dependencies: - '@storybook/channels': 7.6.10 - '@storybook/client-logger': 7.6.10 - '@storybook/core-events': 7.6.10 + '@storybook/channels': 7.6.12 + '@storybook/client-logger': 7.6.12 + '@storybook/core-events': 7.6.12 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.10 + '@storybook/types': 7.6.12 '@types/qs': 6.9.11 dequal: 2.0.3 lodash: 4.17.21 @@ -9273,7 +9276,7 @@ packages: '@storybook/react': 7.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@vitejs/plugin-react': 3.1.0(vite@4.3.9) ast-types: 0.14.2 - magic-string: 0.30.5 + magic-string: 0.30.7 react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) @@ -9353,10 +9356,10 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@storybook/router@7.6.10: - resolution: {integrity: sha512-G/H4Jn2+y8PDe8Zbq4DVxF/TPn0/goSItdILts39JENucHiuGBCjKjSWGBe1rkwKi1tUbB3yhxJVrLagxFEPpQ==} + /@storybook/router@7.6.12: + resolution: {integrity: sha512-1fqscJbePFJXhapqiv7fAIIqAvouSsdPnqWjJGJrUMR6JBtRYMcrb3MnDeqi9OYnU73r65BrQBPtSzWM8nP0LQ==} dependencies: - '@storybook/client-logger': 7.6.10 + '@storybook/client-logger': 7.6.12 memoizerific: 1.11.3 qs: 6.11.2 dev: true @@ -9377,12 +9380,12 @@ packages: - supports-color dev: true - /@storybook/telemetry@7.6.10: - resolution: {integrity: sha512-p3mOSUtIyy2tF1z6pQXxNh1JzYFcAm97nUgkwLzF07GfEdVAPM+ftRSLFbD93zVvLEkmLTlsTiiKaDvOY/lQWg==} + /@storybook/telemetry@7.6.12: + resolution: {integrity: sha512-eBG3sLb9CZ05pyK2JXBvnaAsxDzbZH57VyhtphhuZmx0DqF/78qIoHs9ebRJpJWV0sL5rtT9vIq8QXpQhDHLWg==} dependencies: - '@storybook/client-logger': 7.6.10 - '@storybook/core-common': 7.6.10 - '@storybook/csf-tools': 7.6.10 + '@storybook/client-logger': 7.6.12 + '@storybook/core-common': 7.6.12 + '@storybook/csf-tools': 7.6.12 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -9429,14 +9432,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@storybook/theming@7.6.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-f5tuy7yV3TOP3fIboSqpgLHy0wKayAw/M8HxX0jVET4Z4fWlFK0BiHJabQ+XEdAfQM97XhPFHB2IPbwsqhCEcQ==} + /@storybook/theming@7.6.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-P4zoMKlSYbNrWJjQROuz+DZSDEpdf3TUvk203EqBRdElqw2EMHcqZ8+0HGPFfVHpqEj05+B9Mr6R/Z/BURj0lw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.10 + '@storybook/client-logger': 7.6.12 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 @@ -9461,10 +9464,10 @@ packages: file-system-cache: 2.3.0 dev: false - /@storybook/types@7.6.10: - resolution: {integrity: sha512-hcS2HloJblaMpCAj2axgGV+53kgSRYPT0a1PG1IHsZaYQILfHSMmBqM8XzXXYTsgf9250kz3dqFX1l0n3EqMlQ==} + /@storybook/types@7.6.12: + resolution: {integrity: sha512-Wsbd+NS10/2yMHQ/26rXHflXam0hm2qufTFiHOX6VXZWxij3slRU88Fnwzp+1QSyjXb0qkEr8dOx7aG00+ItVw==} dependencies: - '@storybook/channels': 7.6.10 + '@storybook/channels': 7.6.12 '@types/babel__core': 7.20.5 '@types/express': 4.17.21 file-system-cache: 2.3.0 @@ -9496,7 +9499,7 @@ packages: file-url: 4.0.0 get-port: 7.0.0 glob: 10.2.7 - inquirer: 9.2.13 + inquirer: 9.2.14 lodash.flatmap: 4.5.0 lodash.groupby: 4.6.0 log4js: 6.9.1 @@ -9740,8 +9743,8 @@ packages: - typescript dev: true - /@swc/core-darwin-arm64@1.3.107: - resolution: {integrity: sha512-47tD/5vSXWxPd0j/ZllyQUg4bqalbQTsmqSw0J4dDdS82MWqCAwUErUrAZPRjBkjNQ6Kmrf5rpCWaGTtPw+ngw==} + /@swc/core-darwin-arm64@1.4.0: + resolution: {integrity: sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -9749,8 +9752,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.107: - resolution: {integrity: sha512-hwiLJ2ulNkBGAh1m1eTfeY1417OAYbRGcb/iGsJ+LuVLvKAhU/itzsl535CvcwAlt2LayeCFfcI8gdeOLeZa9A==} + /@swc/core-darwin-x64@1.4.0: + resolution: {integrity: sha512-f8v58u2GsGak8EtZFN9guXqE0Ep10Suny6xriaW2d8FGqESPyNrnBzli3aqkSeQk5gGqu2zJ7WiiKp3XoUOidA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -9758,8 +9761,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.107: - resolution: {integrity: sha512-I2wzcC0KXqh0OwymCmYwNRgZ9nxX7DWnOOStJXV3pS0uB83TXAkmqd7wvMBuIl9qu4Hfomi9aDM7IlEEn9tumQ==} + /@swc/core-linux-arm-gnueabihf@1.4.0: + resolution: {integrity: sha512-q2KAkBzmPcTnRij/Y1fgHCKAGevUX/H4uUESrw1J5gmUg9Qip6onKV80lTumA1/aooGJ18LOsB31qdbwmZk9OA==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -9767,8 +9770,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.107: - resolution: {integrity: sha512-HWgnn7JORYlOYnGsdunpSF8A+BCZKPLzLtEUA27/M/ZuANcMZabKL9Zurt7XQXq888uJFAt98Gy+59PU90aHKg==} + /@swc/core-linux-arm64-gnu@1.4.0: + resolution: {integrity: sha512-SknGu96W0mzHtLHWm+62fk5+Omp9fMPFO7AWyGFmz2tr8EgRRXtTSrBUnWhAbgcalnhen48GsvtMdxf1KNputg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -9776,8 +9779,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.107: - resolution: {integrity: sha512-vfPF74cWfAm8hyhS8yvYI94ucMHIo8xIYU+oFOW9uvDlGQRgnUf/6DEVbLyt/3yfX5723Ln57U8uiMALbX5Pyw==} + /@swc/core-linux-arm64-musl@1.4.0: + resolution: {integrity: sha512-/k3TDvpBRMDNskHooNN1KqwUhcwkfBlIYxRTnJvsfT2C7My4pffR+4KXmt0IKynlTTbCdlU/4jgX4801FSuliw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -9785,8 +9788,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.107: - resolution: {integrity: sha512-uBVNhIg0ip8rH9OnOsCARUFZ3Mq3tbPHxtmWk9uAa5u8jQwGWeBx5+nTHpDOVd3YxKb6+5xDEI/edeeLpha/9g==} + /@swc/core-linux-x64-gnu@1.4.0: + resolution: {integrity: sha512-GYsTMvNt5+WTVlwwQzOOWsPMw6P/F41u5PGHWmfev8Nd4QJ1h3rWPySKk4mV42IJwH9MgQCVSl3ygwNqwl6kFg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -9794,8 +9797,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.107: - resolution: {integrity: sha512-mvACkUvzSIB12q1H5JtabWATbk3AG+pQgXEN95AmEX2ZA5gbP9+B+mijsg7Sd/3tboHr7ZHLz/q3SHTvdFJrEw==} + /@swc/core-linux-x64-musl@1.4.0: + resolution: {integrity: sha512-jGVPdM/VwF7kK/uYRW5N6FwzKf/FnDjGIR3RPvQokjYJy7Auk+3Oj21C0Jev7sIT9RYnO/TrFEoEozKeD/z2Qw==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -9803,8 +9806,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.107: - resolution: {integrity: sha512-J3P14Ngy/1qtapzbguEH41kY109t6DFxfbK4Ntz9dOWNuVY3o9/RTB841ctnJk0ZHEG+BjfCJjsD2n8H5HcaOA==} + /@swc/core-win32-arm64-msvc@1.4.0: + resolution: {integrity: sha512-biHYm1AronEKlt47O/H8sSOBM2BKXMmWT+ApvlxUw50m1RGNnVnE0bgY7tylFuuSiWyXsQPJbmUV708JqORXVg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -9812,8 +9815,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.107: - resolution: {integrity: sha512-ZBUtgyjTHlz8TPJh7kfwwwFma+ktr6OccB1oXC8fMSopD0AxVnQasgun3l3099wIsAB9eEsJDQ/3lDkOLs1gBA==} + /@swc/core-win32-ia32-msvc@1.4.0: + resolution: {integrity: sha512-TL5L2tFQb19kJwv6+elToGBj74QXCn9j+hZfwQatvZEJRA5rDK16eH6oAE751dGUArhnWlW3Vj65hViPvTuycw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -9821,8 +9824,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.107: - resolution: {integrity: sha512-Eyzo2XRqWOxqhE1gk9h7LWmUf4Bp4Xn2Ttb0ayAXFp6YSTxQIThXcT9kipXZqcpxcmDwoq8iWbbf2P8XL743EA==} + /@swc/core-win32-x64-msvc@1.4.0: + resolution: {integrity: sha512-e2xVezU7XZ2Stzn4i7TOQe2Kn84oYdG0M3A7XI7oTdcpsKCcKwgiMoroiAhqCv+iN20KNqhnWwJiUiTj/qN5AA==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -9830,8 +9833,8 @@ packages: dev: true optional: true - /@swc/core@1.3.107: - resolution: {integrity: sha512-zKhqDyFcTsyLIYK1iEmavljZnf4CCor5pF52UzLAz4B6Nu/4GLU+2LQVAf+oRHjusG39PTPjd2AlRT3f3QWfsQ==} + /@swc/core@1.4.0: + resolution: {integrity: sha512-wc5DMI5BJftnK0Fyx9SNJKkA0+BZSJQx8430yutWmsILkHMBD3Yd9GhlMaxasab9RhgKqZp7Ht30hUYO5ZDvQg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -9840,27 +9843,27 @@ packages: '@swc/helpers': optional: true dependencies: - '@swc/counter': 0.1.2 + '@swc/counter': 0.1.3 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.107 - '@swc/core-darwin-x64': 1.3.107 - '@swc/core-linux-arm-gnueabihf': 1.3.107 - '@swc/core-linux-arm64-gnu': 1.3.107 - '@swc/core-linux-arm64-musl': 1.3.107 - '@swc/core-linux-x64-gnu': 1.3.107 - '@swc/core-linux-x64-musl': 1.3.107 - '@swc/core-win32-arm64-msvc': 1.3.107 - '@swc/core-win32-ia32-msvc': 1.3.107 - '@swc/core-win32-x64-msvc': 1.3.107 + '@swc/core-darwin-arm64': 1.4.0 + '@swc/core-darwin-x64': 1.4.0 + '@swc/core-linux-arm-gnueabihf': 1.4.0 + '@swc/core-linux-arm64-gnu': 1.4.0 + '@swc/core-linux-arm64-musl': 1.4.0 + '@swc/core-linux-x64-gnu': 1.4.0 + '@swc/core-linux-x64-musl': 1.4.0 + '@swc/core-win32-arm64-msvc': 1.4.0 + '@swc/core-win32-ia32-msvc': 1.4.0 + '@swc/core-win32-x64-msvc': 1.4.0 dev: true - /@swc/counter@0.1.2: - resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} dev: true - /@swc/helpers@0.5.3: - resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + /@swc/helpers@0.5.6: + resolution: {integrity: sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==} dependencies: tslib: 2.6.2 dev: true @@ -10099,8 +10102,8 @@ packages: resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} dev: true - /@types/express-serve-static-core@4.17.42: - resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} + /@types/express-serve-static-core@4.17.43: + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: '@types/node': 16.18.36 '@types/qs': 6.9.11 @@ -10111,7 +10114,7 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.42 + '@types/express-serve-static-core': 4.17.43 '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 @@ -10210,8 +10213,8 @@ packages: resolution: {integrity: sha512-HN4vmoYHqF0mx91Cci6xaH1uN1JAMbakqNFXggpbd2L/RTUMrvx//dJTJehEtEF+a/qXfLbVSeO6p3Oegx/hDg==} dev: true - /@types/mdx@2.0.10: - resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} + /@types/mdx@2.0.11: + resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} /@types/mime-types@2.1.4: resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} @@ -10277,8 +10280,8 @@ packages: /@types/node@18.15.13: resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - /@types/node@20.11.10: - resolution: {integrity: sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==} + /@types/node@20.11.16: + resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} dependencies: undici-types: 5.26.5 dev: false @@ -10466,7 +10469,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) eslint: 8.43.0 grapheme-splitter: 1.0.4 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare-lite: 1.4.0 semver: 7.5.3 tsutils: 3.21.0(typescript@4.9.5) @@ -11179,7 +11182,6 @@ packages: /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - requiresBuild: true dev: true /@xtuc/ieee754@1.2.0: @@ -11584,11 +11586,12 @@ packages: dequal: 2.0.3 dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.6 + is-array-buffer: 3.0.4 dev: true /array-differ@3.0.0: @@ -11608,10 +11611,10 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -11623,7 +11626,7 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 @@ -11633,32 +11636,33 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 dev: true @@ -11715,7 +11719,7 @@ packages: /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 is-nan: 1.3.2 object-is: 1.1.5 object.assign: 4.1.5 @@ -11773,12 +11777,12 @@ packages: engines: {node: '>=8.0.0'} dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} - /aws-sdk@2.1546.0: - resolution: {integrity: sha512-v9fZehIMQRCvojbD1BNN4YiUjoj/KtD0/7KUPEyTQpuzpD8/QI6CSJx71hC8ad1y8ObDf+OntPvmtvXBnPES5g==} + /aws-sdk@2.1551.0: + resolution: {integrity: sha512-nUaAzS7cheaKF8lV0AVJBqteuoYIgQ5UgpZaoRR44D7HA1f6iCYFISF6WH6d0hQvpxPDIXr5NlVt0cHyp/Sx1g==} engines: {node: '>= 10.0.0'} dependencies: buffer: 4.9.2 @@ -11840,7 +11844,7 @@ packages: - supports-color dev: true - /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.90.0): + /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.90.1): resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -11850,7 +11854,7 @@ packages: '@babel/core': 7.22.5 find-cache-dir: 3.3.2 schema-utils: 4.2.0 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /babel-plugin-istanbul@6.1.1: @@ -12310,8 +12314,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001581 - electron-to-chromium: 1.4.650 + caniuse-lite: 1.0.30001584 + electron-to-chromium: 1.4.657 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.3) @@ -12602,11 +12606,13 @@ packages: resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.6: + resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 set-function-length: 1.2.0 /callsites@3.1.0: @@ -12643,8 +12649,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001581: - resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} + /caniuse-lite@1.0.30001584: + resolution: {integrity: sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==} /capability@0.2.5: resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} @@ -13491,21 +13497,21 @@ packages: engines: {node: '>=4'} dev: false - /css-loader@6.8.1(webpack@5.90.0): + /css-loader@6.8.1(webpack@5.90.1): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.33) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.33) - postcss-modules-scope: 3.1.1(postcss@8.4.33) - postcss-modules-values: 4.0.0(postcss@8.4.33) + icss-utils: 5.1.0(postcss@8.4.34) + postcss: 8.4.34 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.34) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.34) + postcss-modules-scope: 3.1.1(postcss@8.4.34) + postcss-modules-values: 4.0.0(postcss@8.4.34) postcss-value-parser: 4.2.0 semver: 7.5.3 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /css-select@4.3.0: @@ -13821,12 +13827,12 @@ packages: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.6 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 @@ -13838,7 +13844,7 @@ packages: side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true /deep-extend@0.6.0: @@ -13871,11 +13877,12 @@ packages: engines: {node: '>=10'} dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.2: + resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.1 @@ -13888,7 +13895,7 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 has-property-descriptors: 1.0.1 object-keys: 1.1.1 @@ -14379,8 +14386,8 @@ packages: - supports-color dev: true - /electron-to-chromium@1.4.650: - resolution: {integrity: sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==} + /electron-to-chromium@1.4.657: + resolution: {integrity: sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==} /electron-updater@6.1.0: resolution: {integrity: sha512-v5i2alA54JNQ7nmXBOaM4c2v9FzvykSed2XGbwmGsp123c7jsd7eJJiDEtEGCntcA2gwsH6OgXScab2NdAGMbw==} @@ -14498,8 +14505,8 @@ packages: engines: {node: '>=6'} dev: true - /envinfo@7.11.0: - resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} + /envinfo@7.11.1: + resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} engines: {node: '>=4'} hasBin: true dev: true @@ -14538,29 +14545,29 @@ packages: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.1 globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 @@ -14576,14 +14583,18 @@ packages: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -14605,8 +14616,8 @@ packages: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 hasown: 2.0.0 dev: true @@ -14711,8 +14722,8 @@ packages: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} /escape-html@1.0.3: @@ -14936,7 +14947,7 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 eslint: 8.43.0 estraverse: 5.3.0 @@ -15018,7 +15029,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -15386,8 +15397,8 @@ packages: engines: {node: '>= 4.9.1'} dev: true - /fastq@1.17.0: - resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -15604,8 +15615,8 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /flow-parser@0.227.0: - resolution: {integrity: sha512-nOygtGKcX/siZK/lFzpfdHEfOkfGcTW7rNroR1Zsz6T/JxSahPALXVt5qVHq/fgvMJuv096BTKbgxN3PzVBaDA==} + /flow-parser@0.228.0: + resolution: {integrity: sha512-xPWkzCO07AnS8X+fQFpWm+tJ+C7aeaiVzJ+rSepbkCXUvUJ6l6squEl63axoMcixyH4wLjmypOzq/+zTD0O93w==} engines: {node: '>=0.4.0'} dev: true @@ -15797,7 +15808,7 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 @@ -15852,9 +15863,11 @@ packages: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -15933,12 +15946,12 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.1: + resolution: {integrity: sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + es-errors: 1.3.0 dev: true /get-tsconfig@4.7.2: @@ -16106,7 +16119,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -16116,7 +16129,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 dev: true @@ -16124,7 +16137,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -16257,7 +16270,7 @@ packages: /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -16277,8 +16290,8 @@ packages: has-symbol-support-x: 1.4.2 dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -16588,13 +16601,13 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils@5.1.0(postcss@8.4.33): + /icss-utils@5.1.0(postcss@8.4.34): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.33 + postcss: 8.4.34 dev: true /idb-keyval@6.2.1: @@ -16629,8 +16642,8 @@ packages: minimatch: 9.0.3 dev: true - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} /image-size@0.5.5: @@ -16720,9 +16733,9 @@ packages: wrap-ansi: 6.2.0 dev: true - /inquirer@9.2.13: - resolution: {integrity: sha512-mUlJNemjYioZgaZXqEFlQ0z9GD8/o+pavIF3JyhzWLX4Xa9M1wioGMCxQEFmps70un9lrah2WaBl3kSRVcoV3g==} - engines: {node: '>=14.18.0'} + /inquirer@9.2.14: + resolution: {integrity: sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==} + engines: {node: '>=18'} dependencies: '@ljharb/through': 2.3.12 ansi-escapes: 4.3.2 @@ -16757,11 +16770,11 @@ packages: xtend: 4.0.2 dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-errors: 1.3.0 hasown: 2.0.0 side-channel: 1.0.4 dev: true @@ -16822,15 +16835,15 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.6 + has-tostringtag: 1.0.2 - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -16857,8 +16870,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.6 + has-tostringtag: 1.0.2 dev: true /is-buffer@1.1.6: @@ -16885,7 +16898,7 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-deflate@1.0.0: @@ -16937,7 +16950,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -16983,7 +16996,7 @@ packages: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 /is-natural-number@4.0.1: @@ -16999,7 +17012,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@7.0.0: @@ -17055,8 +17068,8 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.6 + has-tostringtag: 1.0.2 dev: true /is-retry-allowed@1.2.0: @@ -17078,7 +17091,7 @@ packages: /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 dev: true /is-stream@1.1.0: @@ -17098,7 +17111,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-subdir@1.2.0: @@ -17122,11 +17135,11 @@ packages: text-extensions: 1.9.0 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -17152,14 +17165,14 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 dev: true /is-what@3.14.1: @@ -17276,7 +17289,7 @@ packages: '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color dev: true @@ -18062,7 +18075,7 @@ packages: '@babel/register': 7.23.7(@babel/core@7.22.5) babel-core: 7.0.0-bridge.0(@babel/core@7.22.5) chalk: 4.1.2 - flow-parser: 0.227.0 + flow-parser: 0.228.0 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 @@ -18301,7 +18314,7 @@ packages: /lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} - /less-loader@11.1.4(less@4.2.0)(webpack@5.90.0): + /less-loader@11.1.4(less@4.2.0)(webpack@5.90.1): resolution: {integrity: sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -18309,7 +18322,7 @@ packages: webpack: ^5.0.0 dependencies: less: 4.2.0 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /less@4.2.0: @@ -18821,8 +18834,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -19714,14 +19727,14 @@ packages: /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-loader@2.0.0(webpack@5.90.0): + /node-loader@2.0.0(webpack@5.90.1): resolution: {integrity: sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==} engines: {node: '>= 10.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: loader-utils: 2.0.4 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /node-releases@2.0.14: @@ -20009,7 +20022,7 @@ packages: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 /object-keys@1.1.1: @@ -20024,7 +20037,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -20033,7 +20046,7 @@ packages: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -20042,7 +20055,7 @@ packages: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -20058,7 +20071,7 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -20072,7 +20085,7 @@ packages: '@oclif/plugin-help': 5.2.20(@types/node@18.15.11)(typescript@4.9.5) '@oclif/plugin-not-found': 2.4.3(@types/node@18.15.11)(typescript@4.9.5) '@oclif/plugin-warn-if-update-available': 2.1.1(@types/node@18.15.11)(typescript@4.9.5) - aws-sdk: 2.1546.0 + aws-sdk: 2.1551.0 concurrently: 7.6.0 debug: 4.3.4(supports-color@8.1.1) find-yarn-workspace-root: 2.0.0 @@ -20718,13 +20731,13 @@ packages: xmlbuilder: 15.1.1 dev: true - /polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + /polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} dependencies: '@babel/runtime': 7.23.9 - /postcss-loader@7.3.4(postcss@8.4.33)(typescript@4.9.5)(webpack@5.90.0): + /postcss-loader@7.3.4(postcss@8.4.34)(typescript@4.9.5)(webpack@5.90.1): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -20733,52 +20746,52 @@ packages: dependencies: cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.0 - postcss: 8.4.33 - semver: 7.5.4 - webpack: 5.90.0(esbuild@0.18.20) + postcss: 8.4.34 + semver: 7.6.0 + webpack: 5.90.1(esbuild@0.18.20) transitivePeerDependencies: - typescript dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.33): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.34): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.33 + postcss: 8.4.34 dev: true - /postcss-modules-local-by-default@4.0.4(postcss@8.4.33): + /postcss-modules-local-by-default@4.0.4(postcss@8.4.34): resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 + icss-utils: 5.1.0(postcss@8.4.34) + postcss: 8.4.34 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.1.1(postcss@8.4.33): + /postcss-modules-scope@3.1.1(postcss@8.4.34): resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.33 + postcss: 8.4.34 postcss-selector-parser: 6.0.15 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.33): + /postcss-modules-values@4.0.0(postcss@8.4.34): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.33) - postcss: 8.4.33 + icss-utils: 5.1.0(postcss@8.4.34) + postcss: 8.4.34 dev: true /postcss-selector-parser@6.0.15: @@ -20792,8 +20805,8 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.34: + resolution: {integrity: sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -21871,7 +21884,7 @@ packages: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 set-function-name: 2.0.1 dev: true @@ -21990,7 +22003,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.4.33 + postcss: 8.4.34 source-map: 0.6.1 dev: true @@ -22147,8 +22160,8 @@ packages: resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -22168,8 +22181,8 @@ packages: resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 is-regex: 1.1.4 dev: true @@ -22187,7 +22200,7 @@ packages: truncate-utf8-bytes: 1.0.2 dev: true - /sass-loader@13.3.3(webpack@5.90.0): + /sass-loader@13.3.3(webpack@5.90.1): resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -22207,7 +22220,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /sax@1.2.1: @@ -22297,6 +22310,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -22382,9 +22403,9 @@ packages: resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.1 @@ -22392,7 +22413,7 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.2 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 dev: true @@ -22467,8 +22488,8 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 /signal-exit@3.0.7: @@ -22821,7 +22842,7 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.6 + internal-slot: 1.0.7 dev: true /store2@2.14.2: @@ -22948,12 +22969,12 @@ packages: /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 regexp.prototype.flags: 1.5.1 set-function-name: 2.0.1 side-channel: 1.0.4 @@ -22963,7 +22984,7 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -22971,7 +22992,7 @@ packages: /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -22979,7 +23000,7 @@ packages: /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -23096,13 +23117,13 @@ packages: escape-string-regexp: 1.0.5 dev: true - /style-loader@3.3.3(webpack@5.90.0): + /style-loader@3.3.3(webpack@5.90.1): resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /styled-components@6.0.0-rc.1(react-dom@18.2.0)(react@18.2.0): @@ -23361,7 +23382,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.10(esbuild@0.18.20)(webpack@5.90.0): + /terser-webpack-plugin@5.3.10(esbuild@0.18.20)(webpack@5.90.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23383,7 +23404,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.90.0(esbuild@0.18.20) + webpack: 5.90.1(esbuild@0.18.20) dev: true /terser@4.8.1: @@ -24236,38 +24257,38 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.6 + get-intrinsic: 1.2.4 + is-typed-array: 1.1.13 dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-emitter@2.1.0: @@ -24343,7 +24364,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.6 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -24498,8 +24519,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin@1.6.0: - resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} + /unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} dependencies: acorn: 8.11.3 chokidar: 3.5.3 @@ -24592,7 +24613,7 @@ packages: browserslist: '>= 4.21.0' dependencies: browserslist: 4.22.3 - escalade: 3.1.1 + escalade: 3.1.2 picocolors: 1.0.0 /uqr@0.1.2: @@ -24755,8 +24776,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.14 /utility-types@3.11.0: resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} @@ -24897,7 +24918,7 @@ packages: '@types/node': 18.15.11 esbuild: 0.17.19 less: 4.2.0 - postcss: 8.4.33 + postcss: 8.4.34 rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 @@ -25232,8 +25253,8 @@ packages: /webpack-virtual-modules@0.6.1: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} - /webpack@5.90.0(esbuild@0.18.20): - resolution: {integrity: sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==} + /webpack@5.90.1(esbuild@0.18.20): + resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -25263,7 +25284,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.18.20)(webpack@5.90.0) + terser-webpack-plugin: 5.3.10(esbuild@0.18.20)(webpack@5.90.1) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25329,15 +25350,15 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.6 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -25373,8 +25394,8 @@ packages: dependencies: string-width: 4.2.3 - /winston-transport@4.6.0: - resolution: {integrity: sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==} + /winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} engines: {node: '>= 12.0.0'} dependencies: logform: 2.6.0 @@ -25396,7 +25417,7 @@ packages: safe-stable-stringify: 2.4.3 stack-trace: 0.0.10 triple-beam: 1.4.1 - winston-transport: 4.6.0 + winston-transport: 4.7.0 dev: false /wordwrap@1.0.0: @@ -25526,7 +25547,6 @@ packages: /xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} - requiresBuild: true dev: true /xmlchars@2.2.0: @@ -25608,7 +25628,7 @@ packages: engines: {node: '>=10'} dependencies: cliui: 7.0.4 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -25621,7 +25641,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 From a7013fea6ace1b22783b0baee5123f88dff28192 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Wed, 7 Feb 2024 01:03:38 +0530 Subject: [PATCH 02/11] feat: added prop types --- .../Send/Dialogs/Components/FeeSection/BitcoinInput.tsx | 2 +- .../Send/Dialogs/Components/FeeSection/EthereumInput.tsx | 2 +- .../dialogs/Send/Dialogs/Components/FeeSection/index.tsx | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx index cb6639661..0769074c2 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx @@ -9,7 +9,7 @@ import React, { useState } from 'react'; import { selectLanguage, useAppSelector } from '~/store'; -interface BitcoinInputProps { +export interface BitcoinInputProps { initialValue: number; isTextInput: boolean; unit: string; diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/EthereumInput.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/EthereumInput.tsx index aba89542a..745a7d90c 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/EthereumInput.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/EthereumInput.tsx @@ -13,7 +13,7 @@ import React, { useEffect, useState } from 'react'; import { useSendDialog } from '~/dialogs/Send/context'; import { selectLanguage, useAppSelector } from '~/store'; -interface EthereumInputProps { +export interface EthereumInputProps { initialGasPrice: number; inputGasPrice: number; isTextInput: boolean; diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx index afc328d48..6b7a95ce9 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx @@ -17,8 +17,8 @@ import { CoinIcon } from '~/components'; import { useLabelSuffix } from '~/dialogs/Send/hooks'; import { selectLanguage, selectPriceInfos, useAppSelector } from '~/store'; -import { BitcoinInput } from './BitcoinInput'; -import { EthereumInput } from './EthereumInput'; +import { BitcoinInput, BitcoinInputProps } from './BitcoinInput'; +import { EthereumInput, EthereumInputProps } from './EthereumInput'; import { FeesDisplay } from './FeesDisplay'; import { FeesHeader } from './FeesHeader'; import { OptimismFeesHeader } from './OptimismFeesHeader'; @@ -56,7 +56,7 @@ export const FeeSection: React.FC = ({ showErrors }) => { const [isFeeLoading, setIsFeeLoading] = useState(false); const getLabelSuffix = useLabelSuffix(); - const getBitcoinProps = () => { + const getBitcoinProps = (): BitcoinInputProps => { const { feesUnit } = coinList[selectedAccount?.assetId ?? '']; const txn = transaction as IPreparedBtcTransaction; return { @@ -67,7 +67,7 @@ export const FeeSection: React.FC = ({ showErrors }) => { }; }; - const getEthereumProps = () => { + const getEthereumProps = (): Partial => { if (!selectedAccount) return {}; const { feesUnit } = coinList[selectedAccount.parentAssetId]; const txn = transaction as IPreparedEvmTransaction; From c66f9c020d3c0f10299c7739f13bba0370322631 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Wed, 7 Feb 2024 02:35:55 +0530 Subject: [PATCH 03/11] feat: replaced number with string and BigNumber --- .../Components/FeeSection/BitcoinInput.tsx | 8 ++--- .../Components/FeeSection/EthereumInput.tsx | 14 ++++---- .../Dialogs/Components/FeeSection/index.tsx | 33 +++++++++++-------- .../components/molecules/Send/FeesInput.tsx | 4 +-- .../components/molecules/Send/FeesSlider.tsx | 15 +++++---- 5 files changed, 41 insertions(+), 33 deletions(-) diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx index 0769074c2..026f919fd 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/BitcoinInput.tsx @@ -10,10 +10,10 @@ import React, { useState } from 'react'; import { selectLanguage, useAppSelector } from '~/store'; export interface BitcoinInputProps { - initialValue: number; + initialValue: string; isTextInput: boolean; unit: string; - onChange: (newValue: number) => void; + onChange: (newValue: string) => void; } export const BitcoinInput: React.FC = ({ @@ -26,7 +26,7 @@ export const BitcoinInput: React.FC = ({ const captions = lang.strings.send.fees.sliderLabels; const [value, setValue] = useState(initialValue); - const handleChange = (val: number) => { + const handleChange = (val: string) => { setValue(val); onChange(val); }; @@ -35,7 +35,7 @@ export const BitcoinInput: React.FC = ({ <> {isTextInput && ( void; + onChange: (param: { gasLimit?: string; gasPrice?: string }) => void; } export const EthereumInput: React.FC = ({ @@ -35,13 +35,13 @@ export const EthereumInput: React.FC = ({ const transaction = useSendDialog().transaction as IPreparedEvmTransaction; const { getDefaultGasLimit } = useSendDialog(); - const handlePriceChange = (val: number) => { + const handlePriceChange = (val: string) => { setGasPrice(val); // on change gas price, prepare EVM fee onChange({ gasPrice: val }); }; - const handleLimitChange = (val: number) => { + const handleLimitChange = (val: string) => { // on change gas limit, prepare EVM fee onChange({ gasLimit: val }); }; @@ -51,7 +51,7 @@ export const EthereumInput: React.FC = ({ transaction.userInputs.gasPrice = initialGasPrice.toString(); transaction.userInputs.gasLimit = getDefaultGasLimit(); onChange({ - gasLimit: Number(transaction.userInputs.gasLimit), + gasLimit: transaction.userInputs.gasLimit, gasPrice: initialGasPrice, }); }, [isTextInput, transaction.computedData.gasLimitEstimate]); @@ -95,7 +95,7 @@ export const EthereumInput: React.FC = ({ diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx index 6b7a95ce9..62114b1fb 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx @@ -62,8 +62,8 @@ export const FeeSection: React.FC = ({ showErrors }) => { return { isTextInput, unit: feesUnit, - initialValue: txn.staticData.averageFee, - onChange: debouncedPrepareFeeChanged, + initialValue: txn.staticData.averageFee.toString(10), + onChange: debouncedBtcPrepareFeeChanged, }; }; @@ -124,27 +124,28 @@ export const FeeSection: React.FC = ({ showErrors }) => { ); }; - const prepareFeeChanged = async (value: number) => { + const btcPrepareFee = async (value: string) => { setIsFeeLoading(true); const txn = transaction as IPreparedBtcTransaction; - setIsFeeLow(value < (2 / 3) * txn.staticData.averageFee); - txn.userInputs.feeRate = value; + const valueBN = new BigNumber(value); + setIsFeeLow(valueBN.isLessThan((2 / 3) * txn.staticData.averageFee)); + txn.userInputs.feeRate = Number(value); await prepare(txn); setIsFeeLoading(false); }; - const debouncedPrepareFeeChanged = useCallback( - lodash.debounce(prepareFeeChanged, 300), + const debouncedBtcPrepareFeeChanged = useCallback( + lodash.debounce(btcPrepareFee, 300), [], ); const evmPrepareFee = async (param: { - gasLimit?: number; - gasPrice?: number; + gasLimit?: string; + gasPrice?: string; }) => { setIsFeeLoading(true); const txn = transaction as IPreparedEvmTransaction; - const gasPrice = param.gasPrice?.toString(10) + const gasPrice = param.gasPrice ? convertToUnit({ amount: param.gasPrice, coinId: selectedAccount?.parentAssetId ?? '', @@ -152,17 +153,21 @@ export const FeeSection: React.FC = ({ showErrors }) => { toUnitAbbr: getZeroUnit(selectedAccount?.parentAssetId ?? '').abbr, }).amount : txn.userInputs.gasPrice; - const gasLimit = param.gasLimit ?? Number(txn.computedData.gasLimit); + const gasLimit = param.gasLimit ?? txn.computedData.gasLimit; // the gas price check for 2/3 of the average is same as bitcoin + const gasPriceBN = gasPrice ? new BigNumber(gasPrice) : undefined; + const gasLimitBN = new BigNumber(gasLimit); + const averageGasPriceBN = new BigNumber(txn.staticData.averageGasPrice); + const gasLimitEstimateBN = new BigNumber(txn.computedData.gasLimitEstimate); setIsFeeLow( - Number(gasPrice) < (2 / 3) * Number(txn.staticData.averageGasPrice) || - gasLimit < Number(txn.computedData.gasLimitEstimate), + gasPriceBN?.isLessThan(averageGasPriceBN.multipliedBy(2).dividedBy(3)) ?? + gasLimitBN.isLessThan(gasLimitEstimateBN), ); if (param.gasLimit !== undefined) { // user modified gas limit - txn.userInputs.gasLimit = gasLimit.toString(10); + txn.userInputs.gasLimit = gasLimit; } if (param.gasPrice !== undefined) { // user modified gas price diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index d619c2941..45b4ea090 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -7,7 +7,7 @@ import { Input, Typography } from '../../atoms'; interface FeesInputProps { value: string; - onChange?: (val: number) => void; + onChange?: (val: string) => void; postfixText?: string; valueType?: 'float' | 'integer'; } @@ -47,7 +47,7 @@ export const FeesInput: React.FC = ({ (newValue: BigNumber) => { if (!onChange) return; if (newValue.isEqualTo(parseNumber(value))) return; - onChange(newValue.toNumber()); + onChange(newValue.toString()); }, [valueInternal, value, parseNumber, onChange], ); diff --git a/packages/ui/src/components/molecules/Send/FeesSlider.tsx b/packages/ui/src/components/molecules/Send/FeesSlider.tsx index 78febc817..078e6ff5b 100644 --- a/packages/ui/src/components/molecules/Send/FeesSlider.tsx +++ b/packages/ui/src/components/molecules/Send/FeesSlider.tsx @@ -4,22 +4,25 @@ import { LangDisplay, Typography } from '../../atoms'; import { Caption, Slider } from '../Slider'; export interface FeesSliderProps { - value: number; - average: number; - onChange: (newValue: number) => void; + value: string; + average: string; + onChange: (newValue: string) => void; captions: Caption[]; overrideDecimal?: number; error?: string; } export const FeesSlider: React.FC = ({ - value, - average, + value: valueStr, + average: averageStr, onChange, captions, overrideDecimal, error, }) => { + const value = Number(valueStr); + const average = Number(averageStr); + const getSliderParams = () => { const min = 0; const max = average * 2; @@ -33,7 +36,7 @@ export const FeesSlider: React.FC = ({ onChange(val.toString(10))} {...getSliderParams()} /> {error && ( From cede684f50ef3f82796c5abb6338077d65af38e7 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Wed, 7 Feb 2024 15:36:21 +0530 Subject: [PATCH 04/11] fix: avoid insignificant zero from start --- .../ui/src/components/molecules/Send/FeesInput.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 45b4ea090..50fb688f6 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -68,7 +68,19 @@ export const FeesInput: React.FC = ({ const bigNumVal = parseNumber(val); if (bigNumVal.isNaN()) return; - setValueInternal(val); + // avoid insignificant zero from start + let finalInputValue = val; + while ( + finalInputValue.startsWith('00') || + (finalInputValue.startsWith('0') && valueType === 'integer') || + (finalInputValue.startsWith('0') && + finalInputValue.includes('.') && + !finalInputValue.startsWith('0.')) + ) { + finalInputValue = finalInputValue.slice(1); + } + + setValueInternal(finalInputValue); onChangeProxy(bigNumVal); }, [valueType, onChangeProxy, parseNumber], From a0c71f81158a2fb8d4ac58865554b5e923cd521f Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Wed, 7 Feb 2024 22:43:56 +0530 Subject: [PATCH 05/11] feat: added support for BigNumber --- apps/cli/src/services/send/index.ts | 2 +- .../src/operations/broadcastTransaction/index.ts | 2 +- .../src/operations/initializeTransaction/index.ts | 2 +- .../src/operations/prepareTransaction/index.ts | 6 +++--- packages/coin-support-btc/src/operations/transaction.ts | 6 +++--- packages/coin-support-btc/src/services/fees.ts | 4 ++-- .../dialogs/Send/Dialogs/Components/FeeSection/index.tsx | 7 ++++--- packages/cysync-core/src/dialogs/Send/context/index.tsx | 2 +- packages/ui/src/components/molecules/Send/FeesInput.tsx | 5 +++++ 9 files changed, 21 insertions(+), 15 deletions(-) diff --git a/apps/cli/src/services/send/index.ts b/apps/cli/src/services/send/index.ts index e02a336cd..a45582729 100644 --- a/apps/cli/src/services/send/index.ts +++ b/apps/cli/src/services/send/index.ts @@ -110,7 +110,7 @@ const getTxnInputs = async (params: { throw new Error('Invalid fees'); } - txn.userInputs.feeRate = feeRate; + txn.userInputs.feeRate = feeRate.toString(10); } if (coin.family === coinFamiliesMap.evm) { diff --git a/packages/coin-support-btc/src/operations/broadcastTransaction/index.ts b/packages/coin-support-btc/src/operations/broadcastTransaction/index.ts index e82839bdf..a0e7913c9 100644 --- a/packages/coin-support-btc/src/operations/broadcastTransaction/index.ts +++ b/packages/coin-support-btc/src/operations/broadcastTransaction/index.ts @@ -63,7 +63,7 @@ export const broadcastTransaction = async ( const parsedTransaction: ITransaction = { hash: txnHash, - fees: transaction.computedData.fee.toString(), + fees: transaction.computedData.fee, amount: '0', status: TransactionStatusMap.pending, type: TransactionTypeMap.receive, diff --git a/packages/coin-support-btc/src/operations/initializeTransaction/index.ts b/packages/coin-support-btc/src/operations/initializeTransaction/index.ts index ed9ec3910..b0d338d23 100644 --- a/packages/coin-support-btc/src/operations/initializeTransaction/index.ts +++ b/packages/coin-support-btc/src/operations/initializeTransaction/index.ts @@ -34,7 +34,7 @@ export const initializeTransaction = async ( utxos, }, computedData: { - fee: 0, + fee: '0', inputs: [], outputs: [], }, diff --git a/packages/coin-support-btc/src/operations/prepareTransaction/index.ts b/packages/coin-support-btc/src/operations/prepareTransaction/index.ts index 738a99702..a5d9b58a7 100644 --- a/packages/coin-support-btc/src/operations/prepareTransaction/index.ts +++ b/packages/coin-support-btc/src/operations/prepareTransaction/index.ts @@ -75,7 +75,7 @@ export const prepareTransaction = async ( result = coinselectSplit( txn.staticData.utxos.map(mapUtxo), outputList, - txn.userInputs.feeRate, + Number(txn.userInputs.feeRate), 3, ); isNotOverDustThreshold = Boolean(result.isNotOverDustThreshold); @@ -107,7 +107,7 @@ export const prepareTransaction = async ( result = coinselect( txn.staticData.utxos.map(mapUtxo), outputList, - txn.userInputs.feeRate, + Number(txn.userInputs.feeRate), ); } @@ -135,7 +135,7 @@ export const prepareTransaction = async ( }, computedData: { inputs: result.inputs ?? [], - fee: result.fee, + fee: result.fee.toString(10), outputs: (result.outputs ?? []).map((e: any) => { if (e.address === undefined) { return { diff --git a/packages/coin-support-btc/src/operations/transaction.ts b/packages/coin-support-btc/src/operations/transaction.ts index 720e40bca..9ddda3452 100644 --- a/packages/coin-support-btc/src/operations/transaction.ts +++ b/packages/coin-support-btc/src/operations/transaction.ts @@ -31,16 +31,16 @@ export interface IPreparedBtcTransaction extends IPreparedTransaction { }; userInputs: { outputs: IPreparedTransactionOutput[]; - feeRate: number; + feeRate: string; isSendAll: boolean; }; staticData: { - averageFee: number; + averageFee: string; utxos: IUtxo[]; }; computedData: { inputs: IPreparedBtcTransactionInput[]; outputs: IPreparedBtcTransactionOutput[]; - fee: number; + fee: string; }; } diff --git a/packages/coin-support-btc/src/services/fees.ts b/packages/coin-support-btc/src/services/fees.ts index 01fa093cf..c556b324d 100644 --- a/packages/coin-support-btc/src/services/fees.ts +++ b/packages/coin-support-btc/src/services/fees.ts @@ -6,7 +6,7 @@ import { config } from '../config'; const baseURL = `${config.API_CYPHEROCK}/transaction`; -export const getAverageFee = async (coin: IBtcCoinInfo): Promise => { +export const getAverageFee = async (coin: IBtcCoinInfo): Promise => { const url = `${baseURL}/fees`; const response = await axios.post(url, { coinType: coin.apiCoinType, @@ -17,5 +17,5 @@ export const getAverageFee = async (coin: IBtcCoinInfo): Promise => { new Error('Server: Invalid fees result from server'), ); - return Math.round(response.data.medium_fee_per_kb / 1024); + return Math.round(response.data.medium_fee_per_kb / 1024).toString(10); }; diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx index 62114b1fb..162439383 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/FeeSection/index.tsx @@ -62,7 +62,7 @@ export const FeeSection: React.FC = ({ showErrors }) => { return { isTextInput, unit: feesUnit, - initialValue: txn.staticData.averageFee.toString(10), + initialValue: txn.staticData.averageFee, onChange: debouncedBtcPrepareFeeChanged, }; }; @@ -128,8 +128,9 @@ export const FeeSection: React.FC = ({ showErrors }) => { setIsFeeLoading(true); const txn = transaction as IPreparedBtcTransaction; const valueBN = new BigNumber(value); - setIsFeeLow(valueBN.isLessThan((2 / 3) * txn.staticData.averageFee)); - txn.userInputs.feeRate = Number(value); + const averageFeeBN = new BigNumber(txn.staticData.averageFee); + setIsFeeLow(valueBN.isLessThan(averageFeeBN.multipliedBy(2).dividedBy(3))); + txn.userInputs.feeRate = value; await prepare(txn); setIsFeeLoading(false); }; diff --git a/packages/cysync-core/src/dialogs/Send/context/index.tsx b/packages/cysync-core/src/dialogs/Send/context/index.tsx index 9d7dd3c9d..351f04de1 100644 --- a/packages/cysync-core/src/dialogs/Send/context/index.tsx +++ b/packages/cysync-core/src/dialogs/Send/context/index.tsx @@ -513,7 +513,7 @@ export const SendDialogProvider: FC = ({ // return '0' in error scenarios because BigNumber cannot handle empty string if (!txn) return '0'; const { computedData } = txn as IPreparedBtcTransaction; - return computedData.fee.toString() || '0'; + return computedData.fee || '0'; }; const getEvmFeeAmount = (txn: IPreparedTransaction | undefined) => { diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 50fb688f6..7b0d94dda 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -10,6 +10,7 @@ interface FeesInputProps { onChange?: (val: string) => void; postfixText?: string; valueType?: 'float' | 'integer'; + isBigNumber?: boolean; } const validFeesRegex = /^\d*\.?\d*$/; @@ -19,6 +20,7 @@ export const FeesInput: React.FC = ({ postfixText, onChange, valueType = 'float', + isBigNumber = false, }) => { const [valueInternal, setValueInternal] = useState(value); @@ -67,6 +69,8 @@ export const FeesInput: React.FC = ({ const bigNumVal = parseNumber(val); if (bigNumVal.isNaN()) return; + if (!isBigNumber && bigNumVal.isGreaterThan(Number.MAX_SAFE_INTEGER)) + return; // avoid insignificant zero from start let finalInputValue = val; @@ -117,4 +121,5 @@ FeesInput.defaultProps = { postfixText: '', valueType: 'float', onChange: undefined, + isBigNumber: false, }; From 654a3b5ca4212a56f3acdab6b64174ea746bcd4f Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Thu, 8 Feb 2024 13:43:32 +0530 Subject: [PATCH 06/11] feat: auto prepend zero on decimal enter --- .../ui/src/components/molecules/Send/FeesInput.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 7b0d94dda..4d61fceeb 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -67,13 +67,19 @@ export const FeesInput: React.FC = ({ if (!isValidInput) return; if (valueType === 'integer' && val.includes('.')) return; - const bigNumVal = parseNumber(val); + let finalInputValue = val; + + // prepend zero if value starts with decimal + if (finalInputValue.startsWith('.')) { + finalInputValue = `0${finalInputValue}`; + } + + const bigNumVal = parseNumber(finalInputValue); if (bigNumVal.isNaN()) return; if (!isBigNumber && bigNumVal.isGreaterThan(Number.MAX_SAFE_INTEGER)) return; // avoid insignificant zero from start - let finalInputValue = val; while ( finalInputValue.startsWith('00') || (finalInputValue.startsWith('0') && valueType === 'integer') || From e711247383753ece4cb7feb1a292c0aac159d74b Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:52:17 +0530 Subject: [PATCH 07/11] feat: improved amount input and refactored code --- .../AddressAndAmountSection/AmountInput.tsx | 39 +++------- .../components/molecules/Send/FeesInput.tsx | 61 +++++---------- packages/utils/src/index.ts | 11 +-- .../src/processNonNegativeNumericInput.ts | 76 +++++++++++++++++++ 4 files changed, 109 insertions(+), 78 deletions(-) create mode 100644 packages/utils/src/processNonNegativeNumericInput.ts diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx index 8b99b36ce..ced64ebb3 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx @@ -9,7 +9,7 @@ import { Typography, CustomInputSend, } from '@cypherock/cysync-ui'; -import { BigNumber } from '@cypherock/cysync-utils'; +import { processNonNegativeNumericInput } from '@cypherock/cysync-utils'; import lodash from 'lodash'; import React, { useCallback, useEffect, useState } from 'react'; @@ -86,43 +86,22 @@ export const AmountInput: React.FC = ({ debouncedOnSendMax(checked); }; - const filterNumericInput = (val: string) => { - let filteredValue = val.replace(/[^0-9.]/g, ''); - const bigNum = new BigNumber(filteredValue); - - if (filteredValue.includes('.')) { - const splitValue = filteredValue.split('.'); - let firstValue = splitValue[0]; - const secondValue = splitValue[1]; - - const firstValBigNumber = new BigNumber(firstValue); - - if (firstValBigNumber.isNaN() || firstValBigNumber.isZero()) { - firstValue = '0'; - } - - filteredValue = `${firstValue}.${secondValue}`; - } else if (!bigNum.isNaN() && bigNum.isZero()) { - filteredValue = '0'; - } - - return filteredValue; - }; - const updateValues = (amount: string, value: string, skipCall?: boolean) => { setCoinAmount(amount); setCoinValue(value); if (!skipCall) debouncedOnValueChange(amount); }; - const handleCoinAmountChange = (val: string) => { - const filteredValue = filterNumericInput(val); - updateValues(filteredValue, converter(filteredValue)); + const handleCoinAmountChange = (input: string) => { + const result = processNonNegativeNumericInput({ input, isBigNumber: true }); + if (!result.isValid) return; + updateValues(result.inputValue, converter(result.inputValue)); }; - const handleCoinValueChange = (val: string) => { - const filteredValue = filterNumericInput(val); - updateValues(converter(filteredValue, true), filteredValue); + const handleCoinValueChange = (input: string) => { + const result = processNonNegativeNumericInput({ input, isBigNumber: true }); + if (!result.isValid) return; + updateValues(converter(result.inputValue, true), result.inputValue); }; return ( diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 4d61fceeb..2fd37f998 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -1,6 +1,9 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { BigNumber } from '@cypherock/cysync-utils'; +import { + BigNumber, + processNonNegativeNumericInput, +} from '@cypherock/cysync-utils'; import { CustomInputSend } from './RecipientAddress'; import { Input, Typography } from '../../atoms'; @@ -13,8 +16,6 @@ interface FeesInputProps { isBigNumber?: boolean; } -const validFeesRegex = /^\d*\.?\d*$/; - export const FeesInput: React.FC = ({ value, postfixText, @@ -40,60 +41,34 @@ export const FeesInput: React.FC = ({ const bigNumValueInternal = parseNumber(valueInternal); const bigNumValueExternal = parseNumber(value); if (bigNumValueInternal.isEqualTo(bigNumValueExternal)) return; - setValueInternal(bigNumValueExternal.toFixed()); + setValueInternal(bigNumValueExternal.toString()); }, [valueInternal, value, parseNumber]); useEffect(updateInternalValue, [value]); const onChangeProxy = useCallback( - (newValue: BigNumber) => { + (newValue: string) => { if (!onChange) return; - if (newValue.isEqualTo(parseNumber(value))) return; + if (parseNumber(value).isEqualTo(newValue)) return; onChange(newValue.toString()); }, - [valueInternal, value, parseNumber, onChange], + [value, parseNumber, onChange], ); const handleOnChange = useCallback( - (val: string) => { - if (val === '') { - setValueInternal(val); - onChangeProxy(new BigNumber(0)); - return; - } - - const isValidInput = validFeesRegex.test(val); - - if (!isValidInput) return; - if (valueType === 'integer' && val.includes('.')) return; - - let finalInputValue = val; - - // prepend zero if value starts with decimal - if (finalInputValue.startsWith('.')) { - finalInputValue = `0${finalInputValue}`; - } - - const bigNumVal = parseNumber(finalInputValue); - if (bigNumVal.isNaN()) return; - if (!isBigNumber && bigNumVal.isGreaterThan(Number.MAX_SAFE_INTEGER)) - return; + (input: string) => { + const result = processNonNegativeNumericInput({ + input, + isBigNumber, + isInteger: valueType === 'integer', + }); - // avoid insignificant zero from start - while ( - finalInputValue.startsWith('00') || - (finalInputValue.startsWith('0') && valueType === 'integer') || - (finalInputValue.startsWith('0') && - finalInputValue.includes('.') && - !finalInputValue.startsWith('0.')) - ) { - finalInputValue = finalInputValue.slice(1); - } + if (!result.isValid) return; - setValueInternal(finalInputValue); - onChangeProxy(bigNumVal); + setValueInternal(result.inputValue); + onChangeProxy(result.numericValue); }, - [valueType, onChangeProxy, parseNumber], + [valueType, onChangeProxy, isBigNumber], ); return ( diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 5c02f53a8..f8b51936b 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,11 +1,12 @@ -export * from './sleep'; export * from './assert'; -export * from './logger'; -export * from './resourceLock'; -export * from './getEnv'; export * from './bigNumber'; export * from './comparator'; +export * from './getEnv'; +export * from './http'; export * from './isSubset'; +export * from './logger'; +export * from './processNonNegativeNumericInput'; export * from './promiseQueue'; +export * from './resourceLock'; +export * from './sleep'; export * from './waiting'; -export * from './http'; diff --git a/packages/utils/src/processNonNegativeNumericInput.ts b/packages/utils/src/processNonNegativeNumericInput.ts new file mode 100644 index 000000000..8b3cdbdf8 --- /dev/null +++ b/packages/utils/src/processNonNegativeNumericInput.ts @@ -0,0 +1,76 @@ +import BigNumber from 'bignumber.js'; + +const validNumberRegex = /^\d*\.?\d*$/; + +export type ProcessNonNegativeNumericInputParams = { + input: string; + isInteger?: boolean; + isBigNumber?: boolean; + maximum?: string; +}; + +export type ProcessNonNegativeNumericInputResult = + | { + numericValue: string; + inputValue: string; + isValid: true; + } + | { + isValid: false; + }; + +export type ProcessNonNegativeNumericInputFunction = ( + params: ProcessNonNegativeNumericInputParams, +) => ProcessNonNegativeNumericInputResult; + +export const processNonNegativeNumericInput: ProcessNonNegativeNumericInputFunction = + ({ + input, + isInteger = false, + isBigNumber = false, + maximum = isBigNumber ? undefined : Number.MAX_SAFE_INTEGER.toString(10), + }) => { + if (input === '') { + return { + isValid: true, + numericValue: '0', + inputValue: '', + }; + } + + const isValidInput = validNumberRegex.test(input); + + if (!isValidInput) return { isValid: false }; + + if (isInteger && input.includes('.')) return { isValid: false }; + + let finalInput = input; + + // prepend zero if value starts with decimal + if (finalInput.startsWith('.')) { + finalInput = `0${finalInput}`; + } + + const numericValueBN = new BigNumber(finalInput); + + if (numericValueBN.isNaN()) return { isValid: false }; + if (maximum && numericValueBN.isGreaterThan(maximum)) + return { isValid: false }; + + // avoid insignificant zero from start + while ( + finalInput.startsWith('00') || + (finalInput.startsWith('0') && isInteger) || + (finalInput.startsWith('0') && + finalInput.includes('.') && + !finalInput.startsWith('0.')) + ) { + finalInput = finalInput.slice(1); + } + + return { + isValid: true, + inputValue: finalInput, + numericValue: numericValueBN.toString(), + }; + }; From 72ae74d02b4d1d2b6774711dd1f39d77780fd893 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:30:45 +0530 Subject: [PATCH 08/11] feat: added paste handler --- .../AddressAndAmountSection/AmountInput.tsx | 22 ++++++++++++++----- .../ui/src/components/atoms/Input/Input.tsx | 8 +++++++ .../components/molecules/Send/FeesInput.tsx | 6 +++-- .../src/processNonNegativeNumericInput.ts | 11 ++++++++++ 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx index ced64ebb3..3fdb2e780 100644 --- a/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx +++ b/packages/cysync-core/src/dialogs/Send/Dialogs/Components/AddressAndAmountSection/AmountInput.tsx @@ -92,14 +92,22 @@ export const AmountInput: React.FC = ({ if (!skipCall) debouncedOnValueChange(amount); }; - const handleCoinAmountChange = (input: string) => { - const result = processNonNegativeNumericInput({ input, isBigNumber: true }); + const handleCoinAmountChange = (input: string, isPasted: boolean) => { + const result = processNonNegativeNumericInput({ + input, + isBigNumber: true, + isPasted, + }); if (!result.isValid) return; updateValues(result.inputValue, converter(result.inputValue)); }; - const handleCoinValueChange = (input: string) => { - const result = processNonNegativeNumericInput({ input, isBigNumber: true }); + const handleCoinValueChange = (input: string, isPasted: boolean) => { + const result = processNonNegativeNumericInput({ + input, + isBigNumber: true, + isPasted, + }); if (!result.isValid) return; updateValues(converter(result.inputValue, true), result.inputValue); }; @@ -125,7 +133,8 @@ export const AmountInput: React.FC = ({ type="text" name="address" placeholder={placeholder} - onChange={handleCoinAmountChange} + onChange={val => handleCoinAmountChange(val, false)} + onPaste={val => handleCoinAmountChange(val, true)} value={coinAmount} disabled={isToggled || isDisabled} $textColor="white" @@ -145,7 +154,8 @@ export const AmountInput: React.FC = ({ type="text" name="address" placeholder={placeholder} - onChange={handleCoinValueChange} + onChange={val => handleCoinValueChange(val, false)} + onPaste={val => handleCoinValueChange(val, true)} value={coinValue} disabled={isToggled || isDisabled} $textColor="white" diff --git a/packages/ui/src/components/atoms/Input/Input.tsx b/packages/ui/src/components/atoms/Input/Input.tsx index 3c540df72..8e14b5065 100644 --- a/packages/ui/src/components/atoms/Input/Input.tsx +++ b/packages/ui/src/components/atoms/Input/Input.tsx @@ -15,6 +15,7 @@ export interface InputProps { name: string; label?: string; onChange?: (val: string) => void; + onPaste?: (val: string) => void; onBlur?: (val: string) => void; value?: string; disabled?: boolean; @@ -108,6 +109,7 @@ export const Input: FC }> = name, label = undefined, onChange = undefined, + onPaste = undefined, onBlur = undefined, value = undefined, disabled = false, @@ -158,6 +160,11 @@ export const Input: FC }> = required={required} onClick={onClick} onPaste={e => { + if (pasteAllowed && onPaste) { + e.preventDefault(); + onPaste(e.clipboardData.getData('text')); + return true; + } if (pasteAllowed) return true; e.preventDefault(); return false; @@ -202,6 +209,7 @@ Input.defaultProps = { placeholder: undefined, postfixText: undefined, onChange: undefined, + onPaste: undefined, onBlur: undefined, value: undefined, disabled: false, diff --git a/packages/ui/src/components/molecules/Send/FeesInput.tsx b/packages/ui/src/components/molecules/Send/FeesInput.tsx index 2fd37f998..728141ae0 100644 --- a/packages/ui/src/components/molecules/Send/FeesInput.tsx +++ b/packages/ui/src/components/molecules/Send/FeesInput.tsx @@ -56,9 +56,10 @@ export const FeesInput: React.FC = ({ ); const handleOnChange = useCallback( - (input: string) => { + (input: string, isPasted: boolean) => { const result = processNonNegativeNumericInput({ input, + isPasted, isBigNumber, isInteger: valueType === 'integer', }); @@ -79,7 +80,8 @@ export const FeesInput: React.FC = ({ value={valueInternal} placeholder="0" $textColor="white" - onChange={handleOnChange} + onChange={val => handleOnChange(val, false)} + onPaste={val => handleOnChange(val, true)} $noBorder /> diff --git a/packages/utils/src/processNonNegativeNumericInput.ts b/packages/utils/src/processNonNegativeNumericInput.ts index 8b3cdbdf8..0053738ed 100644 --- a/packages/utils/src/processNonNegativeNumericInput.ts +++ b/packages/utils/src/processNonNegativeNumericInput.ts @@ -4,6 +4,7 @@ const validNumberRegex = /^\d*\.?\d*$/; export type ProcessNonNegativeNumericInputParams = { input: string; + isPasted?: boolean; isInteger?: boolean; isBigNumber?: boolean; maximum?: string; @@ -26,6 +27,7 @@ export type ProcessNonNegativeNumericInputFunction = ( export const processNonNegativeNumericInput: ProcessNonNegativeNumericInputFunction = ({ input, + isPasted = false, isInteger = false, isBigNumber = false, maximum = isBigNumber ? undefined : Number.MAX_SAFE_INTEGER.toString(10), @@ -57,6 +59,15 @@ export const processNonNegativeNumericInput: ProcessNonNegativeNumericInputFunct if (maximum && numericValueBN.isGreaterThan(maximum)) return { isValid: false }; + if (isPasted) { + const value = numericValueBN.toString(); + return { + isValid: true, + inputValue: value, + numericValue: value, + }; + } + // avoid insignificant zero from start while ( finalInput.startsWith('00') || From 4fb104fc5fe1a028b47cbf472f85cb5e1e7ab9f4 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:39:18 +0530 Subject: [PATCH 09/11] feat: updated tests --- .../tests/__fixtures__/04.initializeTransaction.ts | 6 +++--- .../tests/__fixtures__/05.prepareTransaction.ts | 12 ++++++------ .../tests/__fixtures__/07.broadcastTransaction.ts | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts b/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts index 288e510e4..e6c1c14c6 100644 --- a/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts +++ b/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts @@ -16,16 +16,16 @@ export const valid: IInitializeTransactionTestCases[] = [ txn: { accountId: '1', computedData: { - fee: 0, + fee: '0', inputs: [], outputs: [], }, staticData: { - averageFee: 150, + averageFee: '150', utxos: [], }, userInputs: { - feeRate: 150, + feeRate: '150', outputs: [], isSendAll: false, }, diff --git a/packages/coin-support-btc/tests/__fixtures__/05.prepareTransaction.ts b/packages/coin-support-btc/tests/__fixtures__/05.prepareTransaction.ts index ed187632a..c6e8bd90a 100644 --- a/packages/coin-support-btc/tests/__fixtures__/05.prepareTransaction.ts +++ b/packages/coin-support-btc/tests/__fixtures__/05.prepareTransaction.ts @@ -17,11 +17,11 @@ export const valid: IPrepareTransactionTestCases[] = [ accountId: '1', userInputs: { outputs: [{ address: 'kajshd', amount: '' }], - feeRate: 150, + feeRate: '150', isSendAll: false, }, staticData: { - averageFee: 150, + averageFee: '150', utxos: [ { txid: '8b1720b139daa3231455348806a6d01f53bd6cb31f6068b4b206fc5a8bf46aba', @@ -35,7 +35,7 @@ export const valid: IPrepareTransactionTestCases[] = [ ], }, computedData: { - fee: 0, + fee: '0', inputs: [], outputs: [], }, @@ -61,11 +61,11 @@ export const valid: IPrepareTransactionTestCases[] = [ accountId: '1', userInputs: { outputs: [{ address: 'kajshd', amount: '' }], - feeRate: 150, + feeRate: '150', isSendAll: false, }, staticData: { - averageFee: 150, + averageFee: '150', utxos: [ { txid: '8b1720b139daa3231455348806a6d01f53bd6cb31f6068b4b206fc5a8bf46aba', @@ -79,7 +79,7 @@ export const valid: IPrepareTransactionTestCases[] = [ ], }, computedData: { - fee: 33900, + fee: '33900', inputs: [ { address: 'LYzVffwKeuwnqeuwVikH59gk3iLvVaeZUN', diff --git a/packages/coin-support-btc/tests/__fixtures__/07.broadcastTransaction.ts b/packages/coin-support-btc/tests/__fixtures__/07.broadcastTransaction.ts index b331153db..2190dfc94 100644 --- a/packages/coin-support-btc/tests/__fixtures__/07.broadcastTransaction.ts +++ b/packages/coin-support-btc/tests/__fixtures__/07.broadcastTransaction.ts @@ -24,11 +24,11 @@ export const valid: IPrepareTransactionTestCases[] = [ outputs: [ { address: 'LPMmBEMdTVpoNYDKooGWjkFyQ2YduGZpyA', amount: '10000' }, ], - feeRate: 150, + feeRate: '150', isSendAll: false, }, staticData: { - averageFee: 150, + averageFee: '150', utxos: [ { txid: '8b1720b139daa3231455348806a6d01f53bd6cb31f6068b4b206fc5a8bf46aba', @@ -42,7 +42,7 @@ export const valid: IPrepareTransactionTestCases[] = [ ], }, computedData: { - fee: 33900, + fee: '33900', inputs: [ { address: 'LYzVffwKeuwnqeuwVikH59gk3iLvVaeZUN', From 648fc00edd24acee5fa42f09cce5ae7c5cf4038b Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Thu, 8 Feb 2024 16:15:02 +0530 Subject: [PATCH 10/11] feat: updated test case --- .../tests/__fixtures__/04.initializeTransaction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts b/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts index e6c1c14c6..1f44c5e7f 100644 --- a/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts +++ b/packages/coin-support-btc/tests/__fixtures__/04.initializeTransaction.ts @@ -5,7 +5,7 @@ export interface IInitializeTransactionTestCases { txn: IPreparedBtcTransaction; mocks: { account: Partial; - averageFee: number; + averageFee: string; utxos: IUtxo[]; }; } @@ -42,7 +42,7 @@ export const valid: IInitializeTransactionTestCases[] = [ parentAssetId: 'bitcoin', familyId: 'bitcoin', }, - averageFee: 150, + averageFee: '150', utxos: [], }, }, From b93676b8feb6ca9c7ce3075cf931423677dc7684 Mon Sep 17 00:00:00 2001 From: jhasuraj01 <44930179+jhasuraj01@users.noreply.github.com> Date: Fri, 9 Feb 2024 17:46:35 +0530 Subject: [PATCH 11/11] chore: added changeset --- .changeset/tricky-suns-dream.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/tricky-suns-dream.md diff --git a/.changeset/tricky-suns-dream.md b/.changeset/tricky-suns-dream.md new file mode 100644 index 000000000..c3043e2da --- /dev/null +++ b/.changeset/tricky-suns-dream.md @@ -0,0 +1,10 @@ +--- +'@cypherock/coin-support-btc': patch +'@cypherock/cysync-core': patch +'@cypherock/cysync-utils': patch +'@cypherock/cysync-ui': patch +'@cypherock/cysync-cli': patch +'@cypherock/cysync-desktop': patch +--- + +feat: use BigNumber in FeeInput & AmountInput with ux improvements