diff --git a/.storybook/main.js b/.storybook/main.js index b580e447..ca437afa 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -3,6 +3,11 @@ const path = require('path'); module.exports = { stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + webpackFinal: async (config) => { + config.resolve.fallback.crypto = require.resolve('crypto-browserify'); + return config; + }, + addons: [ '@storybook/addon-links', '@storybook/addon-essentials', diff --git a/package.json b/package.json index 98941b3e..5266e5e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-helsinki-headless-cms", - "version": "1.0.0-alpha229", + "version": "1.0.0-alpha230", "description": "React components for displaying Headless CMS content according to guidelines set by HDS", "main": "cjs/index.js", "module": "index.js", @@ -93,6 +93,7 @@ "babel-loader": "^9.1.3", "classnames": "^2.3.1", "cross-env": "^7.0.3", + "crypto-browserify": "^3.12.0", "css-loader": "^6.7.1", "edit-json-file": "^1.7.0", "eslint": "^8.47.0", diff --git a/src/common/constants.ts b/src/common/constants.ts index 0fef48aa..c571d5c1 100644 --- a/src/common/constants.ts +++ b/src/common/constants.ts @@ -1 +1,3 @@ +export const CITY_OF_HELSINKI_WEBSITE_URL = 'https://www.hel.fi/'; export const MAIN_CONTENT_ID = 'main-content'; +export const TOP_LEVEL_MENU_ITEM_PARENT_ID = 'null_parent_id' as const; diff --git a/src/common/headlessService/__generated__.ts b/src/common/headlessService/__generated__.ts index 9c69a464..11ab6c6a 100644 --- a/src/common/headlessService/__generated__.ts +++ b/src/common/headlessService/__generated__.ts @@ -12340,6 +12340,7 @@ export type LanguagesQuery = { export type MenuItemFragment = { __typename?: 'MenuItem'; id: string; + parentId?: string | null; order?: number | null; target?: string | null; title?: string | null; @@ -14667,6 +14668,7 @@ export type MenuQuery = { nodes: Array<{ __typename?: 'MenuItem'; id: string; + parentId?: string | null; order?: number | null; target?: string | null; title?: string | null; @@ -19567,6 +19569,7 @@ export const MenuPageFieldsFragmentDoc = gql` export const MenuItemFragmentDoc = gql` fragment MenuItem on MenuItem { id + parentId order target title @@ -20009,7 +20012,7 @@ export const MenuDocument = gql` query menu($id: ID!) { menu(idType: NAME, id: $id) { id - menuItems { + menuItems(first: 100) { nodes { ...MenuItem } diff --git a/src/common/headlessService/graphql/menu.graphql b/src/common/headlessService/graphql/menu.graphql index 4cde8215..78c0b28d 100644 --- a/src/common/headlessService/graphql/menu.graphql +++ b/src/common/headlessService/graphql/menu.graphql @@ -1,5 +1,6 @@ fragment MenuItem on MenuItem { id + parentId order target title @@ -29,7 +30,10 @@ fragment menuPageFields on Page { query menu($id: ID!) { menu(idType: NAME, id: $id) { id - menuItems { + # Using "first" to try to get all menu items without pagination, 100 was the maximum + # that could be received without pagination from production Headless CMS environment + # using "pages" query so hopefully the limit is not lower for menuItems + menuItems(first: 100) { nodes { ...MenuItem } diff --git a/src/core/archiveSearchPage/ArchiveSearchPage.stories.tsx b/src/core/archiveSearchPage/ArchiveSearchPage.stories.tsx index cc56bda8..d2780a20 100644 --- a/src/core/archiveSearchPage/ArchiveSearchPage.stories.tsx +++ b/src/core/archiveSearchPage/ArchiveSearchPage.stories.tsx @@ -14,6 +14,7 @@ import { defaultConfig } from '../configProvider/defaultConfig'; import { SearchPageContent as ArchiveSearchPageContent } from '../archiveSearchPageContent/ArchiveSearchPageContent'; import navigationLanguages from '../navigation/__mocks__/navigationLanguages.mock'; import navigationMenu from '../navigation/__mocks__/navigationMenu.mock'; +import navigationUniversalBarMenu from '../navigation/__mocks__/navigationUniversalBarMenu.mock'; import { Navigation } from '../navigation/Navigation'; import { ArchivePage as ArchiveSearchPage } from './ArchiveSearchPage'; import articles from '../archiveSearchPageContent/__mocks__/articles.mock'; @@ -46,6 +47,7 @@ const navigation = ( { // eslint-disable-next-line no-console console.log('I should navigate'); diff --git a/src/core/configProvider/configContext.ts b/src/core/configProvider/configContext.ts index b1875dcb..7f90686a 100644 --- a/src/core/configProvider/configContext.ts +++ b/src/core/configProvider/configContext.ts @@ -12,6 +12,10 @@ import { VenueType } from '../../common/venuesService/types'; import type { CardProps } from '../card/Card'; import { HtmlToReactProps } from '../../common/components/htmlToReact/HtmlToReact'; +export type TranslationKey = 'cityOfHelsinki' | 'helsinki' | 'helsinkiLogo'; +export type Translation = Record; +export type Translations = Record; + export type Config = { siteName: string; mainContentId?: string; @@ -19,6 +23,7 @@ export type Config = { organisationPrefixes: string[]; currentLanguageCode: LanguageCodeEnum; fallbackImageUrls: string[]; + translations: Translations; copy: { breadcrumbNavigationLabel: string; breadcrumbListLabel: string; diff --git a/src/core/configProvider/defaultConfig.tsx b/src/core/configProvider/defaultConfig.tsx index 05affe94..af5793cf 100644 --- a/src/core/configProvider/defaultConfig.tsx +++ b/src/core/configProvider/defaultConfig.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { logoFi, logoSv } from 'hds-react'; import { ModuleItemTypeEnum } from '../../common/headlessService/constants'; import { LanguageCodeEnum } from '../../common/headlessService/types'; @@ -22,6 +23,23 @@ export const defaultConfig: Config = { './images/event_placeholder_D.jpg', ], organisationPrefixes: [], + translations: { + cityOfHelsinki: { + EN: 'City of Helsinki', + FI: 'Helsingin kaupunki', + SV: 'Helsingfors stad', + }, + helsinki: { + EN: 'Helsinki', + FI: 'Helsinki', + SV: 'Helsingfors', + }, + helsinkiLogo: { + EN: logoFi, + FI: logoFi, + SV: logoSv, + }, + }, copy: { breadcrumbNavigationLabel: 'Breadcrumb navigation', breadcrumbListLabel: 'breadcrumbs', diff --git a/src/core/navigation/Navigation.module.scss b/src/core/navigation/Navigation.module.scss index 2d8184fe..55c7bf4e 100644 --- a/src/core/navigation/Navigation.module.scss +++ b/src/core/navigation/Navigation.module.scss @@ -7,6 +7,8 @@ .maxWidthXl { div[class^='HeaderActionBar-module_headerActionBar_'], div[class*=' HeaderActionBar-module_headerActionBar_'], + div[class^='HeaderUniversalBar-module_headerUniversalBar_'], + div[class*=' HeaderUniversalBar-module_headerUniversalBar_'], nav[class^='HeaderNavigationMenu-module_headerNavigationMenu_'], nav[class*=' HeaderNavigationMenu-module_headerNavigationMenu_'] { margin: 0 auto; diff --git a/src/core/navigation/Navigation.tsx b/src/core/navigation/Navigation.tsx index 16a980f2..a4c7db0a 100644 --- a/src/core/navigation/Navigation.tsx +++ b/src/core/navigation/Navigation.tsx @@ -1,28 +1,24 @@ import React from 'react'; -import { - Header, - LanguageOption, - Logo, - logoFi, - LogoProps, - logoSv, -} from 'hds-react'; +import { groupBy } from 'lodash-es'; +import { Header, LanguageOption, Logo, LogoProps } from 'hds-react'; // eslint-disable-next-line import/no-extraneous-dependencies import classNames from 'classnames'; +import { Config } from '../configProvider/configContext'; import styles from './Navigation.module.scss'; -import { - Language, - LanguageCodeEnum, - Menu, -} from '../../common/headlessService/types'; +import { Language, Menu } from '../../common/headlessService/types'; import { useConfig } from '../configProvider/useConfig'; -import { MAIN_CONTENT_ID } from '../../common/constants'; +import { + CITY_OF_HELSINKI_WEBSITE_URL, + MAIN_CONTENT_ID, + TOP_LEVEL_MENU_ITEM_PARENT_ID, +} from '../../common/constants'; type MenuItem = Omit; export type NavigationProps = { menu?: Menu; + universalBarMenu?: Menu; languages?: Language[]; className?: string; userNavigation?: React.ReactNode; @@ -33,28 +29,8 @@ export type NavigationProps = { allLanguages: Language[], ) => string; getIsItemActive?: (menuItem: MenuItem) => boolean; - /** @deprecated Not used anymore i.e. does nothing after HDS 3 was taken into use. */ - variant?: 'default' | 'inline'; }; -const LOGO_ARIA_LABELS = { - EN: 'City of Helsinki', - FI: 'Helsingin kaupunki', - SV: 'Helsingfors stad', -} as const satisfies Record; - -const LOGO_LABELS = { - EN: 'Helsinki', - FI: 'Helsinki', - SV: 'Helsingfors', -} as const satisfies Record; - -const LOGO_SOURCES = { - EN: logoFi, - FI: logoFi, - SV: logoSv, -} as const satisfies Record; - /** * Find language from language list by language code. * @param {Language[]} languages - List of languages @@ -71,19 +47,69 @@ function findLanguage( ); } +interface MenuItemChildren { + [menuItemId: string]: MenuItem[]; +} + +type MenuLinkProps = { + menuItemChildren?: MenuItemChildren; + navigationItem: MenuItem; + getRoutedInternalHref: Config['utils']['getRoutedInternalHref']; + getIsItemActive: NavigationProps['getIsItemActive']; + A: Config['components']['A']; +}; + +/** + * Create a menu link element + * @param {MenuLinkProps} props - Properties, if menuItemChildren is undefined then the + * created element will not have dropdown links + * @return {React.JSX.Element} Header.Link element + */ +function createMenuLinkElement(props: MenuLinkProps) { + const { + menuItemChildren, + navigationItem, + getRoutedInternalHref, + getIsItemActive, + A, + } = props; + return ( + + createMenuLinkElement({ + ...props, + navigationItem: childNavigationItem, + }), + )) || + undefined + } + /> + ); +} + export function Navigation({ menu, + universalBarMenu, languages, className, userNavigation, onTitleClick, getPathnameForLanguage, getIsItemActive, - variant, // eslint-disable-line @typescript-eslint/no-unused-vars }: NavigationProps) { const { siteName, currentLanguageCode, + translations, copy: { menuToggleAriaLabel, skipToContentLabel }, components: { A }, utils: { getRoutedInternalHref }, @@ -119,8 +145,25 @@ export function Navigation({ const logoProps: LogoProps = { size: 'large', - src: LOGO_SOURCES[currentLanguageCode], - alt: LOGO_LABELS[currentLanguageCode], + src: translations.helsinkiLogo[currentLanguageCode], + alt: translations.helsinki[currentLanguageCode], + }; + + const localizedCityOfHelsinki = + translations.cityOfHelsinki[currentLanguageCode]; + + const menuItemChildren: MenuItemChildren = groupBy( + menu?.menuItems?.nodes ?? [], + (menuItem) => menuItem.parentId ?? TOP_LEVEL_MENU_ITEM_PARENT_ID, + ); + + const sharedMenuLinkProps: Omit< + MenuLinkProps, + 'navigationItem' | 'menuItemChildren' + > = { + getRoutedInternalHref, + getIsItemActive, + A, }; return ( @@ -134,6 +177,16 @@ export function Navigation({ skipTo={`#${MAIN_CONTENT_ID}`} label={skipToContentLabel} /> + {universalBarMenu && ( + + {universalBarMenu?.menuItems?.nodes?.map((navigationItem) => + createMenuLinkElement({ ...sharedMenuLinkProps, navigationItem }), + )} + + )} } - logoAriaLabel={LOGO_ARIA_LABELS[currentLanguageCode]} + logoAriaLabel={localizedCityOfHelsinki} > {userNavigation && userNavigation} - {menu?.menuItems?.nodes?.map((navigationItem) => ( - - ))} + {menuItemChildren[TOP_LEVEL_MENU_ITEM_PARENT_ID]?.map( + (navigationItem) => + createMenuLinkElement({ + ...sharedMenuLinkProps, + menuItemChildren, + navigationItem, + }), + )} ); diff --git a/src/core/navigation/__mocks__/navigationMenu.mock.ts b/src/core/navigation/__mocks__/navigationMenu.mock.ts index 218916e5..ddf8ea7b 100644 --- a/src/core/navigation/__mocks__/navigationMenu.mock.ts +++ b/src/core/navigation/__mocks__/navigationMenu.mock.ts @@ -1,35 +1,138 @@ const navigationMenu = { - id: 'dGVybToyNg==', - name: 'Main', - locations: ['PRIMARY', 'PRIMARY___EN', 'PRIMARY___SV'], + id: 'dGVybToyNA==', + name: 'Sports Helsinki Header FI', + locations: ['PRIMARY'], menuItems: { nodes: [ { - id: 'cG9zdDoxMjk=', + id: 'cG9zdDoxNjI=', + parentId: null, order: 1, - path: '/mika-kultus/', + path: '/haku', target: null, title: null, - url: 'https://hkih.stage.geniem.io/mika-kultus/', - label: 'Mikä kultus?', + url: '/haku', + label: 'Haku', }, { - id: 'cG9zdDoxMzI=', + id: 'cG9zdDoyOTc=', + parentId: null, order: 2, - path: '/kulttuurikasvatus/', + path: '/pages/kohderyhmat', target: null, title: null, - url: 'https://hkih.stage.geniem.io/kulttuurikasvatus/', - label: 'Kulttuurikasvatus', + url: '/pages/kohderyhmat', + label: 'Kohderyhmät', }, { - id: 'cG9zdDoxMjU=', + id: 'cG9zdDo5NTI1', + parentId: 'cG9zdDoyOTc=', order: 3, - path: '/oppimateriaalit/', + path: '/fi/pages/kohderyhmat/lapset-ja-perheet/', target: null, title: null, - url: 'https://hkih.stage.geniem.io/oppimateriaalit/', - label: 'Oppimateriaalit', + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/lapset-ja-perheet/', + label: 'Lapset ja perheet', + }, + { + id: 'cG9zdDo5NTIy', + parentId: 'cG9zdDoyOTc=', + order: 4, + path: '/fi/pages/kohderyhmat/aikuiset/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/aikuiset/', + label: 'Aikuiset', + }, + { + id: 'cG9zdDozNDA=', + parentId: null, + order: 5, + path: '/pages/liikuntapalvelut', + target: null, + title: null, + url: '/pages/liikuntapalvelut', + label: 'Tukea liikuntaan', + }, + { + id: 'cG9zdDo5NDUy', + parentId: null, + order: 6, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/', + label: 'Liikuntatilojen varaaminen', + }, + { + id: 'cG9zdDo5NjMw', + parentId: 'cG9zdDo5NDUy', + order: 7, + path: '/fi/pages/liikuntapalvelut/maksut-ja-hinnasto/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/liikuntapalvelut/maksut-ja-hinnasto/', + label: 'Maksut ja hinnasto', + }, + { + id: 'cG9zdDo5NjMx', + parentId: 'cG9zdDo5NDUy', + order: 8, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/ohjeet-vuorojen-hakemiseen/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/ohjeet-vuorojen-hakemiseen/', + label: 'Ohjeet vuorojen hakemiseen', + }, + { + id: 'cG9zdDo5NjMy', + parentId: 'cG9zdDo5NDUy', + order: 9, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/ohjeet-vuorojen-hakemiseen/%ef%bf%bc/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/ohjeet-vuorojen-hakemiseen/%ef%bf%bc/', + label: 'Ohjeet vaalitilaisuuden tilavaraukseen', + }, + { + id: 'cG9zdDo5NjMz', + parentId: 'cG9zdDo5NDUy', + order: 10, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/vuorojenjakokriteerit/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/vuorojenjakokriteerit/', + label: 'Vuorojenjakokriteerit', + }, + { + id: 'cG9zdDo5NjM1', + parentId: 'cG9zdDo5NDUy', + order: 11, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/', + label: 'Liikuntapalvelun hallinnoimat koulutilat', + }, + { + id: 'cG9zdDo5NjM2', + parentId: 'cG9zdDo5NjM1', + order: 12, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/helsingin-kaupungin-koulujen-liikuntasalien-vapaa-ajan-kaytto/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/helsingin-kaupungin-koulujen-liikuntasalien-vapaa-ajan-kaytto/', + label: 'Helsingin kaupungin koulujen liikuntasalien vapaa-ajan käyttö', + }, + { + id: 'cG9zdDo5NjM3', + parentId: 'cG9zdDo5NjM1', + order: 13, + path: '/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/koulujen-liikuntasalien-itsenainen-kaytto/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/kohderyhmat/kumppanit/tilojen-varaaminen/liikuntapalvelun-hallinnoimat-koulutilat/koulujen-liikuntasalien-itsenainen-kaytto/', + label: 'Koulujen liikuntasalien itsenäinen käyttö', }, ], }, diff --git a/src/core/navigation/__mocks__/navigationUniversalBarMenu.mock.ts b/src/core/navigation/__mocks__/navigationUniversalBarMenu.mock.ts new file mode 100644 index 00000000..ce3bdcfa --- /dev/null +++ b/src/core/navigation/__mocks__/navigationUniversalBarMenu.mock.ts @@ -0,0 +1,31 @@ +const navigationUniversalBarMenu = { + id: 'dGVybToyNTQ=', + name: 'Sports Helsinki Universal bar FI', + locations: ['TERTIARY'], + menuItems: { + nodes: [ + { + id: 'cG9zdDo5NjI4', + parentId: null, + order: 1, + path: '/fi/pages/tietoa-palvelusta/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/tietoa-palvelusta/', + label: 'Tietoa palvelusta', + }, + { + id: 'cG9zdDo5NTU5', + parentId: null, + order: 2, + path: '/fi/pages/liikuntapalvelut/maaraykset-ja-ohjeet/', + target: null, + title: null, + url: 'https://liikunta.hkih.stage.geniem.io/fi/pages/liikuntapalvelut/maaraykset-ja-ohjeet/', + label: 'Määräykset ja ohjeet', + }, + ], + }, +}; + +export default navigationUniversalBarMenu; diff --git a/yarn.lock b/yarn.lock index bef1b7f3..4af36c87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4786,6 +4786,16 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1js@^3.0.1, asn1js@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" @@ -5085,6 +5095,16 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -5137,11 +5157,70 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + browser-assert@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.4" + inherits "^2.0.4" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" + browserify-zlib@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" @@ -5176,6 +5255,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -5412,6 +5496,14 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -5754,6 +5846,37 @@ crc-32@1.2.0: exit-on-epipe "~1.0.1" printj "~1.1.0" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -5777,6 +5900,23 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + crypto-js@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" @@ -6119,6 +6259,14 @@ dequal@^2.0.2, dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -6159,6 +6307,15 @@ diff-sequences@^29.4.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6335,6 +6492,19 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz#d72d2eddc05d07c538275a00f2619b113848bff6" integrity sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q== +elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -6858,6 +7028,14 @@ events@^3.2.0, events@^3.3.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -7672,6 +7850,23 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + hds-core@3.1.0, hds-core@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hds-core/-/hds-core-3.1.0.tgz#7b1112f9e30ce21cd49e8bd4f902ad01c510d5e5" @@ -7744,6 +7939,15 @@ headers-polyfill@^3.1.0, headers-polyfill@^3.1.2: resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-3.1.2.tgz#9a4dcb545c5b95d9569592ef7ec0708aab763fbe" integrity sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA== +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -9493,6 +9697,15 @@ markdown-to-jsx@^7.1.8: resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" integrity sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q== +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -9567,6 +9780,14 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -9599,6 +9820,16 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -10129,6 +10360,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -10251,6 +10493,17 @@ pathe@^1.1.0: resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + peek-stream@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" @@ -10717,6 +10970,18 @@ psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -10819,13 +11084,21 @@ ramda@0.29.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -11046,7 +11319,7 @@ readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -11336,6 +11609,14 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + rollup-plugin-copy@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286" @@ -11463,7 +11744,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -11482,7 +11763,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -11642,6 +11923,14 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"