From ae8f94794743ff4a96b2129349a5939341553c32 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 30 Aug 2024 14:10:17 -0400 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=92=BE=20Feat/25=20Add=20Iobio=20co?= =?UTF-8?q?mponents=20(#207)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add package * Dependencies, types, & more * Update Components * Remove transpile, update import * Remove changes, bug investigation * Remove egoJwt change * Basic Table Template * First Draft BamTable * SSR Shims for Web Components * Correct package-lock * Update import for latest package version * Stable testing stage * Elements All Rendering * Fix Labels * Dynamics Constants * Remove Window dependency * All Charts + Histograms * Move Toggle Button * Clean Up async const import * Async util function * Organize Variables * Histogram Ignore Outliers * Outliers v2 * Use published version * Massive cleanup using function default export * Improved Import * Import Components, no init required * Latest Package w/ updated imports * Fix Uneven Chart CSS * Cleanup Import and Empty Tag * Remove 2nd empty tag --- additional.d.ts | 21 + components/pages/explorer/BamTable.tsx | 115 ++ components/pages/explorer/PageContent.tsx | 24 +- components/pages/explorer/RepoTable.tsx | 4 +- next.config.js | 26 +- package-lock.json | 1798 +++++++++++++-------- package.json | 4 +- 7 files changed, 1300 insertions(+), 692 deletions(-) create mode 100644 components/pages/explorer/BamTable.tsx diff --git a/additional.d.ts b/additional.d.ts index 3b83822d..97d16dd2 100644 --- a/additional.d.ts +++ b/additional.d.ts @@ -1,3 +1,24 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + declare module 'url-join'; declare module 'js-cookie'; declare module 'jsonwebtoken'; diff --git a/components/pages/explorer/BamTable.tsx b/components/pages/explorer/BamTable.tsx new file mode 100644 index 00000000..b624bf30 --- /dev/null +++ b/components/pages/explorer/BamTable.tsx @@ -0,0 +1,115 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +'use client'; + +import { useMemo, useEffect, useState } from 'react'; +import { css, useTheme } from '@emotion/react'; +import { TableContextProvider } from '@overture-stack/arranger-components'; +import { + IobioCoverageDepth, + IobioDataBroker, + IobioHistogram, + IobioPercentBox, + BamDisplayNames as displayNames, + percentKeys, + histogramKeys, + isOutlierKey, +} from '@overture-stack/iobio-components/packages/iobio-react-components/'; + +import Loader from '@/components/Loader'; + +const percentChartCss = css` + display: flex; + width: 100%; + height: 25vh; + justify-content: space-evenly; +`; + +const histoCss = css` + height: 40vh; + margin: 2vh; +`; + +const BamTable = () => { + const theme = useTheme(); + + const [loading, setLoading] = useState(false); + + useEffect(() => { + setLoading(false); + }, []); + + return useMemo( + () => ( +
+ +

Bam.iobio

+ + {loading ? ( + + ) : ( + <> +
+ {percentKeys.map( + (key) => + key && ( + + ), + )} +
+
+ +
+ {histogramKeys.map((key) => ( +
+ +
+ ))} + + )} +
+
+ ), + [loading], + ); +}; + +export default BamTable; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index af1d060b..1b75b2d8 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -28,13 +28,21 @@ import { isEqual } from 'lodash'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; +import BamTable from './BamTable'; import Facets from './Facets'; import RepoTable from './RepoTable'; import QueryBar from './QueryBar'; +const tableTypes = { + REPO_TABLE: 'repoTable', + BAM_TABLE: 'bamTable', +}; + const PageContent = () => { const theme = useTheme(); const [showSidebar, setShowSidebar] = useState(true); + const [tableType, setTableType] = useState(tableTypes['REPO_TABLE']); + const sidebarWidth = showSidebar ? theme.dimensions.facets.width : 0; // TODO: abstract this param handling into an Arranger integration. @@ -119,13 +127,25 @@ const PageContent = () => { `} > - + {/* WIP */} + + {tableType === tableTypes['REPO_TABLE'] ? : } ), - [], + [tableType], ); }; diff --git a/components/pages/explorer/RepoTable.tsx b/components/pages/explorer/RepoTable.tsx index 2e5993bb..d5d9e782 100644 --- a/components/pages/explorer/RepoTable.tsx +++ b/components/pages/explorer/RepoTable.tsx @@ -182,7 +182,9 @@ const RepoTable = () => { }, ]; - useArrangerTheme(getTableConfigs({ apiHost: INTERNAL_API_PROXY.ARRANGER, customExporters, theme })); + useArrangerTheme( + getTableConfigs({ apiHost: INTERNAL_API_PROXY.ARRANGER, customExporters, theme }), + ); return useMemo( () => ( diff --git a/next.config.js b/next.config.js index 92854a2e..f517fbd2 100644 --- a/next.config.js +++ b/next.config.js @@ -6,15 +6,31 @@ const withPlugins = require('next-compose-plugins'); const { patchWebpackConfig: patchForGlobalCSS } = require('next-global-css'); const withTranspileModules = require('next-transpile-modules')([]); const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin'); +const jsdom = require('jsdom'); + /** * @type {import('next').NextConfig} **/ module.exports = withPlugins([withTranspileModules], { webpack: (config, options) => { - // These 'react' related configs are added to enable linking packages in development - // (e.g. Arranger), and not get the "broken Hooks" warning. - // https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate-react if (options.isServer) { + // Adaptors for Browser APIs used in iobio-charts web components + const { JSDOM } = jsdom; + const dom = new JSDOM('', { url: 'http://localhost/' }); + + // @ts-ignore + global.window = dom.window; + + global.customElements = global.window.customElements; + global.HTMLElement = global.window.HTMLElement; + global.document = global.window.document; + global.Element = global.window.Element; + global.localStorage = global.window.localStorage; + global.navigator = global.window.navigator; + + // These 'react' related configs are added to enable linking packages in development + // (e.g. Arranger), and not get the "broken Hooks" warning. + // https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate-react config.externals = ['react', ...config.externals]; } else { options.dev && @@ -26,6 +42,10 @@ module.exports = withPlugins([withTranspileModules], { ); } + config.experiments = { + ...config.experiments, + topLevelAwait: true, + }; config.resolve.alias['@emotion/react'] = path.resolve( __dirname, '.', diff --git a/package-lock.json b/package-lock.json index 1993cdff..660750e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,11 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", + "@overture-stack/iobio-components": "^0.0.3", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", + "jsdom": "^24.1.1", "jsonwebtoken": "^8.5.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -35,7 +37,7 @@ "@types/http-proxy": "^1.17.11", "@types/lodash": "^4.14.182", "@types/node": "^17.0.35", - "@types/react": "^17.0.62", + "@types/react": "^17.0.80", "@types/react-dom": "^17.0.20", "@types/url-join": "^4.0.1", "extra-watch-webpack-plugin": "^1.0.3", @@ -62,11 +64,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -112,14 +115,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -200,18 +203,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", @@ -329,17 +320,17 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } @@ -368,22 +359,23 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -601,34 +593,31 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -636,12 +625,12 @@ } }, "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1450,14 +1439,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -1473,9 +1462,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1499,13 +1488,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@next/env": { @@ -1709,9 +1698,9 @@ } }, "node_modules/@overture-stack/arranger-components": { - "version": "3.0.0-beta.32", - "resolved": "https://registry.npmjs.org/@overture-stack/arranger-components/-/arranger-components-3.0.0-beta.32.tgz", - "integrity": "sha512-QptZ+wWIqNj26b2ahsOOmpDZa7TaVQYiikV9Mcd0GU1Qkt5nG1g2uAoPodUUzX4BfEt06bjpgSElXkJGylujgw==", + "version": "3.0.0-beta.33", + "resolved": "https://registry.npmjs.org/@overture-stack/arranger-components/-/arranger-components-3.0.0-beta.33.tgz", + "integrity": "sha512-lmftsg4t5WO8rt6ckoDnjhODOwjymPeFrQcgD0OiukRpSmEYTLBNOiIv7+hUKxch441yC1aTVQrF9Dcv9jnVmA==", "dependencies": { "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", @@ -1779,11 +1768,28 @@ "url": "https://opencollective.com/ramda" } }, + "node_modules/@overture-stack/arranger-components/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/@overture-stack/arranger-components/node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, + "node_modules/@overture-stack/iobio-components": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.3.tgz", + "integrity": "sha512-/QywQv9tQbNli3+KhN6Zo7JoPPEeqWyfrySZZVMgiAQIjf9fPBC36rOv3JZ06CMS7ad/PcOXS9VnZoqAdIm/VA==" + }, "node_modules/@overture-stack/sqon-builder": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/@overture-stack/sqon-builder/-/sqon-builder-0.0.0.tgz", @@ -2024,12 +2030,12 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "node_modules/@types/react": { - "version": "17.0.62", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.62.tgz", - "integrity": "sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw==", + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", + "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, @@ -2050,9 +2056,9 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/stack-utils": { "version": "2.0.1", @@ -2257,9 +2263,10 @@ "peer": true }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, "node_modules/acorn": { @@ -2316,15 +2323,14 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -2465,19 +2471,6 @@ "form-data": "^4.0.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/babel-jest": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", @@ -2712,12 +2705,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3080,22 +3073,20 @@ "dev": true }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dependencies": { - "cssom": "~0.3.6" + "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "node_modules/cssstyle/node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" }, "node_modules/csstype": { "version": "3.0.11", @@ -3111,17 +3102,15 @@ } }, "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/date-fns": { @@ -3137,10 +3126,9 @@ } }, "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -3154,15 +3142,14 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } @@ -3236,6 +3223,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" @@ -3314,6 +3302,17 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -3346,15 +3345,14 @@ } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -3593,9 +3591,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3630,9 +3628,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -3753,13 +3751,10 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3780,10 +3775,9 @@ } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -4046,15 +4040,14 @@ } }, "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dependencies": { - "whatwg-encoding": "^1.0.5" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -4077,30 +4070,27 @@ } }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -4117,12 +4107,11 @@ "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -4318,8 +4307,7 @@ "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "node_modules/is-stream": { "version": "2.0.1", @@ -5020,54 +5008,316 @@ "color-name": "~1.1.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10.4" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-environment-jsdom/node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "iconv-lite": "0.4.24" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, + "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "node_modules/jest-environment-node": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", @@ -5904,13 +6154,10 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6249,9 +6496,9 @@ } }, "node_modules/jose": { - "version": "4.14.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.6.tgz", - "integrity": "sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==", + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", "funding": { "url": "https://github.com/sponsors/panva" } @@ -6280,44 +6527,37 @@ } }, "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", + "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", + "dependencies": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -6349,13 +6589,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -6436,9 +6673,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -6994,14 +7231,14 @@ } }, "node_modules/next-auth": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.23.1.tgz", - "integrity": "sha512-mL083z8KgRtlrIV6CDca2H1kduWJuK/3pTS0Fe2og15KOm4v2kkLGdSDfc2g+019aEBrJUT0pPW2Xx42ImN1WA==", + "version": "4.24.7", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.7.tgz", + "integrity": "sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==", "dependencies": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", "cookie": "^0.5.0", - "jose": "^4.11.4", + "jose": "^4.15.5", "oauth": "^0.9.15", "openid-client": "^5.4.0", "preact": "^10.6.3", @@ -7009,7 +7246,7 @@ "uuid": "^8.3.2" }, "peerDependencies": { - "next": "^12.2.5 || ^13", + "next": "^12.2.5 || ^13 || ^14", "nodemailer": "^6.6.5", "react": "^17.0.2 || ^18", "react-dom": "^17.0.2 || ^18" @@ -7072,9 +7309,9 @@ } }, "node_modules/node-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.0.tgz", - "integrity": "sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -7121,10 +7358,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "node_modules/oauth": { "version": "0.9.15", @@ -7269,10 +7505,15 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-exists": { "version": "4.0.0", @@ -7567,8 +7808,7 @@ "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "node_modules/pump": { "version": "3.0.0", @@ -7580,10 +7820,9 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -7605,6 +7844,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -8117,6 +8361,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" + }, "node_modules/rxjs": { "version": "5.5.12", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", @@ -8144,19 +8393,17 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dependencies": { "xmlchars": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=v12.22.7" } }, "node_modules/scheduler": { @@ -8206,9 +8453,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8591,8 +8838,7 @@ "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tapable": { "version": "2.2.1", @@ -8753,29 +8999,28 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=18" } }, "node_modules/ts-node": { @@ -8984,9 +9229,10 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9008,9 +9254,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", "funding": [ { "type": "opencollective", @@ -9019,6 +9265,10 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { @@ -9031,10 +9281,9 @@ "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "engines": { "node": ">= 4.0.0" } @@ -9056,6 +9305,15 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -9104,21 +9362,21 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" } }, "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dependencies": { - "xml-name-validator": "^3.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/walker": { @@ -9161,12 +9419,11 @@ } }, "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { - "node": ">=10.4" + "node": ">=12" } }, "node_modules/webpack": { @@ -9247,12 +9504,14 @@ } }, "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dependencies": { - "iconv-lite": "0.4.24" + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" } }, "node_modules/whatwg-fetch": { @@ -9261,23 +9520,23 @@ "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" }, "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "engines": { + "node": ">=18" + } }, "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/which": { @@ -9295,9 +9554,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "engines": { "node": ">=0.10.0" } @@ -9370,16 +9629,15 @@ } }, "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9391,16 +9649,17 @@ } }, "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "engines": { + "node": ">=18" + } }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/y18n": { "version": "5.0.8", @@ -9474,11 +9733,12 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -9511,14 +9771,14 @@ } }, "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" } }, @@ -9575,15 +9835,6 @@ "@babel/types": "^7.21.0" } }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, "@babel/helper-member-expression-to-functions": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", @@ -9674,14 +9925,14 @@ } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" }, "@babel/helper-validator-option": { "version": "7.21.0", @@ -9701,19 +9952,20 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -9865,41 +10117,38 @@ } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" } }, @@ -10524,14 +10773,14 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { @@ -10541,9 +10790,9 @@ "dev": true }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true }, "@jridgewell/source-map": { @@ -10564,13 +10813,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@next/env": { @@ -10657,9 +10906,9 @@ "optional": true }, "@overture-stack/arranger-components": { - "version": "3.0.0-beta.32", - "resolved": "https://registry.npmjs.org/@overture-stack/arranger-components/-/arranger-components-3.0.0-beta.32.tgz", - "integrity": "sha512-QptZ+wWIqNj26b2ahsOOmpDZa7TaVQYiikV9Mcd0GU1Qkt5nG1g2uAoPodUUzX4BfEt06bjpgSElXkJGylujgw==", + "version": "3.0.0-beta.33", + "resolved": "https://registry.npmjs.org/@overture-stack/arranger-components/-/arranger-components-3.0.0-beta.33.tgz", + "integrity": "sha512-lmftsg4t5WO8rt6ckoDnjhODOwjymPeFrQcgD0OiukRpSmEYTLBNOiIv7+hUKxch441yC1aTVQrF9Dcv9jnVmA==", "requires": { "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", @@ -10714,6 +10963,11 @@ "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==" }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + }, "url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -10721,6 +10975,11 @@ } } }, + "@overture-stack/iobio-components": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.3.tgz", + "integrity": "sha512-/QywQv9tQbNli3+KhN6Zo7JoPPEeqWyfrySZZVMgiAQIjf9fPBC36rOv3JZ06CMS7ad/PcOXS9VnZoqAdIm/VA==" + }, "@overture-stack/sqon-builder": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/@overture-stack/sqon-builder/-/sqon-builder-0.0.0.tgz", @@ -10933,12 +11192,12 @@ "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "@types/react": { - "version": "17.0.62", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.62.tgz", - "integrity": "sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw==", + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", "requires": { "@types/prop-types": "*", - "@types/scheduler": "*", + "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, @@ -10959,9 +11218,9 @@ } }, "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "@types/stack-utils": { "version": "2.0.1", @@ -11166,9 +11425,9 @@ "peer": true }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "acorn": { @@ -11210,12 +11469,11 @@ "dev": true }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "requires": { - "debug": "4" + "debug": "^4.3.4" } }, "ajv": { @@ -11324,18 +11582,6 @@ "requires": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } } }, "babel-jest": { @@ -11529,12 +11775,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-process-hrtime": { @@ -11819,19 +12065,17 @@ "dev": true }, "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "requires": { - "cssom": "~0.3.6" + "rrweb-cssom": "^0.6.0" }, "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" } } }, @@ -11846,14 +12090,12 @@ "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" }, "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" } }, "date-fns": { @@ -11862,24 +12104,22 @@ "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "requires": { "ms": "2.1.2" } }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" }, "dedent": { "version": "0.7.0", @@ -11997,6 +12237,11 @@ "tapable": "^2.2.0" } }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -12023,15 +12268,14 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { @@ -12210,9 +12454,9 @@ "integrity": "sha512-rzpOZ4C9vMFDqOa6dNpog92CoLYjD79dnjLk2TYDDtImRIyLTOzqojCb05Opd1WuiWjs+fshhCgTd8cl7y5t+g==" }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -12238,9 +12482,9 @@ } }, "follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "fork-ts-checker-webpack-plugin": { "version": "8.0.0", @@ -12314,13 +12558,10 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "supports-color": { "version": "7.2.0", @@ -12334,10 +12575,9 @@ } }, "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -12543,12 +12783,11 @@ } }, "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "requires": { - "whatwg-encoding": "^1.0.5" + "whatwg-encoding": "^3.1.1" } }, "html-escaper": { @@ -12568,23 +12807,20 @@ } }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, @@ -12599,12 +12835,11 @@ "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "ignore": { @@ -12751,8 +12986,7 @@ "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "is-stream": { "version": "2.0.1", @@ -13305,6 +13539,208 @@ "jest-mock": "^27.5.1", "jest-util": "^27.5.1", "jsdom": "^16.6.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + } } }, "jest-environment-node": { @@ -13939,13 +14375,10 @@ "dev": true }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "supports-color": { "version": "7.2.0", @@ -14195,9 +14628,9 @@ } }, "jose": { - "version": "4.14.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.6.tgz", - "integrity": "sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==" + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==" }, "jquery": { "version": "3.6.0", @@ -14220,38 +14653,31 @@ } }, "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", + "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", + "requires": { + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "tough-cookie": "^4.1.4", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" } }, "jsesc": { @@ -14272,13 +14698,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "jsonfile": { "version": "6.1.0", @@ -14338,9 +14761,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -14800,14 +15223,14 @@ } }, "next-auth": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.23.1.tgz", - "integrity": "sha512-mL083z8KgRtlrIV6CDca2H1kduWJuK/3pTS0Fe2og15KOm4v2kkLGdSDfc2g+019aEBrJUT0pPW2Xx42ImN1WA==", + "version": "4.24.7", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.24.7.tgz", + "integrity": "sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==", "requires": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", "cookie": "^0.5.0", - "jose": "^4.11.4", + "jose": "^4.15.5", "oauth": "^0.9.15", "openid-client": "^5.4.0", "preact": "^10.6.3", @@ -14853,9 +15276,9 @@ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" }, "node-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.0.tgz", - "integrity": "sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw==", + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", "requires": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -14889,10 +15312,9 @@ } }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "oauth": { "version": "0.9.15", @@ -14995,10 +15417,12 @@ } }, "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } }, "path-exists": { "version": "4.0.0", @@ -15202,8 +15626,7 @@ "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pump": { "version": "3.0.0", @@ -15215,10 +15638,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "query-string": { "version": "7.1.1", @@ -15231,6 +15653,11 @@ "strict-uri-encode": "^2.0.0" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -15650,6 +16077,11 @@ "glob": "^7.1.3" } }, + "rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" + }, "rxjs": { "version": "5.5.12", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", @@ -15673,14 +16105,12 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "requires": { "xmlchars": "^2.2.0" } @@ -15725,9 +16155,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "serialize-javascript": { @@ -16011,8 +16441,7 @@ "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "tapable": { "version": "2.2.1", @@ -16123,23 +16552,22 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" } }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "requires": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" } }, "ts-node": { @@ -16290,9 +16718,10 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", + "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", + "dev": true }, "typescript-transform-paths": { "version": "3.4.6", @@ -16304,9 +16733,9 @@ } }, "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==" }, "underscore": { "version": "1.12.1", @@ -16314,10 +16743,9 @@ "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" }, "uri-js": { "version": "4.4.1", @@ -16333,6 +16761,15 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==" }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", @@ -16378,12 +16815,11 @@ } }, "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "requires": { - "xml-name-validator": "^3.0.0" + "xml-name-validator": "^5.0.0" } }, "walker": { @@ -16420,10 +16856,9 @@ "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==" }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, "webpack": { "version": "5.76.3", @@ -16480,12 +16915,11 @@ "peer": true }, "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "requires": { - "iconv-lite": "0.4.24" + "iconv-lite": "0.6.3" } }, "whatwg-fetch": { @@ -16494,20 +16928,17 @@ "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" }, "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" }, "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" } }, "which": { @@ -16519,9 +16950,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" }, "wrap-ansi": { "version": "7.0.0", @@ -16578,23 +17009,20 @@ } }, "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "requires": {} }, "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==" }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "y18n": { "version": "5.0.8", diff --git a/package.json b/package.json index 0c94bcd5..a4d2f163 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,11 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", + "@overture-stack/iobio-components": "^0.0.3", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", + "jsdom": "^24.1.1", "jsonwebtoken": "^8.5.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -39,7 +41,7 @@ "@types/http-proxy": "^1.17.11", "@types/lodash": "^4.14.182", "@types/node": "^17.0.35", - "@types/react": "^17.0.62", + "@types/react": "^17.0.80", "@types/react-dom": "^17.0.20", "@types/url-join": "^4.0.1", "extra-watch-webpack-plugin": "^1.0.3", From c7a54d5298b54c3acb91510786845138679875c7 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 6 Sep 2024 14:35:30 -0400 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=93=84=20#16=20Iobio=20Page=20Layou?= =?UTF-8?q?t=20(#209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Buttons + first Layout * Tweak Chart size * Adjust Container CSS * Update File Name * Toggle Button CSS * Toggle state * Table Markup / CSS * Updated Button colors w/ Icon placeholder * Style var cleanup * Display: flex / use flex-start * Missing read coverage toggle * Import context from Iobio Library * Add Icons * Reusable Functions + Variables * JSX rule names * Copyright corrections * Latest iobio package * isFileTableActive var name * Remove Excess Fragment * Remove empty line * Remove extra fragment (bam table) * Reorg imports * Updated Var names * Add emoty line --- components/pages/explorer/BamTable.tsx | 218 ++++++++++++++++------ components/pages/explorer/PageContent.tsx | 87 +++++++-- components/pages/explorer/RepoTable.tsx | 22 +-- components/theme/icons/file.tsx | 47 +++++ components/theme/icons/index.tsx | 4 + components/theme/icons/screen.tsx | 46 +++++ package-lock.json | 14 +- package.json | 2 +- 8 files changed, 344 insertions(+), 96 deletions(-) create mode 100644 components/theme/icons/file.tsx create mode 100644 components/theme/icons/screen.tsx diff --git a/components/pages/explorer/BamTable.tsx b/components/pages/explorer/BamTable.tsx index b624bf30..db9b9a5b 100644 --- a/components/pages/explorer/BamTable.tsx +++ b/components/pages/explorer/BamTable.tsx @@ -21,94 +21,200 @@ 'use client'; -import { useMemo, useEffect, useState } from 'react'; -import { css, useTheme } from '@emotion/react'; +import { css, Theme, useTheme } from '@emotion/react'; import { TableContextProvider } from '@overture-stack/arranger-components'; import { + BamKeys, + BamDisplayNames as displayNames, + histogramKeys, + defaultBamContext as initElementState, IobioCoverageDepth, IobioDataBroker, IobioHistogram, IobioPercentBox, - BamDisplayNames as displayNames, - percentKeys, - histogramKeys, isOutlierKey, + percentKeys, + type BamContext, + type BamKey, } from '@overture-stack/iobio-components/packages/iobio-react-components/'; +import { useEffect, useMemo, useState } from 'react'; import Loader from '@/components/Loader'; +import { getToggleButtonStyles } from './PageContent'; -const percentChartCss = css` - display: flex; - width: 100%; - height: 25vh; - justify-content: space-evenly; -`; +const ToggleButtonPanel = ({ + elementState, + updateElements, + theme, +}: { + elementState: BamContext; + updateElements: (key: BamKey, value: boolean) => void; + theme: Theme; +}) => ( +
+
+ Show / Hide:{' '} +
+
+ {BamKeys.map((key) => { + const active = elementState[key]; + const toggleButtonStyles = getToggleButtonStyles(active, theme); -const histoCss = css` - height: 40vh; - margin: 2vh; -`; + return ( + + ); + })} +
+
+); const BamTable = () => { const theme = useTheme(); + const [elementState, toggleElementState] = useState(initElementState); const [loading, setLoading] = useState(false); + // TODO: This will be replaced by File data found in Arranger and passed down through context / parent components + const fileUrl = 'https://s3.amazonaws.com/iobio/NA12878/NA12878.autsome.bam'; + const fileName = fileUrl.split('/').pop(); + useEffect(() => { setLoading(false); }, []); + const updateElements = (key: keyof BamContext, value: boolean) => { + const newState = { + ...elementState, + [key]: !value, + }; + toggleElementState(newState); + }; + return useMemo( () => ( -
- -

Bam.iobio

- - {loading ? ( - - ) : ( - <> -
+ +

{fileName}

+ + {loading ? ( + + ) : ( + <> + +
+
{percentKeys.map( (key) => - key && ( - + > + +
), )}
-
- +
+ {elementState['coverage_depth'] && ( +
+ +
+ )} + {histogramKeys.map( + (key) => + elementState[key] && ( +
+ +
+ ), + )}
- {histogramKeys.map((key) => ( -
- -
- ))} - - )} - -
+ + + )} + ), - [loading], + [loading, elementState], ); }; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index 1b75b2d8..680acbee 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -19,25 +19,37 @@ * */ -import { useEffect, useMemo, useState } from 'react'; -import { css, useTheme } from '@emotion/react'; +import { css, Theme, useTheme } from '@emotion/react'; import { useArrangerData } from '@overture-stack/arranger-components'; import { SQONType } from '@overture-stack/arranger-components/dist/DataContext/types.js'; import stringify from 'fast-json-stable-stringify'; import { isEqual } from 'lodash'; +import { useEffect, useMemo, useState } from 'react'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; +import { File, Screen } from '../../theme/icons'; import BamTable from './BamTable'; import Facets from './Facets'; -import RepoTable from './RepoTable'; import QueryBar from './QueryBar'; +import RepoTable from './RepoTable'; const tableTypes = { REPO_TABLE: 'repoTable', BAM_TABLE: 'bamTable', }; +export const getToggleButtonStyles = (active: boolean, theme: Theme) => + active + ? ` + background-color: ${theme.colors.white}; + color: ${theme.colors.accent}; + ` + : ` + background-color: ${theme.colors.accent}; + color: ${theme.colors.white}; + `; + const PageContent = () => { const theme = useTheme(); const [showSidebar, setShowSidebar] = useState(true); @@ -67,6 +79,15 @@ const PageContent = () => { firstRender || isEqual(sqon, currentFilters) || setCurrentFilters(sqon); }, [currentFilters, firstRender, setCurrentFilters, sqon]); + const isFileTableActive = tableType === tableTypes['REPO_TABLE']; + + const switchTable = () => { + const nextTableValue = isFileTableActive ? tableTypes['BAM_TABLE'] : tableTypes['REPO_TABLE']; + setTableType(nextTableValue); + }; + + const iconColor = isFileTableActive ? theme.colors.accent : theme.colors.white; + return useMemo( () => (
{ `} > - {/* WIP */} - - {tableType === tableTypes['REPO_TABLE'] ? : } +
+ +
+ {isFileTableActive ? : } +
diff --git a/components/pages/explorer/RepoTable.tsx b/components/pages/explorer/RepoTable.tsx index d5d9e782..962adcb7 100644 --- a/components/pages/explorer/RepoTable.tsx +++ b/components/pages/explorer/RepoTable.tsx @@ -188,23 +188,11 @@ const RepoTable = () => { return useMemo( () => ( - <> -
- - - - - - - + + +
+ + ), [], ); diff --git a/components/theme/icons/file.tsx b/components/theme/icons/file.tsx new file mode 100644 index 00000000..2edf7a03 --- /dev/null +++ b/components/theme/icons/file.tsx @@ -0,0 +1,47 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css } from '@emotion/react'; + +import { IconProps } from './types'; + +const File = ({ fill = '#003055', width = 12, height, style }: IconProps) => { + return ( + + + + ); +}; + +export default File; diff --git a/components/theme/icons/index.tsx b/components/theme/icons/index.tsx index fa8c5795..dfda9e00 100644 --- a/components/theme/icons/index.tsx +++ b/components/theme/icons/index.tsx @@ -29,11 +29,13 @@ import Illustration from './illustration'; import Avatar from './avatar'; import ChevronDown from './chevron_down'; import Download from './download'; +import File from './file'; import OvertureLogo from './overture_logo'; import OvertureLogoWithText from './overture_logo_with_text'; import OvertureUser from './overture_user'; import Checkmark from './checkmark'; import Spinner from './spinner'; +import Screen from './screen'; import Error from './error'; import Warning from './warning'; @@ -48,10 +50,12 @@ export { Avatar, ChevronDown, Download, + File, OvertureLogo, OvertureLogoWithText, OvertureUser, Checkmark, + Screen, Spinner, Error, Warning, diff --git a/components/theme/icons/screen.tsx b/components/theme/icons/screen.tsx new file mode 100644 index 00000000..3e599824 --- /dev/null +++ b/components/theme/icons/screen.tsx @@ -0,0 +1,46 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css } from '@emotion/react'; +import { IconProps } from './types'; + +const Screen = ({ fill = 'white', height, width = 16, style }: IconProps) => { + return ( + + + + ); +}; + +export default Screen; diff --git a/package-lock.json b/package-lock.json index 660750e5..bce7a381 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", - "@overture-stack/iobio-components": "^0.0.3", + "@overture-stack/iobio-components": "^0.0.4", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", @@ -1786,9 +1786,9 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "node_modules/@overture-stack/iobio-components": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.3.tgz", - "integrity": "sha512-/QywQv9tQbNli3+KhN6Zo7JoPPEeqWyfrySZZVMgiAQIjf9fPBC36rOv3JZ06CMS7ad/PcOXS9VnZoqAdIm/VA==" + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.4.tgz", + "integrity": "sha512-YuvSKHjqfPMm9v/2oVaaJOt52l61YNUubPW1HOes3zY0TNl5U/GQkecAJjmJPLxO6TBRBI3y5El82UJPl/BAiw==" }, "node_modules/@overture-stack/sqon-builder": { "version": "0.0.0", @@ -10976,9 +10976,9 @@ } }, "@overture-stack/iobio-components": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.3.tgz", - "integrity": "sha512-/QywQv9tQbNli3+KhN6Zo7JoPPEeqWyfrySZZVMgiAQIjf9fPBC36rOv3JZ06CMS7ad/PcOXS9VnZoqAdIm/VA==" + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.4.tgz", + "integrity": "sha512-YuvSKHjqfPMm9v/2oVaaJOt52l61YNUubPW1HOes3zY0TNl5U/GQkecAJjmJPLxO6TBRBI3y5El82UJPl/BAiw==" }, "@overture-stack/sqon-builder": { "version": "0.0.0", diff --git a/package.json b/package.json index a4d2f163..c2165af5 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", - "@overture-stack/iobio-components": "^0.0.3", + "@overture-stack/iobio-components": "^0.0.4", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", From 484c2c0d31323d81a78ebf4a146527cc891ebad8 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 30 Sep 2024 09:47:43 -0400 Subject: [PATCH 03/10] =?UTF-8?q?=F0=9F=93=81=20=20Feat/55=20Load=20Files?= =?UTF-8?q?=20(#210)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Buttons + first Layout * Tweak Chart size * Adjust Container CSS * Update File Name * Toggle Button CSS * Toggle state * Table Markup / CSS * Updated Button colors w/ Icon placeholder * Style var cleanup * Display: flex / use flex-start * Missing read coverage toggle * Import context from Iobio Library * Add Icons * Reusable Functions + Variables * JSX rule names * Copyright corrections * Latest iobio package * isFileTableActive var name * Remove Excess Fragment * Remove empty line * Remove extra fragment (bam table) * Reorg imports * Context Consumer / SelectedRows * Get Selected Bam File * Download URL Function + Config * Extend error message * Draft Score Download * Testing State * Add Metadata Type * Fix useMemo bug * Handle URL dependency * Working Demo Data Button * Major Reorg * Falsy Metadata keys * Table error handling * Updated Type Name * Improve Error Message * Brackets * Use ts * Separate Files * fileUrl Dependency * Improve getButtonStyles * Combine filter calls * Use .find & undefined * useContext * File Imports + Type Check * Remove 'return false' * Straighten out promise/await mix * Remove unused import * Updated Imports * Separate Demo Logic * Push to Error Page * Update conditional, router and variable * Move fileMetadata definition * Use Latest Package Version * Condense Error condition * Use positive conditional * Add nullish coalescing * Refactor selected Bam / disabled button * Updated Toggle Navigation Logic * Add Error Todo * Refactor Asyncs * Updated Async / Import * Null handling + remove extra 'if' * Score Url env.schema * Move Demo Data to its own file * Add missing await * Remove useMemo * Rename setElementState * Add env schema comment * Remove Unused useRouter * Change undefined syntax * Change Axios Promise handling * Return axios promise * Remove unused await * Prefer async for consistency * Fix catch syntax * Remove error testing * Type Narrowing * Move Demo File function * Update Loading Hook --- .env.schema | 3 + components/pages/explorer/BamTable.tsx | 231 +++++++++++-------- components/pages/explorer/DemoData.tsx | 84 +++++++ components/pages/explorer/PageContent.tsx | 74 ++++-- components/pages/explorer/RepoTable.tsx | 26 +-- components/pages/explorer/constants.ts | 31 +++ components/pages/explorer/fileTypes.ts | 44 ++++ components/pages/explorer/fileUtils.ts | 71 ++++++ components/pages/explorer/getButtonStyles.ts | 32 +++ components/pages/explorer/index.tsx | 10 +- global/config.ts | 2 + global/utils/constants.ts | 4 +- next.config.js | 1 + package-lock.json | 14 +- package.json | 2 +- 15 files changed, 482 insertions(+), 147 deletions(-) create mode 100644 components/pages/explorer/DemoData.tsx create mode 100644 components/pages/explorer/constants.ts create mode 100644 components/pages/explorer/fileTypes.ts create mode 100644 components/pages/explorer/fileUtils.ts create mode 100644 components/pages/explorer/getButtonStyles.ts diff --git a/.env.schema b/.env.schema index da56f5a4..42318638 100644 --- a/.env.schema +++ b/.env.schema @@ -28,3 +28,6 @@ NEXT_PUBLIC_KEYCLOAK_REALM=myrealm NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=webclient KEYCLOAK_CLIENT_SECRET=client_secret NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE=song + +# Score file access is needed for IOBIO and jBrowse components. This variable is not needed in vanilla Stage or Arranger +NEXT_PUBLIC_SCORE_API_URL= diff --git a/components/pages/explorer/BamTable.tsx b/components/pages/explorer/BamTable.tsx index db9b9a5b..71585341 100644 --- a/components/pages/explorer/BamTable.tsx +++ b/components/pages/explorer/BamTable.tsx @@ -37,10 +37,13 @@ import { type BamContext, type BamKey, } from '@overture-stack/iobio-components/packages/iobio-react-components/'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useState } from 'react'; import Loader from '@/components/Loader'; -import { getToggleButtonStyles } from './PageContent'; +import { DemoDataButton, demoFileMetadata } from './DemoData'; +import { FileMetaData, FileTableData } from './fileTypes'; +import { getFileMetaData, isFileMetaData } from './fileUtils'; +import { getToggleButtonStyles } from './getButtonStyles'; const ToggleButtonPanel = ({ elementState, @@ -99,122 +102,150 @@ const ToggleButtonPanel = ({ ); -const BamTable = () => { +const BamTable = ({ file }: { file?: FileTableData }) => { const theme = useTheme(); + const [fileMetaData, setFileMetaData] = useState(undefined); + const [elementState, setElementState] = useState(initElementState); + const [loading, setLoading] = useState(true); - const [elementState, toggleElementState] = useState(initElementState); - const [loading, setLoading] = useState(false); + const fileUrl = fileMetaData?.parts[0]?.url || null; - // TODO: This will be replaced by File data found in Arranger and passed down through context / parent components - const fileUrl = 'https://s3.amazonaws.com/iobio/NA12878/NA12878.autsome.bam'; - const fileName = fileUrl.split('/').pop(); + // Todo: Update fileName definition + const fileName = file?.id || fileUrl?.split('/').pop()?.split('?')[0]; - useEffect(() => { + const loadAndSetFile = async (file: FileTableData) => { + // TODO: Add Client Error Handling + const data = await getFileMetaData(file); + + if (isFileMetaData(data)) { + setFileMetaData(data); + } else { + setFileMetaData(undefined); + console.error('Error retrieving Score File Data'); + } setLoading(false); - }, []); + }; const updateElements = (key: keyof BamContext, value: boolean) => { const newState = { ...elementState, [key]: !value, }; - toggleElementState(newState); + setElementState(newState); }; - return useMemo( - () => ( - -

{fileName}

- - {loading ? ( - - ) : ( - <> - + useEffect(() => { + if (!fileUrl && file) { + // On page load, file table data is populated, + // but original file url needs to be requested from Score to use for Iobio analysis + loadAndSetFile(file); + } else if (file === null) { + // TODO: Add Client Error Handling + console.error('No File Data'); + } + }, [fileUrl, file]); + + return ( + + {/* TODO: Remove Demo Data Button */} + +

{fileName}

+ {loading || !fileUrl ? ( + + ) : ( + <> + + +
+
+ {percentKeys.map( + (key) => + elementState[key] && ( +
+ +
+ ), + )} +
-
- {percentKeys.map( - (key) => - elementState[key] && ( -
- -
- ), - )} -
-
- {elementState['coverage_depth'] && ( -
- -
- )} - {histogramKeys.map( - (key) => - elementState[key] && ( -
- -
- ), - )} -
+ {elementState['coverage_depth'] && ( +
+ +
+ )} + {histogramKeys.map( + (key) => + elementState[key] && ( +
+ +
+ ), + )}
- - )} - - ), - [loading, elementState], +
+ + )} +
); }; diff --git a/components/pages/explorer/DemoData.tsx b/components/pages/explorer/DemoData.tsx new file mode 100644 index 00000000..b67a8545 --- /dev/null +++ b/components/pages/explorer/DemoData.tsx @@ -0,0 +1,84 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* TODO: Remove Demo Data logic */ +import { css, Theme } from '@emotion/react'; +import { SetStateAction } from 'react'; +import { FileMetaData, FileTableData } from './fileTypes'; +import { getToggleButtonStyles } from './getButtonStyles'; + +export const demoFileMetadata: FileMetaData = { + objectId: 'demoFileData', + parts: [ + { + url: 'https://s3.amazonaws.com/iobio/NA12878/NA12878.autsome.bam', + }, + ], +}; + +export const DemoDataButton = ({ + isDemoData, + file, + loadAndSetFile, + loading, + setFileMetaData, + setLoading, + theme, +}: { + isDemoData: boolean; + file?: FileTableData; + loadAndSetFile: (file: FileTableData) => Promise; + loading: boolean; + setFileMetaData: (value: SetStateAction) => void; + setLoading: (value: SetStateAction) => void; + theme: Theme; +}) => { + const loadDemoFile = async () => { + setLoading(true); + setFileMetaData(undefined); + if (isDemoData && file) { + await loadAndSetFile(file); + } else { + setFileMetaData(demoFileMetadata); + } + }; + + if (isDemoData && loading) { + setLoading(false); + } + + return ( +
+ +
+ ); +}; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index 680acbee..dd8bae0a 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -19,9 +19,10 @@ * */ -import { css, Theme, useTheme } from '@emotion/react'; -import { useArrangerData } from '@overture-stack/arranger-components'; +import { css, useTheme } from '@emotion/react'; +import { useArrangerData, useTableContext } from '@overture-stack/arranger-components'; import { SQONType } from '@overture-stack/arranger-components/dist/DataContext/types.js'; +import { type UseTableContextProps } from '@overture-stack/arranger-components/dist/Table/types'; import stringify from 'fast-json-stable-stringify'; import { isEqual } from 'lodash'; import { useEffect, useMemo, useState } from 'react'; @@ -30,7 +31,11 @@ import useUrlParamState from '@/global/hooks/useUrlParamsState'; import { File, Screen } from '../../theme/icons'; import BamTable from './BamTable'; +import { BamFileExtensions } from './constants'; import Facets from './Facets'; +import { type FileTableData } from './fileTypes'; +import { rowIsFileData } from './fileUtils'; +import { getToggleButtonStyles } from './getButtonStyles'; import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; @@ -39,26 +44,23 @@ const tableTypes = { BAM_TABLE: 'bamTable', }; -export const getToggleButtonStyles = (active: boolean, theme: Theme) => - active - ? ` - background-color: ${theme.colors.white}; - color: ${theme.colors.accent}; - ` - : ` - background-color: ${theme.colors.accent}; - color: ${theme.colors.white}; - `; - const PageContent = () => { const theme = useTheme(); const [showSidebar, setShowSidebar] = useState(true); - const [tableType, setTableType] = useState(tableTypes['REPO_TABLE']); - const sidebarWidth = showSidebar ? theme.dimensions.facets.width : 0; // TODO: abstract this param handling into an Arranger integration. - const { sqon, setSQON } = useArrangerData({ callerName: 'Explorer-PageContent' }); + const contextProps: Partial = { + callerName: 'Explorer-PageContent', + }; + const arrangerData = useArrangerData(contextProps); + const { sqon, setSQON } = arrangerData; + + const tableContext = useTableContext(contextProps); + const { selectedRows, tableData } = tableContext; + const [tableType, setTableType] = useState(tableTypes['REPO_TABLE']); + const [currentBamFile, setCurrentBamFile] = useState(undefined); + const [firstRender, setFirstRender] = useState(true); const [currentFilters, setCurrentFilters] = useUrlParamState('filters', null, { prepare: (v) => v.replace('"field"', '"fieldName"'), @@ -79,14 +81,37 @@ const PageContent = () => { firstRender || isEqual(sqon, currentFilters) || setCurrentFilters(sqon); }, [currentFilters, firstRender, setCurrentFilters, sqon]); - const isFileTableActive = tableType === tableTypes['REPO_TABLE']; + // Disable Visualization button unless only 1 BAM Compatible file is selected + // TODO: Add User Error messaging + useEffect(() => { + const oneFileSelected = selectedRows.length === 1; + if (oneFileSelected) { + const fileData = tableData.filter(rowIsFileData) as FileTableData[]; + const selectedBamFile = fileData.find((rowData) => { + const { id, file_type } = rowData; + const idMatch = id === selectedRows[0]; + const isBamFile = Boolean(file_type && BamFileExtensions.includes(file_type)); + return idMatch && isBamFile; + }); + + setCurrentBamFile(selectedBamFile); + } else { + setCurrentBamFile(undefined); + } + }, [selectedRows]); const switchTable = () => { const nextTableValue = isFileTableActive ? tableTypes['BAM_TABLE'] : tableTypes['REPO_TABLE']; setTableType(nextTableValue); }; - const iconColor = isFileTableActive ? theme.colors.accent : theme.colors.white; + const isFileTableActive = tableType === tableTypes['REPO_TABLE']; + const isBamFileSelected = Boolean(currentBamFile); + const iconColor = isFileTableActive + ? isBamFileSelected + ? theme.colors.accent + : theme.colors.grey_4 + : theme.colors.white; return useMemo( () => ( @@ -163,12 +188,21 @@ const PageContent = () => { margin-bottom: 8px; `} > + {/* TODO: In current state, this button should not be disabled when Bam Visualizer is active, to allow navigation back to File Table. + Final UI mockups will change how navigation and disabled states are handled. + */} - {isFileTableActive ? : } + {isFileTableActive ? : } ), - [tableType], + [tableType, tableContext], ); }; diff --git a/components/pages/explorer/RepoTable.tsx b/components/pages/explorer/RepoTable.tsx index 962adcb7..94748f3f 100644 --- a/components/pages/explorer/RepoTable.tsx +++ b/components/pages/explorer/RepoTable.tsx @@ -19,23 +19,17 @@ * */ -import { useMemo } from 'react'; import { css, useTheme } from '@emotion/react'; -import { - Pagination, - Table, - TableContextProvider, - useArrangerTheme, - Toolbar, -} from '@overture-stack/arranger-components'; +import { Pagination, Table, Toolbar, useArrangerTheme } from '@overture-stack/arranger-components'; import { CustomExporterInput } from '@overture-stack/arranger-components/dist/Table/DownloadButton/types'; import { UseThemeContextProps } from '@overture-stack/arranger-components/dist/ThemeContext/types'; +import { useMemo } from 'react'; import urlJoin from 'url-join'; -import { getConfig } from '@/global/config'; import StyledLink from '@/components/Link'; import { DMSThemeInterface } from '@/components/theme'; import { Download } from '@/components/theme/icons'; +import { getConfig } from '@/global/config'; import { INTERNAL_API_PROXY } from '@/global/utils/constants'; const getTableConfigs = ({ @@ -182,17 +176,21 @@ const RepoTable = () => { }, ]; - useArrangerTheme( - getTableConfigs({ apiHost: INTERNAL_API_PROXY.ARRANGER, customExporters, theme }), - ); + const tableConfig = getTableConfigs({ + apiHost: INTERNAL_API_PROXY.ARRANGER, + customExporters, + theme, + }); + + useArrangerTheme(tableConfig); return useMemo( () => ( - + <>
- + ), [], ); diff --git a/components/pages/explorer/constants.ts b/components/pages/explorer/constants.ts new file mode 100644 index 00000000..d896937b --- /dev/null +++ b/components/pages/explorer/constants.ts @@ -0,0 +1,31 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +const bamFileExtension = 'BAM'; +const cramFileExtension = 'CRAM'; + +export const BamFileExtensions = [bamFileExtension, cramFileExtension]; + +export const baseScoreDownloadParams = { + external: 'true', + offset: '0', + 'User-Agent': 'unknown', +}; diff --git a/components/pages/explorer/fileTypes.ts b/components/pages/explorer/fileTypes.ts new file mode 100644 index 00000000..7d3bed1d --- /dev/null +++ b/components/pages/explorer/fileTypes.ts @@ -0,0 +1,44 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +export type FileMetaData = { + objectId: string; + objectKey?: string; + objectMd5?: string; + objectSize?: number; + parts: { + md5?: string | null; + offset?: number; + partNumber?: number; + partSize?: number; + url: string; + }[]; + uploadId?: string; +}; + +export type ScoreDownloadParams = { + 'User-Agent': string; + external: string; + length: string; + offset: string; +}; + +export type FileTableData = { id: string; file_type?: string; file: { size: number } }; diff --git a/components/pages/explorer/fileUtils.ts b/components/pages/explorer/fileUtils.ts new file mode 100644 index 00000000..71c54847 --- /dev/null +++ b/components/pages/explorer/fileUtils.ts @@ -0,0 +1,71 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { getConfig } from '@/global/config'; +import { SCORE_API_DOWNLOAD_PATH } from '@/global/utils/constants'; +import axios from 'axios'; +import urlJoin from 'url-join'; +import { baseScoreDownloadParams } from './constants'; +import { type FileMetaData, type FileTableData, type ScoreDownloadParams } from './fileTypes'; + +// Type Check for Table Data unknown[] +export const rowIsFileData = (row: unknown): row is FileTableData => { + const rowData = row as FileTableData; + return Boolean(rowData?.id && rowData?.file_type); +}; + +// Type Check for Score Data response +export const isFileMetaData = (file: any): file is FileMetaData => { + return Boolean((file as FileMetaData)?.objectId && (file as FileMetaData)?.parts[0]?.url); +}; + +export const getScoreDownloadUrls = async (fileData: FileTableData) => { + const { NEXT_PUBLIC_SCORE_API_URL } = getConfig(); + const length = fileData.file?.size?.toString(); + const object_id = fileData.id; + + const scoreDownloadParams: ScoreDownloadParams = { + ...baseScoreDownloadParams, + length, + }; + const urlParams = new URLSearchParams(scoreDownloadParams).toString(); + + try { + const response = await axios.get( + urlJoin(NEXT_PUBLIC_SCORE_API_URL, SCORE_API_DOWNLOAD_PATH, object_id, `?${urlParams}`), + { + headers: { accept: '*/*' }, + }, + ); + + if (response.status === 200) { + return response.data; + } + } catch (err: unknown) { + console.error(`Error at getScoreDownloadUrls with object_id ${object_id}`); + console.error(err); + } +}; + +export const getFileMetaData = async (selectedBamFile: FileTableData) => { + const fileMetaData = await getScoreDownloadUrls(selectedBamFile); + return fileMetaData; +}; diff --git a/components/pages/explorer/getButtonStyles.ts b/components/pages/explorer/getButtonStyles.ts new file mode 100644 index 00000000..238f5e61 --- /dev/null +++ b/components/pages/explorer/getButtonStyles.ts @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { Theme } from '@emotion/react'; + +export const getToggleButtonStyles = (active: boolean, theme: Theme) => { + const { + colors: { accent, white }, + } = theme; + return ` + background-color: ${active ? white : accent}; + color: ${active ? accent : white}; + `; +}; diff --git a/components/pages/explorer/index.tsx b/components/pages/explorer/index.tsx index 64142cb6..99d0904e 100644 --- a/components/pages/explorer/index.tsx +++ b/components/pages/explorer/index.tsx @@ -19,16 +19,16 @@ * */ -import { useEffect, useState } from 'react'; import { css, useTheme } from '@emotion/react'; -import { ArrangerDataProvider } from '@overture-stack/arranger-components'; +import { ArrangerDataProvider, TableContextProvider } from '@overture-stack/arranger-components'; +import { useEffect, useState } from 'react'; +import { getConfig } from '../../../global/config'; import ErrorNotification from '../../ErrorNotification'; import Loader from '../../Loader'; import PageLayout from '../../PageLayout'; import createArrangerFetcher from '../../utils/arrangerFetcher'; import sleep from '../../utils/sleep'; -import { getConfig } from '../../../global/config'; import { RepoFiltersType } from './sqonTypes'; import getConfigError from './getConfigError'; @@ -149,7 +149,9 @@ const RepositoryPage = () => { }, }} > - + + + )} diff --git a/global/config.ts b/global/config.ts index 2a7f25ea..0cafbe3c 100644 --- a/global/config.ts +++ b/global/config.ts @@ -47,6 +47,7 @@ export const getConfig = () => { NEXT_PUBLIC_KEYCLOAK_REALM: publicConfig.NEXT_PUBLIC_KEYCLOAK_REALM || '', NEXT_PUBLIC_LAB_NAME: publicConfig.NEXT_PUBLIC_LAB_NAME || 'Overture Stage UI', NEXT_PUBLIC_LOGO_FILENAME: publicConfig.NEXT_PUBLIC_LOGO_FILENAME, + NEXT_PUBLIC_SCORE_API_URL: publicConfig.NEXT_PUBLIC_SCORE_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: publicConfig.NEXT_PUBLIC_SSO_PROVIDERS || '', NEXT_PUBLIC_UI_VERSION: publicConfig.NEXT_PUBLIC_UI_VERSION || '', SESSION_ENCRYPTION_SECRET: process.env.SESSION_ENCRYPTION_SECRET || '', @@ -70,6 +71,7 @@ export const getConfig = () => { NEXT_PUBLIC_KEYCLOAK_REALM: string; NEXT_PUBLIC_LAB_NAME: string; NEXT_PUBLIC_LOGO_FILENAME: string; + NEXT_PUBLIC_SCORE_API_URL: string; NEXT_PUBLIC_SSO_PROVIDERS: string; NEXT_PUBLIC_UI_VERSION: string; SESSION_ENCRYPTION_SECRET: string; diff --git a/global/utils/constants.ts b/global/utils/constants.ts index d003c98c..bca084ac 100644 --- a/global/utils/constants.ts +++ b/global/utils/constants.ts @@ -35,9 +35,11 @@ export const USER_PATH = '/user'; export const LOGIN_PATH = '/login'; // external docs links -export const HELP_URL = 'https://github.com/overture-stack/stage/issues/new/choose' +export const HELP_URL = 'https://github.com/overture-stack/stage/issues/new/choose'; export const EMAIL_SETTING_URL = 'admin@example.com'; +export const SCORE_API_DOWNLOAD_PATH = '/download'; + // keycloak export const KEYCLOAK_URL_ISSUER = urlJoin( NEXT_PUBLIC_KEYCLOAK_HOST, diff --git a/next.config.js b/next.config.js index f517fbd2..31873728 100644 --- a/next.config.js +++ b/next.config.js @@ -78,6 +78,7 @@ module.exports = withPlugins([withTranspileModules], { NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE: process.env.NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE, NEXT_PUBLIC_LAB_NAME: process.env.NEXT_PUBLIC_LAB_NAME, NEXT_PUBLIC_LOGO_FILENAME: process.env.NEXT_PUBLIC_LOGO_FILENAME, + NEXT_PUBLIC_SCORE_API_URL: process.env.NEXT_PUBLIC_SCORE_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: process.env.NEXT_PUBLIC_SSO_PROVIDERS, NEXT_PUBLIC_UI_VERSION: process.env.npm_package_version, }, diff --git a/package-lock.json b/package-lock.json index bce7a381..e8e137c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", - "@overture-stack/iobio-components": "^0.0.4", + "@overture-stack/iobio-components": "^0.0.5", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", @@ -1786,9 +1786,9 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "node_modules/@overture-stack/iobio-components": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.4.tgz", - "integrity": "sha512-YuvSKHjqfPMm9v/2oVaaJOt52l61YNUubPW1HOes3zY0TNl5U/GQkecAJjmJPLxO6TBRBI3y5El82UJPl/BAiw==" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.5.tgz", + "integrity": "sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==" }, "node_modules/@overture-stack/sqon-builder": { "version": "0.0.0", @@ -10976,9 +10976,9 @@ } }, "@overture-stack/iobio-components": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.4.tgz", - "integrity": "sha512-YuvSKHjqfPMm9v/2oVaaJOt52l61YNUubPW1HOes3zY0TNl5U/GQkecAJjmJPLxO6TBRBI3y5El82UJPl/BAiw==" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.5.tgz", + "integrity": "sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==" }, "@overture-stack/sqon-builder": { "version": "0.0.0", diff --git a/package.json b/package.json index c2165af5..456e6ac9 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.32", - "@overture-stack/iobio-components": "^0.0.4", + "@overture-stack/iobio-components": "^0.0.5", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", From 571a8a020a44fdfa11c30bdc0f9cba33b4b129c5 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 2 Jun 2025 17:23:19 -0400 Subject: [PATCH 04/10] #67 / File Metadata Table (#242) * Stub Stats Table, separate files * Very Basic Table * Updated file table properties * Improved StatsTable CSS * Reorg components, use theme colors, add selected count * Show / Hide Button * Use span -/+ icon * Unused DemoStats * 1px adjustment, Remove nested span CSS * Header padding * File Size Label, get data function * Rename function * PR feedback, tableUtil file --- .../explorer/{ => BamTable}/DemoData.tsx | 4 +- .../pages/explorer/BamTable/StatsTable.tsx | 177 ++++++++++++++++++ .../explorer/BamTable/ToggleButtonPanel.tsx | 87 +++++++++ .../{BamTable.tsx => BamTable/index.tsx} | 91 ++------- .../tableUtils.tsx} | 25 +++ components/pages/explorer/PageContent.tsx | 4 +- components/pages/explorer/fileTypes.ts | 33 +++- 7 files changed, 340 insertions(+), 81 deletions(-) rename components/pages/explorer/{ => BamTable}/DemoData.tsx (95%) create mode 100644 components/pages/explorer/BamTable/StatsTable.tsx create mode 100644 components/pages/explorer/BamTable/ToggleButtonPanel.tsx rename components/pages/explorer/{BamTable.tsx => BamTable/index.tsx} (74%) rename components/pages/explorer/{getButtonStyles.ts => BamTable/tableUtils.tsx} (59%) diff --git a/components/pages/explorer/DemoData.tsx b/components/pages/explorer/BamTable/DemoData.tsx similarity index 95% rename from components/pages/explorer/DemoData.tsx rename to components/pages/explorer/BamTable/DemoData.tsx index b67a8545..dbd33f6c 100644 --- a/components/pages/explorer/DemoData.tsx +++ b/components/pages/explorer/BamTable/DemoData.tsx @@ -22,8 +22,8 @@ /* TODO: Remove Demo Data logic */ import { css, Theme } from '@emotion/react'; import { SetStateAction } from 'react'; -import { FileMetaData, FileTableData } from './fileTypes'; -import { getToggleButtonStyles } from './getButtonStyles'; +import { FileMetaData, FileTableData } from '../fileTypes'; +import { getToggleButtonStyles } from './tableUtils'; export const demoFileMetadata: FileMetaData = { objectId: 'demoFileData', diff --git a/components/pages/explorer/BamTable/StatsTable.tsx b/components/pages/explorer/BamTable/StatsTable.tsx new file mode 100644 index 00000000..69b83271 --- /dev/null +++ b/components/pages/explorer/BamTable/StatsTable.tsx @@ -0,0 +1,177 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css, useTheme } from '@emotion/react'; +import { useTableContext } from '@overture-stack/arranger-components'; +import { useState } from 'react'; + +import { type FileTableData } from '../fileTypes'; +import { getTableData } from './tableUtils'; + +export const StatsTable = ({ file, fileId = '' }: { file: FileTableData; fileId?: string }) => { + const [showTable, setShowTable] = useState(true); + const { selectedRows } = useTableContext({ callerName: 'File Metadata Table' }); + const theme = useTheme(); + const { fileAccess, fileDataType, fileDonorId, fileFormat, fileStudy, fileSize, fileStrategy } = + getTableData(file); + + return ( + <> +
+ + {selectedRows.length} File{`${selectedRows.length > 1 ? 's' : ''}`} Selected + + +
+ {showTable ? ( +
+
+ + + + + + + + + + + + + + + + + + + + + ) : null} + + ); +}; diff --git a/components/pages/explorer/BamTable/ToggleButtonPanel.tsx b/components/pages/explorer/BamTable/ToggleButtonPanel.tsx new file mode 100644 index 00000000..c155421a --- /dev/null +++ b/components/pages/explorer/BamTable/ToggleButtonPanel.tsx @@ -0,0 +1,87 @@ +/* + * + * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css, Theme } from '@emotion/react'; +import { + BamKeys, + BamDisplayNames as displayNames, + type BamContext, + type BamKey, +} from '@overture-stack/iobio-components/packages/iobio-react-components/'; + +import { getToggleButtonStyles } from './tableUtils'; + +export const ToggleButtonPanel = ({ + elementState, + updateElements, + theme, +}: { + elementState: BamContext; + updateElements: (key: BamKey, value: boolean) => void; + theme: Theme; +}) => ( +
+
+ Show / Hide:{' '} +
+
+ {BamKeys.map((key) => { + const active = elementState[key]; + const toggleButtonStyles = getToggleButtonStyles(active, theme); + + return ( + + ); + })} +
+
+); diff --git a/components/pages/explorer/BamTable.tsx b/components/pages/explorer/BamTable/index.tsx similarity index 74% rename from components/pages/explorer/BamTable.tsx rename to components/pages/explorer/BamTable/index.tsx index 71585341..2ba8e6d5 100644 --- a/components/pages/explorer/BamTable.tsx +++ b/components/pages/explorer/BamTable/index.tsx @@ -21,10 +21,8 @@ 'use client'; -import { css, Theme, useTheme } from '@emotion/react'; -import { TableContextProvider } from '@overture-stack/arranger-components'; +import { css, useTheme } from '@emotion/react'; import { - BamKeys, BamDisplayNames as displayNames, histogramKeys, defaultBamContext as initElementState, @@ -35,72 +33,15 @@ import { isOutlierKey, percentKeys, type BamContext, - type BamKey, } from '@overture-stack/iobio-components/packages/iobio-react-components/'; import { useEffect, useState } from 'react'; import Loader from '@/components/Loader'; +import { FileMetaData, FileTableData } from '../fileTypes'; +import { getFileMetaData, isFileMetaData } from '../fileUtils'; import { DemoDataButton, demoFileMetadata } from './DemoData'; -import { FileMetaData, FileTableData } from './fileTypes'; -import { getFileMetaData, isFileMetaData } from './fileUtils'; -import { getToggleButtonStyles } from './getButtonStyles'; - -const ToggleButtonPanel = ({ - elementState, - updateElements, - theme, -}: { - elementState: BamContext; - updateElements: (key: BamKey, value: boolean) => void; - theme: Theme; -}) => ( -
-
- Show / Hide:{' '} -
-
- {BamKeys.map((key) => { - const active = elementState[key]; - const toggleButtonStyles = getToggleButtonStyles(active, theme); - - return ( - - ); - })} -
-
-); +import { ToggleButtonPanel } from './ToggleButtonPanel'; +import { StatsTable } from './StatsTable'; const BamTable = ({ file }: { file?: FileTableData }) => { const theme = useTheme(); @@ -109,9 +50,7 @@ const BamTable = ({ file }: { file?: FileTableData }) => { const [loading, setLoading] = useState(true); const fileUrl = fileMetaData?.parts[0]?.url || null; - - // Todo: Update fileName definition - const fileName = file?.id || fileUrl?.split('/').pop()?.split('?')[0]; + const fileId = file?.id || fileUrl?.split('/').pop()?.split('?')[0]; const loadAndSetFile = async (file: FileTableData) => { // TODO: Add Client Error Handling @@ -144,9 +83,8 @@ const BamTable = ({ file }: { file?: FileTableData }) => { console.error('No File Data'); } }, [fileUrl, file]); - return ( - + <> {/* TODO: Remove Demo Data Button */} { setLoading={setLoading} theme={theme} /> -

{fileName}

+

{fileId}

+ {loading || !fileUrl ? ( ) : ( <> -
{
)} -
+ {file && } + ); }; diff --git a/components/pages/explorer/getButtonStyles.ts b/components/pages/explorer/BamTable/tableUtils.tsx similarity index 59% rename from components/pages/explorer/getButtonStyles.ts rename to components/pages/explorer/BamTable/tableUtils.tsx index 238f5e61..e6617d49 100644 --- a/components/pages/explorer/getButtonStyles.ts +++ b/components/pages/explorer/BamTable/tableUtils.tsx @@ -19,8 +19,33 @@ * */ +import { type FileTableData } from '../fileTypes'; import { Theme } from '@emotion/react'; +const getFileSizeString = (numFileSize: number) => + numFileSize < 10 ** 3 + ? `${numFileSize} bytes` + : numFileSize < 10 ** 6 + ? `${(numFileSize / 10 ** 3).toFixed(2)} KB` + : numFileSize < 10 ** 9 + ? `${(numFileSize / 10 ** 6).toFixed(2)} MB` + : numFileSize < 10 ** 12 + ? `${(numFileSize / 10 ** 9).toFixed(2)} GB` + : `${(numFileSize / 10 ** 12).toFixed(2)} TB`; + +export const getTableData = (file: FileTableData) => { + const fileAccess = file?.file_access; + const fileDataType = file?.data_type; + const fileDonorId = file?.donors?.hits.edges[0].node.submitter_donor_id; + const fileFormat = file?.file_type; + const fileStudy = file?.analysis?.collaborator?.hits.edges[0].node.name; + const fileStrategy = file?.analysis?.experiment?.experimentalStrategy; + const numFileSize = file?.file.size ?? 0; + const fileSize = getFileSizeString(numFileSize); + + return { fileAccess, fileDataType, fileDonorId, fileFormat, fileStudy, fileStrategy, fileSize }; +}; + export const getToggleButtonStyles = (active: boolean, theme: Theme) => { const { colors: { accent, white }, diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index dd8bae0a..d61b26aa 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -30,12 +30,12 @@ import { useEffect, useMemo, useState } from 'react'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; import { File, Screen } from '../../theme/icons'; -import BamTable from './BamTable'; +import BamTable from './BamTable/index'; import { BamFileExtensions } from './constants'; import Facets from './Facets'; import { type FileTableData } from './fileTypes'; import { rowIsFileData } from './fileUtils'; -import { getToggleButtonStyles } from './getButtonStyles'; +import { getToggleButtonStyles } from './BamTable/tableUtils'; import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; diff --git a/components/pages/explorer/fileTypes.ts b/components/pages/explorer/fileTypes.ts index 7d3bed1d..b3d2c69e 100644 --- a/components/pages/explorer/fileTypes.ts +++ b/components/pages/explorer/fileTypes.ts @@ -41,4 +41,35 @@ export type ScoreDownloadParams = { offset: string; }; -export type FileTableData = { id: string; file_type?: string; file: { size: number } }; +export type FileTableData = { + id: string; + analysis?: { + collaborator?: { + hits: { + edges: [ + { + node: { + name: string; + }; + }, + ]; + }; + }; + experiment?: { experimentalStrategy: string; platform: string }; + }; + data_type?: string; + donors?: { + hits: { + edges: [ + { + node: { + submitter_donor_id: string; + }; + }, + ]; + }; + }; + file_access?: string; + file_type?: string; + file: { size: number }; +}; From 6b666270e75895bc6b0b51d9320858b85b3bc4fa Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 11 Jun 2025 17:20:36 -0400 Subject: [PATCH 05/10] =?UTF-8?q?#65=20=F0=9F=92=87=20Feat:=20Header=20But?= =?UTF-8?q?tons=20&=20CSS=20Refinements=20(#247)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move DemoData button out of header * Add + Organize Buttons * FullScreen Button Added * Updated Header Button Styles * Fix Icon alignments * Fixed Full Screen Icon * Updated Table Button Colors * Fixed table button disabled states * Position CountDisplay & page elements, Adjust button proportions * Remove Todo comment * Renamed BarGraph icon, 2025 Copyright * Move TableHeader to its own file, tweak button borders * Separate header buttons / toggle button definitions * Working FullScreen button, page reorg & icon color fixes * Use explicit return; additional centering * Updated toggle panel prop naming * Refactor buttons & theme * BarGraph default export fixed * Improved button sizing to fit table + naming * 1px adjustment Count Display tweak * Last detail, corrected button padding top/bottom * Merge TableHeader & Table Buttons * Use individual Footer components --- .../pages/explorer/BamTable/DemoData.tsx | 20 +- .../explorer/BamTable/ToggleButtonPanel.tsx | 111 ++++---- components/pages/explorer/BamTable/index.tsx | 22 +- .../pages/explorer/BamTable/tableUtils.tsx | 11 - components/pages/explorer/HeaderButtons.tsx | 136 +++++++++ components/pages/explorer/PageContent.tsx | 99 ++----- components/pages/explorer/RepoTable.tsx | 146 +++------- components/pages/explorer/TableHeader.tsx | 207 ++++++++++++++ components/theme/icons/barGraph.tsx | 266 ++++++++++++++++++ components/theme/icons/fullScreen.tsx | 44 +++ components/theme/icons/index.tsx | 4 + 11 files changed, 806 insertions(+), 260 deletions(-) create mode 100644 components/pages/explorer/HeaderButtons.tsx create mode 100644 components/pages/explorer/TableHeader.tsx create mode 100644 components/theme/icons/barGraph.tsx create mode 100644 components/theme/icons/fullScreen.tsx diff --git a/components/pages/explorer/BamTable/DemoData.tsx b/components/pages/explorer/BamTable/DemoData.tsx index dbd33f6c..f9c75680 100644 --- a/components/pages/explorer/BamTable/DemoData.tsx +++ b/components/pages/explorer/BamTable/DemoData.tsx @@ -20,10 +20,10 @@ */ /* TODO: Remove Demo Data logic */ -import { css, Theme } from '@emotion/react'; +import { css, useTheme } from '@emotion/react'; import { SetStateAction } from 'react'; import { FileMetaData, FileTableData } from '../fileTypes'; -import { getToggleButtonStyles } from './tableUtils'; +import { getHeaderButtonStyles } from '../HeaderButtons'; export const demoFileMetadata: FileMetaData = { objectId: 'demoFileData', @@ -41,7 +41,6 @@ export const DemoDataButton = ({ loading, setFileMetaData, setLoading, - theme, }: { isDemoData: boolean; file?: FileTableData; @@ -49,8 +48,11 @@ export const DemoDataButton = ({ loading: boolean; setFileMetaData: (value: SetStateAction) => void; setLoading: (value: SetStateAction) => void; - theme: Theme; }) => { + const { + colors: { accent }, + } = useTheme(); + const loadDemoFile = async () => { setLoading(true); setFileMetaData(undefined); @@ -66,14 +68,18 @@ export const DemoDataButton = ({ } return ( -
+
- ); - })} + return ( + + ); + })} +
- -); + ); +}; diff --git a/components/pages/explorer/BamTable/index.tsx b/components/pages/explorer/BamTable/index.tsx index 2ba8e6d5..baaee2c3 100644 --- a/components/pages/explorer/BamTable/index.tsx +++ b/components/pages/explorer/BamTable/index.tsx @@ -51,7 +51,6 @@ const BamTable = ({ file }: { file?: FileTableData }) => { const fileUrl = fileMetaData?.parts[0]?.url || null; const fileId = file?.id || fileUrl?.split('/').pop()?.split('?')[0]; - const loadAndSetFile = async (file: FileTableData) => { // TODO: Add Client Error Handling const data = await getFileMetaData(file); @@ -85,6 +84,8 @@ const BamTable = ({ file }: { file?: FileTableData }) => { }, [fileUrl, file]); return ( <> +

{fileId}

+ {/* TODO: Remove Demo Data Button */} { loading={loading} setFileMetaData={setFileMetaData} setLoading={setLoading} - theme={theme} - /> -

{fileId}

- {loading || !fileUrl ? ( @@ -131,11 +125,7 @@ const BamTable = ({ file }: { file?: FileTableData }) => { `} key={key} > - + ), )} @@ -171,11 +161,7 @@ const BamTable = ({ file }: { file?: FileTableData }) => { `} key={key} > - + ), )} diff --git a/components/pages/explorer/BamTable/tableUtils.tsx b/components/pages/explorer/BamTable/tableUtils.tsx index e6617d49..563c3801 100644 --- a/components/pages/explorer/BamTable/tableUtils.tsx +++ b/components/pages/explorer/BamTable/tableUtils.tsx @@ -20,7 +20,6 @@ */ import { type FileTableData } from '../fileTypes'; -import { Theme } from '@emotion/react'; const getFileSizeString = (numFileSize: number) => numFileSize < 10 ** 3 @@ -45,13 +44,3 @@ export const getTableData = (file: FileTableData) => { return { fileAccess, fileDataType, fileDonorId, fileFormat, fileStudy, fileStrategy, fileSize }; }; - -export const getToggleButtonStyles = (active: boolean, theme: Theme) => { - const { - colors: { accent, white }, - } = theme; - return ` - background-color: ${active ? white : accent}; - color: ${active ? accent : white}; - `; -}; diff --git a/components/pages/explorer/HeaderButtons.tsx b/components/pages/explorer/HeaderButtons.tsx new file mode 100644 index 00000000..5449ed78 --- /dev/null +++ b/components/pages/explorer/HeaderButtons.tsx @@ -0,0 +1,136 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css, useTheme } from '@emotion/react'; +import { ChevronDown, FullScreen, BarGraph } from '../../theme/icons'; + +export const getHeaderButtonStyles = ({ active, accent }: { active: boolean; accent: string }) => { + const { + colors: { white }, + } = useTheme(); + return ` + border: 1px solid ${accent}; + border-radius: 0.5rem; + display: inline-flex; + font-size: 14px; + line-height: 1.3rem; + min-width: fit-content; + padding: 0.3rem 0.8rem; + background-color: ${active ? white : accent}; + color: ${active ? accent : white}; + `; +}; + +export const FullScreenButton = ({ + isFullScreen, + setFullScreen, +}: { + isFullScreen: boolean; + setFullScreen: () => void; +}) => { + const { + colors: { accent, white }, + } = useTheme(); + return ( + + ); +}; + +export const BamFileButton = ({ + iconColor, + isBamFileSelected, + isFileTableActive, + switchTable, +}: { + iconColor: string; + isBamFileSelected: boolean; + isFileTableActive: boolean; + switchTable: () => void; +}) => { + const { + colors: { accent2, grey_1, grey_4 }, + } = useTheme(); + return ( + + ); +}; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index d61b26aa..48302746 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -25,19 +25,18 @@ import { SQONType } from '@overture-stack/arranger-components/dist/DataContext/t import { type UseTableContextProps } from '@overture-stack/arranger-components/dist/Table/types'; import stringify from 'fast-json-stable-stringify'; import { isEqual } from 'lodash'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; -import { File, Screen } from '../../theme/icons'; import BamTable from './BamTable/index'; import { BamFileExtensions } from './constants'; import Facets from './Facets'; import { type FileTableData } from './fileTypes'; import { rowIsFileData } from './fileUtils'; -import { getToggleButtonStyles } from './BamTable/tableUtils'; import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; +import TableHeader from './TableHeader'; const tableTypes = { REPO_TABLE: 'repoTable', @@ -48,20 +47,18 @@ const PageContent = () => { const theme = useTheme(); const [showSidebar, setShowSidebar] = useState(true); const sidebarWidth = showSidebar ? theme.dimensions.facets.width : 0; - // TODO: abstract this param handling into an Arranger integration. const contextProps: Partial = { callerName: 'Explorer-PageContent', }; const arrangerData = useArrangerData(contextProps); const { sqon, setSQON } = arrangerData; - const tableContext = useTableContext(contextProps); const { selectedRows, tableData } = tableContext; const [tableType, setTableType] = useState(tableTypes['REPO_TABLE']); const [currentBamFile, setCurrentBamFile] = useState(undefined); - const [firstRender, setFirstRender] = useState(true); + const [isFullScreen, setFullscreen] = useState(Boolean(document.fullscreenElement)); const [currentFilters, setCurrentFilters] = useUrlParamState('filters', null, { prepare: (v) => v.replace('"field"', '"fieldName"'), deSerialize: (v) => { @@ -69,6 +66,14 @@ const PageContent = () => { }, serialize: (v) => (v ? stringify(v) : ''), }); + const isFileTableActive = tableType === tableTypes['REPO_TABLE']; + const isBamFileSelected = Boolean(currentBamFile); + const pageContentRef = useRef(null); + const iconColor = isFileTableActive + ? isBamFileSelected + ? theme.colors.accent + : theme.colors.grey_4 + : theme.colors.white; useEffect(() => { if (firstRender) { @@ -82,7 +87,6 @@ const PageContent = () => { }, [currentFilters, firstRender, setCurrentFilters, sqon]); // Disable Visualization button unless only 1 BAM Compatible file is selected - // TODO: Add User Error messaging useEffect(() => { const oneFileSelected = selectedRows.length === 1; if (oneFileSelected) { @@ -105,13 +109,15 @@ const PageContent = () => { setTableType(nextTableValue); }; - const isFileTableActive = tableType === tableTypes['REPO_TABLE']; - const isBamFileSelected = Boolean(currentBamFile); - const iconColor = isFileTableActive - ? isBamFileSelected - ? theme.colors.accent - : theme.colors.grey_4 - : theme.colors.white; + const toggleFullScreen = () => { + if (!isFullScreen && pageContentRef.current) { + pageContentRef.current.requestFullscreen(); + setFullscreen(true); + } else { + document.exitFullscreen(); + setFullscreen(false); + } + }; return useMemo( () => ( @@ -138,7 +144,6 @@ const PageContent = () => { > Show */} -
File IDDonor IDStudyData TypeStrategyFormatSizeFile Access
{fileId}{fileDonorId}{fileStudy}{fileDataType}{fileStrategy}{fileFormat}{fileSize}{fileAccess}
- +
+ + + +
), [], diff --git a/components/pages/explorer/TableHeader.tsx b/components/pages/explorer/TableHeader.tsx new file mode 100644 index 00000000..e680afe6 --- /dev/null +++ b/components/pages/explorer/TableHeader.tsx @@ -0,0 +1,207 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css, useTheme } from '@emotion/react'; +import { ColumnsSelectButton, DownloadButton, useArrangerTheme } from '@overture-stack/arranger-components'; +import urlJoin from 'url-join'; + +import StyledLink from '@/components/Link'; +import { Download } from '@/components/theme/icons'; +import { getConfig } from '@/global/config'; +import { INTERNAL_API_PROXY } from '@/global/utils/constants'; +import { BamFileButton, FullScreenButton } from './HeaderButtons'; + +const TableHeader = ({ + iconColor, + isBamFileSelected, + isFileTableActive, + isFullScreen, + toggleFullScreen, + switchTable, +}: { + iconColor: string; + isBamFileSelected: boolean; + isFileTableActive: boolean; + isFullScreen: boolean; + toggleFullScreen: () => void; + switchTable: () => void; +}) => { + const { NEXT_PUBLIC_ARRANGER_MANIFEST_COLUMNS } = getConfig(); + const theme = useTheme(); + + const today = new Date().toISOString().slice(0, 10).replace(/-/g, ''); + const manifestColumns = NEXT_PUBLIC_ARRANGER_MANIFEST_COLUMNS.split(',') + .filter((field) => field.trim()) // break it into arrays, and ensure there's no empty field names + .map((fieldName) => fieldName.replace(/['"]+/g, '').trim()); + const customExporters = [ + { label: 'File Table', fileName: `data-explorer-table-export.${today}.tsv` }, // exports a TSV with what is displayed on the table (columns selected, etc.) + { label: 'File Manifest', fileName: `score-manifest.${today}.tsv`, columns: manifestColumns }, // exports a TSV with the manifest columns + { + label: () => ( + + To download files using a file manifest, please follow these + + instructions + + . + + ), + }, + ]; + + const buttonStyles = { + callerName: 'TableHeader', + components: { + Table: { + DownloadButton: { + customExporters, + css: css` + border-radius: 0.5rem; + padding: 0.3rem 0.8rem; + margin-left: 0.5rem; + :hover { + color: ${theme.colors.accent_dark}; + svg { + background-color: ${theme.colors.secondary_light}; + path { + fill: ${theme.colors.accent_dark}; + } + } + } + :disabled { + svg { + background-color: ${theme.colors.secondary_light}; + } + path { + fill: ${theme.colors.grey_5}; + } + } + `, + downloadUrl: urlJoin(INTERNAL_API_PROXY.ARRANGER, 'download'), + label: () => ( + <> + {' '} + Download + + ), + ListWrapper: { + width: '11rem', + }, + }, + DropDown: { + arrowColor: theme.colors.white, + arrowTransition: 'all 0s', + background: theme.colors.accent, + borderColor: theme.colors.grey_5, + css: css` + ${theme.typography.subheading2} + border-radius: 0.5rem; + line-height: 1.3rem; + padding: 0.3rem 0.8rem; + :disabled { + path { + fill: ${theme.colors.grey_5}; + } + } + :hover { + color: ${theme.colors.accent_dark}; + svg { + path { + fill: ${theme.colors.accent_dark}; + } + } + } + `, + disabledFontColor: theme.colors.grey_5, + fontColor: theme.colors.white, + hoverBackground: theme.colors.secondary_light, + + ListWrapper: { + background: theme.colors.white, + css: css` + ${theme.shadow.default} + `, + fontColor: theme.colors.black, + fontSize: '0.7rem', + hoverBackground: theme.colors.secondary_light, + }, + }, + }, + }, + }; + + useArrangerTheme(buttonStyles); + + return ( +
+ + {isFileTableActive ? ( +
+ + +
+ ) : ( + + )} +
+ ); +}; + +export default TableHeader; diff --git a/components/theme/icons/barGraph.tsx b/components/theme/icons/barGraph.tsx new file mode 100644 index 00000000..9c0aa236 --- /dev/null +++ b/components/theme/icons/barGraph.tsx @@ -0,0 +1,266 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css } from '@emotion/react'; + +import { IconProps } from './types'; + +const BarGraph = ({ width, height, style }: IconProps) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default BarGraph; diff --git a/components/theme/icons/fullScreen.tsx b/components/theme/icons/fullScreen.tsx new file mode 100644 index 00000000..a9114582 --- /dev/null +++ b/components/theme/icons/fullScreen.tsx @@ -0,0 +1,44 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { css } from '@emotion/react'; + +import { IconProps } from './types'; + +const FullScreen = ({ width, height, style }: IconProps) => ( + + + +); + +export default FullScreen; diff --git a/components/theme/icons/index.tsx b/components/theme/icons/index.tsx index dfda9e00..68a78fb5 100644 --- a/components/theme/icons/index.tsx +++ b/components/theme/icons/index.tsx @@ -38,6 +38,8 @@ import Spinner from './spinner'; import Screen from './screen'; import Error from './error'; import Warning from './warning'; +import FullScreen from './fullScreen'; +import BarGraph from './barGraph'; export { GoogleLogo, @@ -51,6 +53,8 @@ export { ChevronDown, Download, File, + FullScreen, + BarGraph, OvertureLogo, OvertureLogoWithText, OvertureUser, From a4a46f475045b75c0e5260e3f0c70a84b0cac740 Mon Sep 17 00:00:00 2001 From: Dan DeMaria Date: Thu, 12 Jun 2025 17:07:08 -0400 Subject: [PATCH 06/10] Reorg Visualizer / File Buttons --- components/pages/explorer/HeaderButtons.tsx | 71 ++++++++++++--------- components/pages/explorer/PageContent.tsx | 10 +-- components/pages/explorer/TableHeader.tsx | 39 ++++++----- components/pages/explorer/constants.ts | 5 ++ 4 files changed, 71 insertions(+), 54 deletions(-) diff --git a/components/pages/explorer/HeaderButtons.tsx b/components/pages/explorer/HeaderButtons.tsx index 5449ed78..70f91ef3 100644 --- a/components/pages/explorer/HeaderButtons.tsx +++ b/components/pages/explorer/HeaderButtons.tsx @@ -21,6 +21,7 @@ import { css, useTheme } from '@emotion/react'; import { ChevronDown, FullScreen, BarGraph } from '../../theme/icons'; +import { tableTypes } from './constants'; export const getHeaderButtonStyles = ({ active, accent }: { active: boolean; accent: string }) => { const { @@ -76,16 +77,16 @@ export const FullScreenButton = ({ ); }; -export const BamFileButton = ({ +export const VisualizerButton = ({ iconColor, isBamFileSelected, isFileTableActive, - switchTable, + switchTable, // change to open modal }: { iconColor: string; isBamFileSelected: boolean; isFileTableActive: boolean; - switchTable: () => void; + switchTable: (t: string) => void; }) => { const { colors: { accent2, grey_1, grey_4 }, @@ -104,33 +105,45 @@ export const BamFileButton = ({ } } `} - onClick={switchTable} + onClick={() => switchTable(tableTypes['BAM_TABLE'])} > - {isFileTableActive ? ( - - {' '} - Visualization - - ) : ( - - {' '} - File Repository - - )} + + {' '} + Visualization + + + ); +}; + +export const FileButton = ({ switchTable }: { switchTable: (t: string) => void }) => { + const { + colors: { accent2, white }, + } = useTheme(); + return ( + ); }; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index 48302746..540a8c24 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -30,7 +30,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; import BamTable from './BamTable/index'; -import { BamFileExtensions } from './constants'; +import { BamFileExtensions, tableTypes } from './constants'; import Facets from './Facets'; import { type FileTableData } from './fileTypes'; import { rowIsFileData } from './fileUtils'; @@ -38,11 +38,6 @@ import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; import TableHeader from './TableHeader'; -const tableTypes = { - REPO_TABLE: 'repoTable', - BAM_TABLE: 'bamTable', -}; - const PageContent = () => { const theme = useTheme(); const [showSidebar, setShowSidebar] = useState(true); @@ -104,8 +99,7 @@ const PageContent = () => { } }, [selectedRows]); - const switchTable = () => { - const nextTableValue = isFileTableActive ? tableTypes['BAM_TABLE'] : tableTypes['REPO_TABLE']; + const switchTable = (nextTableValue: string) => { setTableType(nextTableValue); }; diff --git a/components/pages/explorer/TableHeader.tsx b/components/pages/explorer/TableHeader.tsx index e680afe6..d26c45a4 100644 --- a/components/pages/explorer/TableHeader.tsx +++ b/components/pages/explorer/TableHeader.tsx @@ -27,7 +27,7 @@ import StyledLink from '@/components/Link'; import { Download } from '@/components/theme/icons'; import { getConfig } from '@/global/config'; import { INTERNAL_API_PROXY } from '@/global/utils/constants'; -import { BamFileButton, FullScreenButton } from './HeaderButtons'; +import { FileButton, FullScreenButton, VisualizerButton } from './HeaderButtons'; const TableHeader = ({ iconColor, @@ -42,7 +42,7 @@ const TableHeader = ({ isFileTableActive: boolean; isFullScreen: boolean; toggleFullScreen: () => void; - switchTable: () => void; + switchTable: (t: string) => void; }) => { const { NEXT_PUBLIC_ARRANGER_MANIFEST_COLUMNS } = getConfig(); const theme = useTheme(); @@ -182,23 +182,28 @@ const TableHeader = ({ justify-content: space-between; `} > - {isFileTableActive ? ( -
- - -
+ <> + +
+ + +
+ ) : ( - + <> + + + )} ); diff --git a/components/pages/explorer/constants.ts b/components/pages/explorer/constants.ts index d896937b..1508b8ed 100644 --- a/components/pages/explorer/constants.ts +++ b/components/pages/explorer/constants.ts @@ -29,3 +29,8 @@ export const baseScoreDownloadParams = { offset: '0', 'User-Agent': 'unknown', }; + +export const tableTypes = { + REPO_TABLE: 'repoTable', + BAM_TABLE: 'bamTable', +}; From d8d82f5deafee29174cd431bb4d972b52af5bc31 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 20 Jun 2025 15:24:02 -0400 Subject: [PATCH 07/10] Remove Demo Data logic (#250) --- .../pages/explorer/BamTable/DemoData.tsx | 90 ------------------- components/pages/explorer/BamTable/index.tsx | 10 --- 2 files changed, 100 deletions(-) delete mode 100644 components/pages/explorer/BamTable/DemoData.tsx diff --git a/components/pages/explorer/BamTable/DemoData.tsx b/components/pages/explorer/BamTable/DemoData.tsx deleted file mode 100644 index f9c75680..00000000 --- a/components/pages/explorer/BamTable/DemoData.tsx +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * Copyright (c) 2024 The Ontario Institute for Cancer Research. All rights reserved - * - * This program and the accompanying materials are made available under the terms of - * the GNU Affero General Public License v3.0. You should have received a copy of the - * GNU Affero General Public License along with this program. - * If not, see . - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -/* TODO: Remove Demo Data logic */ -import { css, useTheme } from '@emotion/react'; -import { SetStateAction } from 'react'; -import { FileMetaData, FileTableData } from '../fileTypes'; -import { getHeaderButtonStyles } from '../HeaderButtons'; - -export const demoFileMetadata: FileMetaData = { - objectId: 'demoFileData', - parts: [ - { - url: 'https://s3.amazonaws.com/iobio/NA12878/NA12878.autsome.bam', - }, - ], -}; - -export const DemoDataButton = ({ - isDemoData, - file, - loadAndSetFile, - loading, - setFileMetaData, - setLoading, -}: { - isDemoData: boolean; - file?: FileTableData; - loadAndSetFile: (file: FileTableData) => Promise; - loading: boolean; - setFileMetaData: (value: SetStateAction) => void; - setLoading: (value: SetStateAction) => void; -}) => { - const { - colors: { accent }, - } = useTheme(); - - const loadDemoFile = async () => { - setLoading(true); - setFileMetaData(undefined); - if (isDemoData && file) { - await loadAndSetFile(file); - } else { - setFileMetaData(demoFileMetadata); - } - }; - - if (isDemoData && loading) { - setLoading(false); - } - - return ( -
- -
- ); -}; diff --git a/components/pages/explorer/BamTable/index.tsx b/components/pages/explorer/BamTable/index.tsx index baaee2c3..7d94b091 100644 --- a/components/pages/explorer/BamTable/index.tsx +++ b/components/pages/explorer/BamTable/index.tsx @@ -39,7 +39,6 @@ import { useEffect, useState } from 'react'; import Loader from '@/components/Loader'; import { FileMetaData, FileTableData } from '../fileTypes'; import { getFileMetaData, isFileMetaData } from '../fileUtils'; -import { DemoDataButton, demoFileMetadata } from './DemoData'; import { ToggleButtonPanel } from './ToggleButtonPanel'; import { StatsTable } from './StatsTable'; @@ -86,15 +85,6 @@ const BamTable = ({ file }: { file?: FileTableData }) => { <>

{fileId}

- {/* TODO: Remove Demo Data Button */} - {loading || !fileUrl ? ( ) : ( From f0c1279c3b7ee6a661df6fc7b3b062a1536fec94 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 26 Jun 2025 15:55:58 -0400 Subject: [PATCH 08/10] =?UTF-8?q?#66=20=F0=9F=AA=9F=20Add=20Visualizer=20M?= =?UTF-8?q?odal=20(#248)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Install react-modal * Most Basic Modal Setup * First Pass CSS & Navigation; icons alphabetized * Modal File & images * Improved modal/button/image styles * File Format badges & visualizer descriptions * Finalized container proportions, cursor, semantics & reorg * Disabled states * Handle tables enabled/disabled w/ env * Fix package-lock * PR improvements * Default Iobio disabled * First batch code review updates * className use strings * Use derived state for current files * Prefer css-in-js * Break Modal into components * Handle key warning * Standardize use of Visualizer, Colocate Styles * Remove duplicate Modal.setAppElement * Anchor files/badges to bottom * Remove unused import --- .env.schema | 5 + components/pages/explorer/HeaderButtons.tsx | 18 +- .../pages/explorer/Modal/components.tsx | 264 + components/pages/explorer/Modal/index.tsx | 134 + components/pages/explorer/Modal/types.tsx | 32 + components/pages/explorer/PageContent.tsx | 66 +- components/pages/explorer/TableHeader.tsx | 18 +- components/pages/explorer/constants.ts | 4 + components/pages/explorer/fileUtils.ts | 4 +- components/theme/icons/index.tsx | 46 +- global/config.ts | 9 +- next.config.js | 10 +- package-lock.json | 74 + package.json | 4 +- pnpm-lock.yaml | 6168 +++++++++++++++++ public/images/IOBIO_Logo.png | Bin 0 -> 614 bytes public/images/IOBIO_Preview.png | Bin 0 -> 8884 bytes public/images/cBioPortal_Logo.png | Bin 0 -> 18785 bytes public/images/cBioPortal_Preview.png | Bin 0 -> 109813 bytes public/images/jBrowse_Logo.png | Bin 0 -> 1295 bytes public/images/jBrowse_Preview.png | Bin 0 -> 12966 bytes 21 files changed, 6775 insertions(+), 81 deletions(-) create mode 100644 components/pages/explorer/Modal/components.tsx create mode 100644 components/pages/explorer/Modal/index.tsx create mode 100644 components/pages/explorer/Modal/types.tsx create mode 100644 pnpm-lock.yaml create mode 100644 public/images/IOBIO_Logo.png create mode 100644 public/images/IOBIO_Preview.png create mode 100644 public/images/cBioPortal_Logo.png create mode 100644 public/images/cBioPortal_Preview.png create mode 100644 public/images/jBrowse_Logo.png create mode 100644 public/images/jBrowse_Preview.png diff --git a/.env.schema b/.env.schema index 42318638..80a673c3 100644 --- a/.env.schema +++ b/.env.schema @@ -14,6 +14,11 @@ NEXT_PUBLIC_ARRANGER_MANIFEST_COLUMNS=fieldName, "fieldName", 'fieldName' ######### DMS NEXT_PUBLIC_SSO_PROVIDERS= +######## Visualizer Apps +NEXT_PUBLIC_JBROWSE_ENABLED=false +NEXT_PUBLIC_IOBIO_ENABLED=false +NEXT_PUBLIC_CBIOPORTAL_ENABLED=false + # ######## Optional features/functionalities NEXT_PUBLIC_DEBUG=true diff --git a/components/pages/explorer/HeaderButtons.tsx b/components/pages/explorer/HeaderButtons.tsx index 70f91ef3..d77e97ab 100644 --- a/components/pages/explorer/HeaderButtons.tsx +++ b/components/pages/explorer/HeaderButtons.tsx @@ -79,21 +79,19 @@ export const FullScreenButton = ({ export const VisualizerButton = ({ iconColor, - isBamFileSelected, - isFileTableActive, - switchTable, // change to open modal + disabled, + openModal, }: { + disabled: boolean; iconColor: string; - isBamFileSelected: boolean; - isFileTableActive: boolean; - switchTable: (t: string) => void; + openModal?: () => void; }) => { const { colors: { accent2, grey_1, grey_4 }, } = useTheme(); return ( + ); +}; + +/** + * + * Responsibility is rendering the options available + * ie. read configs, gather data etc then render each option with data + * + */ +export const VisualizerModal = ({ + closeModal, + setTable, + currentFiles, +}: { + closeModal: () => void; + setTable: (tableType: string) => void; + currentFiles: FileTableData[]; +}) => { + const { + NEXT_PUBLIC_BASE_PATH, + NEXT_PUBLIC_IOBIO_ENABLED, + NEXT_PUBLIC_JBROWSE_ENABLED, + NEXT_PUBLIC_CBIOPORTAL_ENABLED, + } = getConfig(); + + const isJbrowseEnabled = NEXT_PUBLIC_JBROWSE_ENABLED && currentFiles.length <= 5; + const isCBioEnabled = NEXT_PUBLIC_CBIOPORTAL_ENABLED && currentFiles.length <= 2; + const isIobioEnabled = + NEXT_PUBLIC_IOBIO_ENABLED && + currentFiles.length === 1 && + currentFiles[0].file_type && + BamFileExtensions.includes(currentFiles[0].file_type); + + const selectVisualizer = (tableType: string) => () => { + setTable(tableType); + closeModal(); + }; + + return ( + <> + + + + + ); +}; diff --git a/components/pages/explorer/Modal/index.tsx b/components/pages/explorer/Modal/index.tsx new file mode 100644 index 00000000..193ce547 --- /dev/null +++ b/components/pages/explorer/Modal/index.tsx @@ -0,0 +1,134 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +import { useEffect, ReactNode } from 'react'; +import ReactModal from 'react-modal'; +import { css, useTheme } from '@emotion/react'; +import { Dismiss } from '../../../theme/icons'; + +// Encapsulates the 3rd party component, base layout, and if modal is open +const ModalContainer = ({ + children, + appRootId, + isModalOpen, + closeModal, +}: { + children: ReactNode; + closeModal: () => void; + appRootId: string; + isModalOpen: boolean; +}) => { + useEffect(() => { + ReactModal.setAppElement(appRootId); + }, []); + + const theme = useTheme(); + + return ( + +
+
+ +
+

+ Select Visualization App: +

+

+ Choose the appropriate app to analyze your selected data. +

+
+ {children} +
+
+
+ ); +}; + +export default ModalContainer; diff --git a/components/pages/explorer/Modal/types.tsx b/components/pages/explorer/Modal/types.tsx new file mode 100644 index 00000000..5ef1a294 --- /dev/null +++ b/components/pages/explorer/Modal/types.tsx @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2025 The Ontario Institute for Cancer Research. All rights reserved + * + * This program and the accompanying materials are made available under the terms of + * the GNU Affero General Public License v3.0. You should have received a copy of the + * GNU Affero General Public License along with this program. + * If not, see . + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +export type BadgeItem = { + label: string; + isAccent: boolean; +}; + +export type VisualizerDetailProps = { + title: string; + description: string; + previewImage: string; + logoImage: string; +}; diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index 540a8c24..3dfd8539 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -30,13 +30,15 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import useUrlParamState from '@/global/hooks/useUrlParamsState'; import BamTable from './BamTable/index'; -import { BamFileExtensions, tableTypes } from './constants'; +import { tableTypes } from './constants'; import Facets from './Facets'; import { type FileTableData } from './fileTypes'; import { rowIsFileData } from './fileUtils'; import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; import TableHeader from './TableHeader'; +import ModalContainer from './Modal'; +import { VisualizerModal } from './Modal/components'; const PageContent = () => { const theme = useTheme(); @@ -51,7 +53,7 @@ const PageContent = () => { const tableContext = useTableContext(contextProps); const { selectedRows, tableData } = tableContext; const [tableType, setTableType] = useState(tableTypes['REPO_TABLE']); - const [currentBamFile, setCurrentBamFile] = useState(undefined); + const [isModalOpen, setModalOpen] = useState(false); const [firstRender, setFirstRender] = useState(true); const [isFullScreen, setFullscreen] = useState(Boolean(document.fullscreenElement)); const [currentFilters, setCurrentFilters] = useUrlParamState('filters', null, { @@ -61,14 +63,9 @@ const PageContent = () => { }, serialize: (v) => (v ? stringify(v) : ''), }); - const isFileTableActive = tableType === tableTypes['REPO_TABLE']; - const isBamFileSelected = Boolean(currentBamFile); const pageContentRef = useRef(null); - const iconColor = isFileTableActive - ? isBamFileSelected - ? theme.colors.accent - : theme.colors.grey_4 - : theme.colors.white; + // TODO: Remove 2nd condition here when adding JBrowse & cBio tables + const isFileTableActive = tableType === tableTypes['REPO_TABLE'] || !(tableType === tableTypes['BAM_TABLE']); useEffect(() => { if (firstRender) { @@ -81,26 +78,21 @@ const PageContent = () => { firstRender || isEqual(sqon, currentFilters) || setCurrentFilters(sqon); }, [currentFilters, firstRender, setCurrentFilters, sqon]); - // Disable Visualization button unless only 1 BAM Compatible file is selected - useEffect(() => { - const oneFileSelected = selectedRows.length === 1; - if (oneFileSelected) { - const fileData = tableData.filter(rowIsFileData) as FileTableData[]; - const selectedBamFile = fileData.find((rowData) => { - const { id, file_type } = rowData; - const idMatch = id === selectedRows[0]; - const isBamFile = Boolean(file_type && BamFileExtensions.includes(file_type)); - return idMatch && isBamFile; - }); + const fileData = tableData.filter(rowIsFileData) as FileTableData[]; + const currentFiles = fileData.filter((row) => selectedRows.includes(row.id)); - setCurrentBamFile(selectedBamFile); - } else { - setCurrentBamFile(undefined); - } - }, [selectedRows]); + const iconColor = isFileTableActive + ? currentFiles.length + ? theme.colors.accent + : theme.colors.grey_4 + : theme.colors.white; + + const closeModal = () => { + setModalOpen(false); + }; - const switchTable = (nextTableValue: string) => { - setTableType(nextTableValue); + const openModal = () => { + setModalOpen(true); }; const toggleFullScreen = () => { @@ -116,11 +108,15 @@ const PageContent = () => { return useMemo( () => (
+ + +
{ > 0} isFileTableActive={isFileTableActive} isFullScreen={isFullScreen} + setTable={setTableType} + openModal={openModal} toggleFullScreen={toggleFullScreen} - switchTable={switchTable} /> - {isFileTableActive ? : } + {/* TODO: Add JBrowse & cBio Tables */} + {isFileTableActive ? ( + + ) : tableType === tableTypes.JBROWSE_TABLE ? ( + + ) : tableType === tableTypes.BAM_TABLE ? ( + + ) : ( + + )}
diff --git a/components/pages/explorer/TableHeader.tsx b/components/pages/explorer/TableHeader.tsx index d26c45a4..eaad77db 100644 --- a/components/pages/explorer/TableHeader.tsx +++ b/components/pages/explorer/TableHeader.tsx @@ -19,6 +19,7 @@ * */ +import { type SetStateAction } from 'react'; import { css, useTheme } from '@emotion/react'; import { ColumnsSelectButton, DownloadButton, useArrangerTheme } from '@overture-stack/arranger-components'; import urlJoin from 'url-join'; @@ -31,18 +32,20 @@ import { FileButton, FullScreenButton, VisualizerButton } from './HeaderButtons' const TableHeader = ({ iconColor, - isBamFileSelected, + visualizersEnabled, isFileTableActive, isFullScreen, toggleFullScreen, - switchTable, + setTable, + openModal, }: { iconColor: string; - isBamFileSelected: boolean; + visualizersEnabled: boolean; isFileTableActive: boolean; isFullScreen: boolean; toggleFullScreen: () => void; - switchTable: (t: string) => void; + setTable: (value: SetStateAction) => void; + openModal: () => void; }) => { const { NEXT_PUBLIC_ARRANGER_MANIFEST_COLUMNS } = getConfig(); const theme = useTheme(); @@ -186,9 +189,8 @@ const TableHeader = ({ <>
) : ( <> - + )} diff --git a/components/pages/explorer/constants.ts b/components/pages/explorer/constants.ts index 1508b8ed..08becfcc 100644 --- a/components/pages/explorer/constants.ts +++ b/components/pages/explorer/constants.ts @@ -21,8 +21,10 @@ const bamFileExtension = 'BAM'; const cramFileExtension = 'CRAM'; +const vcfFileExtension = 'VCF'; export const BamFileExtensions = [bamFileExtension, cramFileExtension]; +export const JBrowseFileExtensions = [vcfFileExtension, ...BamFileExtensions]; export const baseScoreDownloadParams = { external: 'true', @@ -33,4 +35,6 @@ export const baseScoreDownloadParams = { export const tableTypes = { REPO_TABLE: 'repoTable', BAM_TABLE: 'bamTable', + JBROWSE_TABLE: 'jbrowseTable', + CBIO_TABLE: 'cbioTable', }; diff --git a/components/pages/explorer/fileUtils.ts b/components/pages/explorer/fileUtils.ts index 71c54847..f36d9b87 100644 --- a/components/pages/explorer/fileUtils.ts +++ b/components/pages/explorer/fileUtils.ts @@ -23,13 +23,13 @@ import { getConfig } from '@/global/config'; import { SCORE_API_DOWNLOAD_PATH } from '@/global/utils/constants'; import axios from 'axios'; import urlJoin from 'url-join'; -import { baseScoreDownloadParams } from './constants'; +import { baseScoreDownloadParams, JBrowseFileExtensions } from './constants'; import { type FileMetaData, type FileTableData, type ScoreDownloadParams } from './fileTypes'; // Type Check for Table Data unknown[] export const rowIsFileData = (row: unknown): row is FileTableData => { const rowData = row as FileTableData; - return Boolean(rowData?.id && rowData?.file_type); + return Boolean(rowData?.id && rowData?.file_type && JBrowseFileExtensions.includes(rowData?.file_type)); }; // Type Check for Score Data response diff --git a/components/theme/icons/index.tsx b/components/theme/icons/index.tsx index 68a78fb5..44402404 100644 --- a/components/theme/icons/index.tsx +++ b/components/theme/icons/index.tsx @@ -19,48 +19,50 @@ * */ -import GoogleLogo from './google'; -import FacebookLogo from './facebook'; -import GitHubLogo from './github'; -import LinkedInLogo from './linkedin'; -import OrcidLogo from './orcid'; -import KeycloakLogo from './keycloak'; -import Illustration from './illustration'; import Avatar from './avatar'; +import BarGraph from './barGraph'; +import Checkmark from './checkmark'; import ChevronDown from './chevron_down'; +import Dismiss from './dismiss'; import Download from './download'; +import Error from './error'; +import FacebookLogo from './facebook'; import File from './file'; +import FullScreen from './fullScreen'; +import GitHubLogo from './github'; +import GoogleLogo from './google'; +import Illustration from './illustration'; +import KeycloakLogo from './keycloak'; +import LinkedInLogo from './linkedin'; +import OrcidLogo from './orcid'; import OvertureLogo from './overture_logo'; import OvertureLogoWithText from './overture_logo_with_text'; import OvertureUser from './overture_user'; -import Checkmark from './checkmark'; -import Spinner from './spinner'; import Screen from './screen'; -import Error from './error'; +import Spinner from './spinner'; import Warning from './warning'; -import FullScreen from './fullScreen'; -import BarGraph from './barGraph'; export { - GoogleLogo, - FacebookLogo, - GitHubLogo, - LinkedInLogo, - OrcidLogo, - KeycloakLogo, - Illustration, Avatar, + BarGraph, + Checkmark, ChevronDown, + Dismiss, Download, + Error, + FacebookLogo, File, FullScreen, - BarGraph, + GitHubLogo, + GoogleLogo, + Illustration, + KeycloakLogo, + LinkedInLogo, + OrcidLogo, OvertureLogo, OvertureLogoWithText, OvertureUser, - Checkmark, Screen, Spinner, - Error, Warning, }; diff --git a/global/config.ts b/global/config.ts index 0cafbe3c..b754fa08 100644 --- a/global/config.ts +++ b/global/config.ts @@ -42,13 +42,15 @@ export const getConfig = () => { `-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0lOqMuPLCVusc6szklNXQL1FHhSkEgR7An+8BllBqTsRHM4bRYosseGFCbYPn8r8FsWuMDtxp0CwTyMQR2PCbJ740DdpbE1KC6jAfZxqcBete7gP0tooJtbvnA6X4vNpG4ukhtUoN9DzNOO0eqMU0Rgyy5HjERdYEWkwTNB30i9I+nHFOSj4MGLBSxNlnuo3keeomCRgtimCx+L/K3HNo0QHTG1J7RzLVAchfQT0lu3pUJ8kB+UM6/6NG+fVyysJyRZ9gadsr4gvHHckw8oUBp2tHvqBEkEdY+rt1Mf5jppt7JUV7HAPLB/qR5jhALY2FX/8MN+lPLmb/nLQQichVQIDAQAB\r\n-----END PUBLIC KEY-----`, NEXT_PUBLIC_KEYCLOAK_CLIENT_ID: publicConfig.NEXT_PUBLIC_KEYCLOAK_CLIENT_ID || '', NEXT_PUBLIC_KEYCLOAK_HOST: publicConfig.NEXT_PUBLIC_KEYCLOAK_HOST || '', - NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE: - publicConfig.NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE || '', + NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE: publicConfig.NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE || '', NEXT_PUBLIC_KEYCLOAK_REALM: publicConfig.NEXT_PUBLIC_KEYCLOAK_REALM || '', NEXT_PUBLIC_LAB_NAME: publicConfig.NEXT_PUBLIC_LAB_NAME || 'Overture Stage UI', NEXT_PUBLIC_LOGO_FILENAME: publicConfig.NEXT_PUBLIC_LOGO_FILENAME, NEXT_PUBLIC_SCORE_API_URL: publicConfig.NEXT_PUBLIC_SCORE_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: publicConfig.NEXT_PUBLIC_SSO_PROVIDERS || '', + NEXT_PUBLIC_JBROWSE_ENABLED: publicConfig.NEXT_PUBLIC_JBROWSE_ENABLED === 'true', + NEXT_PUBLIC_IOBIO_ENABLED: publicConfig.NEXT_PUBLIC_IOBIO_ENABLED === 'true', + NEXT_PUBLIC_CBIOPORTAL_ENABLED: publicConfig.NEXT_PUBLIC_CBIOPORTAL_ENABLED === 'true', NEXT_PUBLIC_UI_VERSION: publicConfig.NEXT_PUBLIC_UI_VERSION || '', SESSION_ENCRYPTION_SECRET: process.env.SESSION_ENCRYPTION_SECRET || '', } as { @@ -73,6 +75,9 @@ export const getConfig = () => { NEXT_PUBLIC_LOGO_FILENAME: string; NEXT_PUBLIC_SCORE_API_URL: string; NEXT_PUBLIC_SSO_PROVIDERS: string; + NEXT_PUBLIC_JBROWSE_ENABLED: boolean; + NEXT_PUBLIC_IOBIO_ENABLED: boolean; + NEXT_PUBLIC_CBIOPORTAL_ENABLED: boolean; NEXT_PUBLIC_UI_VERSION: string; SESSION_ENCRYPTION_SECRET: string; }; diff --git a/next.config.js b/next.config.js index 31873728..527188f8 100644 --- a/next.config.js +++ b/next.config.js @@ -46,12 +46,7 @@ module.exports = withPlugins([withTranspileModules], { ...config.experiments, topLevelAwait: true, }; - config.resolve.alias['@emotion/react'] = path.resolve( - __dirname, - '.', - 'node_modules', - '@emotion/react', - ); + config.resolve.alias['@emotion/react'] = path.resolve(__dirname, '.', 'node_modules', '@emotion/react'); config.resolve.alias['react'] = path.resolve(__dirname, '.', 'node_modules', 'react'); process.env.NODE_ENV === 'development' && (config.optimization.minimize = false); @@ -80,6 +75,9 @@ module.exports = withPlugins([withTranspileModules], { NEXT_PUBLIC_LOGO_FILENAME: process.env.NEXT_PUBLIC_LOGO_FILENAME, NEXT_PUBLIC_SCORE_API_URL: process.env.NEXT_PUBLIC_SCORE_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: process.env.NEXT_PUBLIC_SSO_PROVIDERS, + NEXT_PUBLIC_JBROWSE_ENABLED: process.env.NEXT_PUBLIC_JBROWSE_ENABLED, + NEXT_PUBLIC_IOBIO_ENABLED: process.env.NEXT_PUBLIC_IOBIO_ENABLED, + NEXT_PUBLIC_CBIOPORTAL_ENABLED: process.env.NEXT_PUBLIC_CBIOPORTAL_ENABLED, NEXT_PUBLIC_UI_VERSION: process.env.npm_package_version, }, assetPrefix: process.env.ASSET_PREFIX || '', diff --git a/package-lock.json b/package-lock.json index e4b9e7e6..1df44f3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-grid-system": "^7.1.1", + "react-modal": "^3.16.3", "react-tippy": "^1.4.0", "url-join": "^5.0.0" }, @@ -39,6 +40,7 @@ "@types/node": "^17.0.35", "@types/react": "^17.0.80", "@types/react-dom": "^17.0.20", + "@types/react-modal": "^3.16.3", "@types/url-join": "^4.0.1", "extra-watch-webpack-plugin": "^1.0.3", "fork-ts-checker-webpack-plugin": "^8.0.0", @@ -2047,6 +2049,15 @@ "@types/react": "^17" } }, + "node_modules/@types/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-table": { "version": "6.8.9", "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-6.8.9.tgz", @@ -3478,6 +3489,11 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -8005,6 +8021,29 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "node_modules/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-modal/node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/react-onclickoutside": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", @@ -11209,6 +11248,15 @@ "@types/react": "^17" } }, + "@types/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/react-table": { "version": "6.8.9", "resolved": "https://registry.npmjs.org/@types/react-table/-/react-table-6.8.9.tgz", @@ -12362,6 +12410,11 @@ "strip-final-newline": "^2.0.0" } }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -15792,6 +15845,27 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", + "requires": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "dependencies": { + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, "react-onclickoutside": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", diff --git a/package.json b/package.json index 908709dc..61f0b701 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "dependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", - "@overture-stack/iobio-components": "^0.0.5", "@overture-stack/arranger-components": "^3.0.0-beta.34", + "@overture-stack/iobio-components": "^0.0.5", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", @@ -32,6 +32,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-grid-system": "^7.1.1", + "react-modal": "^3.16.3", "react-tippy": "^1.4.0", "url-join": "^5.0.0" }, @@ -43,6 +44,7 @@ "@types/node": "^17.0.35", "@types/react": "^17.0.80", "@types/react-dom": "^17.0.20", + "@types/react-modal": "^3.16.3", "@types/url-join": "^4.0.1", "extra-watch-webpack-plugin": "^1.0.3", "fork-ts-checker-webpack-plugin": "^8.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..5919e8c3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6168 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@emotion/react': + specifier: ^11.9.0 + version: 11.14.0(@types/react@17.0.87)(react@17.0.2) + '@emotion/styled': + specifier: ^11.8.1 + version: 11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2) + '@overture-stack/arranger-components': + specifier: ^3.0.0-beta.34 + version: 3.0.0-rc.1(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2))(@types/react-dom@17.0.26(@types/react@17.0.87))(@types/react@17.0.87)(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@overture-stack/iobio-components': + specifier: ^0.0.5 + version: 0.0.5 + axios: + specifier: ^0.27.2 + version: 0.27.2 + cryptr: + specifier: ^6.3.0 + version: 6.3.0 + http-proxy: + specifier: ^1.18.1 + version: 1.18.1 + jsdom: + specifier: ^24.1.1 + version: 24.1.3 + jsonwebtoken: + specifier: ^8.5.1 + version: 8.5.1 + jwt-decode: + specifier: ^3.1.2 + version: 3.1.2 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + next: + specifier: ^12.1.6 + version: 12.3.7(@babel/core@7.27.4)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + next-auth: + specifier: ^4.23.1 + version: 4.24.11(next@12.3.7(@babel/core@7.27.4)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + next-compose-plugins: + specifier: ^2.2.1 + version: 2.2.1 + next-global-css: + specifier: 1.3.1 + version: 1.3.1 + next-transpile-modules: + specifier: ^9.0.0 + version: 9.1.0 + query-string: + specifier: ^7.1.1 + version: 7.1.3 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-grid-system: + specifier: ^7.1.1 + version: 7.3.2(react@17.0.2) + react-modal: + specifier: ^3.16.3 + version: 3.16.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-tippy: + specifier: ^1.4.0 + version: 1.4.0 + url-join: + specifier: ^5.0.0 + version: 5.0.0 + devDependencies: + '@babel/preset-typescript': + specifier: ^7.21.0 + version: 7.27.1(@babel/core@7.27.4) + '@emotion/babel-plugin': + specifier: ^11.9.2 + version: 11.13.5 + '@types/http-proxy': + specifier: ^1.17.11 + version: 1.17.16 + '@types/lodash': + specifier: ^4.14.182 + version: 4.17.17 + '@types/node': + specifier: ^17.0.35 + version: 17.0.45 + '@types/react': + specifier: ^17.0.80 + version: 17.0.87 + '@types/react-dom': + specifier: ^17.0.20 + version: 17.0.26(@types/react@17.0.87) + '@types/react-modal': + specifier: ^3.16.3 + version: 3.16.3 + '@types/url-join': + specifier: ^4.0.1 + version: 4.0.3 + extra-watch-webpack-plugin: + specifier: ^1.0.3 + version: 1.0.3 + fork-ts-checker-webpack-plugin: + specifier: ^8.0.0 + version: 8.0.0(typescript@4.9.5)(webpack@5.99.9) + jest: + specifier: ^27.5.1 + version: 27.5.1 + ts-patch: + specifier: ^2.1.0 + version: 2.1.0(typescript@4.9.5) + typescript: + specifier: ^4.7.2 + version: 4.9.5 + typescript-transform-paths: + specifier: ^3.4.6 + version: 3.5.5(typescript@4.9.5) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.5': + resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.4': + resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.3': + resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.6': + resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.5': + resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.0.0-beta.42': + resolution: {integrity: sha512-iOGRzUoONLOtmCvjUsZv3mZzgCT6ljHQY5fr1qG1QIiJQwtM7zbPWGGpa3QWETq+UqwWyJnoi5XZDZRwZDFciQ==} + + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.4': + resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.6': + resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.3.1': + resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.0': + resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@27.5.1': + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/core@27.5.1': + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@27.5.1': + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/fake-timers@27.5.1': + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/globals@27.5.1': + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/reporters@27.5.1': + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/source-map@27.5.1': + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-result@27.5.1': + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/test-sequencer@27.5.1': + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/transform@27.5.1': + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jest/types@27.5.1': + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsep-plugin/assignment@1.3.0': + resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@jsep-plugin/regex@1.0.4': + resolution: {integrity: sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==} + engines: {node: '>= 10.16.0'} + peerDependencies: + jsep: ^0.4.0||^1.0.0 + + '@next/env@12.3.7': + resolution: {integrity: sha512-gCw4sTeHoNr0EUO+Nk9Ll21OzF3PnmM0GlHaKgsY2AWQSqQlMgECvB0YI4k21M9iGy+tQ5RMyXQuoIMpzhtxww==} + + '@next/swc-android-arm-eabi@12.3.4': + resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@next/swc-android-arm64@12.3.4': + resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@next/swc-darwin-arm64@12.3.4': + resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@12.3.4': + resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-freebsd-x64@12.3.4': + resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@next/swc-linux-arm-gnueabihf@12.3.4': + resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@next/swc-linux-arm64-gnu@12.3.4': + resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@12.3.4': + resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@12.3.4': + resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@12.3.4': + resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@12.3.4': + resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@12.3.4': + resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@12.3.4': + resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@overture-stack/arranger-components@3.0.0-rc.1': + resolution: {integrity: sha512-IfqPBB4Bv1htkm8MkkdMK6FuMJHGAmx9UODc+OldAKQz8eILj2sn/VLiichPt9XW11mjy+pKvvGk2XT/1c/WYQ==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + '@types/react-dom': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + + '@overture-stack/iobio-components@0.0.5': + resolution: {integrity: sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==} + + '@overture-stack/sqon-builder@1.1.0': + resolution: {integrity: sha512-HpxJBbhN2FIIpSKOHoezua7/2by9S7qpnuaG5qgpm69nLUX0KnW2fwGVELJ3PMW1DpU8qg74kASozUnST0F+cQ==} + + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@reach/component-component@0.17.0': + resolution: {integrity: sha512-0NbVKxhb0m8goB1E/agFxlGMvn1VtHbPiJAP4N7wy30VLwgfg3ucxiRED7DBsO6aw0r+r9dki2kC5ImzGykmoA==} + peerDependencies: + react: ^16.4.0 || 17.x + react-dom: ^16.4.0 || 17.x + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/fake-timers@8.1.0': + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} + + '@swc/helpers@0.4.11': + resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} + + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.17': + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/react-dom@17.0.26': + resolution: {integrity: sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==} + peerDependencies: + '@types/react': ^17.0.0 + + '@types/react-modal@3.16.3': + resolution: {integrity: sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==} + + '@types/react-table@6.8.16': + resolution: {integrity: sha512-R6qpqybJ9EZHrXczGSZRoODkbk5NiwUbdVdBKufDtntycikzOht3wWRs+J4mvr4qyjWVcxXfqKiZ1mIuoxSotw==} + + '@types/react@17.0.87': + resolution: {integrity: sha512-wpg9AbtJ6agjA+BKYmhG6dRWEU/2DHYwMzCaBzsz137ft6IyuqZ5fI4ic1DWL4DrI03Zy78IyVE6ucrXl0mu4g==} + + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/url-join@4.0.3': + resolution: {integrity: sha512-3l1qMm3wqO0iyC5gkADzT95UVW7C/XXcdvUcShOideKF0ddgVRErEQQJXBd2kvQm+aSgqhBGHGB38TgMeT57Ww==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@16.0.9': + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autobind-decorator@1.4.3: + resolution: {integrity: sha512-FRzT10Vc0lzgDOhMTpm9a2kZF6Q+MMGwd6Y7OGgHigMZwGz7vpN4qH9ifiPTum8mhJQV9UqLPperHxc9yalAAA==} + + axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + babel-jest@27.5.1: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@27.5.1: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bowser@1.9.4: + resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001722: + resolution: {integrity: sha512-DCQHBBZtiK6JVkAGw7drvAMK0Q0POD/xZvEmDp6baiMMP6QXXk9HpD6mNYBZWhOPG6LvIDb82ITqtWjhDckHCA==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-emitter@0.1.6: + resolution: {integrity: sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + convert-units@2.3.4: + resolution: {integrity: sha512-ERHfdA0UhHJp1IpwE6PnFJx8LqG7B1ZjJ20UvVCmopEnVCfER68Tbe3kvN63dLbYXDA2xFWRE6zd4Wsf0w7POg==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + core-js@1.2.7: + resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + cryptr@6.3.0: + resolution: {integrity: sha512-TA4byAuorT8qooU9H8YJhBwnqD151i1rcauHfJ3Divg6HmukHB2AYMp0hmjv2873J2alr4t15QqC7zAnWFrtfQ==} + + css-in-js-utils@2.0.1: + resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@4.4.0: + resolution: {integrity: sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + dom-helpers@3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + downshift@1.31.16: + resolution: {integrity: sha512-RskXmiGSoz0EHAyBrmTBGSLHg6+NYDGuLu2W3GpmuOe6hmZEWhCiQrq5g6DWzhnUaJD41xHbbfC6j1Fe86YqgA==} + peerDependencies: + prop-types: '>=15' + react: '>=0.14.x' + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + electron-to-chromium@1.5.167: + resolution: {integrity: sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==} + + emittery@0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exenv@1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + extra-watch-webpack-plugin@1.0.3: + resolution: {integrity: sha512-ZScQdMH6hNofRRN6QMQFg+aa5vqimfBgnPXmRDhdaLpttT6hrzpY9Oyren3Gh/FySPrgsvKCNbx/NFA7XNdIsg==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbjs@0.8.18: + resolution: {integrity: sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==} + + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} + engines: {node: '>= 10.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data@3.0.3: + resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} + engines: {node: '>= 6'} + + form-data@4.0.3: + resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} + engines: {node: '>= 6'} + + formik@0.11.11: + resolution: {integrity: sha512-RZm1k/HCXyA0caTvWqcGizdV2kI1g3qT1009du62GP50Helcwe9eZTd+MOiyln6UGUqgTRNo0C7NUpzF5JjUCA==} + peerDependencies: + react: '>=15' + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glamor@2.20.40: + resolution: {integrity: sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + hoist-non-react-statics@2.5.5: + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-prefixer@3.0.8: + resolution: {integrity: sha512-ne8XIyyqkRaNJ1JfL1NYzNdCNxq+MCBQhC8NgOQlzNm2vv3XxlP0VSLQUbSRCF6KPEoveCVEpayHoHzcMyZsMQ==} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-fetch@2.2.1: + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jest-changed-files@27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-circus@27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-cli@27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-docblock@27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-each@27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-jsdom@27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-environment-node@27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-haste-map@27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-jasmine2@27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-leak-detector@27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-message-util@27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve-dependencies@27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-resolve@27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runner@27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-runtime@27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-snapshot@27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-validate@27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-watcher@27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest@27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + + jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@24.1.3: + resolution: {integrity: sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsep@1.4.0: + resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} + engines: {node: '>= 10.16.0'} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpath-plus@10.3.0: + resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} + engines: {node: '>=18.0.0'} + hasBin: true + + jsonwebtoken@8.5.1: + resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} + engines: {node: '>=4', npm: '>=1.4.28'} + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loaders.css@0.1.2: + resolution: {integrity: sha512-Rhowlq24ey1VOeor+3wYOt9+MjaxBOJm1u4KlQgNC3+0xJ0LS4wq4iG57D/BPzvuD/7HHDGQOWJ+81oR2EI9bQ==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash._basebind@2.3.0: + resolution: {integrity: sha512-SHqM7YCuJ+BeGTs7lqpWnmdHEeF4MWxS3dksJctHFNxR81FXPOzA4bS5Vs5CpcGTkBpM8FCl+YEbQEblRw8ABg==} + + lodash._basecreate@2.3.0: + resolution: {integrity: sha512-vwZaWldZwS2y9b99D8i9+WtgiZXbHKsBsMrpxJEqTsNW20NhJo5W8PBQkeQO9CmxuqEYn8UkMnfEM2MMT4cVrw==} + + lodash._basecreatecallback@2.3.0: + resolution: {integrity: sha512-Ev+pDzzfVfgbiucpXijconLGRBar7/+KNCf05kSnk4CmdDVhAy1RdbU9efCJ/o9GXI08JdUGwZ+5QJ3QX3kj0g==} + + lodash._basecreatewrapper@2.3.0: + resolution: {integrity: sha512-YLycQ7k8AB9Wc1EOvLNxuRWcqipDkMXq2GCgnLWQR6qtgTb3gY3LELzEpnFshrEO4LOLs+R2EpcY+uCOZaLQ8Q==} + + lodash._createwrapper@2.3.0: + resolution: {integrity: sha512-XjaI/rzg9W+WO4WJDQ+PRlHD5sAMJ1RhJLuT65cBxLCb1kIYs4U20jqvTDGAWyVT3c34GYiLd9AreHYuB/8yJA==} + + lodash._objecttypes@2.3.0: + resolution: {integrity: sha512-jbA6QyHt9cw3BzvbWzIcnU3Z12jSneT6xBgz3Y782CJsN1tV5aTBKrFo2B4AkeHBNaxSrbPYZZpi1Lwj3xjdtg==} + + lodash._renative@2.3.0: + resolution: {integrity: sha512-v44MRirqYqZGK/h5UKoVqXWF2L+LUiLTU+Ogu5rHRVWJUA1uWIlHaMpG8f/OA8j++BzPMQij9+erXHtgFcbuwg==} + + lodash._setbinddata@2.3.0: + resolution: {integrity: sha512-xMFfbF7dL+sFtrdE49uHFmfpBAEwlFtfgMp86nQRlAF6aizYL+3MTbnYMKJSkP1W501PhsgiBED5kBbZd8kR2g==} + + lodash._shimkeys@2.3.0: + resolution: {integrity: sha512-9Iuyi7TiWMGa/9+2rqEE+Zwye4b/U2w7Saw6UX1h6Xs88mEER+uz9FZcEBPKMVKsad9Pw5GNAcIBRnW2jNpneQ==} + + lodash._slice@2.3.0: + resolution: {integrity: sha512-7C61GhzRUv36gTafr+RIb+AomCAYsSATEoK4OP0VkNBcwvsM022Z22AVgqjjzikeNO1U29LzsJZDvLbiNPUYvA==} + + lodash.bind@2.3.0: + resolution: {integrity: sha512-goakyOo+FMN8lttMPnZ0UNlr5RlzX4IrUXyTJPT2A0tGCMXySupond9wzvDqTvVmYTcQjIKGrj8naJDS2xWAlQ==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.foreach@2.3.0: + resolution: {integrity: sha512-yLnyptVRJd0//AbGp480grgQG9iaDIV5uOgSbpurRy1dYybPbjNTLQ3FyLEQ84buVLPG7jyaiyvpzgfOutRB3Q==} + + lodash.forown@2.3.0: + resolution: {integrity: sha512-dUnCsuQTtq3Y7bxPNoEEqjJjPL2ftLtcz2PTeRKvhbpdM514AvnqCjewHGsm/W+dwspIwa14KoWEZeizJ7smxA==} + + lodash.identity@2.3.0: + resolution: {integrity: sha512-NYJ2r2cwy3tkx/saqbIZEX6oQUzjWTnGRu7d/zmBjMCZos3eHBxCpbvWFWSetv8jFVrptsp6EbWjzNgBKhUoOA==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.isfunction@2.3.0: + resolution: {integrity: sha512-X5lteBYlCrVO7Qc00fxP8W90fzRp6Ax9XcHANmU3OsZHdSyIVZ9ZlX5QTTpRq8aGY+9I5Rmd0UTzTIIyWPugEQ==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isobject@2.3.0: + resolution: {integrity: sha512-jo1pfV61C4TE8BfEzqaHj6EIKiSkFANJrB6yscwuCJMSRw5tbqjk4Gv7nJzk4Z6nFKobZjGZ8Qd41vmnwgeQqQ==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.keys@2.3.0: + resolution: {integrity: sha512-c0UW0ffqMxSCtoVbmVt2lERJLkEqgoOn2ejPsWXzr0ZrqRbl3uruGgwHzhtqXxi6K/ei3Ey7zimOqSwXgzazPg==} + + lodash.noop@2.3.0: + resolution: {integrity: sha512-NpSm8HRm1WkBBWHUveDukLF4Kfb5P5E3fjHc9Qre9A11nNubozLWD2wH3UBTZbu+KSuX8aSUvy9b+PUyEceJ8g==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.support@2.3.0: + resolution: {integrity: sha512-etc7VWbB0U3Iya8ixj2xy4sDBN3jvPX7ODi8iXtn4KkkjNpdngrdc7Vlt5jub/Vgqx6/dWtp7Ml9awhCQPYKGQ==} + + lodash.topath@4.5.2: + resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-auth@4.24.11: + resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==} + peerDependencies: + '@auth/core': 0.34.2 + next: ^12.2.5 || ^13 || ^14 || ^15 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 || ^19 + react-dom: ^17.0.2 || ^18 || ^19 + peerDependenciesMeta: + '@auth/core': + optional: true + nodemailer: + optional: true + + next-compose-plugins@2.2.1: + resolution: {integrity: sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==} + + next-global-css@1.3.1: + resolution: {integrity: sha512-+OnTwQKmv1lDP7r4R3T94oq6372R9UGVivchBQu49j7ZjzvSXHCnv93yAuhgMkvUgAbGifTs8sQ5YL9wjyAxfA==} + + next-transpile-modules@9.1.0: + resolution: {integrity: sha512-yzJji65xDqcIqjvx5vPJcs1M+MYQTzLM1pXH/qf8Q88ohx+bwVGDc1AeV+HKr1NwvMCNTpwVPSFI7cA5WdyeWA==} + + next@12.3.7: + resolution: {integrity: sha512-3PDn+u77s5WpbkUrslBP6SKLMeUj9cSx251LOt+yP9fgnqXV/ydny81xQsclz9R6RzCLONMCtwK2RvDdLa/mJQ==} + engines: {node: '>=12.22.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-fetch@1.7.3: + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + + oidc-token-hash@5.1.0: + resolution: {integrity: sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==} + engines: {node: ^10.13.0 || >=12.0.0} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + openid-client@5.7.1: + resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + popper.js@1.16.1: + resolution: {integrity: sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==} + deprecated: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1 + + postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + + preact-render-to-string@5.2.6: + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + + preact@10.26.9: + resolution: {integrity: sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + ramda@0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-datepicker@4.25.0: + resolution: {integrity: sha512-zB7CSi44SJ0sqo8hUQ3BF1saE/knn7u25qEMTO1CQGofY1VAKahO8k9drZtp0cfW1DMfoYLR3uSY1/uMvbEzbg==} + peerDependencies: + react: ^16.9.0 || ^17 || ^18 + react-dom: ^16.9.0 || ^17 || ^18 + + react-dom@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + + react-draggable@3.3.2: + resolution: {integrity: sha512-oaz8a6enjbPtx5qb0oDWxtDNuybOylvto1QLydsXgKmwT7e3GXC2eMVDwEMIUYJIFqVG72XpOv673UuuAq6LhA==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + + react-draggable@4.4.6: + resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + + react-event-listener@0.5.10: + resolution: {integrity: sha512-YZklRszh9hq3WP3bdNLjFwJcTCVe7qyTf5+LWNaHfZQaZrptsefDK2B5HHpOsEEaMHvjllUPr0+qIFVTSsurow==} + peerDependencies: + react: ^15.3.0 || ^16.0.0 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-grid-layout@0.16.6: + resolution: {integrity: sha512-h2EsYgsqcESLJeevQSJsEKp8hhh+phOlXDJoMhlV2e7T3VWQL+S6iCF3iD/LK19r4oyRyOMDEir0KV+eLXrAyw==} + + react-grid-system@7.3.2: + resolution: {integrity: sha512-SR5FKJvvN+Sl/OqSpyhLaesfc2cHKxFlP5xL53jUp3m+vF40OYiJbCuW+U43YeNEZQUfR38K3Ec+dVxl9y6MUg==} + peerDependencies: + react: ^16.8.0 || ^17.x + + react-icons@5.5.0: + resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} + peerDependencies: + react: '*' + + react-input-range@1.3.0: + resolution: {integrity: sha512-G//kJqUHo7zQA5PuGZNKhuzhGcj83FJsv62tcP4Eo61DUC/0usHPYxFfIZ3zOfdMWuWEaduD6N4lNsZMmaOJgw==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 + react-dom: ^15.0.0 || ^16.0.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + react-modal@3.16.3: + resolution: {integrity: sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19 + react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19 + + react-onclickoutside@6.13.2: + resolution: {integrity: sha512-h6Hbf1c8b7tIYY4u90mDdBLY4+AGQVMFtIE89HgC0DtVCh/JfKl477gYqUtGLmjZBKK3MJxomP/lFiLbz4sq9A==} + peerDependencies: + react: ^15.5.x || ^16.x || ^17.x || ^18.x + react-dom: ^15.5.x || ^16.x || ^17.x || ^18.x + + react-popper@2.3.0: + resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + + react-resizable@1.11.1: + resolution: {integrity: sha512-S70gbLaAYqjuAd49utRHibtHLrHXInh7GuOR+6OO6RO6uleQfuBnWmZjRABfqNEx3C3Z6VPLg0/0uOYFrkfu9Q==} + peerDependencies: + react: 0.14.x || 15.x || 16.x || 17.x + react-dom: 0.14.x || 15.x || 16.x || 17.x + + react-router-dom@4.3.1: + resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==} + peerDependencies: + react: '>=15' + + react-router@4.3.1: + resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==} + peerDependencies: + react: '>=15' + + react-scrollbar-size@2.1.0: + resolution: {integrity: sha512-9dDUJvk7S48r0TRKjlKJ9e/LkLLYgc9LdQR6W21I8ZqtSrEsedPOoMji4nU3DHy7fx2l8YMScJS/N7qiloYzXQ==} + peerDependencies: + react: ^15.3.0 || ^16.0.0 + + react-spinkit@3.0.0: + resolution: {integrity: sha512-RrfGRPjqxHQiy7quPqhjPynTu0zobgQaZu1QYBMpJJ6pCSRRRK16EZMaxdE6fLVYFRJWpX/eGATWLMoVFFT5uQ==} + + react-table@6.11.5: + resolution: {integrity: sha512-LM+AS9v//7Y7lAlgTWW/cW6Sn5VOb3EsSkKQfQTzOW8FngB1FUskLLNEVkAYsTX9LjOWR3QlGjykJqCE6eXT/g==} + peerDependencies: + prop-types: ^15.7.0 + react: ^16.x.x + react-dom: ^16.x.x + + react-tippy@1.4.0: + resolution: {integrity: sha512-r/hM5XK9Ztr2ZY7IWKuRmISTlUPS/R6ddz6PO2EuxCgW+4JBcGZRPU06XcVPRDCOIiio8ryBQFrXMhFMhsuaHA==} + + react-toastify@3.4.3: + resolution: {integrity: sha512-9teTL5In66vsv7O1LnbMQVKmT3CUcTL95sdy8GW5XX5J5uRFY3xSXRqRIcJtD4HSCrjTU2e72pwOiy73VgvJ1Q==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + + react-transition-group@2.9.0: + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + + react-treeview@0.4.7: + resolution: {integrity: sha512-k1Q954z/Ts3O9QW4SI1dGZVOwGbGJwjMGQvN/JhAknF1vifRp6bCLJiPaQ3br5af7Mdk7HSAb3JiyQIQJnnaPQ==} + peerDependencies: + react: '>=0.14.0' + + react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + recompose@0.30.0: + resolution: {integrity: sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0 + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rrweb-cssom@0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + + rxjs@5.5.12: + resolution: {integrity: sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==} + engines: {npm: '>=2.0.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + + schema-utils@0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.2: + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + engines: {node: '>= 10.13.0'} + + semantic-ui-css@2.5.0: + resolution: {integrity: sha512-jIWn3WXXE2uSaWCcB+gVJVRG3masIKtTMNEP2X8Aw909H2rHpXGneYOxzO3hT8TpyvB5/dEEo9mBFCitGwoj1A==} + + semantic-ui-react@0.77.2: + resolution: {integrity: sha512-VwxY6oGLrBO2xoJiAW/vn40GL4WGZYWxtbrHIKYE1xChTOFlDxyIULMdnuAHOTbrbOYbLQ0X7LpdvEEYmieiJw==} + peerDependencies: + react: '>=0.14.0 <= 16' + react-dom: '>=0.14.0 <= 16' + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sqon-builder@2.0.1: + resolution: {integrity: sha512-eIhGxzYrI9nCql6zXiPBe5KFFXdSMkVKnwyrx5IxYVSM15euH1VkikSE8pVB4lhZnjOXI5AyL1kTZJDMwJtDwA==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stifle@1.1.1: + resolution: {integrity: sha512-INvON4DXLAWxpor+f0ZHnYQYXBqDXQRW1znLpf5/C/AWzJ0eQQAThfdqHQ5BDkiyywD67rQGvbE4LC+Aig6K/Q==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + styled-jsx@5.0.7: + resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-observable@1.0.1: + resolution: {integrity: sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==} + engines: {node: '>=0.10.0'} + + symbol-observable@1.2.0: + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.42.0: + resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + throat@6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + ts-patch@2.1.0: + resolution: {integrity: sha512-+6LbQSGgHUnK+grgk9nvKhesc0/dDNxms0IL1XPZeTfmPFCx/QSuwz9k+9yFe0xYDD7xBlHYK0Zp0qrTCaJcAw==} + hasBin: true + peerDependencies: + typescript: '>=4.0.0' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript-transform-paths@3.5.5: + resolution: {integrity: sha512-RMK86wKe/4+ad+3kMT9SKAs3K0tUHLe7hF+MLbD6VpC9VUmFuKorhf3pHz+qO5GdS4mUp2ncNUo14j6ws9UvBQ==} + peerDependencies: + typescript: '>=3.6.5' + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + ua-parser-js@0.7.40: + resolution: {integrity: sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==} + hasBin: true + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-to-istanbul@8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} + + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + warning@3.0.0: + resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==} + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-sources@3.3.2: + resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==} + engines: {node: '>=10.13.0'} + + webpack@5.99.9: + resolution: {integrity: sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + zod@3.25.63: + resolution: {integrity: sha512-3ttCkqhtpncYXfP0f6dsyabbYV/nEUW+Xlu89jiXbTBifUfjaSqXOG6JnQPLtqt87n7KAmnMqcjay6c0Wq0Vbw==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.5': {} + + '@babel/core@7.27.4': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helpers': 7.27.6 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.27.6 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.25.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.27.6 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.6': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + + '@babel/parser@7.27.5': + dependencies: + '@babel/types': 7.27.6 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': + dependencies: + '@babel/core': 7.27.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.0.0-beta.42': + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + '@babel/runtime@7.27.6': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@babel/traverse@7.27.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.5 + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.27.6 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.3.1': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2)': + dependencies: + '@babel/runtime': 7.27.6 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@17.0.2) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.87 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2)': + dependencies: + '@babel/runtime': 7.27.6 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.3.1 + '@emotion/react': 11.14.0(@types/react@17.0.87)(react@17.0.2) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@17.0.2) + '@emotion/utils': 1.4.2 + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.87 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@17.0.2)': + dependencies: + react: 17.0.2 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/core@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@27.5.1': + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + jest-mock: 27.5.1 + + '@jest/fake-timers@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 17.0.45 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + '@jest/globals@27.5.1': + dependencies: + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 + + '@jest/reporters@27.5.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color + + '@jest/source-map@27.5.1': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@27.5.1': + dependencies: + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@27.5.1': + dependencies: + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@27.5.1': + dependencies: + '@babel/core': 7.27.4 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/types@27.5.1': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 17.0.45 + '@types/yargs': 16.0.9 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@jsep-plugin/regex@1.0.4(jsep@1.4.0)': + dependencies: + jsep: 1.4.0 + + '@next/env@12.3.7': {} + + '@next/swc-android-arm-eabi@12.3.4': + optional: true + + '@next/swc-android-arm64@12.3.4': + optional: true + + '@next/swc-darwin-arm64@12.3.4': + optional: true + + '@next/swc-darwin-x64@12.3.4': + optional: true + + '@next/swc-freebsd-x64@12.3.4': + optional: true + + '@next/swc-linux-arm-gnueabihf@12.3.4': + optional: true + + '@next/swc-linux-arm64-gnu@12.3.4': + optional: true + + '@next/swc-linux-arm64-musl@12.3.4': + optional: true + + '@next/swc-linux-x64-gnu@12.3.4': + optional: true + + '@next/swc-linux-x64-musl@12.3.4': + optional: true + + '@next/swc-win32-arm64-msvc@12.3.4': + optional: true + + '@next/swc-win32-ia32-msvc@12.3.4': + optional: true + + '@next/swc-win32-x64-msvc@12.3.4': + optional: true + + '@overture-stack/arranger-components@3.0.0-rc.1(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2))(@types/react-dom@17.0.26(@types/react@17.0.87))(@types/react@17.0.87)(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@emotion/react': 11.14.0(@types/react@17.0.87)(react@17.0.2) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2) + '@overture-stack/sqon-builder': 1.1.0 + '@reach/component-component': 0.17.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@tanstack/react-table': 8.21.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@types/react': 17.0.87 + '@types/react-dom': 17.0.26(@types/react@17.0.87) + axios: 1.9.0 + classnames: 2.5.1 + color: 4.2.3 + convert-units: 2.3.4 + date-fns: 2.30.0 + downshift: 1.31.16(prop-types@15.8.1)(react@17.0.2) + filesize: 10.1.6 + formik: 0.11.11(react@17.0.2) + jsonpath-plus: 10.3.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + pluralize: 8.0.0 + ramda: 0.28.0 + react: 17.0.2 + react-datepicker: 4.25.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + react-grid-layout: 0.16.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-icons: 5.5.0(react@17.0.2) + react-input-range: 1.3.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-router-dom: 4.3.1(react@17.0.2) + react-scrollbar-size: 2.1.0(react@17.0.2) + react-spinkit: 3.0.0 + react-table-old: react-table@6.11.5(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-tippy: 1.4.0 + react-toastify: 3.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-treeview: 0.4.7(react@17.0.2) + recompose: 0.30.0(react@17.0.2) + resolve-url: 0.2.1 + rxjs: 5.5.12 + semantic-ui-css: 2.5.0 + semantic-ui-react: 0.77.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + sqon-builder: 2.0.1 + url-join: 4.0.1 + uuid: 9.0.1 + transitivePeerDependencies: + - debug + - prop-types + + '@overture-stack/iobio-components@0.0.5': {} + + '@overture-stack/sqon-builder@1.1.0': + dependencies: + lodash.clonedeep: 4.5.0 + zod: 3.25.63 + + '@panva/hkdf@1.2.1': {} + + '@popperjs/core@2.11.8': {} + + '@reach/component-component@0.17.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@8.1.0': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@swc/helpers@0.4.11': + dependencies: + tslib: 2.8.1 + + '@tanstack/react-table@8.21.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@tanstack/table-core': 8.21.3 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + '@tanstack/table-core@8.21.3': {} + + '@tootallnate/once@1.1.2': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.5 + '@babel/types': 7.27.6 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.6 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.8': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 17.0.45 + + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 17.0.45 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.17': {} + + '@types/node@17.0.45': {} + + '@types/parse-json@4.0.2': {} + + '@types/prettier@2.7.3': {} + + '@types/prop-types@15.7.15': {} + + '@types/react-dom@17.0.26(@types/react@17.0.87)': + dependencies: + '@types/react': 17.0.87 + + '@types/react-modal@3.16.3': + dependencies: + '@types/react': 17.0.87 + + '@types/react-table@6.8.16': + dependencies: + '@types/react': 17.0.87 + + '@types/react@17.0.87': + dependencies: + '@types/prop-types': 15.7.15 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + '@types/scheduler@0.16.8': {} + + '@types/stack-utils@2.0.3': {} + + '@types/url-join@4.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.9': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abab@2.0.6: {} + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-walk@7.2.0: {} + + acorn@7.4.1: {} + + acorn@8.15.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.3: {} + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + asap@2.0.6: {} + + asynckit@0.4.0: {} + + autobind-decorator@1.4.3: {} + + axios@0.27.2: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.3 + transitivePeerDependencies: + - debug + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.3 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-jest@27.5.1(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1(@babel/core@7.27.4) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@27.5.1: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.27.6 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) + + babel-preset-jest@27.5.1(@babel/core@7.27.4): + dependencies: + '@babel/core': 7.27.4 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + balanced-match@1.0.2: {} + + binary-extensions@2.3.0: {} + + bowser@1.9.4: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-process-hrtime@1.0.0: {} + + browserslist@4.25.0: + dependencies: + caniuse-lite: 1.0.30001722 + electron-to-chromium: 1.5.167 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.0) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001722: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-emitter@0.1.6: {} + + char-regex@1.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + classnames@2.5.1: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@1.2.1: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + concat-map@0.0.1: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + convert-units@2.3.4: + dependencies: + lodash.foreach: 2.3.0 + lodash.keys: 2.3.0 + + cookie@0.7.2: {} + + core-js@1.2.7: {} + + core-js@2.6.12: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cryptr@6.3.0: {} + + css-in-js-utils@2.0.1: + dependencies: + hyphenate-style-name: 1.1.0 + isobject: 3.0.1 + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@4.4.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + + csstype@3.1.3: {} + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.27.6 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + decode-uri-component@0.2.2: {} + + dedent@0.7.0: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@27.5.1: {} + + dom-helpers@3.4.0: + dependencies: + '@babel/runtime': 7.27.6 + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + downshift@1.31.16(prop-types@15.8.1)(react@17.0.2): + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + electron-to-chromium@1.5.167: {} + + emittery@0.8.1: {} + + emoji-regex@8.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + entities@6.0.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esprima@4.0.1: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exenv@1.2.2: {} + + exit@0.1.2: {} + + expect@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + extra-watch-webpack-plugin@1.0.3: + dependencies: + glob: 7.2.3 + is-glob: 4.0.3 + lodash.uniq: 4.5.0 + schema-utils: 0.4.7 + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.0.6: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbjs@0.8.18: + dependencies: + core-js: 1.2.7 + isomorphic-fetch: 2.2.1 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 0.7.40 + + filesize@10.1.6: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + find-root@1.1.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.9: {} + + fork-ts-checker-webpack-plugin@8.0.0(typescript@4.9.5)(webpack@5.99.9): + dependencies: + '@babel/code-frame': 7.27.1 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.7.2 + tapable: 2.2.2 + typescript: 4.9.5 + webpack: 5.99.9 + + form-data@3.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + form-data@4.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + formik@0.11.11(react@17.0.2): + dependencies: + lodash.clonedeep: 4.5.0 + lodash.isequal: 4.5.0 + lodash.topath: 4.5.2 + prop-types: 15.8.1 + react: 17.0.2 + warning: 3.0.0 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-monkey@1.0.6: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + glamor@2.20.40: + dependencies: + fbjs: 0.8.18 + inline-style-prefixer: 3.0.8 + object-assign: 4.1.1 + prop-types: 15.8.1 + through: 2.3.8 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + history@4.10.1: + dependencies: + '@babel/runtime': 7.27.6 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + hoist-non-react-statics@2.5.5: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + + html-escaper@2.0.2: {} + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + hyphenate-style-name@1.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-prefixer@3.0.8: + dependencies: + bowser: 1.9.4 + css-in-js-utils: 2.0.1 + + interpret@1.4.0: {} + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-typedarray@1.0.0: {} + + isarray@0.0.1: {} + + isexe@2.0.0: {} + + isobject@3.0.1: {} + + isomorphic-fetch@2.2.1: + dependencies: + node-fetch: 1.7.3 + whatwg-fetch: 3.6.20 + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.4 + '@babel/parser': 7.27.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jest-changed-files@27.5.1: + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + jest-circus@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-cli@27.5.1: + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@27.5.1: + dependencies: + '@babel/core': 7.27.4 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1(@babel/core@7.27.4) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-docblock@27.5.1: + dependencies: + detect-newline: 3.1.0 + + jest-each@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + jest-environment-jsdom@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + jest-get-type@27.5.1: {} + + jest-haste-map@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.9 + '@types/node': 17.0.45 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + jest-leak-detector@27.5.1: + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-message-util@27.5.1: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + + jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): + optionalDependencies: + jest-resolve: 27.5.1 + + jest-regex-util@27.5.1: {} + + jest-resolve-dependencies@27.5.1: + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@27.5.1: + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.10 + resolve.exports: 1.1.1 + slash: 3.0.0 + + jest-runner@27.5.1: + dependencies: + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.11 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-runtime@27.5.1: + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-serializer@27.5.1: + dependencies: + '@types/node': 17.0.45 + graceful-fs: 4.2.11 + + jest-snapshot@27.5.1: + dependencies: + '@babel/core': 7.27.4 + '@babel/generator': 7.27.5 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/traverse': 7.27.4 + '@babel/types': 7.27.6 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.20.7 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.11 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@27.5.1: + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@27.5.1: + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + jest-watcher@27.5.1: + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.45 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 17.0.45 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@27.5.1: + dependencies: + '@jest/core': 27.5.1 + import-local: 3.2.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jose@4.15.9: {} + + jquery@3.7.1: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.15.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.5.0 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.3 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@24.1.3: + dependencies: + cssstyle: 4.4.0 + data-urls: 5.0.0 + decimal.js: 10.5.0 + form-data: 4.0.3 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.3.0 + rrweb-cssom: 0.7.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.2 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsep@1.4.0: {} + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpath-plus@10.3.0: + dependencies: + '@jsep-plugin/assignment': 1.3.0(jsep@1.4.0) + '@jsep-plugin/regex': 1.0.4(jsep@1.4.0) + jsep: 1.4.0 + + jsonwebtoken@8.5.1: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 5.7.2 + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + + jwt-decode@3.1.2: {} + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + leven@3.1.0: {} + + lines-and-columns@1.2.4: {} + + loader-runner@4.3.0: {} + + loaders.css@0.1.2: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash-es@4.17.21: {} + + lodash._basebind@2.3.0: + dependencies: + lodash._basecreate: 2.3.0 + lodash._setbinddata: 2.3.0 + lodash.isobject: 2.3.0 + + lodash._basecreate@2.3.0: + dependencies: + lodash._renative: 2.3.0 + lodash.isobject: 2.3.0 + lodash.noop: 2.3.0 + + lodash._basecreatecallback@2.3.0: + dependencies: + lodash._setbinddata: 2.3.0 + lodash.bind: 2.3.0 + lodash.identity: 2.3.0 + lodash.support: 2.3.0 + + lodash._basecreatewrapper@2.3.0: + dependencies: + lodash._basecreate: 2.3.0 + lodash._setbinddata: 2.3.0 + lodash._slice: 2.3.0 + lodash.isobject: 2.3.0 + + lodash._createwrapper@2.3.0: + dependencies: + lodash._basebind: 2.3.0 + lodash._basecreatewrapper: 2.3.0 + lodash.isfunction: 2.3.0 + + lodash._objecttypes@2.3.0: {} + + lodash._renative@2.3.0: {} + + lodash._setbinddata@2.3.0: + dependencies: + lodash._renative: 2.3.0 + lodash.noop: 2.3.0 + + lodash._shimkeys@2.3.0: + dependencies: + lodash._objecttypes: 2.3.0 + + lodash._slice@2.3.0: {} + + lodash.bind@2.3.0: + dependencies: + lodash._createwrapper: 2.3.0 + lodash._renative: 2.3.0 + lodash._slice: 2.3.0 + + lodash.clonedeep@4.5.0: {} + + lodash.foreach@2.3.0: + dependencies: + lodash._basecreatecallback: 2.3.0 + lodash.forown: 2.3.0 + + lodash.forown@2.3.0: + dependencies: + lodash._basecreatecallback: 2.3.0 + lodash._objecttypes: 2.3.0 + lodash.keys: 2.3.0 + + lodash.identity@2.3.0: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@2.3.0: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isobject@2.3.0: + dependencies: + lodash._objecttypes: 2.3.0 + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.keys@2.3.0: + dependencies: + lodash._renative: 2.3.0 + lodash._shimkeys: 2.3.0 + lodash.isobject: 2.3.0 + + lodash.noop@2.3.0: {} + + lodash.once@4.1.1: {} + + lodash.support@2.3.0: + dependencies: + lodash._renative: 2.3.0 + + lodash.topath@4.5.2: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + math-intrinsics@1.1.0: {} + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + neo-async@2.6.2: {} + + next-auth@4.24.11(next@12.3.7(@babel/core@7.27.4)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@babel/runtime': 7.27.6 + '@panva/hkdf': 1.2.1 + cookie: 0.7.2 + jose: 4.15.9 + next: 12.3.7(@babel/core@7.27.4)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + oauth: 0.9.15 + openid-client: 5.7.1 + preact: 10.26.9 + preact-render-to-string: 5.2.6(preact@10.26.9) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + uuid: 8.3.2 + + next-compose-plugins@2.2.1: {} + + next-global-css@1.3.1: {} + + next-transpile-modules@9.1.0: + dependencies: + enhanced-resolve: 5.18.1 + escalade: 3.2.0 + + next@12.3.7(@babel/core@7.27.4)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@next/env': 12.3.7 + '@swc/helpers': 0.4.11 + caniuse-lite: 1.0.30001722 + postcss: 8.4.14 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + styled-jsx: 5.0.7(@babel/core@7.27.4)(react@17.0.2) + use-sync-external-store: 1.2.0(react@17.0.2) + optionalDependencies: + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-abort-controller@3.1.1: {} + + node-fetch@1.7.3: + dependencies: + encoding: 0.1.13 + is-stream: 1.1.0 + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nwsapi@2.2.20: {} + + oauth@0.9.15: {} + + object-assign@4.1.1: {} + + object-hash@2.2.0: {} + + oidc-token-hash@5.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + openid-client@5.7.1: + dependencies: + jose: 4.15.9 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@6.0.1: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + + path-type@4.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pluralize@8.0.0: {} + + popper.js@1.16.1: {} + + postcss@8.4.14: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preact-render-to-string@5.2.6(preact@10.26.9): + dependencies: + preact: 10.26.9 + pretty-format: 3.8.0 + + preact@10.26.9: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@3.8.0: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + querystringify@2.2.0: {} + + ramda@0.28.0: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-datepicker@4.25.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@popperjs/core': 2.11.8 + classnames: 2.5.1 + date-fns: 2.30.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-onclickoutside: 6.13.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + + react-dom@17.0.2(react@17.0.2): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + + react-draggable@3.3.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + classnames: 2.5.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + react-draggable@4.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + react-event-listener@0.5.10(react@17.0.2): + dependencies: + '@babel/runtime': 7.0.0-beta.42 + fbjs: 0.8.18 + prop-types: 15.8.1 + react: 17.0.2 + warning: 3.0.0 + + react-fast-compare@3.2.2: {} + + react-grid-layout@0.16.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + classnames: 2.5.1 + lodash.isequal: 4.5.0 + prop-types: 15.8.1 + react-draggable: 3.3.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-resizable: 1.11.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + transitivePeerDependencies: + - react + - react-dom + + react-grid-system@7.3.2(react@17.0.2): + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + + react-icons@5.5.0(react@17.0.2): + dependencies: + react: 17.0.2 + + react-input-range@1.3.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + autobind-decorator: 1.4.3 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-lifecycles-compat@3.0.4: {} + + react-modal@3.16.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + exenv: 1.2.2 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-lifecycles-compat: 3.0.4 + warning: 4.0.3 + + react-onclickoutside@6.13.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@popperjs/core': 2.11.8 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-fast-compare: 3.2.2 + warning: 4.0.3 + + react-resizable@1.11.1(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-draggable: 4.4.6(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + + react-router-dom@4.3.1(react@17.0.2): + dependencies: + history: 4.10.1 + invariant: 2.2.4 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 4.3.1(react@17.0.2) + warning: 4.0.3 + + react-router@4.3.1(react@17.0.2): + dependencies: + history: 4.10.1 + hoist-non-react-statics: 2.5.5 + invariant: 2.2.4 + loose-envify: 1.4.0 + path-to-regexp: 1.9.0 + prop-types: 15.8.1 + react: 17.0.2 + warning: 4.0.3 + + react-scrollbar-size@2.1.0(react@17.0.2): + dependencies: + babel-runtime: 6.26.0 + prop-types: 15.8.1 + react: 17.0.2 + react-event-listener: 0.5.10(react@17.0.2) + stifle: 1.1.1 + + react-spinkit@3.0.0: + dependencies: + classnames: 2.5.1 + loaders.css: 0.1.2 + object-assign: 4.1.1 + prop-types: 15.8.1 + + react-table@6.11.5(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@types/react-table': 6.8.16 + classnames: 2.5.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 16.13.1 + + react-tippy@1.4.0: + dependencies: + popper.js: 1.16.1 + + react-toastify@3.4.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + glamor: 2.20.40 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-transition-group: 2.9.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + + react-transition-group@2.9.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + dom-helpers: 3.4.0 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-lifecycles-compat: 3.0.4 + + react-treeview@0.4.7(react@17.0.2): + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + + react@17.0.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.10 + + recompose@0.30.0(react@17.0.2): + dependencies: + '@babel/runtime': 7.27.6 + change-emitter: 0.1.6 + fbjs: 0.8.18 + hoist-non-react-statics: 2.5.5 + react: 17.0.2 + react-lifecycles-compat: 3.0.4 + symbol-observable: 1.2.0 + + regenerator-runtime@0.11.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pathname@3.0.0: {} + + resolve-url@0.2.1: {} + + resolve.exports@1.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rrweb-cssom@0.7.1: {} + + rrweb-cssom@0.8.0: {} + + rxjs@5.5.12: + dependencies: + symbol-observable: 1.0.1 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.20.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + schema-utils@0.4.7: + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.2: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + semantic-ui-css@2.5.0: + dependencies: + jquery: 3.7.1 + + semantic-ui-react@0.77.2(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + babel-runtime: 6.26.0 + classnames: 2.5.1 + fbjs: 0.8.18 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + setimmediate@1.0.5: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + signal-exit@3.0.7: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + split-on-first@1.1.0: {} + + sprintf-js@1.0.3: {} + + sqon-builder@2.0.1: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stifle@1.1.1: {} + + strict-uri-encode@2.0.0: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.0.7(@babel/core@7.27.4)(react@17.0.2): + dependencies: + react: 17.0.2 + optionalDependencies: + '@babel/core': 7.27.4 + + stylis@4.2.0: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-observable@1.0.1: {} + + symbol-observable@1.2.0: {} + + symbol-tree@3.2.4: {} + + tapable@2.2.2: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser-webpack-plugin@5.3.14(webpack@5.99.9): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.42.0 + webpack: 5.99.9 + + terser@5.42.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + throat@6.0.2: {} + + through@2.3.8: {} + + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + ts-patch@2.1.0(typescript@4.9.5): + dependencies: + chalk: 4.1.2 + glob: 8.1.0 + global-prefix: 3.0.0 + minimist: 1.2.8 + resolve: 1.22.10 + shelljs: 0.8.5 + strip-ansi: 6.0.1 + typescript: 4.9.5 + + tslib@2.8.1: {} + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript-transform-paths@3.5.5(typescript@4.9.5): + dependencies: + minimatch: 9.0.5 + typescript: 4.9.5 + + typescript@4.9.5: {} + + ua-parser-js@0.7.40: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + update-browserslist-db@1.1.3(browserslist@4.25.0): + dependencies: + browserslist: 4.25.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + + url-join@5.0.0: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-sync-external-store@1.2.0(react@17.0.2): + dependencies: + react: 17.0.2 + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + v8-to-istanbul@8.1.1: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + value-equal@1.0.1: {} + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + warning@3.0.0: + dependencies: + loose-envify: 1.4.0 + + warning@4.0.3: + dependencies: + loose-envify: 1.4.0 + + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webidl-conversions@7.0.0: {} + + webpack-sources@3.3.2: {} + + webpack@5.99.9: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + browserslist: 4.25.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(webpack@5.99.9) + watchpack: 2.4.4 + webpack-sources: 3.3.2 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@2.3.0: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + ws@7.5.10: {} + + ws@8.18.2: {} + + xml-name-validator@3.0.0: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + zod@3.25.63: {} diff --git a/public/images/IOBIO_Logo.png b/public/images/IOBIO_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2a49224e04cf47bab05016b9d2d2a06cee466770 GIT binary patch literal 614 zcmV-s0-61ZP)OxS-R*G6&35wmiQ=!nU!3W|4M9{6ST!{$TX+`Wp zL{Sk$ObaGLjU|*eO|(s>nYrGXlr~Z9CbMY&#c*EtpL5Uoxq{TlAjmsFjFupCpj{HA zo@GIF6Ap@6h-5xu8X;r#6B-zzIU@gKub7h!grQ)$DXr1itO+8zO3uu2w7UalD_F{n zTN=F^qspHrrt+3nuSv!?5OZpnuJ=nzTevnNZE?@z(;Tiv^bJ~uC?dVoA4i?GS%WI6-2eap07*qoM6N<$f^gIk A?*IS* literal 0 HcmV?d00001 diff --git a/public/images/IOBIO_Preview.png b/public/images/IOBIO_Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..12eae4b81cc21c316189e1c68340c689212bcece GIT binary patch literal 8884 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 UB2)t%{{R3007*qoM6N<$g7>o_O#lD@ literal 0 HcmV?d00001 diff --git a/public/images/cBioPortal_Preview.png b/public/images/cBioPortal_Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..568403ca6ca18a5f0677f5c2f06378da7f71779e GIT binary patch literal 109813 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 literal 0 HcmV?d00001 diff --git a/public/images/jBrowse_Logo.png b/public/images/jBrowse_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..151d7b64f8362fa90c895bee4a459b751689eaf6 GIT binary patch literal 1295 zcmV+q1@QWbP)VQ*(=XEozOcXxL+`x81LJ(apv*t4svt40%vM7(;v z-loxL1grvT%b(N+GqYjz4_v_6-~Yyi;Ze9Qj^fOT9zM1fR8>vHVzB_Ovob;rNjM^t z*Wd3U_N}`J#C)Q)mJogJPGWS_5HX{O+K?NDxY~}`k2=CLZLi?i$2~CKkq@281WQ3- z%0`JRKtg73JUuspWrT@@3PI4~n;%c1ac?s+a<{@-Sj^o;XCsh(9&E_XLB)=8Y%eW_ z(O|f4IG64wg?K#9pL?HdBSOYDlDTa+|4H^zVzHHwcRo5wrlv#OhJ`vX6Cy)bJ*0nl zgg7r>CH|@DlrJ{EQlvFxUJ+Dj5Jds^RMcU_6NF?o@dZs^8ba@}BWP)Q2vHis-k(q5 zgD<~@(>aV-LV;G4pwVhU)C5#Tfh0+|yQCNgpK3y5btMEkwlD&k`PD#62P$?oV9@P{ zpqHRfHRfey;-CJLJVR}VyU^L&2Xppj7)-`Bqs9n=L&G@P-HzJrrOR{3$o9Q_2sxue6?!a^^+2ksCC0iYl3CkG-u>#kMfqBY zk+E^o`gS|{6ZMG&~` z$BTEh!oDRtH71852n78ottrO~Umt{NqnX<$=cMQv8H34aSd}a(h$O6=GvSF}!GzZj zpJyDtaW6zkL|#Dw0#tmh_6GdYeuB@TXJqjX*8}E6iN+xsBp$v=PXK=$KZ`G3`wT{{ z2}Y|4lfeMW>Z(d~u*|=wk&xod zV}yK4H-7qYUS(W=4Urbx!+c0l_zgvFDWuDAR01qH^e&14;aQO80IfnI5>$}FyhgN0 z7vfV?MJ0e71Oy!=wn5Wp=R<;UO=#&O6fM9b=YYz?z|0sE2WSZb{(P26`!*12w3wWn z1RO0u`CD|yGjwYPVDJb%%z@5#2Ie#w1tm33grB0`lS19JrOs}t;+`JX- z(iT#O!+~ft%Ky)XBdgkqv;p?%bh=Gib}6nCtX9%i6L!0OuDPNiUSUxQ$`t_Xx>;Cn zr4eROm-LDY-;<3nYr6RYSsTt8V)bSk%$or7&AM*J^*@RJ|G*4KHwXX#002ovPDHLk FV1j@(RWkqp literal 0 HcmV?d00001 diff --git a/public/images/jBrowse_Preview.png b/public/images/jBrowse_Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..28c9950eefdd552fd7240541879b5d4e4de3bed5 GIT binary patch literal 12966 zcmV;XGFi=uP)Tnyb322k4POW&{*l9svT{Xb3T)e4joa=7VT71255F$O|trI0eKg$um4- zqL>JxCQ4LLOn`{;uw#H`Y@vaMo@=hUb>}m@we~ru?zGRjL)|LD)S@qS?^$Q>wbvfk zu=m!)Z z&w-voD-XdHMcCRbbX|w*3?g6B&_g&UmZj$clWr18ji~_|(d#36PI8)XalBkIu%&EL zegc*NCX)iI>!2K`w}b=N5Qr5tq#OsfUZ%3n zc>K9T$dv>N2?u=+{iZrGDV;|2ow$Zv(S>1ZFf=MlnaW~%Wzougup9#u31DrBXc1|L z(oObI{g(w2RGzGEP`(yYmIiw)kKDQxQg#sucODE{c~CNM+ZMG^hBDEpJj91^k=F+3 zClQ@@(M!J_YF(RtP7}SDOBL&uk+vsbl-8h>AX-AhV4fzJapjT3)@_)Assm+|}CD$27!#hRoxJ)%fuj=7lEYz(-wgg0d$c8E#t zE?Q}T^3*Uvc@ENFST0KRv3lsOxp^)o43P)bq&Ie`>_uwx6z4+ql&2&;{GHo~>d;7* zkV+0gSe8X?qfs9fs0Z67;vqOnCp%p?ar5)@)G1A>#JI97oQBKOEqYP>Ed{+!%Q8DV zi=LhynRYqoEjNFi<~cVvhg2#B!!VYGUN>-!y{Qg()?9(*fvCD(igsA;w(T}O&TqNv zY_ZUEz^%XvtU&j`zzQr0ut-xXm84k1Gi@S~K)1mmow8ocWZhGUm3fpwCEm4y>o%=w z{7TC#0dVEM@ci?LkuJ&#bv9SP;lqcz-pH&Q+;h)8($H|%ckaP$fB%K9(|EN5Pki+s zo~TsM16&wB3K#VW(lM;8a7zTEM{K}tU;YY)Mpxt1qed~X<`{Gv%H=Zp`ub?R3B2XP zH_-qrNlWd@nDZt*o{-oGSFg*dj8FBrsi`Rp3=GJ8f=R4Vns6I%#bR;6=ojFF4-dYT z0k=djU$n6Esi&}&%=+=!=W+JiPDZyO=u`|b(~zGPXoUJz|A7Y{ke1(AEG8|S{5PA; z%7MZIhd-qKYLftx+|at z9vFM}?7>Sfy@cbBKOSeFeYPBgBO@aVIG)JZ6|;KvYB?x(@7|5=+qaWya2OL46LJOQ z0mQB>c1;Wq56gke-+5K#HekJ-T^IfR{m5i8^8KcMxaIUk{WAICxT1NM`cbV=atoY4a8xT)m=w|}E}+LC zOGAsTsYZbX3aFMm z>g$7~69iICeSKS&EybF^xY2E>*Wp$M+v1?pohz;GYB9Jo@#nhhfV=Mos{OM)J(_$L zk`%xCtK6Y@PaE)0{{(E_>~**Zv9|$NJpgzT2wMpFc_)hmr>UM$#>RkmzSE=Wx_V8X zq%Y%N{w4TTJA1tCZEPy`@^hSuPC|L<_w5BFIdO zDxQRrFBQMv{&vkE*+818---0#g;AJs#PhoAv+&;+I{BS6}@z+;WRR{i?}u#u;87b8{NL_dQQM4S;#%iELoNR?^Wlhoq2{HblG%WcwwCD2a&s9rsz)#9lplFNK;U+V5h&I1nwCw)#Es3*(R#_Pu!PTW`Qm zezJ~4&+Fu5Pz}{(3tQpH6@*o*Y+7M8xk6S$v6v;D^FOe8)49+MFOTVImmIR5q~JJg zfvbqW)w@uBS=<8YG#}3~>(YQ6(zaBI>L-6sC9uhIsNu7p6}b1_di#Y-W_*Fqe;&B# zqS`^%N;w01wXg6jYDnCxYQVkPz%VRnG)br9G-wWxLv>wS>4O0oE^e|8u#-M#)jYlP zPH$yo+Fl12GW{FgQ2mxoctK@s8~{8}y+gapGvJsW>(jcfT9PWAwGpOC6-tw25W{V^ zdHOWh)uBVcHPmW!6Lfu^#LcIvbG?4ySt8*|T~`Gso#a`U8S;5o zim=&i;|ee{W7EpqxH@=H836VBHhI9w6YW}MMGf+FU2nkc+owrAI?%%z$AfWbNXN}L zd!m1}A3JL242#syJtt&Y0x_|gk4}4bkT&?s#xz!CEX$P=$K#Jz%CmmGHyFKg%G6Z< zo?4@#zvB3Q6@%kwBpOYS{^!!{{xB@N54r5|%6GXlurVnB9u%*AZCK8_)RWbo3_}jm zcfAXE&wD(b`R#A7Sf{y@J^7^9;okgaF9o|=e)1CyzxR8<__(Sg>NVx8#Yfo#w1xMb zIs@=xmXRQBFz9AxypKve-M@d~R|8H3D=XYGz*4SoeSNz~Z##qZkbTm4R4R=kx|24C zW~)QJh|9A-uS&cE@CtSD#R4z9;EA>T-rl|5UmlQ41FxDVo>+O#qGR=Y|J4T@!-|LWRSg35tC{OAZgp!H>fJ-C=c?cT zRbgeoEd!Lx?t*i_o4^}pGnrt3t@P+u0~qgrf6!3sO_zb?r4bjtNjA!|6qToCm3=Fh z*5$HbyqL=IMG-;h4Kl4rz#~M~I$4Qatx`e422TwhDJGN~64Y;DW zO6gx7{#whkQ+nYzK4N1Sx)R@vo)>GTJ$jw-ES=Hwa2nKkzH;a}&J@*49~xEeVB@vx=WVu8mgQ~RrJ(0H99WlkCz&DX zG%O!~tIEj_WU{6)2GHNEz%lvSQi5wfEoz=b&?v5>VZM9MIyc%wn7b$acWg>hj}ooCAfPHs=3VVomJi%6#S#``npBBx~+aAEXRdBz+QJBD7wx9~XrV(J~pYdM7S$93M@ zi$tAgod>})&t`D=aDfJAg|1`!^h5}MLWL73778$9IknC&choly5dJwcTaw$zIPiEb zHj6uY{|N7$`8;$h?&)w^NEyj9~ve;5@f8J zpU=q*lZiO;g`z)!3wg1K2q^glO(x@{8s+79ap9c;=V)rBatUAmrvohvxT;DY{DVKh z?CrNh>+7rCC>NIIRe+QA)M7f#C?PR7j3YN30e5&e^n~6vJ(q*SvcS(uP4znw>3D|J z*~$g9O;0li(3k8*K^zIuKSHy()>689oS~Z#ll@5j);gMa`k{}iyN=6eia5T9ANrvl zdixU?UY&+nB??xHx()gHe^q$LUr|Mi>1=wqdf34Fb-kF&lx5ly=~sQH4`a|wVDI5E z3=I#FML2<-J9pxkV~)bT_uhwhUV1UI*%I!*{{ftP-Z_|^o|8d-he!Hx_|Oy$Op6AU zDF^YhyLVyrs#P**5Jzh(7EAc~v(MtJH=cnLPtG-o+C>R8%BZ|+msfZi^&0Qw^rO$R z%q|pLtwV8~CyNLn>9YB}3`bxpL1Kej~}u8tm+9Hvek%E*y8GXO(4 z?a?EbNAaf*BYoWQaQk{|tO!y3W#;FRCdoqUpssD26O!aUAXy!GJ%gC5HKnJ@lWmMK zHq4abB;L-!bQNtx{Ux@p>O@4<*%pg%I){(jyPFDR)Gj@8-vhPKZA$<_50Yobt{S` z3!ByqL=QOTfA;HNr%v)ykFgql1;XMubcze&@P~<%+yUG!(u=}HZ7A$C&ty+O-g52r z_=k7C6}?-JhhvpnqQ{-z2{{h_O5)F@33K$*pH{EZ^qHm3TimguYkjHhdf}CqCWN7P zyaSfE8+ieEk|~qq;rNE0LN+U-e({O=BR6iuG>OoB^r(lVyNU5}xuOkIUSs?BqeO#o zXkDXhD&*k8Zja62-xr~ic(XJADSt0e7WxYR9Q~Uf1izK=nTvhbw z6W0nz>iaQS*h0i>J4ldD3z)CNW%DJ(iE-Uj?;NP9$c8*cgP<=33eClX4?TeXz5%3@ zDI9zBF(_IhvMh_C7sX$hl!#QqMbW0zRehg9>LUtzoY!oofWDr1gRa?(9^+!f#$;lO zXggR_9)aas*}~|BwXKSGRz*isfrZYyjTWxkXf;r%+hGmt^66%9LSwGBZw? zH7+u3c%Fw2PvgQjJdQ7a?b{eS;Sy{hIXW|cxM{j}d2c0Mr#RggRXWLYxO60LG2ab+ z&kOkArk$7;yPKwKmA_)q!EvwY!v`+kB7ZvzVFv1e+I8y28)5MbZ>TN1!Jt*)RQ-XU zFs))GreR|``J&qudadGk;@CZv#Wi2}D}4LU{shxjExiTqd34H8m7l@OLoJW{xpCtWxcr0XlhSHq=XN9T>;JKtC0lL{>6a3x5E3F&x$DJl@ejuflssx*8n$qePZ?B?}|84(SQx zGV^3`Nw&>9=c!Y@m9!YO4f&K{3R_1{g{!B> zqOwM&e{#a1Ox9wvNje!Ikqjvo`Rxp!2d>uwsD2M$eRY`Z;6aGw5jpcjfUfuBs;NK4 z)q|H}$T^0XscaIAv{H6RGdDer&(UDp@vryd^w(^|=T2CU@wuu1oDmXPr##BEu7SDU zz4+L^+wifWD-d%=iHy^PUWjcV!W!4SAZmIJ=`m~m`mYyE?wPypLiWDDZP zK%903WmI)IEh5WBbvjx>@?{qMyAhPXNUu(&Fs^NT8PyU#;lo>ZVSb92bi;GQp|BYIlDh57H%ifa{% zu83HAmCL#B991sMQ8+(OJx;Q`%VCg=nsoCdBCz8-rVtSve_3v;ES!$;k39MqlBpz8 zrh(0C*TM0(nAeLyY~nWiW1iVN*i)x4)v@(fXbMMd4UYATA{hzBr~|Dft0d2Dwjxh{ zkGdM~?JEbzKWh0aXJ!#g_crc`i7E>scwiifNFqK^SpoUI91S|Eqt^IS(d(crb$POy zF_lYUFqLP8C!#C@7MbOZWP+Ev_ULiQKD`b8C?CPM6wOS-UAx}jluds!mbbq$N}T3$ z5@Je1HBr#?07=CX3XCJcogh&;tk&Os^XG+34+txmizjy(Or%wySZgG0U= zrl!3WMmD4rwN;i#+mB3)HgOhGX$_?k4Kv%zmmTxjYz*1CB1YEejRR8fg&lM9`dhSJ zmZ+mUQT&lVjoQy`o4;_J7rG$KvfDmA&MTYEAdyI^t>IA?;TGw!HFkEcgmTFj8>>_- zRzHq8s+U$aS043gH6pd~nXj{0VWWObSO4<11l8lXxTTPE&2UZ#&V;8rmm6^Tf`vD} zVFc%GtGTL1La6);`g!r*Dk=oNKu|j<^-C~4NA3aD|}Q4^pU9szgZN$3NDO?X8ehWbZ%R`FOFVR zUGvk)C7~z9MzWAx_O6XMYO8n2jCb9bs8M}%y_w8Z3&!kpURkjE!ngW7z@d{oeKA0V zrfoYlJ87bI{gC`0`gy^Xj!Z>j z@6;?gA<3uY((GF@S={oSdqmvOHRUYf6-<48%RAjGJWOAleHgtxWx8(9)fUH@L@Fy2)-6@O(?^0yRC6#2R=QAR8zPZm|4 zd3+q3k6MjnvP>(pXiAT(X@0(hbSkFa+sO5)t3{_Wi9N@aO&m0dU(Km`CyKvCw{4sC z*$F)+lg*Y9PngOm4(-sh9f5Vp9P*BVse%Dh_g23gP0Z(>n2>88)9A*nLdI(!`v#&G zUju3U%>8%t_dbu4XFq_lK8?i+EK=~`T@b5RA$Hz{3)oUAO9hM5M}05zqJd59`}bq( z_rC+d=h587@etq=r9oVB#Q(tsQycKX;&v4DoH`xRJDFBFcbAS@DLtGXHIf!7b+gfHgbfzz^^U<<3IbgveiV_PAyUfOKG9v4^MGk{+|Y7Ndm@-dXGl*F+; zL7aT4Vk+w#jQQtYihN-xmBQWRWjFPM__I@9q}g^B-2fH?&74L4i3*fRIW=iERt-4E zpRqKpbM~3$)Xo{==3djInn z|H#uQI2wv5>( zCTW)jlsUU_n6cjEY-ch^pMSnQejzt|h7b%E^M&7m*B`8_%*#`@aYclx#oVCDk&k!$ zzgv-XCh+X+pP*+|Svry(f0uwda#c7^x*@728`j}Am14+I(GH7Js1DaDy?mjBMBHqt zEH%6nZY!1R5INTiqcNjGG;^&#`kkGxzV}&B=%Vx+X`8MdKifQ~{)0Nmf^(z=T{Oh>joH%;?`K@|z zc14HF-+w>40oM39QoLIB_R4cnVX+PEx`K&rU!oiW-~R4TP(Cz;;nNBzJ-*j_s1or5 zh{TD8)%($w(shOtesro%@_eLA`~~0|0$=^ob0{AE5t5@9P|q&6m}h777#B0w5w zf;saN*1zFHG%@e@QQ8MO{d8GMGJ8?+X2Ja zygA&w$>O01iHhXb##m%|7hNt~H{ri+I~KA0A-rV85FZKrDq*n%!*QNC?VV~?8KgVO zGn$^LI)xmPj@yWe;?O&VWC{u1KtQ6{Qt&7ABu+ok#Zf0+ibQIj@`*Lgvr~E!N9iml zh7&e#M7m_*B_y$WReHhN=xwK39KAj*fs_7l6q}1%u%1+?|Nh=%J2LsV0;2Hz^WNrV zr5NDp2dWL3cGc-#79))#jzC~`?{w*1Dv?qnBh2B0k0GfSFgE{sn1<(jl;@N}f`!^4 zybHf9D(hHNTqpGC{rUL}deZ3-v$;plC6_~b<`B{keg(7VzaOP!zqI1D&mV6Fw<7qn zknZ7-^c+fD)ZzRM<{i;vLz%1OPuCq3ZQ_T}DN<`3*AuU^^Eo7v@rFJTUDqBx-7ppm zE@Y{|KxqJb2cO47#k=sqH6Nmd#%(arbw#9{`^s0aDBxWlWPljH>MErk@k#)$w_9)h zBnk%(BX#_DVCP=;5J7R<^(Z$Hfn*}LU0fKwVDs`gqUhPWi4D*FCw}zhkK(KkpMeAY zTjYMf_UWNHe;x6@SbF;#QJQb1>;k={J%{_!-^7!5d=iuIejl#+P!E;@46VN(or3G% zFu}o5Ua1hwQb(*$qHk3U&y%IAr@tH4r+V{GtGITl@F7c`l>A~OJzI}q3t113PscHt ziX%5bs{rqX?YJzR^0!>{c%X?zRI`_!_ttVAX50_AWV+xnQEw*$bWoddkG%ls% zhcs8k=I5o}tPT-Y9rW`TC{nUH_r*O~a$|T_C{D-cw0ipnNI??H=d`q z;UKVnT>e(+Rrs@{FI2^!$9n{SS{QCI^wf3DqBe)KQ~7P1(bK3i@UhEuO0mg;B?Grn z{OyWJIdkKUp_ZN~D-c^3SAFbbl?TgYZEOZP>TDnX^fRPbdxN&J-|ppxcZDwkDUDoy z#f6>C3){oj6xRm5n9+}e2fu(L?Z1Vy@mVs1zuaYd;kc+U7q1k0JkWSDbsV?-ve5I) zd>OxU`Bt2KVnxb}8aUkm@@SiqcqM;!W;zScWU*C+?$9C`#fON%x5_`i7mI0#$NY;K z&|SgE^?hE#ak`f00#1ftsB*}1q%BimRWEQzukh40dL7^x;X2{CP*Z#qM5T+sdFM~H z_Gt=8NoaUDj;)*1fvs;@K#;YO4KgU|LaNv)aR{^4T0b0G#O?dLK~ zWirhtlcv;t>Nj{ez9~M;Opg#;v#Za-?y@TtxxXZo=jB?V#}k@UcZFRy#KtI`!Nt-H z9k+kwWjy@oBUqRDO*reHMBdk#)Jwg0ynQk8`&4;K^R_&|>vSp4?&6G8FUEfKWsKba zX&5)|Luq{PqVo(O*_*-_Zg~XT&rf3QmaWq5;(;qgCp#oMRrh(1Zd=~(dfc(S_`nrg z8gP!~Ujm}k`5oE$+uao+eP$szjy0+qu5y2EEA$wa+jYF4F)~9O#5FrdjekUCQByCq zzFHh6{&j>CaxQj6xO^bGN-r9xqL(2>`wjU#)|Sh-8zy?h;`0nZ^P_rls5mLIib{@w zXpb(^3&%ybEo)QhbbA-)u0REZMN<~Hv1Mw~qGezjIk!)Ce@DiIcS+1NN{ zajoWEo)-(N>j-*bIGHDlaRuIG)W~1CY+;~3E<+6HZ8(M(vvDB|H#<9v6uG2K#U|sW zpw|_Va_YM4YLNAZ&xg__T=~Ez?3+vDTW@;`6PXxLbDpT4KoqV5Ci#{g-1-u>|MWIY z9D6OC>9TZWT28wfa4Ym`aS7YRSC4)YS3LAh%pLV9Xa{>er>Gv0@LE_oc| znKO506%g+HcyO;z1JXO1U?ZC!Bn=~u-qZo` zUC%t5ddF%)&M>jU8in&Cf!SISPbK!@5G&fzjZQN7<0MMGjaj&uJ*`av9Lgo@*YU9 z#})tZV;s9>7_U8R6$-gLmIYkC;&2e(7Gq6#pO(8gY{~oLXa1IiKdF$7(2EoP1ExIH z5&bB7EKG0|v#YK=nyh_Q`$GaLL#&96-3B9{v%+@{`1(OdJ1Sbl2{A_|@DngSb~~AQ zuRuOGp%xptEFx;>KnG=s;%_PFbyya8Z(fL_eNpu2-{IL39(!UMXS}xR^t~d|*$Q+A zjNkq3O`bDZY31_IS~cMO04}^aQ8d~q9p7;Zg^Azs_xCY9gNzq_l*fhV&Z4*XBZwvV z9_5WR+bSHHPQAIj6?)z=qM;#g=QoG$&yaYg`+;UXACKsOcRyHYDDSoP$(L|gu^4i3 z1HH5J%FY}{kDp~o)K2%L+vL5%AMdJ|oG#TEI^PE&X0T`f1gryPl(Oy7_v)oFl64rp zdi>5OXK?gUy?EVem8jL#hl^JR+wy_&>u(vAv!hV>Rb-=t-~xxMQXC68`MZE41jlxt zDA`zd+52$O#3+eeItqn?4ESRhy0R=xOtp>2@sHZ8$`X%n#;u?KN1Sx#uVA20!vz-( zA(u02$`ZzVC-fZOGFaV-ZOz2MDW_s&^fK&zb073lyk&aw2Gm?m9z$tHkBc--{!HHI zDBy{dEIE#@O5l`}`u)%XD}!sfK{F~xkBt2X3*Mk=cun5x5`pt|2iFb3sdjN!@?_A- z61V-}&Ddkk$!BGfDRtfQ($<0Fi?HEkQPYD~Mu9}Q7w57VS#t~yjXB87=3C&;>4+Yu zlX_tdE{}cYM&vHK34Je2q4DbA2zr!PsZ>JDRIO#TWy#E2cskP|M=My za`_o720G=hV|r4g%&BozWnrVpHP=6hTW&g4{Q~V}IE2-?@8ey+ zdl4B>Vlah`J~NAnVy`NWXbbe(=RMMSA4-o_xFW4^d=^eC zGHe9ta60L5Dv4S8%zS!cE$Msr?|^&Gc@XI|R^S%{+)f&`m$`AH{2NFbJXVaU@7~{; z_=m+=DV4YgM{TEN8Q;4X7hn1N_{JA*#Zc^QxZnB#=F3Gqa%d1A{nsSkbHy&qFQ7hCV#(>2IjCk&#$45;^NiQ-x6D zqG#*&alH3Wi?Q!WL&JHK4$HFX=q(u8_67|0_v4u1`*HaVA4hEBAo|Tw9JhrmhNBvi zMN66Ia`GNZkCNo`W#wi7C9u_XWtYg(f}$O3LXHq_=))hz+?{tq@9V2EUWq3U+OFK+ zs>qimEhSFKtKH;=3B_iMa2$c<@}=qOJc}g<2gpyh?#KZo;!aKM4BO{XYo{y(B^ty> z4;iwKnD(9-TkaoB84d=FJoe^$NS||+ythrSNm)YcGX%$3@I3`vR(rcBRf4K=uVf1W zd6#>0?=RctW$VBJ*b@^AyM}6lCcEBMS2{zP)z~!tLHueA7_I22P{%U19Th&2UEGA0|rQN$R_1VwL z+n<6KlQr(TjbgvQy1D)&Xe3g#vjaD}>3RWVthyUlmKr#0bs{l|-ob51CCM}8bmzJt zlNDBY8<8!4=6f{&w}BbcaQ3$070cr?K~xtM9`@Aag81I*WGbBOxLb3l zmt)|?^b6=M_hPs>B+rDYP2AjZLoS%;5NBmGF#6M8K&iUB#{#2)XtOMQ+Vt)R?!yo* z?*lZTUvvB^d~sS;I!#^69nx!#(?aUgtLGYeEK{d?F-?y8-gJ-Lg;Ni&BoXh`C{psq z?gNJkFb(Njp=S3t<i+WJ&5DXkK(O|hVjjjKf<^^iO^_KRq48c*YF5K!S*N=%ZOP-N$k=_kveB4s{Tlwy;qh%oHaVc@iJiE(#GkV#qh0ET(31^<6cEGQ! zaoq=Qi|^dM4?lWnf?QC+1mFF(txsoE`gUU{uOwFC&=xLBqyKe7cH^Elppl;KWSXc14KsKm14xJ8E6;GIw}78E*zI z2m@@?w86KU)u!V9YZh%J=O!?{dNmA3AyVecFvtvUszMOdl||lzKmvAwTo{&MWmMfM zxhz@-{6+E(FG%WuZAowS41MRwatZn#BXM=sX8v0^V#Lw!GG#fS`uhxNG1CFjjQ&=bySBfBV0#LeWeu;Oe17pLy1$$h>MR3dRGN^&FME+gq?J(60^SQ@Ky# z%{`lNZ0YSNYV(LHXD9qc;fAxTanczdL+M8a{CwmFh=HVmp=;b>xlQo*= zX-|w}_06Awh{qN>69J4_=f52u`HO3x{l!bkNAbPRmTy+pP^%j)D_t)<0z zH=uF{3bEA5Rk;o)_ma_4FYgcF5N`C{+4T&JELR(Y0vB`mg2 cEC%=g0jFTtg?ebFP5=M^07*qoM6N<$f|gN%b^rhX literal 0 HcmV?d00001 From aaec38954b6e7728322c900a93549d5a25dc0179 Mon Sep 17 00:00:00 2001 From: Anders Richardsson <2107110+justincorrigible@users.noreply.github.com> Date: Thu, 3 Jul 2025 16:34:02 -0400 Subject: [PATCH 09/10] update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 83e36eb2..ee5c5237 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,2 +1,2 @@ @Library(value='jenkins-pipeline-library@master', changelog=false) _ -pipelineOVERTUREStage() +pipelineOvertureStage() From 32cc1482d2bdd256961236c25fa2eee6dfc67100 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 4 Jul 2025 16:05:27 -0400 Subject: [PATCH 10/10] =?UTF-8?q?#68=20/=20Use=20Index=20Files=20?= =?UTF-8?q?=F0=9F=94=96=20=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move DemoData button out of header * Add + Organize Buttons * FullScreen Button Added * Updated Header Button Styles * Fix Icon alignments * Fixed Full Screen Icon * Updated Table Button Colors * Fixed table button disabled states * Position CountDisplay & page elements, Adjust button proportions * Remove Todo comment * Renamed BarGraph icon, 2025 Copyright * Move TableHeader to its own file, tweak button borders * Separate header buttons / toggle button definitions * Working FullScreen button, page reorg & icon color fixes * Use explicit return; additional centering * Updated toggle panel prop naming * Refactor buttons & theme * BarGraph default export fixed * Improved button sizing to fit table + naming * 1px adjustment Count Display tweak * Last detail, corrected button padding top/bottom * Get index file data * Remove Demo Data logic * Prettier / cleanup changes * Fix table semantics error * Use previous Score function name * iobio version bump w/ some type updates * Add server URL * Fix package-lock * Update Index File definitions * Updated function name * Remove optional chaining & unused import * Move loadAndSetFile definition * Remove lib type import * Reorganize getFileMetaData * Separate Utility files * Remove vertical-align middle * Remove letter-spacing * Type & Var updates * Add Type Comment * Updated Type guards * Move functions out of component files --- .env.schema | 3 + .../pages/explorer/BamTable/StatsTable.tsx | 128 +++++++++--------- components/pages/explorer/BamTable/index.tsx | 59 +++++--- .../scoreFileHelpers.tsx} | 75 +++++++--- components/pages/explorer/HeaderButtons.tsx | 2 +- components/pages/explorer/PageContent.tsx | 3 +- components/pages/explorer/QueryBar.tsx | 2 +- components/pages/explorer/fileTypes.ts | 32 +++++ components/pages/explorer/getConfigError.tsx | 18 +-- components/pages/explorer/index.tsx | 6 +- global/config.ts | 2 + next.config.js | 1 + package-lock.json | 14 +- package.json | 2 +- pnpm-lock.yaml | 10 +- 15 files changed, 221 insertions(+), 136 deletions(-) rename components/pages/explorer/{fileUtils.ts => BamTable/scoreFileHelpers.tsx} (57%) diff --git a/.env.schema b/.env.schema index 80a673c3..269a8829 100644 --- a/.env.schema +++ b/.env.schema @@ -36,3 +36,6 @@ NEXT_PUBLIC_KEYCLOAK_PERMISSION_AUDIENCE=song # Score file access is needed for IOBIO and jBrowse components. This variable is not needed in vanilla Stage or Arranger NEXT_PUBLIC_SCORE_API_URL= + +# Iobio Configuration +NEXT_PUBLIC_IOBIO_API_URL= diff --git a/components/pages/explorer/BamTable/StatsTable.tsx b/components/pages/explorer/BamTable/StatsTable.tsx index 69b83271..b1f48f87 100644 --- a/components/pages/explorer/BamTable/StatsTable.tsx +++ b/components/pages/explorer/BamTable/StatsTable.tsx @@ -30,8 +30,7 @@ export const StatsTable = ({ file, fileId = '' }: { file: FileTableData; fileId? const [showTable, setShowTable] = useState(true); const { selectedRows } = useTableContext({ callerName: 'File Metadata Table' }); const theme = useTheme(); - const { fileAccess, fileDataType, fileDonorId, fileFormat, fileStudy, fileSize, fileStrategy } = - getTableData(file); + const { fileAccess, fileDataType, fileDonorId, fileFormat, fileStudy, fileSize, fileStrategy } = getTableData(file); return ( <> @@ -96,7 +95,7 @@ export const StatsTable = ({ file, fileId = '' }: { file: FileTableData; fileId?
{showTable ? ( -
-
+ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + `} + > + + + + + + + + + + +
File IDDonor IDStudyData TypeStrategyFormatSizeFile Access
File IDDonor IDStudyData TypeStrategyFormatSizeFile Access
{fileId}{fileDonorId}{fileStudy}{fileDataType}{fileStrategy}{fileFormat}{fileSize}{fileAccess}
{fileId}{fileDonorId}{fileStudy}{fileDataType}{fileStrategy}{fileFormat}{fileSize}{fileAccess}
) : null} ); diff --git a/components/pages/explorer/BamTable/index.tsx b/components/pages/explorer/BamTable/index.tsx index 7d94b091..8becbf83 100644 --- a/components/pages/explorer/BamTable/index.tsx +++ b/components/pages/explorer/BamTable/index.tsx @@ -34,34 +34,28 @@ import { percentKeys, type BamContext, } from '@overture-stack/iobio-components/packages/iobio-react-components/'; +import { useArrangerData } from '@overture-stack/arranger-components'; import { useEffect, useState } from 'react'; import Loader from '@/components/Loader'; -import { FileMetaData, FileTableData } from '../fileTypes'; -import { getFileMetaData, isFileMetaData } from '../fileUtils'; +import { getConfig } from '@/global/config'; +import { type FileMetaData, type FileTableData } from '../fileTypes'; +import { getFileMetaData, IndexFileQuery, isFileResponse, isFileMetaData } from './scoreFileHelpers'; import { ToggleButtonPanel } from './ToggleButtonPanel'; import { StatsTable } from './StatsTable'; const BamTable = ({ file }: { file?: FileTableData }) => { + const { apiFetcher } = useArrangerData({ callerName: 'GetIndexFileData' }); const theme = useTheme(); - const [fileMetaData, setFileMetaData] = useState(undefined); const [elementState, setElementState] = useState(initElementState); + const [indexFileData, setIndexFileData] = useState(undefined); + const [fileMetaData, setFileMetaData] = useState(undefined); const [loading, setLoading] = useState(true); + const { NEXT_PUBLIC_IOBIO_API_URL } = getConfig(); const fileUrl = fileMetaData?.parts[0]?.url || null; const fileId = file?.id || fileUrl?.split('/').pop()?.split('?')[0]; - const loadAndSetFile = async (file: FileTableData) => { - // TODO: Add Client Error Handling - const data = await getFileMetaData(file); - - if (isFileMetaData(data)) { - setFileMetaData(data); - } else { - setFileMetaData(undefined); - console.error('Error retrieving Score File Data'); - } - setLoading(false); - }; + const indexFileUrl = indexFileData?.parts[0]?.url || null; const updateElements = (key: keyof BamContext, value: boolean) => { const newState = { @@ -73,6 +67,38 @@ const BamTable = ({ file }: { file?: FileTableData }) => { useEffect(() => { if (!fileUrl && file) { + const loadAndSetFile = async (file: FileTableData) => { + const indexFileResponse = await apiFetcher({ + endpointTag: 'GetIndexFileData', + body: { + query: IndexFileQuery, + variables: { + first: 1, + sqon: { + content: [{ op: 'in', content: { fieldName: '_id', value: fileId } }], + op: 'and', + }, + }, + }, + }); + + if (isFileResponse(indexFileResponse)) { + const indexFileNode = indexFileResponse.data.file.hits.edges[0]; + const { fileMetaData, indexFileMetaData } = await getFileMetaData(file, indexFileNode); + + if (isFileMetaData(fileMetaData)) { + setFileMetaData(fileMetaData); + setIndexFileData(indexFileMetaData); + } else { + setFileMetaData(undefined); + console.error('Error retrieving Score File Data'); + } + } else { + setFileMetaData(undefined); + console.error('Error retrieving Score File Data'); + } + setLoading(false); + }; // On page load, file table data is populated, // but original file url needs to be requested from Score to use for Iobio analysis loadAndSetFile(file); @@ -81,6 +107,7 @@ const BamTable = ({ file }: { file?: FileTableData }) => { console.error('No File Data'); } }, [fileUrl, file]); + return ( <>

{fileId}

@@ -89,7 +116,7 @@ const BamTable = ({ file }: { file?: FileTableData }) => { ) : ( <> - +
{ - const rowData = row as FileTableData; - return Boolean(rowData?.id && rowData?.file_type && JBrowseFileExtensions.includes(rowData?.file_type)); -}; +import { getConfig } from '@/global/config'; +import { SCORE_API_DOWNLOAD_PATH } from '@/global/utils/constants'; + +import { baseScoreDownloadParams } from '../constants'; +import { + type FileMetaData, + type FileNode, + type FileTableData, + type FileResponse, + type ScoreDownloadParams, +} from '../fileTypes'; -// Type Check for Score Data response -export const isFileMetaData = (file: any): file is FileMetaData => { +// Type Checks for Score Data response +export const isFileMetaData = (file: unknown): file is FileMetaData => { return Boolean((file as FileMetaData)?.objectId && (file as FileMetaData)?.parts[0]?.url); }; -export const getScoreDownloadUrls = async (fileData: FileTableData) => { - const { NEXT_PUBLIC_SCORE_API_URL } = getConfig(); - const length = fileData.file?.size?.toString(); - const object_id = fileData.id; +export const isFileResponse = (response: unknown): response is FileResponse => { + return Boolean((response as FileResponse)?.data?.file.hits); +}; +export const getScoreFile = async ({ + length, + object_id, +}: { + length: string; + object_id: string; +}): Promise => { + const { NEXT_PUBLIC_SCORE_API_URL } = getConfig(); const scoreDownloadParams: ScoreDownloadParams = { ...baseScoreDownloadParams, length, }; const urlParams = new URLSearchParams(scoreDownloadParams).toString(); - try { const response = await axios.get( urlJoin(NEXT_PUBLIC_SCORE_API_URL, SCORE_API_DOWNLOAD_PATH, object_id, `?${urlParams}`), @@ -60,12 +68,39 @@ export const getScoreDownloadUrls = async (fileData: FileTableData) => { return response.data; } } catch (err: unknown) { - console.error(`Error at getScoreDownloadUrls with object_id ${object_id}`); + console.error(`Error at getScoreFile with object_id ${object_id}`); console.error(err); } }; -export const getFileMetaData = async (selectedBamFile: FileTableData) => { - const fileMetaData = await getScoreDownloadUrls(selectedBamFile); - return fileMetaData; +export const getFileMetaData = async (selectedBamFile: FileTableData, indexFileNode: FileNode) => { + // Base BAM File download + const fileSize = selectedBamFile.file.size.toString(); + const fileObjectId = selectedBamFile.id; + const fileMetaData = await getScoreFile({ length: fileSize, object_id: fileObjectId }); + + // Related Index File download + const { object_id: indexObjectId, size: indexFileSize } = indexFileNode.node.file.index_file; + const indexFileMetaData = await getScoreFile({ length: indexFileSize.toString(), object_id: indexObjectId }); + + return { fileMetaData, indexFileMetaData }; }; + +export const IndexFileQuery = `query IndexFile ($sqon: JSON) { + file { + hits (filters: $sqon) { + total + edges { + node { + file { + index_file { + name + object_id + size + } + } + } + } + } + } +}`; diff --git a/components/pages/explorer/HeaderButtons.tsx b/components/pages/explorer/HeaderButtons.tsx index d77e97ab..1ec98071 100644 --- a/components/pages/explorer/HeaderButtons.tsx +++ b/components/pages/explorer/HeaderButtons.tsx @@ -23,7 +23,7 @@ import { css, useTheme } from '@emotion/react'; import { ChevronDown, FullScreen, BarGraph } from '../../theme/icons'; import { tableTypes } from './constants'; -export const getHeaderButtonStyles = ({ active, accent }: { active: boolean; accent: string }) => { +const getHeaderButtonStyles = ({ active, accent }: { active: boolean; accent: string }) => { const { colors: { white }, } = useTheme(); diff --git a/components/pages/explorer/PageContent.tsx b/components/pages/explorer/PageContent.tsx index 3dfd8539..9aa5b105 100644 --- a/components/pages/explorer/PageContent.tsx +++ b/components/pages/explorer/PageContent.tsx @@ -32,8 +32,7 @@ import useUrlParamState from '@/global/hooks/useUrlParamsState'; import BamTable from './BamTable/index'; import { tableTypes } from './constants'; import Facets from './Facets'; -import { type FileTableData } from './fileTypes'; -import { rowIsFileData } from './fileUtils'; +import { type FileTableData, rowIsFileData } from './fileTypes'; import QueryBar from './QueryBar'; import RepoTable from './RepoTable'; import TableHeader from './TableHeader'; diff --git a/components/pages/explorer/QueryBar.tsx b/components/pages/explorer/QueryBar.tsx index 8f668e63..35f192cf 100644 --- a/components/pages/explorer/QueryBar.tsx +++ b/components/pages/explorer/QueryBar.tsx @@ -71,7 +71,7 @@ const getCurrentSQONStyles = (theme: DMSThemeInterface) => ({ ${theme.typography.label}; &:after { - content: url(data:image/svg+xml,%3Csvg%20width%3D%228%22%20height%3D%228%22%20stroke%3D%22white%22%20stroke-width%3D%222%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%20%20%3Cline%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%228%22%20y2%3D%228%22%20/%3E%0A%20%20%3Cline%20x1%3D%228%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%228%22%20/%3E%0A%3C/svg%3E); + content: url('data:image/svg+xml,%3Csvg%20width%3D%228%22%20height%3D%228%22%20stroke%3D%22white%22%20stroke-width%3D%222%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%20%20%3Cline%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%228%22%20y2%3D%228%22%20/%3E%0A%20%20%3Cline%20x1%3D%228%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%228%22%20/%3E%0A%3C/svg%3E'); margin-left: 9px; } `, diff --git a/components/pages/explorer/fileTypes.ts b/components/pages/explorer/fileTypes.ts index b3d2c69e..e0693934 100644 --- a/components/pages/explorer/fileTypes.ts +++ b/components/pages/explorer/fileTypes.ts @@ -19,6 +19,8 @@ * */ +import { JBrowseFileExtensions } from './constants'; + export type FileMetaData = { objectId: string; objectKey?: string; @@ -73,3 +75,33 @@ export type FileTableData = { file_type?: string; file: { size: number }; }; + +export type FileNode = { + node: { + file: { + index_file: { + name: string; + object_id: string; + size: number; + }; + }; + }; +}; + +// Score API File Query Response +export type FileResponse = { + data: { + file: { + hits: { + edges: FileNode[]; + total: number; + }; + }; + }; +}; + +// Type Check for Table Data unknown[] +export const rowIsFileData = (row: unknown): row is FileTableData => { + const rowData = row as FileTableData; + return Boolean(rowData?.id && rowData?.file_type && JBrowseFileExtensions.includes(rowData?.file_type)); +}; diff --git a/components/pages/explorer/getConfigError.tsx b/components/pages/explorer/getConfigError.tsx index b67d6b40..6a026dfd 100644 --- a/components/pages/explorer/getConfigError.tsx +++ b/components/pages/explorer/getConfigError.tsx @@ -25,15 +25,7 @@ import { css, useTheme } from '@emotion/react'; import { GenericHelpMessage } from '../../DMSAdminContact'; import { Checkmark, Warning } from '../../theme/icons'; -const ListItem = ({ - Icon, - value, - fieldName, -}: { - Icon?: ReactNode; - value: string; - fieldName: string; -}) => { +const ListItem = ({ Icon, value, fieldName }: { Icon?: ReactNode; value: string; fieldName: string }) => { const theme = useTheme(); return ( @@ -82,15 +74,15 @@ const getConfigError = ({ index && documentType ? ( !hasConfig && ( - No active configurations for the platform were found. Please make sure the index and GraphQL - document type are correctly configured. + No active configurations for the platform were found. Please make sure the index and GraphQL document type are + correctly configured. ) ) : ( - One or more of the following values required by the platform do not exist. Please make sure - these values are specified in your platform configuration. + One or more of the following values required by the platform do not exist. Please make sure these values are + specified in your platform configuration.
    { const theme = useTheme(); - const { - NEXT_PUBLIC_ARRANGER_API, - NEXT_PUBLIC_ARRANGER_DOCUMENT_TYPE, - NEXT_PUBLIC_ARRANGER_INDEX, - } = getConfig(); + const { NEXT_PUBLIC_ARRANGER_API, NEXT_PUBLIC_ARRANGER_DOCUMENT_TYPE, NEXT_PUBLIC_ARRANGER_INDEX } = getConfig(); const [arrangerHasConfig, setArrangerHasConfig] = useState(false); const [loadingArrangerConfig, setLoadingArrangerConfig] = useState(true); diff --git a/global/config.ts b/global/config.ts index b754fa08..c5615ed7 100644 --- a/global/config.ts +++ b/global/config.ts @@ -47,6 +47,7 @@ export const getConfig = () => { NEXT_PUBLIC_LAB_NAME: publicConfig.NEXT_PUBLIC_LAB_NAME || 'Overture Stage UI', NEXT_PUBLIC_LOGO_FILENAME: publicConfig.NEXT_PUBLIC_LOGO_FILENAME, NEXT_PUBLIC_SCORE_API_URL: publicConfig.NEXT_PUBLIC_SCORE_API_URL, + NEXT_PUBLIC_IOBIO_API_URL: publicConfig.NEXT_PUBLIC_IOBIO_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: publicConfig.NEXT_PUBLIC_SSO_PROVIDERS || '', NEXT_PUBLIC_JBROWSE_ENABLED: publicConfig.NEXT_PUBLIC_JBROWSE_ENABLED === 'true', NEXT_PUBLIC_IOBIO_ENABLED: publicConfig.NEXT_PUBLIC_IOBIO_ENABLED === 'true', @@ -74,6 +75,7 @@ export const getConfig = () => { NEXT_PUBLIC_LAB_NAME: string; NEXT_PUBLIC_LOGO_FILENAME: string; NEXT_PUBLIC_SCORE_API_URL: string; + NEXT_PUBLIC_IOBIO_API_URL: string; NEXT_PUBLIC_SSO_PROVIDERS: string; NEXT_PUBLIC_JBROWSE_ENABLED: boolean; NEXT_PUBLIC_IOBIO_ENABLED: boolean; diff --git a/next.config.js b/next.config.js index 527188f8..0e800653 100644 --- a/next.config.js +++ b/next.config.js @@ -74,6 +74,7 @@ module.exports = withPlugins([withTranspileModules], { NEXT_PUBLIC_LAB_NAME: process.env.NEXT_PUBLIC_LAB_NAME, NEXT_PUBLIC_LOGO_FILENAME: process.env.NEXT_PUBLIC_LOGO_FILENAME, NEXT_PUBLIC_SCORE_API_URL: process.env.NEXT_PUBLIC_SCORE_API_URL, + NEXT_PUBLIC_IOBIO_API_URL: process.env.NEXT_PUBLIC_IOBIO_API_URL, NEXT_PUBLIC_SSO_PROVIDERS: process.env.NEXT_PUBLIC_SSO_PROVIDERS, NEXT_PUBLIC_JBROWSE_ENABLED: process.env.NEXT_PUBLIC_JBROWSE_ENABLED, NEXT_PUBLIC_IOBIO_ENABLED: process.env.NEXT_PUBLIC_IOBIO_ENABLED, diff --git a/package-lock.json b/package-lock.json index 1df44f3e..3c2a8074 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.34", - "@overture-stack/iobio-components": "^0.0.5", + "@overture-stack/iobio-components": "^0.0.6", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", @@ -1788,9 +1788,9 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "node_modules/@overture-stack/iobio-components": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.5.tgz", - "integrity": "sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.6.tgz", + "integrity": "sha512-Vj7slDztFW9Sg4Wk8vgsjoW3v+W3w/w0b2fPqDexOEpGop7bZwvZ6IE/P8pR8NmrAVZNP6Dy41ZVHahJjwVQBQ==" }, "node_modules/@overture-stack/sqon-builder": { "version": "0.0.0", @@ -11015,9 +11015,9 @@ } }, "@overture-stack/iobio-components": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.5.tgz", - "integrity": "sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@overture-stack/iobio-components/-/iobio-components-0.0.6.tgz", + "integrity": "sha512-Vj7slDztFW9Sg4Wk8vgsjoW3v+W3w/w0b2fPqDexOEpGop7bZwvZ6IE/P8pR8NmrAVZNP6Dy41ZVHahJjwVQBQ==" }, "@overture-stack/sqon-builder": { "version": "0.0.0", diff --git a/package.json b/package.json index 61f0b701..30af5f38 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", "@overture-stack/arranger-components": "^3.0.0-beta.34", - "@overture-stack/iobio-components": "^0.0.5", + "@overture-stack/iobio-components": "^0.0.6", "axios": "^0.27.2", "cryptr": "^6.3.0", "http-proxy": "^1.18.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5919e8c3..c30c3c22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^3.0.0-beta.34 version: 3.0.0-rc.1(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@17.0.87)(react@17.0.2))(@types/react@17.0.87)(react@17.0.2))(@types/react-dom@17.0.26(@types/react@17.0.87))(@types/react@17.0.87)(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@overture-stack/iobio-components': - specifier: ^0.0.5 - version: 0.0.5 + specifier: ^0.0.6 + version: 0.0.6 axios: specifier: ^0.27.2 version: 0.27.2 @@ -615,8 +615,8 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 - '@overture-stack/iobio-components@0.0.5': - resolution: {integrity: sha512-FJwOlN7u5V7U6NHN5iCdGHENED7B6Ptw7xCOWsqk4FfDBXQdKETShmf9aGUl57KwkhFo3nNK/R76hZLmVRgJTQ==} + '@overture-stack/iobio-components@0.0.6': + resolution: {integrity: sha512-Vj7slDztFW9Sg4Wk8vgsjoW3v+W3w/w0b2fPqDexOEpGop7bZwvZ6IE/P8pR8NmrAVZNP6Dy41ZVHahJjwVQBQ==} '@overture-stack/sqon-builder@1.1.0': resolution: {integrity: sha512-HpxJBbhN2FIIpSKOHoezua7/2by9S7qpnuaG5qgpm69nLUX0KnW2fwGVELJ3PMW1DpU8qg74kASozUnST0F+cQ==} @@ -3568,7 +3568,7 @@ snapshots: - debug - prop-types - '@overture-stack/iobio-components@0.0.5': {} + '@overture-stack/iobio-components@0.0.6': {} '@overture-stack/sqon-builder@1.1.0': dependencies: