From 9a03bde0ae98ed24ebf469da74490c0b51fc71f3 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Thu, 29 Dec 2022 10:13:06 -0500 Subject: [PATCH 01/47] Fix/sr hydration non tracking (#3080) * fix:DICOM SR hydration - remove redundancies feat:Allow save and restore on non-tracking view * PR comments --- .../src/commandsModule.js | 6 + extensions/cornerstone-dicom-sr/src/index.tsx | 2 + .../getLabelFromDCMJSImportedToolData.js | 0 .../src/utils/hydrateStructuredReport.js} | 7 +- .../viewports/OHIFCornerstoneSRViewport.tsx | 25 ++- .../src/services/ViewportService/Viewport.ts | 6 + .../default/src/Actions/createReportAsync.tsx | 73 +++++++++ .../default/src/Panels/ActionButtons.tsx | 12 +- .../src/Panels/PanelMeasurementTable.tsx | 75 ++++++++- .../src/Panels/createReportDialogPrompt.tsx | 143 ++++++++++++++++++ .../default/src/getHangingProtocolModule.js | 12 +- extensions/default/src/getPanelModule.tsx | 1 + .../src/utils/getNextSRSeriesNumber.js | 10 ++ .../promptHydrateStructuredReport.js | 2 +- .../core/src/extensions/ExtensionManager.js | 4 + .../HangingProtocolService.ts | 13 +- .../HangingProtocolService/lib/validator.js | 13 +- .../lib/validator.test.js | 128 +++++++++++----- platform/ui/src/components/Button/Button.tsx | 1 + .../src/components/Typography/Typography.tsx | 1 + platform/viewer/public/config/multiple.js | 5 +- 21 files changed, 466 insertions(+), 73 deletions(-) rename extensions/{measurement-tracking/src/contexts/TrackedMeasurementsContext => cornerstone-dicom-sr/src}/utils/getLabelFromDCMJSImportedToolData.js (100%) rename extensions/{measurement-tracking/src/contexts/TrackedMeasurementsContext/_hydrateStructuredReport.js => cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js} (97%) create mode 100644 extensions/default/src/Actions/createReportAsync.tsx create mode 100644 extensions/default/src/Panels/createReportDialogPrompt.tsx create mode 100644 extensions/default/src/utils/getNextSRSeriesNumber.js diff --git a/extensions/cornerstone-dicom-sr/src/commandsModule.js b/extensions/cornerstone-dicom-sr/src/commandsModule.js index 253583d15..d9c18cfc1 100644 --- a/extensions/cornerstone-dicom-sr/src/commandsModule.js +++ b/extensions/cornerstone-dicom-sr/src/commandsModule.js @@ -37,6 +37,12 @@ const _generateReport = ( // Add in top level series options Object.assign(dataset, options); + // Set the default character set as UTF-8 + // https://dicom.innolitics.com/ciods/nm-image/sop-common/00080005 + if (typeof dataset.SpecificCharacterSet === 'undefined') { + dataset.SpecificCharacterSet = 'ISO_IR 192'; + } + return dataset; }; diff --git a/extensions/cornerstone-dicom-sr/src/index.tsx b/extensions/cornerstone-dicom-sr/src/index.tsx index e53927d6d..bab79924a 100644 --- a/extensions/cornerstone-dicom-sr/src/index.tsx +++ b/extensions/cornerstone-dicom-sr/src/index.tsx @@ -5,6 +5,7 @@ import commandsModule from './commandsModule'; import init from './init'; import { id } from './id.js'; import toolNames from './tools/toolNames'; +import hydrateStructuredReport from './utils/hydrateStructuredReport'; const Component = React.lazy(() => { return import( @@ -74,3 +75,4 @@ const dicomSRExtension = { }; export default dicomSRExtension; +export { hydrateStructuredReport }; diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/utils/getLabelFromDCMJSImportedToolData.js b/extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js similarity index 100% rename from extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/utils/getLabelFromDCMJSImportedToolData.js rename to extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/_hydrateStructuredReport.js b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js similarity index 97% rename from extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/_hydrateStructuredReport.js rename to extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js index 2e123b018..0ca978028 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/_hydrateStructuredReport.js +++ b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js @@ -1,6 +1,6 @@ import { utilities, metaData } from '@cornerstonejs/core'; import OHIF, { DicomMetadataStore } from '@ohif/core'; -import getLabelFromDCMJSImportedToolData from './utils/getLabelFromDCMJSImportedToolData'; +import getLabelFromDCMJSImportedToolData from './getLabelFromDCMJSImportedToolData'; import { adapters } from 'dcmjs'; const { guid } = OHIF.utils; @@ -12,9 +12,10 @@ const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1'; const supportedLegacyCornerstoneTags = ['cornerstoneTools@^4.0.0']; /** + * Hydrates a structured report, for default viewports. * */ -export default function _hydrateStructuredReport( +export default function hydrateStructuredReport( { servicesManager, extensionManager }, displaySetInstanceUID ) { @@ -250,7 +251,7 @@ function _mapLegacyDataSet(dataset) { return dataset; } -const toArray = function(x) { +const toArray = function (x) { return Array.isArray(x) ? x : [x]; }; diff --git a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx index 64ed151ef..bff4dba42 100644 --- a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx @@ -13,6 +13,7 @@ import { Icon, } from '@ohif/ui'; import classNames from 'classnames'; +import hydrateStructuredReport from '../utils/hydrateStructuredReport'; const { formatDate } = utils; @@ -37,6 +38,7 @@ function OHIFCornerstoneSRViewport(props) { const { DisplaySetService, CornerstoneViewportService, + MeasurementService, } = servicesManager.services; // SR viewport will always have a single display set @@ -69,18 +71,25 @@ function OHIFCornerstoneSRViewport(props) { MEASUREMENT_TRACKING_EXTENSION_ID ); - // TODO: this is a hook that fails if we register/de-register if (hasMeasurementTrackingExtension) { const contextModule = extensionManager.getModuleEntry( '@ohif/extension-measurement-tracking.contextModule.TrackedMeasurementsContext' ); - const useTrackedMeasurements = () => useContext(contextModule.context); - - [ - trackedMeasurements, - sendTrackedMeasurementsEvent, - ] = useTrackedMeasurements(); + const tracked = useContext(contextModule.context); + trackedMeasurements = tracked?.[0]; + sendTrackedMeasurementsEvent = tracked?.[1]; + } + if (!sendTrackedMeasurementsEvent) { + // if no panels from measurement-tracking extension is used, this code will trun + trackedMeasurements = null; + sendTrackedMeasurementsEvent = (eventName, { displaySetInstanceUID }) => { + MeasurementService.clearMeasurements(); + hydrateStructuredReport( + { servicesManager, extensionManager }, + displaySetInstanceUID + ); + }; } /** @@ -362,7 +371,7 @@ function OHIFCornerstoneSRViewport(props) { useAltStyling: true, studyDate: formatDate(StudyDate), currentSeries: SeriesNumber, - seriesDescription: SeriesDescription, + seriesDescription: SeriesDescription || '', patientInformation: { patientName: PatientName ? OHIF.utils.formatPN(PatientName.Alphabetic) diff --git a/extensions/cornerstone/src/services/ViewportService/Viewport.ts b/extensions/cornerstone/src/services/ViewportService/Viewport.ts index ff1e75bfc..eae87ada0 100644 --- a/extensions/cornerstone/src/services/ViewportService/Viewport.ts +++ b/extensions/cornerstone/src/services/ViewportService/Viewport.ts @@ -23,6 +23,11 @@ export type ViewportOptions = { syncGroups?: SyncGroup[]; initialImageOptions?: InitialImageOptions; customViewportProps?: Record; + /* + * Allows drag and drop of display sets not matching viewport options, but + * doesn't show them initially. Displays initially blank if no required match + */ + allowUnmatchedView?: boolean; }; export type PublicViewportOptions = { @@ -34,6 +39,7 @@ export type PublicViewportOptions = { syncGroups?: SyncGroup[]; initialImageOptions?: InitialImageOptions; customViewportProps?: Record; + allowUnmatchedView?: boolean; }; export type PublicDisplaySetOptions = { diff --git a/extensions/default/src/Actions/createReportAsync.tsx b/extensions/default/src/Actions/createReportAsync.tsx new file mode 100644 index 000000000..f9641c801 --- /dev/null +++ b/extensions/default/src/Actions/createReportAsync.tsx @@ -0,0 +1,73 @@ +import React from 'react'; +import { DicomMetadataStore } from '@ohif/core'; + +/** + * + * @param {*} servicesManager + * @param {*} dataSource + * @param {*} measurements + * @param {*} options + * @returns {string[]} displaySetInstanceUIDs + */ +async function createReportAsync( + servicesManager, + commandsManager, + dataSource, + measurements, + options +) { + const { + DisplaySetService, + UINotificationService, + UIDialogService, + } = servicesManager.services; + const loadingDialogId = UIDialogService.create({ + showOverlay: true, + isDraggable: false, + centralize: true, + // TODO: Create a loading indicator component + zeplin design? + content: Loading, + }); + + try { + const naturalizedReport = await commandsManager.runCommand( + 'storeMeasurements', + { + measurementData: measurements, + dataSource, + additionalFindingTypes: ['ArrowAnnotate'], + options, + }, + 'CORNERSTONE_STRUCTURED_REPORT' + ); + + // The "Mode" route listens for DicomMetadataStore changes + // When a new instance is added, it listens and + // automatically calls makeDisplaySets + DicomMetadataStore.addInstances([naturalizedReport], true); + + const displaySetInstanceUID = DisplaySetService.getMostRecentDisplaySet(); + + UINotificationService.show({ + title: 'Create Report', + message: 'Measurements saved successfully', + type: 'success', + }); + + return [displaySetInstanceUID]; + } catch (error) { + UINotificationService.show({ + title: 'Create Report', + message: error.message || 'Failed to store measurements', + type: 'error', + }); + } finally { + UIDialogService.dismiss({ id: loadingDialogId }); + } +} + +function Loading() { + return
Loading...
; +} + +export default createReportAsync; diff --git a/extensions/default/src/Panels/ActionButtons.tsx b/extensions/default/src/Panels/ActionButtons.tsx index 292bae684..f372a1ee0 100644 --- a/extensions/default/src/Panels/ActionButtons.tsx +++ b/extensions/default/src/Panels/ActionButtons.tsx @@ -13,16 +13,10 @@ function ActionButtons({ onExportClick, onCreateReportClick }) { + - {/* */} ); } diff --git a/extensions/default/src/Panels/PanelMeasurementTable.tsx b/extensions/default/src/Panels/PanelMeasurementTable.tsx index 78c6a905d..d213210d1 100644 --- a/extensions/default/src/Panels/PanelMeasurementTable.tsx +++ b/extensions/default/src/Panels/PanelMeasurementTable.tsx @@ -5,15 +5,27 @@ import ActionButtons from './ActionButtons'; import debounce from 'lodash.debounce'; import { utils } from '@ohif/core'; +import createReportDialogPrompt, { + CREATE_REPORT_DIALOG_RESPONSE, +} from './createReportDialogPrompt'; +import createReportAsync from '../Actions/createReportAsync'; +import getNextSRSeriesNumber from '../utils/getNextSRSeriesNumber'; const { downloadCSVReport } = utils; export default function PanelMeasurementTable({ servicesManager, commandsManager, + extensionManager, }) { const [viewportGrid, viewportGridService] = useViewportGrid(); - const { MeasurementService, UIDialogService } = servicesManager.services; + const { activeViewportIndex, viewports } = viewportGrid; + const { + MeasurementService, + UIDialogService, + UINotificationService, + DisplaySetService, + } = servicesManager.services; const [displayMeasurements, setDisplayMeasurements] = useState([]); useEffect(() => { @@ -56,6 +68,62 @@ export default function PanelMeasurementTable({ downloadCSVReport(measurements, MeasurementService); } + async function clearMeasurements() { + MeasurementService.clearMeasurements(); + } + + async function createReport() { + // filter measurements that are added to the active study + const activeViewport = viewports[activeViewportIndex]; + const measurements = MeasurementService.getMeasurements(); + const displaySet = DisplaySetService.getDisplaySetByUID( + activeViewport.displaySetInstanceUIDs[0] + ); + const trackedMeasurements = measurements.filter( + m => displaySet.StudyInstanceUID === m.referenceStudyUID + ); + + if (trackedMeasurements.length <= 0) { + UINotificationService.show({ + title: 'No Measurements', + message: 'No Measurements are added to the current Study.', + type: 'info', + duration: 3000, + }); + return; + } + + const promptResult = await createReportDialogPrompt(UIDialogService, { + extensionManager, + }); + + if (promptResult.action === CREATE_REPORT_DIALOG_RESPONSE.CREATE_REPORT) { + const dataSources = extensionManager.getDataSources( + promptResult.dataSourceName + ); + const dataSource = dataSources[0]; + + const SeriesDescription = + // isUndefinedOrEmpty + promptResult.value === undefined || promptResult.value === '' + ? 'Research Derived Series' // default + : promptResult.value; // provided value + + const SeriesNumber = getNextSRSeriesNumber(DisplaySetService); + + const displaySetInstanceUIDs = await createReportAsync( + servicesManager, + commandsManager, + dataSource, + trackedMeasurements, + { + SeriesDescription, + SeriesNumber, + } + ); + } + } + const jumpToImage = ({ uid, isActive }) => { MeasurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid); @@ -142,7 +210,7 @@ export default function PanelMeasurementTable({ return ( <>
{}} + onClearMeasurementsClick={clearMeasurements} + onCreateReportClick={createReport} />
diff --git a/extensions/default/src/Panels/createReportDialogPrompt.tsx b/extensions/default/src/Panels/createReportDialogPrompt.tsx new file mode 100644 index 000000000..d635b4354 --- /dev/null +++ b/extensions/default/src/Panels/createReportDialogPrompt.tsx @@ -0,0 +1,143 @@ +/* eslint-disable react/display-name */ +import React from 'react'; +import { Dialog, Input, Select } from '@ohif/ui'; + +export const CREATE_REPORT_DIALOG_RESPONSE = { + CANCEL: 0, + CREATE_REPORT: 1, +}; + +export default function createReportDialogPrompt( + UIDialogService, + { extensionManager } +) { + return new Promise(function (resolve, reject) { + let dialogId = undefined; + + const _handleClose = () => { + // Dismiss dialog + UIDialogService.dismiss({ id: dialogId }); + // Notify of cancel action + resolve({ + action: CREATE_REPORT_DIALOG_RESPONSE.CANCEL, + value: undefined, + dataSourceName: undefined, + }); + }; + + /** + * + * @param {string} param0.action - value of action performed + * @param {string} param0.value - value from input field + */ + const _handleFormSubmit = ({ action, value }) => { + UIDialogService.dismiss({ id: dialogId }); + switch (action.id) { + case 'save': + resolve({ + action: CREATE_REPORT_DIALOG_RESPONSE.CREATE_REPORT, + value: value.label, + dataSourceName: value.dataSourceName, + }); + break; + case 'cancel': + resolve({ + action: CREATE_REPORT_DIALOG_RESPONSE.CANCEL, + value: undefined, + dataSourceName: undefined, + }); + break; + } + }; + + const dataSourcesOpts = Object.keys(extensionManager.dataSourceMap) + .filter(ds => { + const configuration = + extensionManager.dataSourceDefs[ds]?.configuration; + const supportsStow = + configuration?.supportsStow ?? configuration?.wadoRoot; + return supportsStow; + }) + .map(ds => { + return { + value: ds, + label: ds, + placeHolder: ds, + }; + }); + + dialogId = UIDialogService.create({ + centralize: true, + isDraggable: false, + content: Dialog, + useLastPosition: false, + showOverlay: true, + contentProps: { + title: 'Provide a name for your report', + value: { + label: '', + dataSourceName: extensionManager.activeDataSource, + }, + noCloseButton: true, + onClose: _handleClose, + actions: [ + { id: 'cancel', text: 'Cancel', type: 'primary' }, + { id: 'save', text: 'Save', type: 'secondary' }, + ], + // TODO: Should be on button press... + onSubmit: _handleFormSubmit, + body: ({ value, setValue }) => { + const onChangeHandler = event => { + event.persist(); + setValue(value => ({ ...value, label: event.target.value })); + }; + const onKeyPressHandler = event => { + if (event.key === 'Enter') { + UIDialogService.dismiss({ id: dialogId }); + resolve({ + action: CREATE_REPORT_DIALOG_RESPONSE.CREATE_REPORT, + value: value.label, + }); + } + }; + return ( + <> +
+ {dataSourcesOpts.length > 1 && ( + +
+ + ); + }, + }, + }); + }); +} diff --git a/extensions/default/src/getHangingProtocolModule.js b/extensions/default/src/getHangingProtocolModule.js index eac96d91c..cdcf242c3 100644 --- a/extensions/default/src/getHangingProtocolModule.js +++ b/extensions/default/src/getHangingProtocolModule.js @@ -14,7 +14,16 @@ const defaultProtocol = { // Unused currently imageMatchingRules: [], // Matches displaysets, NOT series - seriesMatchingRules: [], + seriesMatchingRules: [ + // Try to match series with images by default, to prevent weird display + // on SEG/SR containing studies + { + attribute: 'numImageFrames', + constraint: { + greaterThan: { value: 0 }, + }, + }, + ], studyMatchingRules: [], }, }, @@ -40,7 +49,6 @@ const defaultProtocol = { }, displaySets: [ { - options: [], id: 'defaultDisplaySetId', }, ], diff --git a/extensions/default/src/getPanelModule.tsx b/extensions/default/src/getPanelModule.tsx index bfc66a36c..6f733e496 100644 --- a/extensions/default/src/getPanelModule.tsx +++ b/extensions/default/src/getPanelModule.tsx @@ -16,6 +16,7 @@ function getPanelModule({ ); }; diff --git a/extensions/default/src/utils/getNextSRSeriesNumber.js b/extensions/default/src/utils/getNextSRSeriesNumber.js new file mode 100644 index 000000000..d5865d38e --- /dev/null +++ b/extensions/default/src/utils/getNextSRSeriesNumber.js @@ -0,0 +1,10 @@ +const MIN_SR_SERIES_NUMBER = 4700; + +export default function getNextSRSeriesNumber(DisplaySetService) { + const activeDisplaySets = DisplaySetService.getActiveDisplaySets(); + const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR'); + const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber); + const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER); + + return maxSeriesNumber + 1; +} diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js index 089f05faa..37d7961e2 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js @@ -1,4 +1,4 @@ -import hydrateStructuredReport from './_hydrateStructuredReport.js'; +import hydrateStructuredReport from '@ohif/extension-cornerstone-dicom-sr'; const RESPONSE = { NO_NEVER: -1, diff --git a/platform/core/src/extensions/ExtensionManager.js b/platform/core/src/extensions/ExtensionManager.js index e72c72233..b8ea618e6 100644 --- a/platform/core/src/extensions/ExtensionManager.js +++ b/platform/core/src/extensions/ExtensionManager.js @@ -23,6 +23,7 @@ export default class ExtensionManager { }); this._extensionLifeCycleHooks = { onModeEnter: {}, onModeExit: {} }; this.dataSourceMap = {}; + this.dataSourceDefs = {}; this.defaultDataSourceName = appConfig.defaultDataSourceName; this.activeDataSource = undefined; } @@ -298,6 +299,9 @@ export default class ExtensionManager { _initDataSourcesModule(extensionModule, extensionId, dataSources = []) { const { UserAuthenticationService } = this._servicesManager.services; + dataSources.forEach(dataSource => { + this.dataSourceDefs[dataSource.sourceName] = dataSource; + }); extensionModule.forEach(element => { const namespace = `${extensionId}.${MODULE_TYPES.DATA_SOURCE}.${element.name}`; diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts index 2a1a7230f..91b6c108a 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts @@ -467,6 +467,12 @@ class HangingProtocolService { return defaultReturn; } + // If the viewport options says to allow any instance, then we can assume + // it just updates this viewport + if (protocolViewport.viewportOptions.allowUnmatchedView) { + return defaultReturn; + } + // if the viewport is not empty, then we check the displaySets it is showing // currently, which means we need to check if the requested updated displaySet // follow the same rules as the current displaySets @@ -1098,10 +1104,9 @@ class HangingProtocolService { ) { const { seriesMatchingRules } = displaySetSelector; - if (seriesMatchingRules.length) { - // only match the required rules - const requiredRules = seriesMatchingRules.filter(rule => rule.required); - + // only match the required rules + const requiredRules = seriesMatchingRules.filter(rule => rule.required); + if (requiredRules.length) { const matched = this.protocolEngine.findMatch(displaySet, requiredRules); if (!matched || matched.score === 0) { diff --git a/platform/core/src/services/HangingProtocolService/lib/validator.js b/platform/core/src/services/HangingProtocolService/lib/validator.js index 8bdc06949..711ff01b9 100644 --- a/platform/core/src/services/HangingProtocolService/lib/validator.js +++ b/platform/core/src/services/HangingProtocolService/lib/validator.js @@ -57,19 +57,18 @@ validate.validators.endsWith = function(value, options, key) { } }; +const getTestValue = options => options?.value ?? options; + validate.validators.greaterThan = function(value, options, key) { - const testValue = options?.value ?? options; - if (testValue !== undefined && value <= testValue) { + const testValue = getTestValue(options); + if (value === undefined || value === null || value <= testValue) { return key + 'with value ' + value + ' must be greater than ' + testValue; } }; validate.validators.range = function(value, options, key) { - const testValue = options?.value ?? options; - if ( - (testValue !== undefined && value < testValue[0]) || - value > testValue[1] - ) { + const testValue = getTestValue(options); + if (value === undefined || value < testValue[0] || value > testValue[1]) { return ( key + 'with value ' + diff --git a/platform/core/src/services/HangingProtocolService/lib/validator.test.js b/platform/core/src/services/HangingProtocolService/lib/validator.test.js index 4b20f8029..5566e97a7 100644 --- a/platform/core/src/services/HangingProtocolService/lib/validator.test.js +++ b/platform/core/src/services/HangingProtocolService/lib/validator.test.js @@ -1,49 +1,107 @@ -import validate from "./validator.js"; +import validate from './validator.js'; -describe("validator", () => { +describe('validator', () => { const attributeMap = { - str: "string", + str: 'string', num: 3, nullValue: null, - list: ["abc", "def"], - } + list: ['abc', 'def'], + }; const options = { format: 'grouped', }; - describe("contains", () => { - it("returns match any list contains", () => { - expect(validate(attributeMap, { list: { contains: 'a' } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { str: { contains: 'i' } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { str: { contains: ['i'] } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { list: { contains: ['a'] } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { list: { contains: ['z', 'd'] } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { list: { contains: ['z'] } }, [options])).not.toBeUndefined(); - }) - }) + describe('contains', () => { + it('returns match any list contains', () => { + expect( + validate(attributeMap, { list: { contains: 'a' } }, [options]) + ).toBeUndefined(); + expect( + validate(attributeMap, { str: { contains: 'i' } }, [options]) + ).toBeUndefined(); + expect( + validate(attributeMap, { str: { contains: ['i'] } }, [options]) + ).toBeUndefined(); + expect( + validate(attributeMap, { list: { contains: ['a'] } }, [options]) + ).toBeUndefined(); + expect( + validate(attributeMap, { list: { contains: ['z', 'd'] } }, [options]) + ).toBeUndefined(); + expect( + validate(attributeMap, { list: { contains: ['z'] } }, [options]) + ).not.toBeUndefined(); + }); + }); - describe("equals", () => { - it("returned undefined on equals", () => { - expect(validate(attributeMap, { str: { equals: attributeMap.str } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { num: { equals: { value: attributeMap.num } } }, [options])).toBeUndefined(); - }) + describe('equals', () => { + it('returned undefined on equals', () => { + expect( + validate(attributeMap, { str: { equals: attributeMap.str } }, [options]) + ).toBeUndefined(); + expect( + validate( + attributeMap, + { num: { equals: { value: attributeMap.num } } }, + [options] + ) + ).toBeUndefined(); + }); - it("returns error on not equals", () => { - expect(validate(attributeMap, { str: { equals: "abc" } }, [options])).not.toBeUndefined(); - expect(validate(attributeMap, { num: { equals: { value: 1 + attributeMap.num } } }, [options])).not.toBeUndefined(); - }) - }) + it('returns error on not equals', () => { + expect( + validate(attributeMap, { str: { equals: 'abc' } }, [options]) + ).not.toBeUndefined(); + expect( + validate( + attributeMap, + { num: { equals: { value: 1 + attributeMap.num } } }, + [options] + ) + ).not.toBeUndefined(); + }); + }); - describe("greaterThan", () => { - it("returns undefined on greaterThan", () => { - expect(validate(attributeMap, { num: { greaterThan: { value: attributeMap.num - 1 } } }, [options])).toBeUndefined(); - expect(validate(attributeMap, { num: { greaterThan: attributeMap.num - 1 } }, [options])).toBeUndefined(); - }) + describe('greaterThan', () => { + it('returns undefined on greaterThan', () => { + expect( + validate( + attributeMap, + { num: { greaterThan: { value: attributeMap.num - 1 } } }, + [options] + ) + ).toBeUndefined(); + expect( + validate(attributeMap, { num: { greaterThan: attributeMap.num - 1 } }, [ + options, + ]) + ).toBeUndefined(); + }); - it("returns error on not greater than", () => { - expect(validate(attributeMap, { num: { greaterThan: { value: attributeMap.num } } }, [options])).not.toBeUndefined(); - expect(validate(attributeMap, { num: { greaterThan: attributeMap.num } }, [options])).not.toBeUndefined(); - }) - }) + it('returns error on not greater than', () => { + expect( + validate( + attributeMap, + { num: { greaterThan: { value: attributeMap.num } } }, + [options] + ) + ).not.toBeUndefined(); + expect( + validate(attributeMap, { num: { greaterThan: attributeMap.num } }, [ + options, + ]) + ).not.toBeUndefined(); + }); + + it('returns error on undefined value', () => { + expect( + validate( + attributeMap, + { numUndefined: { greaterThan: { value: 3 } } }, + [options] + ) + ).not.toBeUndefined(); + }); + }); }); diff --git a/platform/ui/src/components/Button/Button.tsx b/platform/ui/src/components/Button/Button.tsx index 104db9368..fdafc91bb 100644 --- a/platform/ui/src/components/Button/Button.tsx +++ b/platform/ui/src/components/Button/Button.tsx @@ -243,6 +243,7 @@ Button.propTypes = { 'light', 'default', 'primary', + 'primaryActive', 'secondary', 'white', 'black', diff --git a/platform/ui/src/components/Typography/Typography.tsx b/platform/ui/src/components/Typography/Typography.tsx index ab18345f3..9f86c129e 100644 --- a/platform/ui/src/components/Typography/Typography.tsx +++ b/platform/ui/src/components/Typography/Typography.tsx @@ -130,6 +130,7 @@ Typography.propTypes = { 'initial', 'inherit', 'primary', + 'primaryActive', 'secondary', 'error', ]), diff --git a/platform/viewer/public/config/multiple.js b/platform/viewer/public/config/multiple.js index 92151f3a1..3a6f4d24d 100644 --- a/platform/viewer/public/config/multiple.js +++ b/platform/viewer/public/config/multiple.js @@ -26,7 +26,8 @@ window.config = { qidoRoot: '/dicomweb', wadoRoot: '/dicomweb', qidoSupportsIncludeField: false, - supportsReject: false, + supportsReject: true, + supportsStow: true, imageRendering: 'wadors', thumbnailRendering: 'wadors', enableStudyLazyLoad: true, @@ -46,6 +47,7 @@ window.config = { wadoRoot: 'https://viewer.flexview.ai/dicomweb', qidoSupportsIncludeField: false, supportsReject: false, + supportsStow: false, imageRendering: 'wadors', thumbnailRendering: 'wadors', enableStudyLazyLoad: true, @@ -66,6 +68,7 @@ window.config = { wadoRoot: '/viewer-testdata', qidoSupportsIncludeField: false, supportsReject: false, + supportsStow: false, imageRendering: 'wadors', thumbnailRendering: 'wadors', enableStudyLazyLoad: true, From 00e797801db1ee60175ddc12888ead72c365ad45 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Thu, 29 Dec 2022 11:00:13 -0500 Subject: [PATCH 02/47] feat(imageLoader):Add an nth image loader strategy (#10) (#3044) * feat(imageLoader):Add an nth image loader strategy (#10) * Updates for PR for nth menu * performance:Prior implementation was O(n^2), taking about 50 ms * feat:Nth image loader, added docs as requested --- .../src/getHangingProtocolModule.ts | 1 + extensions/cornerstone/src/init.tsx | 2 + .../CornerstoneViewportService.ts | 6 +- .../cornerstone/src/utils/getNthFrames.js | 44 +++++++ .../cornerstone/src/utils/interleave.js | 26 ++++ extensions/cornerstone/src/utils/nthLoader.ts | 121 ++++++++++++++++++ platform/docs/docs/deployment/index.md | 4 +- .../platform/extensions/modules/hpModule.md | 11 ++ 8 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 extensions/cornerstone/src/utils/getNthFrames.js create mode 100644 extensions/cornerstone/src/utils/interleave.js create mode 100644 extensions/cornerstone/src/utils/nthLoader.ts diff --git a/extensions/cornerstone/src/getHangingProtocolModule.ts b/extensions/cornerstone/src/getHangingProtocolModule.ts index 2d37b96a1..c13a45d50 100644 --- a/extensions/cornerstone/src/getHangingProtocolModule.ts +++ b/extensions/cornerstone/src/getHangingProtocolModule.ts @@ -8,6 +8,7 @@ const mpr = { availableTo: {}, editableBy: {}, protocolMatchingRules: [], + imageLoadStrategy: 'nth', displaySetSelectors: { mprDisplaySet: { seriesMatchingRules: [ diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index fc19e384e..3b338a1b9 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -27,6 +27,7 @@ import { connectToolsToMeasurementService } from './initMeasurementService'; import callInputDialog from './utils/callInputDialog'; import initCineService from './initCineService'; import interleaveCenterLoader from './utils/interleaveCenterLoader'; +import nthLoader from './utils/nthLoader'; import interleaveTopToBottom from './utils/interleaveTopToBottom'; const cs3DToolsEvents = Enums.Events; @@ -121,6 +122,7 @@ export default async function init({ 'interleaveTopToBottom', interleaveTopToBottom ); + HangingProtocolService.registerImageLoadStrategy('nth', nthLoader); imageLoader.registerImageLoader( 'streaming-wadors', diff --git a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts index 82d53805f..227ff111f 100644 --- a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts @@ -136,7 +136,11 @@ class CornerstoneViewportService implements IViewportService { public destroy() { this._removeResizeObserver(); this.viewportGridResizeObserver = null; - this.renderingEngine?.destroy?.(); + try { + this.renderingEngine?.destroy?.(); + } catch (e) { + console.warn('Rendering engine not destroyed', e); + } this.viewportsDisplaySets.clear(); this.renderingEngine = null; cache.purgeCache(); diff --git a/extensions/cornerstone/src/utils/getNthFrames.js b/extensions/cornerstone/src/utils/getNthFrames.js new file mode 100644 index 000000000..09bfc0b1e --- /dev/null +++ b/extensions/cornerstone/src/utils/getNthFrames.js @@ -0,0 +1,44 @@ +/** + * Returns a re-ordered array consisting of, in order: + * 1. First few objects + * 2. Center objects + * 3. Last few objects + * 4. nth Objects (n=7), set 2 + * 5. nth Objects set 5, + * 6. Remaining objects + * What this does is return the first/center/start objects, as those + * are often used first, then a selection of objects scattered over the + * instances in order to allow making requests over a set of image instances. + * + * @param {[]} imageIds + * @returns [] reordered to be an nth selection + */ +export default function getNthFrames(imageIds) { + const frames = [[], [], [], [], []]; + const centerStart = imageIds.length / 2 - 3; + const centerEnd = centerStart + 6; + + for (let i = 0; i < imageIds.length; i++) { + if ( + i < 2 || + i > imageIds.length - 4 || + (i > centerStart && i < centerEnd) + ) { + frames[0].push(imageIds[i]); + } else if (i % 7 === 2) { + frames[1].push(imageIds[i]); + } else if (i % 7 === 5) { + frames[2].push(imageIds[i]); + } else { + frames[(i % 2) + 3].push(imageIds[i]); + } + } + const ret = [ + ...frames[0], + ...frames[1], + ...frames[2], + ...frames[3], + ...frames[4], + ]; + return ret; +} diff --git a/extensions/cornerstone/src/utils/interleave.js b/extensions/cornerstone/src/utils/interleave.js new file mode 100644 index 000000000..05fe2cab1 --- /dev/null +++ b/extensions/cornerstone/src/utils/interleave.js @@ -0,0 +1,26 @@ +/** + * Interleave the items from all the lists so that the first items are first + * in the returned list, the second items are next etc. + * Does this in a O(n) fashion, and return lists[0] if there is only one list. + * + * @param {[]} lists + * @returns [] reordered to be breadth first traversal of lists + */ +export default function interleave(lists) { + if (!lists || !lists.length) return []; + if (lists.length === 1) return lists[0]; + console.time('interleave'); + const useLists = [...lists]; + const ret = []; + for (let i = 0; useLists.length > 0; i++) { + for (const list of useLists) { + if (i >= list.length) { + useLists.splice(useLists.indexOf(list), 1); + continue; + } + ret.push(list[i]); + } + } + console.timeEnd('interleave'); + return ret; +} diff --git a/extensions/cornerstone/src/utils/nthLoader.ts b/extensions/cornerstone/src/utils/nthLoader.ts new file mode 100644 index 000000000..a34066eb2 --- /dev/null +++ b/extensions/cornerstone/src/utils/nthLoader.ts @@ -0,0 +1,121 @@ +import { cache, imageLoadPoolManager, Enums } from '@cornerstonejs/core'; +import getNthFrames from './getNthFrames'; +import interleave from './interleave'; + +// Map of volumeId and SeriesInstanceId +const volumeIdMapsToLoad = new Map(); +const viewportIdVolumeInputArrayMap = new Map(); + +/** + * This function caches the volumeUIDs until all the volumes inside the + * hanging protocol are initialized. Then it goes through the requests and + * chooses a sub-selection starting the the first few objects, center objects + * and last objects, and then the remaining nth images until all instances are + * retrieved. This causes the image to have a progressive load order and looks + * visually much better. + * @param {Object} props image loading properties from Cornerstone ViewportService + */ +export default function interleaveNthLoader({ + data: { viewportId, volumeInputArray }, + displaySetsMatchDetails, + viewportMatchDetails: matchDetails, +}) { + viewportIdVolumeInputArrayMap.set(viewportId, volumeInputArray); + + // Based on the volumeInputs store the volumeIds and SeriesInstanceIds + // to keep track of the volumes being loaded + for (const volumeInput of volumeInputArray) { + const { volumeId } = volumeInput; + const volume = cache.getVolume(volumeId); + + if (!volume) { + return; + } + + // if the volumeUID is not in the volumeUIDs array, add it + if (!volumeIdMapsToLoad.has(volumeId)) { + const { metadata } = volume; + volumeIdMapsToLoad.set(volumeId, metadata.SeriesInstanceUID); + } + } + + /** + * The following is checking if all the viewports that were matched in the HP has been + * successfully created their cornerstone viewport or not. Todo: This can be + * improved by not checking it, and as soon as the matched DisplaySets have their + * volume loaded, we start the loading, but that comes at the cost of viewports + * not being created yet (e.g., in a 10 viewport ptCT fusion, when one ct viewport and one + * pt viewport are created we have a guarantee that the volumes are created in the cache + * but the rest of the viewports (fusion, mip etc.) are not created yet. So + * we can't initiate setting the volumes for those viewports. One solution can be + * to add an event when a viewport is created (not enabled element event) and then + * listen to it and as the other viewports are created we can set the volumes for them + * since volumes are already started loading. + */ + if (matchDetails.size !== viewportIdVolumeInputArrayMap.size) { + return; + } + + // Check if all the matched volumes are loaded + for (const [_, details] of displaySetsMatchDetails.entries()) { + const { SeriesInstanceUID } = details; + + // HangingProtocol has matched, but don't have all the volumes created yet, so return + if (!Array.from(volumeIdMapsToLoad.values()).includes(SeriesInstanceUID)) { + return; + } + } + + const volumeIds = Array.from(volumeIdMapsToLoad.keys()).slice(); + // get volumes from cache + const volumes = volumeIds.map(volumeId => { + return cache.getVolume(volumeId); + }); + + // iterate over all volumes, and get their imageIds, and interleave + // the imageIds and save them in AllRequests for later use + const originalRequests = volumes + .map(volume => volume.getImageLoadRequests()) + .filter(requests => requests?.[0]?.imageId); + + const orderedRequests = originalRequests.map(request => + getNthFrames(request) + ); + + // set the finalRequests to the imageLoadPoolManager + const finalRequests = interleave(orderedRequests); + + const requestType = Enums.RequestType.Prefetch; + const priority = 0; + + finalRequests.forEach( + ({ callLoadImage, additionalDetails, imageId, imageIdIndex, options }) => { + const callLoadImageBound = callLoadImage.bind( + null, + imageId, + imageIdIndex, + options + ); + + imageLoadPoolManager.addRequest( + callLoadImageBound, + requestType, + additionalDetails, + priority + ); + } + ); + + // clear the volumeIdMapsToLoad + volumeIdMapsToLoad.clear(); + + // copy the viewportIdVolumeInputArrayMap + const viewportIdVolumeInputArrayMapCopy = new Map( + viewportIdVolumeInputArrayMap + ); + + // reset the viewportIdVolumeInputArrayMap + viewportIdVolumeInputArrayMap.clear(); + + return viewportIdVolumeInputArrayMapCopy; +} diff --git a/platform/docs/docs/deployment/index.md b/platform/docs/docs/deployment/index.md index 384aefc77..824a645de 100644 --- a/platform/docs/docs/deployment/index.md +++ b/platform/docs/docs/deployment/index.md @@ -97,12 +97,12 @@ support it yet, but it is gaining wider adoption. If you have an existing archive and intend to host the OHIF Viewer at the same domain name as your archive, then connecting the two is as simple as following the steps layed out in our -[Configuration Essentials Guide](./../configuration/index.md). +[Configuration Essentials Guide](./../configuration/configurationFiles.md). #### What if I don't have an imaging archive? We provide some guidance on configuring a local image archive in our -[Data Source Essentials](./../configuration/index.md#set-up-a-local-DICOM-server) +[Data Source Essentials](./../configuration/dataSources/introduction.md) guide. Hosting an archive remotely is a little trickier. You can check out some of our [advanced recipes](#recipes) for modeled setups that may work for you. diff --git a/platform/docs/docs/platform/extensions/modules/hpModule.md b/platform/docs/docs/platform/extensions/modules/hpModule.md index 57eebc239..625215b04 100644 --- a/platform/docs/docs/platform/extensions/modules/hpModule.md +++ b/platform/docs/docs/platform/extensions/modules/hpModule.md @@ -219,6 +219,17 @@ matching), or provides and array of ids which will make the ProtocolEngine to choose the best matching protocol (based on protocolMatching rules, which is next section). +### imageLoadStrategy +The image load strategy specifies a function (by name) containing logic to re-order +the image load requests. This allows loading images viewed earlier to be done +sooner than those loaded later. The available strategies are: + +* interleaveTopToBottom to start at the top and work towards the bottom, for all series being loaded +* interleaveCenter is like top to bottom but starts at the center +* nth is a strategy that loads every nth instance, starting with the center +and end points, and then filling in progressively all along the image. This results in partial +image view very quickly. + ### protocolMatchingRules A list of criteria for the protocol along with the provided points for ranking. From fb2a60ae19875b50d9f8c76c44c17ca1c33441e7 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Thu, 5 Jan 2023 20:26:26 -0500 Subject: [PATCH 03/47] feat: Allow multiframe volumes (#3089) * Allow multiframe volumes * feat:Allow display of multiframe volume --- .../src/utils/getCornerstoneOrientation.ts | 1 - .../src/utils/isDisplaySetReconstructable.js | 47 +++++++++++++++++-- platform/viewer/public/config/multiple.js | 19 ++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) diff --git a/extensions/cornerstone/src/utils/getCornerstoneOrientation.ts b/extensions/cornerstone/src/utils/getCornerstoneOrientation.ts index 1c91dfb13..e37177d55 100644 --- a/extensions/cornerstone/src/utils/getCornerstoneOrientation.ts +++ b/extensions/cornerstone/src/utils/getCornerstoneOrientation.ts @@ -17,7 +17,6 @@ export default function getCornerstoneOrientation( case CORONAL: return Enums.OrientationAxis.CORONAL; default: - log.wanr('Choosing acquisition plane orientation'); return Enums.OrientationAxis.ACQUISITION; } } diff --git a/platform/core/src/utils/isDisplaySetReconstructable.js b/platform/core/src/utils/isDisplaySetReconstructable.js index 960796876..55539d143 100644 --- a/platform/core/src/utils/isDisplaySetReconstructable.js +++ b/platform/core/src/utils/isDisplaySetReconstructable.js @@ -38,9 +38,50 @@ export default function isDisplaySetReconstructable(instances) { } } -function processMultiframe(instance) { - //TODO: deal with multriframe checks! return false for now as can't reconstruct. - return { value: false }; +function processMultiframe(multiFrameInstance) { + const { + PerFrameFunctionalGroupsSequence, + SharedFunctionalGroupsSequence, + } = multiFrameInstance; + + // If we don't have the PixelMeasuresSequence, then the pixel spacing and + // slice thickness isn't specified or is changing and we can't reconstruct + // the dataset. + if ( + !SharedFunctionalGroupsSequence || + !SharedFunctionalGroupsSequence[0].PixelMeasuresSequence + ) { + return { value: false }; + } + + // Check that the orientation is either shared or with the allowed + // difference amount + const { + PlaneOrientationSequence: sharedOrientation, + } = SharedFunctionalGroupsSequence; + + if (!sharedOrientation) { + const { + PlaneOrientationSequence: firstOrientation, + } = PerFrameFunctionalGroupsSequence[0]; + + if (!firstOrientation) { + console.log('No orientation information'); + return { value: false }; + } + // TODO - check orientation consistency + } + + const frame0 = PerFrameFunctionalGroupsSequence[0]; + const firstPosition = + frame0.PlanePositionSequence || frame0.CTPositionSequence; + if (!firstPosition) { + console.log('No image position information, not reconstructable'); + return { value: false }; + } + // TODO - check spacing consistency + + return { value: true }; } function processSingleframe(instances) { diff --git a/platform/viewer/public/config/multiple.js b/platform/viewer/public/config/multiple.js index 3a6f4d24d..5ff3b2344 100644 --- a/platform/viewer/public/config/multiple.js +++ b/platform/viewer/public/config/multiple.js @@ -57,6 +57,25 @@ window.config = { singlepart: 'bulkdata,video,pdf', }, }, + { + friendlyName: 'dcmjs DICOMWeb Server', + namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', + sourceName: 'shared', + configuration: { + name: 'shared', + qidoRoot: 'https://domvja9iplmyu.cloudfront.net/dicomweb', + wadoRoot: 'https://domvja9iplmyu.cloudfront.net/dicomweb', + qidoSupportsIncludeField: false, + supportsReject: false, + imageRendering: 'wadors', + thumbnailRendering: 'wadors', + enableStudyLazyLoad: true, + supportsFuzzyMatching: false, + supportsWildcard: true, + staticWado: true, + singlepart: 'bulkdata,video,pdf', + }, + }, { friendlyName: 'E2E Test Data', namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', From 9b0d542526e9a135c116d88ce9565efae6a21764 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Fri, 6 Jan 2023 15:00:23 -0500 Subject: [PATCH 04/47] fix: rework inconsistencies in split button implementation(#3086) * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. The primary button will always be the layout grid selector and the MPR toggle is in the drop down menu. This is the first step to later adding other (e.g. 3D) layout HPs to the menu. Summary of changes/fixes: - SplitButton now allows for its primary button to be any button component specified by a UI type. - SplitButton passes a className to its primary button component to dictate how it should be rendered based on its active/toggle status, hovering, menu visibility etc. - The default menu item renderer for the SplitButton, renders acitve toggle items correctly. - Items/buttons in the toolbar are now all the correct and same size. - Added ToolbarService.getButtonComponentForUIType to fetch a button component for a given UI type. - Spacing between toolbar items is now done at the Toolbar level to avoid double spacing and to ensure uniform spacing. - The drop down menu closes when clicking the primary button. - Show a mouse down click effect when clicking the primary button. Items to investigate still: The following are all slightly contrary to the design specs of the UI: - Is the click effect on the primary button satisfactory because with the hover border effect, the button appears slightly smaller during the mouse down/up operation? (MEDIUM) - On hover over the drop down button, the right-hand-side corners of the primary button appear rounded and NOT square. Also the hover over the drop down button border effects make the primary button appear smaller. (MEDIUM) - Should there be hover effects when hovering over either tooltip of the SplitButton? (LOW) * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. Fixed broken e2e tests. data-cy and data-tool properties now passed down to primary button component. * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. On drop down button hover, the primary button now stretches all the way right with no right border and with square corners in the top and bottom right as per the toolbar spec. The mouse down effect gives a full button look (i.e. no borders) with rounded corners all around and black text icon. * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. Documented that the primary button of a split button can specify a UI type. * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. Feedback from PR review to fix prettier formatting issue. * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. Added TODOs as per Bill's request in the PR. * feat: Combine the layout grid selector tool with the toggle MPR button into a split button. Feedback from Alireza: reverted the layout selector and MPR tools to be separate toolbar items. Co-authored-by: Joe Boccanfuso --- .../src/utils/mpr/toggleMPRHangingProtocol.ts | 4 + extensions/default/src/Toolbar/Toolbar.tsx | 22 ++- .../src/Toolbar/ToolbarLayoutSelector.tsx | 44 +++-- extensions/default/src/getToolbarModule.tsx | 22 +-- modes/longitudinal/src/toolbarButtons.js | 3 +- .../services/ToolBarService/ToolBarService.ts | 6 + .../platform/extensions/modules/toolbar.md | 12 +- .../src/components/IconButton/IconButton.tsx | 4 +- .../components/SplitButton/SplitButton.tsx | 160 +++++++++--------- .../ToolbarButton/ToolbarButton.tsx | 5 +- 10 files changed, 155 insertions(+), 127 deletions(-) diff --git a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts index cce8869a3..dfe18f5f4 100644 --- a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts +++ b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts @@ -45,6 +45,10 @@ export default function toggleMPRHangingProtocol({ ToolBarService, } = servicesManager.services; + // TODO Introduce a service to persist the state of the current hanging protocol/app. + // So all of the code to persist the state here will no longer be needed. Perhaps + // just the id of the current hanging protocol to toggle MPR off is needed. + const { activeViewportIndex, viewports, diff --git a/extensions/default/src/Toolbar/Toolbar.tsx b/extensions/default/src/Toolbar/Toolbar.tsx index 3a4bd8164..68a064754 100644 --- a/extensions/default/src/Toolbar/Toolbar.tsx +++ b/extensions/default/src/Toolbar/Toolbar.tsx @@ -1,4 +1,5 @@ import React, { useEffect, useState } from 'react'; +import classnames from 'classnames'; export default function Toolbar({ servicesManager }) { const { ToolBarService } = servicesManager.services; @@ -46,15 +47,18 @@ export default function Toolbar({ servicesManager }) { // These can... Trigger toolbar events based on updates? // Then sync using useEffect, or simply modify the state here? return ( - ToolBarService.recordInteraction(args)} - servicesManager={servicesManager} - /> + // The margin for separating the tools on the toolbar should go here and NOT in each individual component (button) item. + // This allows for the individual items to be included in other UI components where perhaps alternative margins are desired. +
+ ToolBarService.recordInteraction(args)} + servicesManager={servicesManager} + /> +
); })} diff --git a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx index a2e4509cf..56efcda34 100644 --- a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx +++ b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx @@ -6,12 +6,18 @@ import { useViewportGrid, } from '@ohif/ui'; -function LayoutSelector({ rows, columns, servicesManager }) { +function LayoutSelector({ + rows, + columns, + className, + servicesManager, + ...rest +}) { const [isOpen, setIsOpen] = useState(false); const [disableSelector, setDisableSelector] = useState(false); const [viewportGridState, viewportGridService] = useViewportGrid(); - const { HangingProtocolService } = servicesManager.services; + const { HangingProtocolService, ToolBarService } = servicesManager.services; const closeOnOutsideClick = () => { if (isOpen) { @@ -24,12 +30,6 @@ function LayoutSelector({ rows, columns, servicesManager }) { HangingProtocolService.EVENTS.PROTOCOL_CHANGED, evt => { const { protocol } = evt; - - if (protocol.id === 'mpr') { - setDisableSelector(true); - } else { - setDisableSelector(false); - } } ); @@ -55,20 +55,42 @@ function LayoutSelector({ rows, columns, servicesManager }) { const onInteractionHandler = () => setIsOpen(!isOpen); const DropdownContent = isOpen ? OHIFLayoutSelector : null; + const onSelectionHandler = ({ numRows, numCols }) => { + // TODO Introduce a service to persist the state of the current hanging protocol/app. + + // TODO Here the layout change will amount to a change of hanging protocol as specified by the extension for this layout selector tool + // followed by the change of the grid itself. + if (HangingProtocolService.getActiveProtocol().protocol.id === 'mpr') { + ToolBarService.recordInteraction({ + groupId: 'MPR', + itemId: 'MPR', + interactionType: 'toggle', + commands: [ + { + commandName: 'toggleMPR', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + }); + } + viewportGridService.setLayout({ numRows, numCols }); + }; + return ( { - viewportGridService.setLayout({ numRows, numCols }); - }} + onSelection={onSelectionHandler} /> ) } diff --git a/extensions/default/src/getToolbarModule.tsx b/extensions/default/src/getToolbarModule.tsx index 260ef111b..f29744d60 100644 --- a/extensions/default/src/getToolbarModule.tsx +++ b/extensions/default/src/getToolbarModule.tsx @@ -35,27 +35,7 @@ export default function getToolbarModule({ commandsManager, servicesManager }) { { name: 'ohif.toggle', defaultComponent: ToolbarButton, - requiredConfig: [], - optionalConfig: [], - requiredProps: [], - optionalProps: [], - clickHandler: (evt, clickedBtn, btnSectionName) => { - const { props } = clickedBtn; - const allButtons = toolbarService.getButtons(); - const thisButton = allButtons[clickedBtn.id]; - - // Set our clicked button to active - thisButton.props.isActive = !thisButton.props.isActive; - - // Run button logic/command - commandsManager.runCommand(props.commandName, props.commandOptions); - - // What if just toggled "content"? - // commandName OR content? - - // Set buttons & trigger notification - toolbarService.setButtons(allButtons); - }, + clickHandler: () => {}, }, ]; } diff --git a/modes/longitudinal/src/toolbarButtons.js b/modes/longitudinal/src/toolbarButtons.js index c6dcd101f..a8c8a8535 100644 --- a/modes/longitudinal/src/toolbarButtons.js +++ b/modes/longitudinal/src/toolbarButtons.js @@ -15,7 +15,7 @@ const { windowLevelPresets } = defaults; * @param {*} icon * @param {*} label */ -function _createButton(type, id, icon, label, commands, tooltip) { +function _createButton(type, id, icon, label, commands, tooltip, uiType) { return { id, icon, @@ -23,6 +23,7 @@ function _createButton(type, id, icon, label, commands, tooltip) { type, commands, tooltip, + uiType, }; } diff --git a/platform/core/src/services/ToolBarService/ToolBarService.ts b/platform/core/src/services/ToolBarService/ToolBarService.ts index 908899f21..3aa745bb2 100644 --- a/platform/core/src/services/ToolBarService/ToolBarService.ts +++ b/platform/core/src/services/ToolBarService/ToolBarService.ts @@ -287,4 +287,10 @@ export default class ToolBarService { componentProps: Object.assign({}, btn.props, props), }; } + + getButtonComponentForUIType(uiType: string) { + return uiType + ? this._buttonTypes()[uiType]?.defaultComponent ?? null + : null; + } } diff --git a/platform/docs/docs/platform/extensions/modules/toolbar.md b/platform/docs/docs/platform/extensions/modules/toolbar.md index 95ff04649..bf48fda6c 100644 --- a/platform/docs/docs/platform/extensions/modules/toolbar.md +++ b/platform/docs/docs/platform/extensions/modules/toolbar.md @@ -44,6 +44,11 @@ export default function getToolbarModule({ commandsManager, servicesManager }) { defaultComponent: ToolbarLayoutSelector, clickHandler: (evt, clickedBtn, btnSectionName) => {}, }, + { + name: 'ohif.toggle', + defaultComponent: ToolbarButton, + clickHandler: () => {}, + }, ]; } ``` @@ -129,8 +134,11 @@ There are three main types of toolbar buttons: You can use the `ohif.splitButton` type to build a button with extra tools in the dropdown. -- First you need to give your `primary` tool definition to the split button -- the `secondary` properties can be a simple arrow down (`chevron-down` icon) +- First you need to give your `primary` tool definition to the split button. The primary +tool can specify a `uiType` property which can be one of the button types returned by +`getToolbarModule` that is a variation of `ToolbarButton`. If `uiType` is omitted then +`ToolbarButton` is used by default. +- The `secondary` properties can be a simple arrow down (`chevron-down` icon) - For adding the extra tools add them to the `items` list. You can see below how `longitudinal` mode is using the available toolbarModule diff --git a/platform/ui/src/components/IconButton/IconButton.tsx b/platform/ui/src/components/IconButton/IconButton.tsx index 93bff34c5..d073443d7 100644 --- a/platform/ui/src/components/IconButton/IconButton.tsx +++ b/platform/ui/src/components/IconButton/IconButton.tsx @@ -140,8 +140,8 @@ const IconButton = ({ ref={buttonElement} onClick={handleOnClick} type={type} - data-cy={id} - {...rest} + data-cy={rest['data-cy'] ?? id} + data-tool={rest['data-tool']} > {React.cloneElement(children, { className: classnames(iconSizeClasses[size], 'fill-current'), diff --git a/platform/ui/src/components/SplitButton/SplitButton.tsx b/platform/ui/src/components/SplitButton/SplitButton.tsx index f70c566af..b9d998c94 100644 --- a/platform/ui/src/components/SplitButton/SplitButton.tsx +++ b/platform/ui/src/components/SplitButton/SplitButton.tsx @@ -4,16 +4,17 @@ import classNames from 'classnames'; import OutsideClickHandler from 'react-outside-click-handler'; import { useTranslation } from 'react-i18next'; -import { Icon, Tooltip, ListMenu } from '../'; +import { Icon, Tooltip, ListMenu, ToolbarButton } from '../'; const baseClasses = { Button: - 'flex items-center rounded-md border-transparent border-2 cursor-pointer group/button', + 'flex items-center rounded-md border-transparent cursor-pointer group/button', Primary: - 'h-full flex flex-1 items-center rounded-md rounded-tr-none rounded-br-none group/primary', + // By default border on left, top and bottom for hover effect and only rounded on left side. + // Extra padding on right to componensate for no right border. + 'h-full border-l-2 border-t-2 border-b-2 rounded-tl-md rounded-bl-md group/primary !pl-2 !py-2', Secondary: - 'h-full flex items-center justify-center rounded-tr-md rounded-br-md w-4 group/secondary', - PrimaryIcon: 'w-5 h-5', + 'h-full flex items-center justify-center rounded-tr-md rounded-br-md w-4 border-2 border-transparent group/secondary', SecondaryIcon: 'w-4 h-full stroke-1', Separator: 'border-l py-2.5', Content: 'absolute z-10 top-0 mt-12', @@ -31,29 +32,31 @@ const classes = { Primary: ({ primary, isExpanded }) => classNames( baseClasses.Primary, - primary.isActive && !isExpanded - ? 'bg-primary-light rounded-tr-md rounded-br-md active' - : isExpanded - ? 'bg-primary-dark' - : 'bg-secondary-dark hover:bg-primary-dark' + primary.isActive + ? isExpanded + ? 'border-primary-dark !bg-primary-dark hover:border-primary-dark text-primary-light' + : `${ + primary.isToggle + ? 'border-secondary-dark bg-secondary-light' + : 'border-primary-light bg-primary-light' + } + border-2 rounded-md !p-2` // Full, rounded border with less right padding when active. + : `focus:!text-black focus:!rounded-md focus:!border-primary-light focus:!bg-primary-light + ${ + isExpanded + ? 'border-primary-dark bg-primary-dark !text-primary-light' + : 'border-secondary-dark bg-secondary-dark group-hover/button:border-primary-dark group-hover/button:text-primary-light hover:bg-primary-dark hover:border-primary-dark focus:!text-black' + } + ` ), Secondary: ({ isExpanded, primary }) => classNames( baseClasses.Secondary, isExpanded - ? 'bg-primary-light rounded-tr-md rounded-br-md' + ? 'bg-primary-light !rounded-tr-md !rounded-br-md' : primary.isActive ? 'bg-secondary-dark' - : 'hover:bg-primary-dark bg-secondary-dark' - ), - PrimaryIcon: ({ primary, isExpanded }) => - classNames( - baseClasses.PrimaryIcon, - !primary.isActive && - 'group-hover/primary:text-primary-light group-hover/secondary:text-primary-light group-hover/button:text-primary-light', - primary.isActive && !isExpanded - ? 'text-primary-dark ' - : 'text-common-bright' + : 'hover:bg-primary-dark bg-secondary-dark group-hover/button:border-primary-dark' ), SecondaryIcon: ({ isExpanded }) => classNames( @@ -85,9 +88,12 @@ const SplitButton = ({ items: _items, renderer, onInteraction, + servicesManager, }) => { const { t } = useTranslation('Buttons'); + const { ToolBarService } = servicesManager.services; + const { primaryToolId, toggles } = bState; /* Bubbles up individual item clicks */ const getSplitButtonItems = items => @@ -107,7 +113,7 @@ const SplitButton = ({ setState(state => ({ ...state, - primary: !isAction ? { ...item, index } : state.primary, + primary: !isAction && isRadio ? { ...item, index } : state.primary, isExpanded: false, items: getSplitButtonItems(_items).filter(item => isRadio && !isAction ? item.index !== index : true @@ -133,21 +139,44 @@ const SplitButton = ({ setState(state => ({ ...state, isHovering: false })); const outsideClickHandler = () => setState(state => ({ ...state, isExpanded: false })); - const onPrimaryClickHandler = () => { - onInteraction({ - groupId, - itemId: state.primary.id, - interactionType: state.primary.type, - // splitButtonId? (so we can track group?) - // info to fire item's command/event? - // - commands: state.primary.commands, - }); - }; + const isPrimaryToggle = state.primary.type === 'toggle'; const isPrimaryActive = (state.primary.type === 'tool' && primaryToolId === state.primary.id) || - (state.primary.type === 'toggle' && toggles[state.primary.id] === true); + (isPrimaryToggle && toggles[state.primary.id] === true); + + const PrimaryButtonComponent = + ToolBarService.getButtonComponentForUIType(state.primary.uiType) ?? + ToolbarButton; + + const primaryButtonClassName = classes.Primary({ + ...state, + primary: { isActive: isPrimaryActive, isToggle: isPrimaryToggle }, + }); + + const DefaultListItemRenderer = ({ type, icon, label, t, id }) => { + const isActive = type === 'toggle' && toggles[id] === true; + + return ( +
+ + + + {t(label)} +
+ ); + }; + + const listItemRenderer = renderer || DefaultListItemRenderer; return ( @@ -162,32 +191,20 @@ const SplitButton = ({ onMouseLeave={onMouseLeaveHandler} >
-
- -
- -
-
+
+ ToolBarService.recordInteraction(args)} + servicesManager={servicesManager} + // All rounding is taken care of by className + rounded="none" + className={primaryButtonClassName} + data-tool={state.primary.id} + data-cy={`${groupId}-split-button-primary`} + />
renderer({ ...args, t })} + bState={bState} + renderer={args => listItemRenderer({ ...args, t })} />
@@ -234,24 +252,6 @@ const SplitButton = ({ ); }; -const DefaultListItemRenderer = ({ icon, label, isActive, t }) => ( -
- - - - - {t(label)} - -
-); - -const noop = () => {}; - SplitButton.defaultProps = { isRadio: false, isAction: false, @@ -266,7 +266,7 @@ SplitButton.defaultProps = { tooltip: 'More Measure Tools', }, items: [], - renderer: DefaultListItemRenderer, + renderer: null, }; SplitButton.propTypes = { diff --git a/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx b/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx index 76cce19d6..b2fb20da6 100644 --- a/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx +++ b/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx @@ -14,7 +14,9 @@ const ToolbarButton = ({ dropdownContent, // isActive: _isActive, + className, bState = {}, + ...rest // }) => { const { primaryToolId } = bState; @@ -49,7 +51,7 @@ const ToolbarButton = ({ variant={isActive ? 'contained' : 'text'} bgColor={bgClasses[type]} size="toolbar" - className={classnames('mx-1', activeClass, classes[type])} + className={classnames(activeClass, classes[type], className)} onClick={() => { onInteraction({ itemId: id, @@ -60,6 +62,7 @@ const ToolbarButton = ({ name={label} key={id} id={id} + {...rest} > From ac90df356e47d5cc070e704050d61ab06437792e Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Mon, 9 Jan 2023 12:19:48 -0500 Subject: [PATCH 05/47] fix: OHIF-386 Disable Export and Create Report buttons if there are no tracked measurements (#3102) Use the disabled Button component variant when no tracked measurements are present. Made the buttons look as per the spec. Co-authored-by: Joe Boccanfuso --- .../ActionButtons.tsx | 16 ++++++++++------ .../PanelMeasurementTableTracking/index.tsx | 4 ++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx index eb163baea..73fae10e5 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/ActionButtons.tsx @@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'; import { Button, ButtonGroup } from '@ohif/ui'; -function ActionButtons({ onExportClick, onCreateReportClick }) { +function ActionButtons({ onExportClick, onCreateReportClick, disabled }) { const { t } = useTranslation('MeasurementTable'); return ( @@ -12,20 +12,22 @@ function ActionButtons({ onExportClick, onCreateReportClick }) { @@ -36,11 +38,13 @@ function ActionButtons({ onExportClick, onCreateReportClick }) { ActionButtons.propTypes = { onExportClick: PropTypes.func, onCreateReportClick: PropTypes.func, + disabled: PropTypes.bool, }; ActionButtons.defaultProps = { onExportClick: () => alert('Export'), onCreateReportClick: () => alert('Create Report'), + disabled: false, }; export default ActionButtons; diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx index d9ce92fc5..137dffa38 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx @@ -273,6 +273,10 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { isBackupSave: true, }); }} + disabled={ + additionalFindings.length === 0 && + displayMeasurementsWithoutFindings.length === 0 + } />
From 1d1b33224ad95a99e669e08ec1da809fb8880102 Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 11 Jan 2023 07:19:27 -0500 Subject: [PATCH 06/47] feat: use wadors instead of streaming wadors for volume loading (#3109) --- extensions/cornerstone-dicom-sr/package.json | 4 +- extensions/cornerstone/package.json | 6 +- extensions/cornerstone/src/init.tsx | 11 +- .../CornerstoneCacheService.ts | 10 +- extensions/measurement-tracking/package.json | 4 +- platform/core/src/classes/MetadataProvider.js | 5 +- .../configuration/dataSources/static-files.md | 4 +- yarn.lock | 114 +++++++++++++++--- 8 files changed, 110 insertions(+), 48 deletions(-) diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index a6b8e1abf..a88672d09 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -45,7 +45,7 @@ "dependencies": { "@babel/runtime": "7.16.3", "classnames": "^2.2.6", - "@cornerstonejs/core": "^0.22.3", - "@cornerstonejs/tools": "^0.30.6" + "@cornerstonejs/core": "^0.25.0", + "@cornerstonejs/tools": "^0.34.0" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index d655625b1..5f6142fc1 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -43,9 +43,9 @@ }, "dependencies": { "@babel/runtime": "7.17.9", - "@cornerstonejs/core": "^0.22.3", - "@cornerstonejs/streaming-image-volume-loader": "^0.6.11", - "@cornerstonejs/tools": "^0.30.6", + "@cornerstonejs/core": "^0.25.0", + "@cornerstonejs/streaming-image-volume-loader": "^0.8.2", + "@cornerstonejs/tools": "^0.34.0", "@kitware/vtk.js": "25.9.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index 3b338a1b9..9070875c1 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -10,15 +10,11 @@ import { EVENTS, metaData, volumeLoader, - imageLoader, imageLoadPoolManager, Settings, } from '@cornerstonejs/core'; import { Enums, utilities, ReferenceLinesTool } from '@cornerstonejs/tools'; -import { - cornerstoneStreamingImageVolumeLoader, - sharedArrayBufferImageLoader, -} from '@cornerstonejs/streaming-image-volume-loader'; +import { cornerstoneStreamingImageVolumeLoader } from '@cornerstonejs/streaming-image-volume-loader'; import initWADOImageLoader from './initWADOImageLoader'; import initCornerstoneTools from './initCornerstoneTools'; @@ -124,11 +120,6 @@ export default async function init({ ); HangingProtocolService.registerImageLoadStrategy('nth', nthLoader); - imageLoader.registerImageLoader( - 'streaming-wadors', - sharedArrayBufferImageLoader - ); - metaData.addProvider(metadataProvider.get.bind(metadataProvider), 9999); imageLoadPoolManager.maxNumRequests = { diff --git a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts index caef8ebac..4370bb956 100644 --- a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts +++ b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts @@ -7,7 +7,6 @@ import { VolumeViewportData, } from '../../types/CornerstoneCacheService'; -const VOLUME_IMAGE_LOADER_SCHEME = 'streaming-wadors'; const VOLUME_LOADER_SCHEME = 'cornerstoneStreamingImageVolume'; class CornerstoneCacheService { @@ -238,14 +237,7 @@ class CornerstoneCacheService { dataSource ); - if (stackImageIds[0].startsWith('dicomfile')) { - return stackImageIds; - } - - return stackImageIds.map(imageId => { - const imageURI = utils.imageIdToURI(imageId); - return `${VOLUME_IMAGE_LOADER_SCHEME}:${imageURI}`; - }); + return stackImageIds; } } diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 99ce2f3cc..58853a76f 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.2.6", - "@cornerstonejs/core": "^0.22.3", - "@cornerstonejs/tools": "^0.30.6", + "@cornerstonejs/core": "^0.25.0", + "@cornerstonejs/tools": "^0.34.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "dcmjs": "^0.28.3", "prop-types": "^15.6.2", diff --git a/platform/core/src/classes/MetadataProvider.js b/platform/core/src/classes/MetadataProvider.js index cc4b75c57..45fa116e7 100644 --- a/platform/core/src/classes/MetadataProvider.js +++ b/platform/core/src/classes/MetadataProvider.js @@ -419,10 +419,7 @@ class MetadataProvider { // SOPInstanceUID, // }) // somewhere else - if ( - imageId.startsWith('wadors:') || - imageId.startsWith('streaming-wadors:') - ) { + if (imageId.startsWith('wadors:')) { const strippedImageId = imageId.split('/studies/')[1]; const splitImageId = strippedImageId.split('/'); diff --git a/platform/docs/docs/configuration/dataSources/static-files.md b/platform/docs/docs/configuration/dataSources/static-files.md index a2eac78be..c3c6471b5 100644 --- a/platform/docs/docs/configuration/dataSources/static-files.md +++ b/platform/docs/docs/configuration/dataSources/static-files.md @@ -12,14 +12,14 @@ performance of serving the files is just the read from disk/write to http stream time, without any extra processing time. The project for the static wado files is located here: [static-wado]: -https://github.com/wayfarer3130/static-wado +https://github.com/OHIF/static-wado It can be compiled with Java and Gradle, and then run against a set of dicom, in the example located in /dicom/study1 outputting to /dicomweb, and then a server run against that data, like this: ``` -git clone https://github.com/wayfarer3130/static-wado.git +git clone https://github.com/OHIF/static-wado cd static-wado ./gradlew installDist StaticWado/build/install/StaticWado/bin/StaticWado -d /dicomweb /dicom/study1 diff --git a/yarn.lock b/yarn.lock index 1bc066da8..ce688dc90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -353,6 +353,15 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" @@ -2383,28 +2392,33 @@ resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjpeg/-/codec-openjpeg-0.1.1.tgz#5bd1c52a33a425299299e970312731fa0cc2711b" integrity sha512-HOMMOLV6xy8O/agNGGvrl0a8DwShpBvWxAzEzv2pqq12d3r5z/3MyIgNA3Oj/8bIBVvvVXxh9RX7rMDRHJdowg== -"@cornerstonejs/core@^0.22.3": - version "0.22.3" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.22.3.tgz#57bf1482ce91d094342bf116636dea1335bff0b3" - integrity sha512-WqV6TnsTpsgezSj9SmnSgGCdY3u/EwYr6nKD8KnRQI8lqRTmMIKzbcIvPWAKJ/sU+A9Da6A5tweZvrhrcSorGg== +"@cornerstonejs/codec-openjph@^1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-1.0.3.tgz#4c82642e8a6beb0d263f5a263723aec4225e5300" + integrity sha512-PK+9N/JL7ZMGum6OKuReRGGhWXpWjRC9WnltQ6aEzRKEQPMg+3WFiQPZowKCCG1I4whv35DYFRi6wu7RyRaEMQ== + +"@cornerstonejs/core@^0.25.0": + version "0.25.0" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.25.0.tgz#b392f5526e087c591d5d7ae68782a980aa3488f7" + integrity sha512-MtT3N1+c3apalilsQs8SWaBLD6A0TKo1NLRMY1gFVYfZ9BkyCPlvKxhtgAJthRbr8ME2NMEMs/VjV3/RrFyMVg== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/streaming-image-volume-loader@^0.6.11": - version "0.6.11" - resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.6.11.tgz#53800b12d588300320aa479eef24f168a38826bd" - integrity sha512-UrgiWIsTSPFWEgCKxsKZUZ5hgir8ymdXes2UB8OT7yX6M4QeTmKi26nVNP21vebKMMPBootK//geSToqBoBs4Q== +"@cornerstonejs/streaming-image-volume-loader@^0.8.2": + version "0.8.2" + resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.8.2.tgz#058a591501e7fe7ebbe195695c92d047a288290f" + integrity sha512-50Ihn/tp5GJG7Uu0ZtrjSdS/JRfYIyeuRVAXZKvj2jbjuE2fqf+lgXULPgDKQhKiT7nBy6nb2PEpMRzTH/vlnA== dependencies: - "@cornerstonejs/core" "^0.22.3" - cornerstone-wado-image-loader "^4.2.1" + "@cornerstonejs/core" "^0.25.0" + cornerstone-wado-image-loader "^4.7.0" -"@cornerstonejs/tools@^0.30.6": - version "0.30.6" - resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.30.6.tgz#a6e5209f00fe00a919f20fe1387f06062b289a16" - integrity sha512-GEm2xWOlBwgS/3aZDBZObyu+KJESyOmkCo3hA+tellLKCVr207wBUUDndEmkNX6PJ/mR4o9Md6ZjMfNF7CAYiA== +"@cornerstonejs/tools@^0.34.0": + version "0.34.0" + resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.34.0.tgz#d164f575b4870cea2f3300aaf88722a5f47e61f4" + integrity sha512-J+pcLsAobcX3oHuDOmaWvXLfofBCa7wivuKjkuEajssgm+pUHp+hAt+LAZz0fy1m2ZGOFUZn6TQjGbQg/nrYEQ== dependencies: - "@cornerstonejs/core" "^0.22.3" + "@cornerstonejs/core" "^0.25.0" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -3537,6 +3551,17 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jsdevtools/coverage-istanbul-loader@3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#2a4bc65d0271df8d4435982db4af35d81754ee26" + integrity sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA== + dependencies: + convert-source-map "^1.7.0" + istanbul-lib-instrument "^4.0.3" + loader-utils "^2.0.0" + merge-source-map "^1.1.0" + schema-utils "^2.7.0" + "@kitware/vtk.js@25.9.0": version "25.9.0" resolved "https://registry.npmjs.org/@kitware/vtk.js/-/vtk.js-25.9.0.tgz#ecf555c56f6e117b454131c43aba45311a515ecc" @@ -4305,6 +4330,13 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -9493,6 +9525,22 @@ cornerstone-wado-image-loader@^4.2.1: dicom-parser "^1.8.9" pako "^2.0.4" +cornerstone-wado-image-loader@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.7.0.tgz#0b36ea3e8b0f4554234e3fc6db6260e95afea545" + integrity sha512-tq8YhiS4eQ9FmmxSCuoFmntSPzM9rccPq3WkeHbfglAEwmQjRaZMOR9r0MQaT0se/A9hY37q3xRfe9inhK1Ezw== + dependencies: + "@babel/eslint-parser" "^7.19.1" + "@cornerstonejs/codec-charls" "^0.1.1" + "@cornerstonejs/codec-libjpeg-turbo-8bit" "^0.0.7" + "@cornerstonejs/codec-openjpeg" "^0.1.0" + "@cornerstonejs/codec-openjph" "^1.0.3" + coverage-istanbul-loader "^3.0.5" + date-format "^4.0.14" + dicom-parser "^1.8.9" + pako "^2.0.4" + uuid "^9.0.0" + cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -9525,6 +9573,13 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +coverage-istanbul-loader@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#bf942efc0f4e3ac27565203c17dca5008eae6637" + integrity sha512-xsw2phF0VNqUPk47V/vHXkdcTyl0tkMSmaZfLrTOhoPhPMXFelNju7utl5s7I93KXzipqDEK0YwofQSSflPz8A== + dependencies: + "@jsdevtools/coverage-istanbul-loader" "3.0.5" + cp-file@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" @@ -10175,6 +10230,11 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +date-format@^4.0.14: + version "4.0.14" + resolved "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" + integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -11428,7 +11488,7 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -14528,6 +14588,16 @@ istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: istanbul-lib-coverage "^2.0.5" semver "^6.0.0" +istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + istanbul-lib-instrument@^5.0.4: version "5.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" @@ -16132,6 +16202,13 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -22973,6 +23050,11 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" From 97dc2f90490aa8e2b95c2df5d48f4d77bb480d95 Mon Sep 17 00:00:00 2001 From: Gabriel Lebaudy Date: Wed, 11 Jan 2023 20:42:16 +0100 Subject: [PATCH 07/47] fix: Require all instances to have an ImagePositionPatient attribute (#3107) This fixes cases when some instances don't have this attribute, which would break on platform/core/src/utils/sortInstancesByPosition.ts:52 --- platform/core/src/utils/isDisplaySetReconstructable.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/core/src/utils/isDisplaySetReconstructable.js b/platform/core/src/utils/isDisplaySetReconstructable.js index 55539d143..6ab7bf2fd 100644 --- a/platform/core/src/utils/isDisplaySetReconstructable.js +++ b/platform/core/src/utils/isDisplaySetReconstructable.js @@ -29,6 +29,11 @@ export default function isDisplaySetReconstructable(instances) { return { value: false }; } + // Can't reconstruct if all instances don't have the ImagePositionPatient. + if (!instances.every(instance => !!instance.ImagePositionPatient)) { + return { value: false }; + } + const sortedInstances = sortInstancesByPosition(instances); if (isMultiframe) { From a997198587e068aef397f4443b076021dfde889e Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Thu, 12 Jan 2023 16:38:12 -0500 Subject: [PATCH 08/47] fix: app-config settings are ignored in OHIF v3 (#3114) * fix: app-config settings are ignored in OHIF v3 github issue #3051 Remove default route from baked in routes if showStudyList is false. * fix: app-config settings are ignored in OHIF v3 github issue #3051 PR feedback - simply remove default route from the baked in routes. * fix: app-config settings are ignored in OHIF v3 github issue #3051 PR feedback - updated CS3D tools version --- extensions/cornerstone-dicom-sr/package.json | 2 +- extensions/cornerstone/package.json | 2 +- extensions/measurement-tracking/package.json | 2 +- platform/viewer/src/routes/index.tsx | 7 ------- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index a88672d09..ebd90b91d 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,6 +46,6 @@ "@babel/runtime": "7.16.3", "classnames": "^2.2.6", "@cornerstonejs/core": "^0.25.0", - "@cornerstonejs/tools": "^0.34.0" + "@cornerstonejs/tools": "^0.34.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 5f6142fc1..d65c76703 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -45,7 +45,7 @@ "@babel/runtime": "7.17.9", "@cornerstonejs/core": "^0.25.0", "@cornerstonejs/streaming-image-volume-loader": "^0.8.2", - "@cornerstonejs/tools": "^0.34.0", + "@cornerstonejs/tools": "^0.34.2", "@kitware/vtk.js": "25.9.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 58853a76f..ab4066bf7 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -33,7 +33,7 @@ "@ohif/core": "^3.0.0", "classnames": "^2.2.6", "@cornerstonejs/core": "^0.25.0", - "@cornerstonejs/tools": "^0.34.0", + "@cornerstonejs/tools": "^0.34.2", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "dcmjs": "^0.28.3", "prop-types": "^15.6.2", diff --git a/platform/viewer/src/routes/index.tsx b/platform/viewer/src/routes/index.tsx index a40d09d44..e93a70e89 100644 --- a/platform/viewer/src/routes/index.tsx +++ b/platform/viewer/src/routes/index.tsx @@ -13,13 +13,6 @@ import PrivateRoute from './PrivateRoute'; // TODO: Include "routes" debug route if dev build const bakedInRoutes = [ - // WORK LIST - { - path: '/', - children: DataSourceWrapper, - private: true, - props: { children: WorkList }, - }, { path: '/debug', children: Debug, From 58ae8690a75a381cb177d089245f93679d1259f5 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Fri, 13 Jan 2023 13:57:18 -0500 Subject: [PATCH 09/47] fix: Clicking on measurement should highlight the measurement row in the measurement panel OHIF-433 (#3111) * fix: OHIF-433 Clicking on measurement should highlight the measurement row in the measurement panel Added selected flag to each OHIF measurement. Listening to CS3D ANNOTATION_SELECTION_CHANGE to keep the selected flag in sync. * fix: OHIF-433 Clicking on measurement should highlight the measurement row in the measurement panel Fixed broken unit tests. * PR feedback from Alireza: - use MEASUREMENT_UPDATED event for selection changed - added TODO to eventually have CS3D introduce the selected flag per annotation - added MeasurementService._publishEvent * PR feedback: now using _broadcastEvent --- .../cornerstone/src/initMeasurementService.js | 31 +++++++- .../Bidirectional.js | 2 +- .../EllipticalROI.js | 2 +- .../measurementServiceMappings/Length.js | 2 +- .../src/Panels/PanelMeasurementTable.tsx | 5 +- .../PanelMeasurementTableTracking/index.tsx | 2 +- .../MeasurementService/MeasurementService.js | 79 +++++++++++++------ .../MeasurementService.test.js | 16 ++-- 8 files changed, 103 insertions(+), 36 deletions(-) diff --git a/extensions/cornerstone/src/initMeasurementService.js b/extensions/cornerstone/src/initMeasurementService.js index f97b5007f..cb143c38f 100644 --- a/extensions/cornerstone/src/initMeasurementService.js +++ b/extensions/cornerstone/src/initMeasurementService.js @@ -121,11 +121,36 @@ const connectToolsToMeasurementService = ( const { toolName } = metadata; annotationModifiedEventDetail.uid = annotationUID; - annotationToMeasurement(toolName, annotationModifiedEventDetail); + // Passing true to indicate this is an update and NOT a annotation (start) completion. + annotationToMeasurement(toolName, annotationModifiedEventDetail, true); } catch (error) { console.warn('Failed to update measurement:', error); } } + function selectMeasurement(csToolsEvent) { + try { + const annotationSelectionEventDetail = csToolsEvent.detail; + + const { + added: addedSelectedAnnotationUIDs, + removed: removedSelectedAnnotationUIDs, + } = annotationSelectionEventDetail; + + if (removedSelectedAnnotationUIDs) { + removedSelectedAnnotationUIDs.forEach(annotationUID => + MeasurementService.setMeasurementSelected(annotationUID, false) + ); + } + + if (addedSelectedAnnotationUIDs) { + addedSelectedAnnotationUIDs.forEach(annotationUID => + MeasurementService.setMeasurementSelected(annotationUID, true) + ); + } + } catch (error) { + console.warn('Failed to select and unselect measurements:', error); + } + } /** * When csTools fires a removed event, remove the same measurement @@ -157,13 +182,17 @@ const connectToolsToMeasurementService = ( // on display sets added, check if there are any measurements in measurement service that need to be // put into cornerstone tools + const addedEvt = csToolsEvents.ANNOTATION_ADDED; const completedEvt = csToolsEvents.ANNOTATION_COMPLETED; const updatedEvt = csToolsEvents.ANNOTATION_MODIFIED; const removedEvt = csToolsEvents.ANNOTATION_REMOVED; + const selectionEvt = csToolsEvents.ANNOTATION_SELECTION_CHANGE; + eventTarget.addEventListener(addedEvt, addMeasurement); eventTarget.addEventListener(completedEvt, addMeasurement); eventTarget.addEventListener(updatedEvt, updateMeasurement); eventTarget.addEventListener(removedEvt, removeMeasurement); + eventTarget.addEventListener(selectionEvt, selectMeasurement); return csTools3DVer1MeasurementSource; }; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js b/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js index 3a36b7576..ed2ea6c27 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js @@ -86,7 +86,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { const targets = Object.keys(cachedStats); if (!targets.length) { - return; + return []; } const annotations = []; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js b/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js index 3e3c8b7cd..49025e22e 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js @@ -85,7 +85,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { const targets = Object.keys(cachedStats); if (!targets.length) { - return; + return []; } const annotations = []; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js b/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js index c3def8782..8388c8482 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js @@ -91,7 +91,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { const targets = Object.keys(cachedStats); if (!targets.length) { - return; + return []; } const annotations = []; diff --git a/extensions/default/src/Panels/PanelMeasurementTable.tsx b/extensions/default/src/Panels/PanelMeasurementTable.tsx index d213210d1..1d2b0f6f0 100644 --- a/extensions/default/src/Panels/PanelMeasurementTable.tsx +++ b/extensions/default/src/Panels/PanelMeasurementTable.tsx @@ -255,14 +255,13 @@ function _getMappedMeasurements(MeasurementService) { } function _mapMeasurementToDisplay(measurement, index, types) { - const { displayText, uid, label, type } = measurement; + const { displayText, uid, label, type, selected } = measurement; return { uid, label: label || '(empty)', measurementType: type, displayText: displayText || [], - // TODO: handle one layer down - isActive: false, // activeMeasurementItem === i + 1, + isActive: selected, }; } diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx index 137dffa38..f376aecfb 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx @@ -323,7 +323,7 @@ function _mapMeasurementToDisplay(measurement, types, DisplaySetService) { label: measurement.label || '(empty)', measurementType: measurement.type, displayText: displayText || [], - isActive: false, // activeMeasurementItem === i + 1, + isActive: measurement.selected, }; } diff --git a/platform/core/src/services/MeasurementService/MeasurementService.js b/platform/core/src/services/MeasurementService/MeasurementService.js index a0955e86a..6eba5cb75 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.js +++ b/platform/core/src/services/MeasurementService/MeasurementService.js @@ -26,6 +26,7 @@ import pubSubServiceInterface from '../_shared/pubSubServiceInterface'; * @property {number} area - * @property {Array} points - * @property {MeasurementSource} source - + * @property {boolean} selected - */ /* Measurement schema keys for object validation. */ @@ -56,6 +57,7 @@ const MEASUREMENT_SCHEMA_KEYS = [ 'shortestDiameter', 'longestDiameter', 'cachedStats', + 'selected', ]; const EVENTS = { @@ -184,6 +186,20 @@ class MeasurementService { return measurement; } + setMeasurementSelected(measurementUID, selected) { + const measurement = this.getMeasurement(measurementUID); + if (!measurement) { + return; + } + + measurement.selected = selected; + + this._broadcastEvent(this.EVENTS.MEASUREMENT_UPDATED, { + source: measurement.source, + measurement, + }); + } + /** * Create a new source. * @@ -218,8 +234,17 @@ class MeasurementService { version, }; - source.annotationToMeasurement = (annotationType, annotation) => { - return this.annotationToMeasurement(source, annotationType, annotation); + source.annotationToMeasurement = ( + annotationType, + annotation, + isUpdate = false + ) => { + return this.annotationToMeasurement( + source, + annotationType, + annotation, + isUpdate + ); }; source.remove = (measurementUID, eventDetails) => { @@ -467,9 +492,15 @@ class MeasurementService { * @param {MeasurementSource} source The measurement source instance * @param {string} annotationType The source annotationType * @param {EventDetail} sourceAnnotationDetail for the annotation event + * @param {boolean} isUpdate is this an update or an add/completed instead? * @return {string} A measurement uid */ - annotationToMeasurement(source, annotationType, sourceAnnotationDetail) { + annotationToMeasurement( + source, + annotationType, + sourceAnnotationDetail, + isUpdate = false + ) { if (!this._isValidSource(source)) { throw new Error('Invalid source.'); } @@ -524,19 +555,27 @@ class MeasurementService { }; if (this.measurements[internalUID]) { + // TODO: Ultimately, each annotation should have a selected flag right from the soure. + // For now, it is just added in OHIF here and in setMeasurementSelected. + newMeasurement.selected = this.measurements[internalUID].selected; this.measurements[internalUID] = newMeasurement; - this._broadcastEvent(this.EVENTS.MEASUREMENT_UPDATED, { - source, - measurement: newMeasurement, - notYetUpdatedAtSource: false, - }); + if (isUpdate) { + this._broadcastEvent(this.EVENTS.MEASUREMENT_UPDATED, { + source, + measurement: newMeasurement, + notYetUpdatedAtSource: false, + }); + } else { + log.info('Measurement added.', newMeasurement); + this.measurements[internalUID] = newMeasurement; + this._broadcastEvent(this.EVENTS.MEASUREMENT_ADDED, { + source, + measurement: newMeasurement, + }); + } } else { - log.info('Measurement added.', newMeasurement); + log.info('Measurement started.', newMeasurement); this.measurements[internalUID] = newMeasurement; - this._broadcastEvent(this.EVENTS.MEASUREMENT_ADDED, { - source, - measurement: newMeasurement, - }); } return newMeasurement.uid; @@ -588,16 +627,10 @@ class MeasurementService { } this._addJumpToMeasurement(viewportIndex, measurementUID); - const eventName = this.EVENTS.JUMP_TO_MEASUREMENT; - - const hasListeners = Object.keys(this.listeners).length > 0; - const hasCallbacks = Array.isArray(this.listeners[eventName]); - - if (hasListeners && hasCallbacks) { - this.listeners[eventName].forEach(listener => { - listener.callback({ viewportIndex, measurement }); - }); - } + this._broadcastEvent(this.EVENTS.JUMP_TO_MEASUREMENT, { + viewportIndex, + measurement, + }); } getJumpToMeasurement(viewportIndex) { diff --git a/platform/core/src/services/MeasurementService/MeasurementService.test.js b/platform/core/src/services/MeasurementService/MeasurementService.test.js index 6d6fa6eb8..3ec0a2799 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.test.js +++ b/platform/core/src/services/MeasurementService/MeasurementService.test.js @@ -364,8 +364,9 @@ describe('MeasurementService.js', () => { () => (addCallbackWasCalled = true) ); - /* Add new measurement */ - source.annotationToMeasurement(annotationType, measurement); + /* Add new measurement - two calls needed for the start and the other for the completed*/ + const uid = source.annotationToMeasurement(annotationType, measurement); + source.annotationToMeasurement(annotationType, { uid, ...measurement }); expect(addCallbackWasCalled).toBe(true); }); @@ -392,7 +393,11 @@ describe('MeasurementService.js', () => { const uid = source.annotationToMeasurement(annotationType, measurement); /* Update measurement */ - source.annotationToMeasurement(annotationType, { uid, ...measurement }); + source.annotationToMeasurement( + annotationType, + { uid, ...measurement }, + true + ); expect(updateCallbackWasCalled).toBe(true); }); @@ -418,8 +423,9 @@ describe('MeasurementService.js', () => { /* Unsubscribe */ unsubscribe(); - /* Create measurement */ - source.annotationToMeasurement(annotationType, measurement); + /* Create measurement - two calls needed one to start and one to complete */ + const uid = source.annotationToMeasurement(annotationType, measurement); + source.annotationToMeasurement(annotationType, { uid, ...measurement }); expect(updateCallbackWasCalled).toBe(false); }); From b51c59016cb4dd862832bda7b3d4769ca2063613 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Mon, 16 Jan 2023 20:38:37 -0500 Subject: [PATCH 10/47] =?UTF-8?q?fix(MeasurementService):=20OHIF-433=20Cli?= =?UTF-8?q?cking=20on=20measurement=20should=20highlight=20the=20measureme?= =?UTF-8?q?n=E2=80=A6=20(#3120)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Annotation selection update event originates from CS3D and as such should use the notUpdatedAtSource:false flag. --- .../core/src/services/MeasurementService/MeasurementService.js | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/core/src/services/MeasurementService/MeasurementService.js b/platform/core/src/services/MeasurementService/MeasurementService.js index 6eba5cb75..4e38b711a 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.js +++ b/platform/core/src/services/MeasurementService/MeasurementService.js @@ -197,6 +197,7 @@ class MeasurementService { this._broadcastEvent(this.EVENTS.MEASUREMENT_UPDATED, { source: measurement.source, measurement, + notYetUpdatedAtSource: false, }); } From f7c886878dc2f8f22c9f5c8cc34952d26f866a3a Mon Sep 17 00:00:00 2001 From: dxlin Date: Tue, 24 Jan 2023 15:43:27 -0500 Subject: [PATCH 11/47] fix(Hotkeys): add firstImage and lastImage commands referenced by 'home' and 'end' hotkeys (#3127) * -fix 'home' and 'end' hotkeys ->implement firstImage lastImage commands * -extra comments * -add check for compatible viewport in firstImage command --- extensions/cornerstone/src/commandsModule.ts | 56 ++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index c7839706b..585f1bf74 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -1,6 +1,7 @@ import { getEnabledElement, StackViewport, + VolumeViewport, utilities as csUtils, } from '@cornerstonejs/core'; import { @@ -313,6 +314,51 @@ const commandsModule = ({ servicesManager }) => { } } }, + firstImage: () => { + // Get current active viewport (return if none active) + const enabledElement = _getActiveViewportEnabledElement(); + if (!enabledElement) { + return; + } + const { viewport } = enabledElement; + + // Check viewport is supported + if ( + viewport! instanceof StackViewport && + viewport! instanceof VolumeViewport + ) { + throw new Error('Unsupported viewport type'); + } + + // Set slice to first slice + const options = { imageIndex: 0 }; + cstUtils.jumpToSlice(viewport.element, options); + }, + lastImage: () => { + // Get current active viewport (return if none active) + const enabledElement = _getActiveViewportEnabledElement(); + if (!enabledElement) { + return; + } + const { viewport } = enabledElement; + + // Get number of slices + // -> Copied from cornerstone3D jumpToSlice\_getImageSliceData() + let numberOfSlices = 0; + + if (viewport instanceof StackViewport) { + numberOfSlices = viewport.getImageIds().length; + } else if (viewport instanceof VolumeViewport) { + numberOfSlices = csUtils.getImageSliceDataForVolumeViewport(viewport) + .numberOfSlices; + } else { + throw new Error('Unsupported viewport type'); + } + + // Set slice to last slice + const options = { imageIndex: numberOfSlices - 1 }; + cstUtils.jumpToSlice(viewport.element, options); + }, scroll: ({ direction }) => { const enabledElement = _getActiveViewportEnabledElement(); @@ -475,6 +521,16 @@ const commandsModule = ({ servicesManager }) => { storeContexts: [], options: { direction: -1 }, }, + firstImage: { + commandFn: actions.firstImage, + storeContexts: [], + options: {}, + }, + lastImage: { + commandFn: actions.lastImage, + storeContexts: [], + options: {}, + }, showDownloadViewportModal: { commandFn: actions.showDownloadViewportModal, storeContexts: [], From 514ea3cceae05ff2cf11527455894674dcbc2121 Mon Sep 17 00:00:00 2001 From: Matthis Duclos Date: Wed, 25 Jan 2023 16:11:08 +0100 Subject: [PATCH 12/47] feat(HangingProtocol): add protocol generator back (#3128) --- .../HangingProtocolService.test.js | 101 +++++++++++++----- .../HangingProtocolService.ts | 35 +++++- platform/core/src/types/HangingProtocol.ts | 7 +- .../services/data/HangingProtocolService.md | 15 ++- yarn.lock | 18 +++- 5 files changed, 139 insertions(+), 37 deletions(-) diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js b/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js index 5132638a0..160410bd3 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js @@ -79,6 +79,14 @@ const testProtocol = { numberOfPriorsReferenced: -1, }; +function testProtocolGenerator({ servicesManager }) { + servicesManager.services.TestService.toCall(); + + return { + protocol: testProtocol, + }; +} + const studyMatch = { StudyInstanceUID: 'studyMatch', StudyDescription: 'A PETCT study type', @@ -107,41 +115,80 @@ const displaySet3 = { const studyMatchDisplaySets = [displaySet3, displaySet2, displaySet1]; +function checkHpsBestMatch(hps) { + hps.run({ studies: [studyMatch], displaySets: studyMatchDisplaySets }); + const { hpAlreadyApplied, viewportMatchDetails } = hps.getMatchDetails(); + expect(hpAlreadyApplied).toMatchObject(new Map([[0, false]])); + expect(viewportMatchDetails.size).toBe(1); + expect(viewportMatchDetails.get(0)).toMatchObject({ + viewportOptions: { + viewportId: 'ctAXIAL', + viewportType: 'volume', + orientation: 'axial', + toolGroupId: 'ctToolGroup', + }, + // Matches ds1 because it matches 2 rules, a required and an optional + // ds2 fails to match required and ds3 fails to match an optional. + displaySetsInfo: [ + { + SeriesInstanceUID: 'ds1', + displaySetInstanceUID: 'displaySet1', + displaySetOptions: {}, + }, + ], + }); +} + describe('HangingProtocolService', () => { + const mockedFunction = jest.fn(); const commandsManager = {}; - const hps = new HangingProtocolServiceClass(commandsManager); + const servicesManager = { + services: { + TestService: { + toCall: mockedFunction, + }, + }, + }; + const hps = new HangingProtocolServiceClass(commandsManager, servicesManager); let initialScaling; - beforeAll(() => { - hps.addProtocol(testProtocol.id, testProtocol); + afterEach(() => { + mockedFunction.mockClear(); }); - it('has one protocol', () => { - expect(hps.getProtocols().length).toBe(1); + describe('with a static protocol', () => { + beforeAll(() => { + hps.addProtocol(testProtocol.id, testProtocol); + }); + + it('has one protocol', () => { + expect(hps.getProtocols().length).toBe(1); + }); + + describe('run', () => { + it('matches best image match', () => { + checkHpsBestMatch(hps); + }); + }); }); - describe('run', () => { - it('matches best image match', () => { - hps.run({ studies: [studyMatch], displaySets: studyMatchDisplaySets }); - const { hpAlreadyApplied, viewportMatchDetails } = hps.getMatchDetails(); - expect(hpAlreadyApplied).toMatchObject(new Map([[0, false]])); - expect(viewportMatchDetails.size).toBe(1); - expect(viewportMatchDetails.get(0)).toMatchObject({ - viewportOptions: { - viewportId: 'ctAXIAL', - viewportType: 'volume', - orientation: 'axial', - toolGroupId: 'ctToolGroup', - }, - // Matches ds1 because it matches 2 rules, a required and an optional - // ds2 fails to match required and ds3 fails to match an optional. - displaySetsInfo: [ - { - SeriesInstanceUID: 'ds1', - displaySetInstanceUID: 'displaySet1', - displaySetOptions: {}, - }, - ], + describe('with protocol generator', () => { + beforeAll(() => { + hps.addProtocol(testProtocol.id, testProtocolGenerator); + }); + + it('has one protocol', () => { + expect(hps.getProtocols().length).toBe(1); + }); + + describe('run', () => { + it('matches best image match', () => { + checkHpsBestMatch(hps); + }); + + it('uses services manager', () => { + hps.run({ studies: [studyMatch], displaySets: studyMatchDisplaySets }); + expect(mockedFunction).toHaveBeenCalledTimes(1); }); }); }); diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts index 91b6c108a..4d650ee1a 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts @@ -16,7 +16,7 @@ const EVENTS = { 'event::hanging_protocol_applied_for_viewport', }; -type Protocol = HangingProtocol.Protocol; +type Protocol = HangingProtocol.Protocol | HangingProtocol.ProtocolGenerator; class HangingProtocolService { studies: StudyMetadata[]; @@ -180,7 +180,21 @@ class HangingProtocolService { public getProtocolById(id: string): HangingProtocol.Protocol { const protocol = this.protocols.get(id); - return protocol; + if (protocol instanceof Function) { + try { + const { protocol: generatedProtocol } = this._getProtocolFromGenerator( + protocol + ); + + return generatedProtocol; + } catch (error) { + console.warn( + `Error while executing protocol generator for protocol ${id}: ${error}` + ); + } + } else { + return this._validateProtocol(protocol); + } } /** @@ -434,6 +448,23 @@ class HangingProtocolService { return protocol; } + private _getProtocolFromGenerator( + protocolGenerator: HangingProtocol.ProtocolGenerator + ): { + protocol: HangingProtocol.Protocol; + } { + const { protocol } = protocolGenerator({ + servicesManager: this._servicesManager, + commandsManager: this._commandsManager, + }); + + const validatedProtocol = this._validateProtocol(protocol); + + return { + protocol: validatedProtocol, + }; + } + getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID) { const newDisplaySetInstanceUID = displaySetInstanceUID; const protocol = this.protocol; diff --git a/platform/core/src/types/HangingProtocol.ts b/platform/core/src/types/HangingProtocol.ts index de29c0ff0..a513e308e 100644 --- a/platform/core/src/types/HangingProtocol.ts +++ b/platform/core/src/types/HangingProtocol.ts @@ -151,6 +151,9 @@ type Protocol = { syncDataForViewports?: boolean; }; +type ProtocolGenerator = ({ servicesManager: any, commandsManager: any }) => { + protocol: Protocol; +}; export type { SetProtocolOptions, @@ -171,6 +174,6 @@ export type { DisplaySetInfo, GlobalProtocolOptions, ViewportSpecificProtocolOptions, - DisplaySetAndViewportOptions - + DisplaySetAndViewportOptions, + ProtocolGenerator, }; diff --git a/platform/docs/docs/platform/services/data/HangingProtocolService.md b/platform/docs/docs/platform/services/data/HangingProtocolService.md index 1e50ede0b..c43fd6fd8 100644 --- a/platform/docs/docs/platform/services/data/HangingProtocolService.md +++ b/platform/docs/docs/platform/services/data/HangingProtocolService.md @@ -78,7 +78,20 @@ do not overlap, with the suggested id being `${moduleId}.${simpleName}`. The 'default' name is used as the hanging protocol id when no other protocol applies, and can be set as the last module listed containing 'default'. -See the typescript definitions for more details on the structure. +A hanging protocol can also be defined with a generator. +A generator is a function we can write this way: + +```ts +function protocolGenerator({ servicesManager, commandsManager }) { + // Some computations using services and commands ... + + return { + protocol: generatedProtocol + } +} +``` + +See the typescript definitions for more details on the structure of protocols. ## Custom Attribute In some situations, you might want to match based on a custom attribute and not the DICOM tags. For instance, diff --git a/yarn.lock b/yarn.lock index ce688dc90..7a52ed704 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2405,6 +2405,14 @@ detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" +"@cornerstonejs/core@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.25.1.tgz#7e5c70858018d99417b61965ac606754542f77ad" + integrity sha512-/Ve9qwGyRRK1uUCrefh9cVG3OIaaS9LQoTUk9YMUbsoWxd6JitXh31XVHjlvNtBYGMRVdz+uGPS2zSxq1vi4aA== + dependencies: + detect-gpu "^4.0.45" + lodash.clonedeep "4.5.0" + "@cornerstonejs/streaming-image-volume-loader@^0.8.2": version "0.8.2" resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.8.2.tgz#058a591501e7fe7ebbe195695c92d047a288290f" @@ -2413,12 +2421,12 @@ "@cornerstonejs/core" "^0.25.0" cornerstone-wado-image-loader "^4.7.0" -"@cornerstonejs/tools@^0.34.0": - version "0.34.0" - resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.34.0.tgz#d164f575b4870cea2f3300aaf88722a5f47e61f4" - integrity sha512-J+pcLsAobcX3oHuDOmaWvXLfofBCa7wivuKjkuEajssgm+pUHp+hAt+LAZz0fy1m2ZGOFUZn6TQjGbQg/nrYEQ== +"@cornerstonejs/tools@^0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.34.2.tgz#645c97583066a872fd35188153cd21b26625473e" + integrity sha512-rbdQuSXGJ++ARS6eUAkBZi0tjmUKVtad0QPk0SZZXlDC2QAQRyIfq7n7oF2AaIR/0ngarTekUzuIy2nKiaOT+Q== dependencies: - "@cornerstonejs/core" "^0.25.0" + "@cornerstonejs/core" "^0.25.1" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" From b4881ab02ea01d5860e4bb46825d2ad229a297aa Mon Sep 17 00:00:00 2001 From: ladeirarodolfo <39910206+ladeirarodolfo@users.noreply.github.com> Date: Wed, 25 Jan 2023 12:14:12 -0300 Subject: [PATCH 13/47] fix(Panels): dicom seg panel sizing issue (#3125) * Fix dicom seg panel sizing issue * Set unecessary changes back Co-authored-by: Rodolfo --- .../src/panels/PanelSegmentation.tsx | 2 +- .../SegmentationGroupTable/SegmentationGroup.tsx | 9 ++++----- .../SegmentationGroupTable.tsx | 7 ++----- platform/ui/src/components/SidePanel/SidePanel.tsx | 6 +++--- platform/ui/tailwind.config.js | 1 + platform/viewer/tailwind.config.js | 14 ++++++++------ 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx index 94bc8448a..ff81fd12d 100644 --- a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx +++ b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx @@ -196,7 +196,7 @@ export default function PanelSegmentation({ ); return ( -
+
{/* show segmentation table */} {segmentations?.length ? ( { return ( -
+
{!isMinimized && ( -
+
{!!segments.length && segments.map(segment => { diff --git a/platform/ui/src/components/SegmentationGroupTable/SegmentationGroupTable.tsx b/platform/ui/src/components/SegmentationGroupTable/SegmentationGroupTable.tsx index 3dadbdc54..4e7067d1c 100644 --- a/platform/ui/src/components/SegmentationGroupTable/SegmentationGroupTable.tsx +++ b/platform/ui/src/components/SegmentationGroupTable/SegmentationGroupTable.tsx @@ -55,7 +55,7 @@ const SegmentationGroupTable = ({ setRenderOutline, }) => { return ( -
+
-
+
{!!segmentations.length && segmentations.map((segmentation, index) => { const { @@ -82,7 +82,6 @@ const SegmentationGroupTable = ({ activeSegmentIndex, } = segmentation; return ( - <> -
- ); })}
diff --git a/platform/ui/src/components/SidePanel/SidePanel.tsx b/platform/ui/src/components/SidePanel/SidePanel.tsx index 5581a992f..9119d51a8 100644 --- a/platform/ui/src/components/SidePanel/SidePanel.tsx +++ b/platform/ui/src/components/SidePanel/SidePanel.tsx @@ -176,7 +176,7 @@ const SidePanel = ({ {/** Panel Header with Arrow and Close Actions */}
{ @@ -190,7 +190,7 @@ const SidePanel = ({ color="inherit" border="none" rounded="none" - className="flex flex-row items-center px-3 relative w-full" + className="flex flex-row flex-static items-center px-3 relative w-full" name={tabs.length === 1 ? `${tabs[activeTabIndex].name}` : ''} > ({ + ...theme('spacing'), + '0': '0', + full: '100%', + screen: '100vh', + }), letterSpacing: { tighter: '-0.05em', tight: '-0.025em', @@ -366,12 +374,6 @@ module.exports = { ...breakpoints(theme('screens')), ...theme('spacing'), }), - minHeight: theme => ({ - ...theme('spacing'), - '0': '0', - full: '100%', - screen: '100vh', - }), minWidth: theme => ({ ...theme('spacing'), '0': '0', From a2bafaf100771a6d3891b91d513da825a77d080f Mon Sep 17 00:00:00 2001 From: Ouwen Huang Date: Thu, 2 Feb 2023 17:32:38 -0500 Subject: [PATCH 14/47] feat(metadata): added voiLUTFunction to MetadataProvider (#2959) --- platform/core/src/classes/MetadataProvider.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/core/src/classes/MetadataProvider.js b/platform/core/src/classes/MetadataProvider.js index 45fa116e7..fc17ac294 100644 --- a/platform/core/src/classes/MetadataProvider.js +++ b/platform/core/src/classes/MetadataProvider.js @@ -245,7 +245,7 @@ class MetadataProvider { break; case WADO_IMAGE_LOADER_TAGS.VOI_LUT_MODULE: - const { WindowCenter, WindowWidth } = instance; + const { WindowCenter, WindowWidth, VOILUTFunction } = instance; if (WindowCenter === undefined || WindowWidth === undefined) { return; } @@ -259,6 +259,7 @@ class MetadataProvider { metadata = { windowCenter: toNumber(windowCenter), windowWidth: toNumber(windowWidth), + voiLUTFunction: VOILUTFunction, }; break; From 123e3a569b6df7989139f7f23a53bcebb311a048 Mon Sep 17 00:00:00 2001 From: Alireza Date: Fri, 3 Feb 2023 09:33:28 -0500 Subject: [PATCH 15/47] fix(Segmentation): bump packages to fix segmentation rendering (#3138) * add test mode * bump packages * add reference lines * update yarn lock * fix netlify build * fix num workers * update year in doc --- extensions/cornerstone-dicom-sr/package.json | 4 +- extensions/cornerstone/package.json | 6 +- extensions/measurement-tracking/package.json | 4 +- modes/basic-test-mode/.webpack/webpack.dev.js | 8 + .../basic-test-mode/.webpack/webpack.prod.js | 50 ++ modes/basic-test-mode/LICENSE | 20 + modes/basic-test-mode/README.md | 5 + modes/basic-test-mode/babel.config.js | 1 + modes/basic-test-mode/package.json | 50 ++ modes/basic-test-mode/src/id.js | 5 + modes/basic-test-mode/src/index.js | 217 +++++++ modes/basic-test-mode/src/initToolGroups.js | 225 ++++++++ modes/basic-test-mode/src/toolbarButtons.js | 544 ++++++++++++++++++ modes/longitudinal/src/initToolGroups.js | 5 +- package.json | 3 +- platform/viewer/netlify.toml | 2 +- platform/viewer/public/config/default.js | 3 +- yarn.lock | 63 +- 18 files changed, 1172 insertions(+), 43 deletions(-) create mode 100644 modes/basic-test-mode/.webpack/webpack.dev.js create mode 100644 modes/basic-test-mode/.webpack/webpack.prod.js create mode 100644 modes/basic-test-mode/LICENSE create mode 100644 modes/basic-test-mode/README.md create mode 100644 modes/basic-test-mode/babel.config.js create mode 100644 modes/basic-test-mode/package.json create mode 100644 modes/basic-test-mode/src/id.js create mode 100644 modes/basic-test-mode/src/index.js create mode 100644 modes/basic-test-mode/src/initToolGroups.js create mode 100644 modes/basic-test-mode/src/toolbarButtons.js diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index ebd90b91d..e27ebca0f 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -45,7 +45,7 @@ "dependencies": { "@babel/runtime": "7.16.3", "classnames": "^2.2.6", - "@cornerstonejs/core": "^0.25.0", - "@cornerstonejs/tools": "^0.34.2" + "@cornerstonejs/core": "^0.27.1", + "@cornerstonejs/tools": "^0.36.3" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index d65c76703..28246bfd0 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -43,9 +43,9 @@ }, "dependencies": { "@babel/runtime": "7.17.9", - "@cornerstonejs/core": "^0.25.0", - "@cornerstonejs/streaming-image-volume-loader": "^0.8.2", - "@cornerstonejs/tools": "^0.34.2", + "@cornerstonejs/core": "^0.27.1", + "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", + "@cornerstonejs/tools": "^0.36.3", "@kitware/vtk.js": "25.9.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index ab4066bf7..0a4df87c2 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.2.6", - "@cornerstonejs/core": "^0.25.0", - "@cornerstonejs/tools": "^0.34.2", + "@cornerstonejs/core": "^0.27.1", + "@cornerstonejs/tools": "^0.36.3", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "dcmjs": "^0.28.3", "prop-types": "^15.6.2", diff --git a/modes/basic-test-mode/.webpack/webpack.dev.js b/modes/basic-test-mode/.webpack/webpack.dev.js new file mode 100644 index 000000000..db7c206b1 --- /dev/null +++ b/modes/basic-test-mode/.webpack/webpack.dev.js @@ -0,0 +1,8 @@ +const path = require('path'); +const webpackCommon = require('./../../../.webpack/webpack.base.js'); +const SRC_DIR = path.join(__dirname, '../src'); +const DIST_DIR = path.join(__dirname, '../dist'); + +module.exports = (env, argv) => { + return webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); +}; diff --git a/modes/basic-test-mode/.webpack/webpack.prod.js b/modes/basic-test-mode/.webpack/webpack.prod.js new file mode 100644 index 000000000..ecd887419 --- /dev/null +++ b/modes/basic-test-mode/.webpack/webpack.prod.js @@ -0,0 +1,50 @@ +const webpack = require('webpack'); +const { merge } = require('webpack-merge'); +const path = require('path'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); + +const pkg = require('./../package.json'); +const webpackCommon = require('./../../../.webpack/webpack.base.js'); + +const ROOT_DIR = path.join(__dirname, './../'); +const SRC_DIR = path.join(__dirname, '../src'); +const DIST_DIR = path.join(__dirname, '../dist'); + +const fileName = 'index.umd.js'; +module.exports = (env, argv) => { + const commonConfig = webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); + + return merge(commonConfig, { + stats: { + colors: true, + hash: true, + timings: true, + assets: true, + chunks: false, + chunkModules: false, + modules: false, + children: false, + warnings: true, + }, + optimization: { + minimize: true, + sideEffects: true, + }, + output: { + path: ROOT_DIR, + library: 'OHIFExtCornerstone', + libraryTarget: 'umd', + libraryExport: 'default', + filename: pkg.main, + }, + plugins: [ + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + new MiniCssExtractPlugin({ + filename: './dist/[name].css', + chunkFilename: './dist/[id].css', + }), + ], + }); +}; diff --git a/modes/basic-test-mode/LICENSE b/modes/basic-test-mode/LICENSE new file mode 100644 index 000000000..983c5ef34 --- /dev/null +++ b/modes/basic-test-mode/LICENSE @@ -0,0 +1,20 @@ +MIT License + +Copyright (c) 2023 Open Health Imaging Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/modes/basic-test-mode/README.md b/modes/basic-test-mode/README.md new file mode 100644 index 000000000..318df9164 --- /dev/null +++ b/modes/basic-test-mode/README.md @@ -0,0 +1,5 @@ +# Test mode + +This mode is used to test the basic functionality of the OHIF viewer +in a controlled environment. It is not intended to be used for +development or production. diff --git a/modes/basic-test-mode/babel.config.js b/modes/basic-test-mode/babel.config.js new file mode 100644 index 000000000..325ca2a8e --- /dev/null +++ b/modes/basic-test-mode/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config.js'); diff --git a/modes/basic-test-mode/package.json b/modes/basic-test-mode/package.json new file mode 100644 index 000000000..06dded827 --- /dev/null +++ b/modes/basic-test-mode/package.json @@ -0,0 +1,50 @@ +{ + "name": "mode-basic-test-mode", + "version": "0.0.1", + "description": "Basic mode for testing", + "author": "OHIF", + "license": "MIT", + "repository": "OHIF/Viewers", + "main": "dist/index.umd.js", + "module": "src/index.js", + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1.16.0" + }, + "files": [ + "dist", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "keywords": [ + "ohif-mode" + ], + "scripts": { + "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --debug --output-pathinfo", + "dev:cornerstone": "yarn run dev", + "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js", + "build:package": "yarn run build", + "start": "yarn run dev", + "test:unit": "jest --watchAll", + "test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests" + }, + "peerDependencies": { + "@ohif/core": "^3.0.0", + "@ohif/extension-default": "^3.0.0", + "@ohif/extension-cornerstone": "^3.0.0", + "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", + "@ohif/extension-dicom-pdf": "^3.0.1", + "@ohif/extension-dicom-video": "^3.0.1", + "@ohif/extension-measurement-tracking": "^3.0.0" + }, + "dependencies": { + "@babel/runtime": "7.16.3" + }, + "devDependencies": { + "webpack": "^5.50.0", + "webpack-merge": "^5.7.3" + } +} diff --git a/modes/basic-test-mode/src/id.js b/modes/basic-test-mode/src/id.js new file mode 100644 index 000000000..ebe5acd98 --- /dev/null +++ b/modes/basic-test-mode/src/id.js @@ -0,0 +1,5 @@ +import packageJson from '../package.json'; + +const id = packageJson.name; + +export { id }; diff --git a/modes/basic-test-mode/src/index.js b/modes/basic-test-mode/src/index.js new file mode 100644 index 000000000..cd96d37c3 --- /dev/null +++ b/modes/basic-test-mode/src/index.js @@ -0,0 +1,217 @@ +import { hotkeys } from '@ohif/core'; +import toolbarButtons from './toolbarButtons.js'; +import { id } from './id.js'; +import initToolGroups from './initToolGroups.js'; + +// Allow this mode by excluding non-imaging modalities such as SR, SEG +// Also, SM is not a simple imaging modalities, so exclude it. +const NON_IMAGE_MODALITIES = ['SM', 'ECG', 'SR', 'SEG']; + +const ohif = { + layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout', + sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack', + thumbnailList: '@ohif/extension-default.panelModule.seriesList', +}; + +const tracked = { + measurements: + '@ohif/extension-measurement-tracking.panelModule.trackedMeasurements', + thumbnailList: '@ohif/extension-measurement-tracking.panelModule.seriesList', + viewport: + '@ohif/extension-measurement-tracking.viewportModule.cornerstone-tracked', +}; + +const dicomsr = { + sopClassHandler: + '@ohif/extension-cornerstone-dicom-sr.sopClassHandlerModule.dicom-sr', + viewport: '@ohif/extension-cornerstone-dicom-sr.viewportModule.dicom-sr', +}; + +const dicomvideo = { + sopClassHandler: + '@ohif/extension-dicom-video.sopClassHandlerModule.dicom-video', + viewport: '@ohif/extension-dicom-video.viewportModule.dicom-video', +}; + +const dicompdf = { + sopClassHandler: '@ohif/extension-dicom-pdf.sopClassHandlerModule.dicom-pdf', + viewport: '@ohif/extension-dicom-pdf.viewportModule.dicom-pdf', +}; + +const dicomSeg = { + sopClassHandler: + '@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg', + viewport: '@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg', + panel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation', +}; + +const extensionDependencies = { + // Can derive the versions at least process.env.from npm_package_version + '@ohif/extension-default': '^3.0.0', + '@ohif/extension-cornerstone': '^3.0.0', + '@ohif/extension-measurement-tracking': '^3.0.0', + '@ohif/extension-cornerstone-dicom-sr': '^3.0.0', + '@ohif/extension-cornerstone-dicom-seg': '^3.0.0', + '@ohif/extension-dicom-pdf': '^3.0.1', + '@ohif/extension-dicom-video': '^3.0.1', +}; + +function modeFactory() { + return { + // TODO: We're using this as a route segment + // We should not be. + id, + routeName: 'basic-test', + displayName: 'Basic Test Mode', + /** + * Lifecycle hooks + */ + onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { + const { + MeasurementService, + ToolBarService, + ToolGroupService, + } = servicesManager.services; + + MeasurementService.clearMeasurements(); + + // Init Default and SR ToolGroups + initToolGroups(extensionManager, ToolGroupService, commandsManager); + + let unsubscribe; + + const activateTool = () => { + ToolBarService.recordInteraction({ + groupId: 'WindowLevel', + itemId: 'WindowLevel', + interactionType: 'tool', + commands: [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'WindowLevel', + }, + context: 'CORNERSTONE', + }, + ], + }); + + // We don't need to reset the active tool whenever a viewport is getting + // added to the toolGroup. + unsubscribe(); + }; + + // Since we only have one viewport for the basic cs3d mode and it has + // only one hanging protocol, we can just use the first viewport + ({ unsubscribe } = ToolGroupService.subscribe( + ToolGroupService.EVENTS.VIEWPORT_ADDED, + activateTool + )); + + ToolBarService.init(extensionManager); + ToolBarService.addButtons(toolbarButtons); + ToolBarService.createButtonSection('primary', [ + 'MeasurementTools', + 'Zoom', + 'WindowLevel', + 'Pan', + 'Capture', + 'Layout', + 'MPR', + 'Crosshairs', + 'MoreTools', + ]); + }, + onModeExit: ({ servicesManager }) => { + const { + ToolGroupService, + SyncGroupService, + ToolBarService, + SegmentationService, + CornerstoneViewportService, + } = servicesManager.services; + + ToolBarService.reset(); + ToolGroupService.destroy(); + SyncGroupService.destroy(); + SegmentationService.destroy(); + CornerstoneViewportService.destroy(); + }, + validationTags: { + study: [], + series: [], + }, + + isValidMode: function({ modalities }) { + const modalities_list = modalities.split('\\'); + + // Exclude non-image modalities + return !!modalities_list.filter( + modality => NON_IMAGE_MODALITIES.indexOf(modality) === -1 + ).length; + }, + routes: [ + { + path: 'basic-test', + /*init: ({ servicesManager, extensionManager }) => { + //defaultViewerRouteInit + },*/ + layoutTemplate: () => { + return { + id: ohif.layout, + props: { + leftPanels: [tracked.thumbnailList], + rightPanels: [dicomSeg.panel, tracked.measurements], + // rightPanelDefaultClosed: true, // optional prop to start with collapse panels + viewports: [ + { + namespace: tracked.viewport, + displaySetsToDisplay: [ohif.sopClassHandler], + }, + { + namespace: dicomsr.viewport, + displaySetsToDisplay: [dicomsr.sopClassHandler], + }, + { + namespace: dicomvideo.viewport, + displaySetsToDisplay: [dicomvideo.sopClassHandler], + }, + { + namespace: dicompdf.viewport, + displaySetsToDisplay: [dicompdf.sopClassHandler], + }, + { + namespace: dicomSeg.viewport, + displaySetsToDisplay: [dicomSeg.sopClassHandler], + }, + ], + }, + }; + }, + }, + ], + extensions: extensionDependencies, + // Default protocol gets self-registered by default in the init + hangingProtocol: 'default', + // Order is important in sop class handlers when two handlers both use + // the same sop class under different situations. In that case, the more + // general handler needs to come last. For this case, the dicomvideo must + // come first to remove video transfer syntax before ohif uses images + sopClassHandlers: [ + dicomvideo.sopClassHandler, + dicomSeg.sopClassHandler, + ohif.sopClassHandler, + dicompdf.sopClassHandler, + dicomsr.sopClassHandler, + ], + hotkeys: [...hotkeys.defaults.hotkeyBindings], + }; +} + +const mode = { + id, + modeFactory, + extensionDependencies, +}; + +export default mode; diff --git a/modes/basic-test-mode/src/initToolGroups.js b/modes/basic-test-mode/src/initToolGroups.js new file mode 100644 index 000000000..74057f146 --- /dev/null +++ b/modes/basic-test-mode/src/initToolGroups.js @@ -0,0 +1,225 @@ +function initDefaultToolGroup( + extensionManager, + ToolGroupService, + commandsManager, + toolGroupId +) { + const utilityModule = extensionManager.getModuleEntry( + '@ohif/extension-cornerstone.utilityModule.tools' + ); + + const { toolNames, Enums } = utilityModule.exports; + + const tools = { + active: [ + { + toolName: toolNames.WindowLevel, + bindings: [{ mouseButton: Enums.MouseBindings.Primary }], + }, + { + toolName: toolNames.Pan, + bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }], + }, + { + toolName: toolNames.Zoom, + bindings: [{ mouseButton: Enums.MouseBindings.Secondary }], + }, + { toolName: toolNames.StackScrollMouseWheel, bindings: [] }, + ], + passive: [ + { toolName: toolNames.Length }, + { toolName: toolNames.ArrowAnnotate }, + { toolName: toolNames.Bidirectional }, + { toolName: toolNames.DragProbe }, + { toolName: toolNames.EllipticalROI }, + { toolName: toolNames.RectangleROI }, + { toolName: toolNames.StackScroll }, + { toolName: toolNames.Angle }, + { toolName: toolNames.Magnify }, + { toolName: toolNames.SegmentationDisplay }, + ], + // enabled + // disabled + disabled: [{ toolName: toolNames.ReferenceLines }], + }; + + const toolsConfig = { + [toolNames.ArrowAnnotate]: { + getTextCallback: (callback, eventDetails) => + commandsManager.runCommand('arrowTextCallback', { + callback, + eventDetails, + }), + + changeTextCallback: (data, eventDetails, callback) => + commandsManager.runCommand('arrowTextCallback', { + callback, + data, + eventDetails, + }), + }, + }; + + ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); +} + +function initSRToolGroup(extensionManager, ToolGroupService, commandsManager) { + const SRUtilityModule = extensionManager.getModuleEntry( + '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools' + ); + + const CS3DUtilityModule = extensionManager.getModuleEntry( + '@ohif/extension-cornerstone.utilityModule.tools' + ); + + const { toolNames: SRToolNames } = SRUtilityModule.exports; + const { toolNames, Enums } = CS3DUtilityModule.exports; + const tools = { + active: [ + { + toolName: toolNames.WindowLevel, + bindings: [ + { + mouseButton: Enums.MouseBindings.Primary, + }, + ], + }, + { + toolName: toolNames.Pan, + bindings: [ + { + mouseButton: Enums.MouseBindings.Auxiliary, + }, + ], + }, + { + toolName: toolNames.Zoom, + bindings: [ + { + mouseButton: Enums.MouseBindings.Secondary, + }, + ], + }, + { + toolName: toolNames.StackScrollMouseWheel, + bindings: [], + }, + ], + passive: [ + { toolName: SRToolNames.SRLength }, + { toolName: SRToolNames.SRArrowAnnotate }, + { toolName: SRToolNames.SRBidirectional }, + { toolName: SRToolNames.SREllipticalROI }, + ], + enabled: [ + { + toolName: SRToolNames.DICOMSRDisplay, + bindings: [], + }, + ], + // disabled + }; + + const toolsConfig = { + [toolNames.ArrowAnnotate]: { + getTextCallback: (callback, eventDetails) => + commandsManager.runCommand('arrowTextCallback', { + callback, + eventDetails, + }), + + changeTextCallback: (data, eventDetails, callback) => + commandsManager.runCommand('arrowTextCallback', { + callback, + data, + eventDetails, + }), + }, + }; + + const toolGroupId = 'SRToolGroup'; + ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); +} + +function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { + const utilityModule = extensionManager.getModuleEntry( + '@ohif/extension-cornerstone.utilityModule.tools' + ); + + const { toolNames, Enums } = utilityModule.exports; + + const tools = { + active: [ + { + toolName: toolNames.WindowLevel, + bindings: [{ mouseButton: Enums.MouseBindings.Primary }], + }, + { + toolName: toolNames.Pan, + bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }], + }, + { + toolName: toolNames.Zoom, + bindings: [{ mouseButton: Enums.MouseBindings.Secondary }], + }, + { toolName: toolNames.StackScrollMouseWheel, bindings: [] }, + ], + passive: [ + { toolName: toolNames.Length }, + { toolName: toolNames.ArrowAnnotate }, + { toolName: toolNames.Bidirectional }, + { toolName: toolNames.DragProbe }, + { toolName: toolNames.EllipticalROI }, + { toolName: toolNames.RectangleROI }, + { toolName: toolNames.StackScroll }, + { toolName: toolNames.Angle }, + { toolName: toolNames.SegmentationDisplay }, + ], + disabled: [ + { toolName: toolNames.Crosshairs }, + { toolName: toolNames.ReferenceLines }, + ], + + // enabled + // disabled + }; + + const toolsConfig = { + [toolNames.Crosshairs]: { + viewportIndicators: false, + autoPan: { + enabled: false, + panSize: 10, + }, + }, + [toolNames.ArrowAnnotate]: { + getTextCallback: (callback, eventDetails) => + commandsManager.runCommand('arrowTextCallback', { + callback, + eventDetails, + }), + + changeTextCallback: (data, eventDetails, callback) => + commandsManager.runCommand('arrowTextCallback', { + callback, + data, + eventDetails, + }), + }, + }; + + ToolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); +} + +function initToolGroups(extensionManager, ToolGroupService, commandsManager) { + initDefaultToolGroup( + extensionManager, + ToolGroupService, + commandsManager, + 'default' + ); + initSRToolGroup(extensionManager, ToolGroupService, commandsManager); + initMPRToolGroup(extensionManager, ToolGroupService, commandsManager); +} + +export default initToolGroups; diff --git a/modes/basic-test-mode/src/toolbarButtons.js b/modes/basic-test-mode/src/toolbarButtons.js new file mode 100644 index 000000000..a8c8a8535 --- /dev/null +++ b/modes/basic-test-mode/src/toolbarButtons.js @@ -0,0 +1,544 @@ +// TODO: torn, can either bake this here; or have to create a whole new button type +// Only ways that you can pass in a custom React component for render :l +import { + // ExpandableToolbarButton, + // ListMenu, + WindowLevelMenuItem, +} from '@ohif/ui'; +import { defaults } from '@ohif/core'; + +const { windowLevelPresets } = defaults; +/** + * + * @param {*} type - 'tool' | 'action' | 'toggle' + * @param {*} id + * @param {*} icon + * @param {*} label + */ +function _createButton(type, id, icon, label, commands, tooltip, uiType) { + return { + id, + icon, + label, + type, + commands, + tooltip, + uiType, + }; +} + +function _createCommands(commandName, toolName, toolGroupIds) { + return toolGroupIds.map(toolGroupId => ({ + /* It's a command that is being run when the button is clicked. */ + commandName, + commandOptions: { + toolName, + toolGroupId, + }, + context: 'CORNERSTONE', + })); +} + +const _createActionButton = _createButton.bind(null, 'action'); +const _createToggleButton = _createButton.bind(null, 'toggle'); +const _createToolButton = _createButton.bind(null, 'tool'); + +/** + * + * @param {*} preset - preset number (from above import) + * @param {*} title + * @param {*} subtitle + */ +function _createWwwcPreset(preset, title, subtitle) { + return { + id: preset.toString(), + title, + subtitle, + type: 'action', + commands: [ + { + commandName: 'setWindowLevel', + commandOptions: { + ...windowLevelPresets[preset], + }, + context: 'CORNERSTONE', + }, + ], + }; +} + +const toolbarButtons = [ + // Measurement + { + id: 'MeasurementTools', + type: 'ohif.splitButton', + props: { + groupId: 'MeasurementTools', + isRadio: true, // ? + // Switch? + primary: _createToolButton( + 'Length', + 'tool-length', + 'Length', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Length', + }, + context: 'CORNERSTONE', + }, + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'SRLength', + toolGroupId: 'SRToolGroup', + }, + // we can use the setToolActive command for this from Cornerstone commandsModule + context: 'CORNERSTONE', + }, + ], + 'Length' + ), + secondary: { + icon: 'chevron-down', + label: '', + isActive: true, + tooltip: 'More Measure Tools', + }, + items: [ + _createToolButton( + 'Length', + 'tool-length', + 'Length', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Length', + }, + context: 'CORNERSTONE', + }, + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'SRLength', + toolGroupId: 'SRToolGroup', + }, + // we can use the setToolActive command for this from Cornerstone commandsModule + context: 'CORNERSTONE', + }, + ], + 'Length Tool' + ), + _createToolButton( + 'Bidirectional', + 'tool-bidirectional', + 'Bidirectional', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Bidirectional', + }, + context: 'CORNERSTONE', + }, + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'SRBidirectional', + toolGroupId: 'SRToolGroup', + }, + context: 'CORNERSTONE', + }, + ], + 'Bidirectional Tool' + ), + _createToolButton( + 'ArrowAnnotate', + 'tool-annotate', + 'Annotation', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'ArrowAnnotate', + }, + context: 'CORNERSTONE', + }, + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'SRArrowAnnotate', + toolGroupId: 'SRToolGroup', + }, + context: 'CORNERSTONE', + }, + ], + 'Arrow Annotate' + ), + _createToolButton( + 'EllipticalROI', + 'tool-elipse', + 'Ellipse', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'EllipticalROI', + }, + context: 'CORNERSTONE', + }, + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'SREllipticalROI', + toolGroupId: 'SRToolGroup', + }, + context: 'CORNERSTONE', + }, + ], + 'Ellipse Tool' + ), + ], + }, + }, + // Zoom.. + { + id: 'Zoom', + type: 'ohif.radioGroup', + props: { + type: 'tool', + icon: 'tool-zoom', + label: 'Zoom', + commands: [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Zoom', + }, + context: 'CORNERSTONE', + }, + ], + }, + }, + // Window Level + Presets... + { + id: 'WindowLevel', + type: 'ohif.splitButton', + props: { + groupId: 'WindowLevel', + primary: _createToolButton( + 'WindowLevel', + 'tool-window-level', + 'Window Level', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'WindowLevel', + }, + context: 'CORNERSTONE', + }, + ], + 'Window Level' + ), + secondary: { + icon: 'chevron-down', + label: 'W/L Manual', + isActive: true, + tooltip: 'W/L Presets', + }, + isAction: true, // ? + renderer: WindowLevelMenuItem, + items: [ + _createWwwcPreset(1, 'Soft tissue', '400 / 40'), + _createWwwcPreset(2, 'Lung', '1500 / -600'), + _createWwwcPreset(3, 'Liver', '150 / 90'), + _createWwwcPreset(4, 'Bone', '2500 / 480'), + _createWwwcPreset(5, 'Brain', '80 / 40'), + ], + }, + }, + // Pan... + { + id: 'Pan', + type: 'ohif.radioGroup', + props: { + type: 'tool', + icon: 'tool-move', + label: 'Pan', + commands: [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Pan', + }, + context: 'CORNERSTONE', + }, + ], + }, + }, + { + id: 'Capture', + type: 'ohif.action', + props: { + icon: 'tool-capture', + label: 'Capture', + type: 'action', + commands: [ + { + commandName: 'showDownloadViewportModal', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + }, + }, + { + id: 'Layout', + type: 'ohif.layoutSelector', + props: { + rows: 3, + columns: 3, + }, + }, + { + id: 'MPR', + type: 'ohif.action', + props: { + type: 'toggle', + icon: 'icon-mpr', + label: 'MPR', + commands: [ + { + commandName: 'toggleMPR', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + }, + }, + { + id: 'Crosshairs', + type: 'ohif.radioGroup', + props: { + type: 'tool', + icon: 'tool-crosshair', + label: 'Crosshairs', + commands: [ + { + commandName: 'setToolActive', + commandOptions: { + toolGroupId: 'mpr', + toolName: 'Crosshairs', + }, + context: 'CORNERSTONE', + }, + ], + }, + }, + // More... + { + id: 'MoreTools', + type: 'ohif.splitButton', + props: { + isRadio: true, // ? + groupId: 'MoreTools', + primary: _createActionButton( + 'Reset', + 'tool-reset', + 'Reset View', + [ + { + commandName: 'resetViewport', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + 'Reset' + ), + secondary: { + icon: 'chevron-down', + label: '', + isActive: true, + tooltip: 'More Tools', + }, + items: [ + _createActionButton( + 'Reset', + 'tool-reset', + 'Reset View', + [ + { + commandName: 'resetViewport', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + 'Reset' + ), + _createActionButton( + 'rotate-right', + 'tool-rotate-right', + 'Rotate Right', + [ + { + commandName: 'rotateViewportCW', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + 'Rotate +90' + ), + _createActionButton( + 'flip-horizontal', + 'tool-flip-horizontal', + 'Flip Horizontally', + [ + { + commandName: 'flipViewportHorizontal', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + 'Flip Horizontal' + ), + _createToggleButton('StackImageSync', 'link', 'Stack Image Sync', [ + { + commandName: 'toggleStackImageSync', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ]), + _createToggleButton( + 'ReferenceLines', + 'tool-referenceLines', // change this with the new icon + 'Reference Lines', + [ + { + commandName: 'toggleReferenceLines', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ] + ), + _createToolButton( + 'StackScroll', + 'tool-stack-scroll', + 'Stack Scroll', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'StackScroll', + }, + context: 'CORNERSTONE', + }, + ], + 'Stack Scroll' + ), + _createActionButton( + 'invert', + 'tool-invert', + 'Invert', + [ + { + commandName: 'invertViewport', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + 'Invert Colors' + ), + _createToolButton( + 'Probe', + 'tool-probe', + 'Probe', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'DragProbe', + }, + context: 'CORNERSTONE', + }, + ], + 'Probe' + ), + _createToggleButton( + 'cine', + 'tool-cine', + 'Cine', + [ + { + commandName: 'toggleCine', + context: 'CORNERSTONE', + }, + ], + 'Cine' + ), + _createToolButton( + 'Angle', + 'tool-angle', + 'Angle', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Angle', + }, + context: 'CORNERSTONE', + }, + ], + 'Angle' + ), + _createToolButton( + 'Magnify', + 'tool-magnify', + 'Magnify', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'Magnify', + }, + context: 'CORNERSTONE', + }, + ], + 'Magnify' + ), + _createToolButton( + 'Rectangle', + 'tool-rectangle', + 'Rectangle', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'RectangleROI', + }, + context: 'CORNERSTONE', + }, + ], + 'Rectangle' + ), + _createActionButton( + 'TagBrowser', + 'list-bullets', + 'Dicom Tag Browser', + [ + { + commandName: 'openDICOMTagViewer', + commandOptions: {}, + context: 'DEFAULT', + }, + ], + 'Dicom Tag Browser' + ), + ], + }, + }, +]; + +export default toolbarButtons; diff --git a/modes/longitudinal/src/initToolGroups.js b/modes/longitudinal/src/initToolGroups.js index 4f80e5cb6..74057f146 100644 --- a/modes/longitudinal/src/initToolGroups.js +++ b/modes/longitudinal/src/initToolGroups.js @@ -175,7 +175,10 @@ function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { { toolName: toolNames.Angle }, { toolName: toolNames.SegmentationDisplay }, ], - disabled: [{ toolName: toolNames.Crosshairs }], + disabled: [ + { toolName: toolNames.Crosshairs }, + { toolName: toolNames.ReferenceLines }, + ], // enabled // disabled diff --git a/package.json b/package.json index ac21bda71..633b8010d 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "devDependencies": { "@babel/core": "^7.17.8", "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-private-methods": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-arrow-functions": "^7.16.7", "@babel/plugin-transform-regenerator": "^7.16.7", @@ -93,6 +93,7 @@ "eslint-config-prettier": "^7.2.0", "eslint-config-react-app": "^6.0.0", "eslint-plugin-flowtype": "^7.0.0", + "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-node": "^11.1.0", diff --git a/platform/viewer/netlify.toml b/platform/viewer/netlify.toml index 65af33324..4f86618bb 100644 --- a/platform/viewer/netlify.toml +++ b/platform/viewer/netlify.toml @@ -12,7 +12,7 @@ base = "" build = "yarn run build:viewer:ci" publish = "dist" - ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../ui/ ../core/ ../i18n/" + ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../ui/ ../core/ ../i18n ../../extensions/ ../../modes" # NODE_VERSION in root `.nvmrc` takes priority diff --git a/platform/viewer/public/config/default.js b/platform/viewer/public/config/default.js index b81f34f31..bc3d7e04f 100644 --- a/platform/viewer/public/config/default.js +++ b/platform/viewer/public/config/default.js @@ -8,7 +8,8 @@ window.config = { // helloPage: '@ohif/extension-default.customizationModule.helloPage', }, showStudyList: true, - maxNumberOfWebWorkers: 4, + // some windows systems have issues with more than 3 web workers + maxNumberOfWebWorkers: 3, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, showLoadingIndicator: true, diff --git a/yarn.lock b/yarn.lock index 7a52ed704..9317f3d64 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2397,36 +2397,28 @@ resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-1.0.3.tgz#4c82642e8a6beb0d263f5a263723aec4225e5300" integrity sha512-PK+9N/JL7ZMGum6OKuReRGGhWXpWjRC9WnltQ6aEzRKEQPMg+3WFiQPZowKCCG1I4whv35DYFRi6wu7RyRaEMQ== -"@cornerstonejs/core@^0.25.0": - version "0.25.0" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.25.0.tgz#b392f5526e087c591d5d7ae68782a980aa3488f7" - integrity sha512-MtT3N1+c3apalilsQs8SWaBLD6A0TKo1NLRMY1gFVYfZ9BkyCPlvKxhtgAJthRbr8ME2NMEMs/VjV3/RrFyMVg== +"@cornerstonejs/core@^0.27.1": + version "0.27.1" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.27.1.tgz#1c56697cee8071eacfd9b1ee6f59c0fa6071accc" + integrity sha512-RyZicIallTZtr8i1BDkZ3U1JrwPZF7DYj9dj5uwE4WdhoPB+Rp77k5T7BH7gHsNWPyJjPgZwyq+tgV5sdD7zXg== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/core@^0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.25.1.tgz#7e5c70858018d99417b61965ac606754542f77ad" - integrity sha512-/Ve9qwGyRRK1uUCrefh9cVG3OIaaS9LQoTUk9YMUbsoWxd6JitXh31XVHjlvNtBYGMRVdz+uGPS2zSxq1vi4aA== +"@cornerstonejs/streaming-image-volume-loader@^0.11.2": + version "0.11.2" + resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.11.2.tgz#75a8502a381a402a28ca2022f4bd2733eb90427f" + integrity sha512-cFkAKjcIk6V2p3hZ2gpvTGMBmPNrDlg/Ku6CTCqz7D+U6pEQPvct2e42G1tG+Y4MtnYgGpC+oYAeu9Zt/C6XlQ== dependencies: - detect-gpu "^4.0.45" - lodash.clonedeep "4.5.0" + "@cornerstonejs/core" "^0.27.1" + cornerstone-wado-image-loader "^4.8.0" -"@cornerstonejs/streaming-image-volume-loader@^0.8.2": - version "0.8.2" - resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.8.2.tgz#058a591501e7fe7ebbe195695c92d047a288290f" - integrity sha512-50Ihn/tp5GJG7Uu0ZtrjSdS/JRfYIyeuRVAXZKvj2jbjuE2fqf+lgXULPgDKQhKiT7nBy6nb2PEpMRzTH/vlnA== +"@cornerstonejs/tools@^0.36.3": + version "0.36.3" + resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.36.3.tgz#22769dbcac57f6811f37376ac45ea1041286d4a0" + integrity sha512-popsYtA5Tvr9u7AoRFASwAr9vdxT3S697sb14clydczbbURAk/vHJw1K70P55BJ38jVx/yaGqfZWObFMWbqPLg== dependencies: - "@cornerstonejs/core" "^0.25.0" - cornerstone-wado-image-loader "^4.7.0" - -"@cornerstonejs/tools@^0.34.2": - version "0.34.2" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.34.2.tgz#645c97583066a872fd35188153cd21b26625473e" - integrity sha512-rbdQuSXGJ++ARS6eUAkBZi0tjmUKVtad0QPk0SZZXlDC2QAQRyIfq7n7oF2AaIR/0ngarTekUzuIy2nKiaOT+Q== - dependencies: - "@cornerstonejs/core" "^0.25.1" + "@cornerstonejs/core" "^0.27.1" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -9533,10 +9525,10 @@ cornerstone-wado-image-loader@^4.2.1: dicom-parser "^1.8.9" pako "^2.0.4" -cornerstone-wado-image-loader@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.7.0.tgz#0b36ea3e8b0f4554234e3fc6db6260e95afea545" - integrity sha512-tq8YhiS4eQ9FmmxSCuoFmntSPzM9rccPq3WkeHbfglAEwmQjRaZMOR9r0MQaT0se/A9hY37q3xRfe9inhK1Ezw== +cornerstone-wado-image-loader@^4.8.0: + version "4.8.0" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.8.0.tgz#64237a807227815bd117af839db4c05ab028d5f0" + integrity sha512-pvAAeH9tzL9PZydYOQqRSmIVoWiaxGDdgp0l/U8KafC0UNTiRyB6Sk0pTXTQqvGK2ZnwM4evjSDS9zyD3PxCmg== dependencies: "@babel/eslint-parser" "^7.19.1" "@cornerstonejs/codec-charls" "^0.1.1" @@ -10105,7 +10097,7 @@ cypress-file-upload@^3.5.3: cypress@^9.5.4: version "9.7.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" + resolved "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== dependencies: "@cypress/request" "^2.88.10" @@ -11336,6 +11328,13 @@ eslint-module-utils@^2.7.3: debug "^3.2.7" find-up "^2.1.0" +eslint-plugin-cypress@^2.12.1: + version "2.12.1" + resolved "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632" + integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA== + dependencies: + globals "^11.12.0" + eslint-plugin-es@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" @@ -11704,9 +11703,9 @@ event-stream@=3.3.4: through "~2.3.1" eventemitter2@^6.4.3: - version "6.4.5" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" - integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== + version "6.4.9" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== eventemitter3@^3.1.0: version "3.1.2" @@ -12933,7 +12932,7 @@ global@^4.3.0, global@^4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0, globals@^11.12.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== From 7a3527dd4ac7e2eeb80bd8fdde6ca6830cb70f1b Mon Sep 17 00:00:00 2001 From: wangxuan Date: Fri, 3 Feb 2023 23:28:05 +0800 Subject: [PATCH 16/47] fix(typo): whiteLabelling to whiteLabeling (#3139) * fix typo: whiteLabelling -> whiteLabeling * fix resolvejsonmodule error --- platform/viewer/public/config/default.js | 2 +- tsconfig.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/viewer/public/config/default.js b/platform/viewer/public/config/default.js index bc3d7e04f..d73f8aed5 100644 --- a/platform/viewer/public/config/default.js +++ b/platform/viewer/public/config/default.js @@ -1,6 +1,6 @@ window.config = { routerBasename: '/', - // whiteLabelling: {}, + // whiteLabeling: {}, extensions: [], modes: [], customizationService: { diff --git a/tsconfig.json b/tsconfig.json index 04989dbbd..447924561 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ // Ensure that Babel can safely transpile files in the TypeScript project "isolatedModules": false, "jsx": "react", + "resolveJsonModule": true, "esModuleInterop": true, "sourceMap": true, "declaration": true, From 980b44f18c0edee50da6f276e96a78f2749f4f5c Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 3 Feb 2023 16:56:27 -0500 Subject: [PATCH 17/47] fix(misc): Update the data source name, provide a /datasources example customization for debug (#3036) * fix(misc):Update the data source name, provide a /datasources Update the imports for a few things to match, to avoid 2 versions Fix the datasources name pr:Make the data source selector configurable * Updated data source selector page as requested * PR fixes --- extensions/cornerstone-dicom-sr/package.json | 2 +- extensions/cornerstone/package.json | 2 +- .../default/src/Panels/DataSourceSelector.tsx | 56 +++++++++++++++++++ extensions/default/src/ViewerLayout/index.tsx | 2 +- .../default/src/getCustomizationModule.tsx | 15 +++++ extensions/dicom-pdf/package.json | 2 +- extensions/dicom-video/package.json | 2 +- extensions/measurement-tracking/package.json | 2 +- extensions/tmtv/package.json | 2 +- platform/docs/package.json | 2 +- platform/ui/package.json | 2 +- platform/viewer/package.json | 13 +++-- platform/viewer/public/config/multiple.js | 6 +- .../viewer/src/routes/DataSourceWrapper.tsx | 4 +- .../viewer/src/routes/WorkList/WorkList.tsx | 4 +- platform/viewer/src/routes/index.tsx | 1 + yarn.lock | 32 +++++------ 17 files changed, 110 insertions(+), 39 deletions(-) create mode 100644 extensions/default/src/Panels/DataSourceSelector.tsx diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index e27ebca0f..886f16648 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -44,7 +44,7 @@ }, "dependencies": { "@babel/runtime": "7.16.3", - "classnames": "^2.2.6", + "classnames": "^2.3.2", "@cornerstonejs/core": "^0.27.1", "@cornerstonejs/tools": "^0.36.3" } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 28246bfd0..414159a3d 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -39,7 +39,7 @@ "react-resize-detector": "^6.7.6" }, "devDependencies": { - "lodash": "4.17.21" + "lodash": "^4.17.21" }, "dependencies": { "@babel/runtime": "7.17.9", diff --git a/extensions/default/src/Panels/DataSourceSelector.tsx b/extensions/default/src/Panels/DataSourceSelector.tsx new file mode 100644 index 000000000..decb24ad8 --- /dev/null +++ b/extensions/default/src/Panels/DataSourceSelector.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import classnames from 'classnames'; +import { useNavigate } from 'react-router-dom'; +import { useAppConfig } from '@state'; + +import { Button } from '@ohif/ui'; + +function DataSourceSelector() { + const [appConfig] = useAppConfig(); + const navigate = useNavigate(); + + // This is frowned upon, but the raw config is needed here to provide + // the selector + const dsConfigs = appConfig.dataSources; + + return ( +
+
+
+ OHIF +
+ {dsConfigs + .filter( + it => + it.sourceName !== 'dicomjson' && + it.sourceName !== 'dicomlocal' + ) + .map(ds => ( +
+

{ds.friendlyName}

+ +
+
+ ))} +
+
+
+
+ ); +} + +export default DataSourceSelector; diff --git a/extensions/default/src/ViewerLayout/index.tsx b/extensions/default/src/ViewerLayout/index.tsx index 422bcc8e8..1ee954b55 100644 --- a/extensions/default/src/ViewerLayout/index.tsx +++ b/extensions/default/src/ViewerLayout/index.tsx @@ -44,7 +44,7 @@ function ViewerLayout({ const search = dataSourceIdx === -1 ? undefined - : `datasourcename=${pathname.substring(dataSourceIdx + 1)}`; + : `datasources=${pathname.substring(dataSourceIdx + 1)}`; navigate({ pathname: '/', search, diff --git a/extensions/default/src/getCustomizationModule.tsx b/extensions/default/src/getCustomizationModule.tsx index be0c6ac88..3ffd78a3e 100644 --- a/extensions/default/src/getCustomizationModule.tsx +++ b/extensions/default/src/getCustomizationModule.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import DataSourceSelector from './Panels/DataSourceSelector'; /** * @@ -25,5 +26,19 @@ export default function getCustomizationModule() { ], }, }, + + // Example customization to list a set of datasources + { + name: 'datasources', + value: { + id: 'customRoutes', + routes: [ + { + path: '/datasources', + children: DataSourceSelector, + }, + ], + }, + }, ]; } diff --git a/extensions/dicom-pdf/package.json b/extensions/dicom-pdf/package.json index fa956c19d..03fe4c66a 100644 --- a/extensions/dicom-pdf/package.json +++ b/extensions/dicom-pdf/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/extensions/dicom-video/package.json b/extensions/dicom-video/package.json index a9b0a6526..4d86d4251 100644 --- a/extensions/dicom-video/package.json +++ b/extensions/dicom-video/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 0a4df87c2..0e9f1349b 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -31,7 +31,7 @@ }, "peerDependencies": { "@ohif/core": "^3.0.0", - "classnames": "^2.2.6", + "classnames": "^2.3.2", "@cornerstonejs/core": "^0.27.1", "@cornerstonejs/tools": "^0.36.3", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", diff --git a/extensions/tmtv/package.json b/extensions/tmtv/package.json index aa2e4faef..9bb5c9479 100644 --- a/extensions/tmtv/package.json +++ b/extensions/tmtv/package.json @@ -38,6 +38,6 @@ }, "dependencies": { "@babel/runtime": "7.7.6", - "classnames": "^2.2.6" + "classnames": "^2.3.2" } } diff --git a/platform/docs/package.json b/platform/docs/package.json index 39b205074..15828d0d7 100644 --- a/platform/docs/package.json +++ b/platform/docs/package.json @@ -37,7 +37,7 @@ "@docusaurus/plugin-google-gtag": "2.0.1", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", - "classnames": "^2.3.1", + "classnames": "^2.3.2", "clsx": "^1.1.1", "file-loader": "^6.2.0", "plugin-image-zoom": "ataft/plugin-image-zoom", diff --git a/platform/ui/package.json b/platform/ui/package.json index 9c5ff526f..9f11e280f 100644 --- a/platform/ui/package.json +++ b/platform/ui/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "browser-detect": "^0.2.28", - "classnames": "2.2.6", + "classnames": "^2.3.2", "lodash.debounce": "4.0.8", "moment": "2.24.0", "mousetrap": "^1.6.5", diff --git a/platform/viewer/package.json b/platform/viewer/package.json index c4666356f..48ef595d9 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -49,8 +49,8 @@ "@babel/runtime": "7.16.3", "@ohif/core": "^3.0.0", "@ohif/extension-cornerstone": "^3.0.0", - "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-cornerstone-dicom-seg": "^3.0.0", + "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-default": "^3.0.0", "@ohif/extension-dicom-pdf": "^3.0.1", "@ohif/extension-dicom-video": "^3.0.1", @@ -58,12 +58,13 @@ "@ohif/mode-basic-dev-mode": "^3.0.0", "@ohif/mode-longitudinal": "^3.0.0", "@ohif/ui": "^2.0.0", - "@types/react": "^16.0.0", - "classnames": "^2.2.6", + "@types/react": "^17.0.38", + "classnames": "^2.3.2", "config-point": "^0.4.8", "core-js": "^3.16.1", "cornerstone-math": "^0.1.9", "cornerstone-wado-image-loader": "^4.2.1", + "dayjs": "^1.11.6", "dcmjs": "^0.28.3", "detect-gpu": "^4.0.16", "dicom-parser": "^1.8.9", @@ -73,7 +74,6 @@ "i18next": "^17.0.3", "i18next-browser-languagedetector": "^3.0.1", "lodash.isequal": "4.5.0", - "moment": "^2.24.0", "oidc-client": "1.11.5", "prop-types": "^15.7.2", "query-string": "^6.12.1", @@ -86,12 +86,13 @@ "react-router-dom": "^6.3.0" }, "devDependencies": { + "@babel/plugin-proposal-private-methods": "^7.18.6", "@percy/cypress": "^3.1.1", "cypress": "^9.5.4", "cypress-file-upload": "^3.5.3", - "identity-obj-proxy": "3.0.x", - "lodash": "4.17.15", "glob": "^8.0.3", + "identity-obj-proxy": "3.0.x", + "lodash": "^4.17.21", "tailwindcss": "3.2.4", "terser-webpack-plugin": "^5.1.1", "webpack": "^5.50.0", diff --git a/platform/viewer/public/config/multiple.js b/platform/viewer/public/config/multiple.js index 5ff3b2344..3738f4a4a 100644 --- a/platform/viewer/public/config/multiple.js +++ b/platform/viewer/public/config/multiple.js @@ -1,7 +1,7 @@ window.config = { routerBasename: '/', customizationService: [ - '@ohif/extension-default.customizationModule.helloPage', + '@ohif/extension-default.customizationModule.datasources', { id: 'class:StudyBrowser', true: 'black', @@ -43,8 +43,8 @@ window.config = { sourceName: 'aws', configuration: { name: 'aws', - qidoRoot: 'https://viewer.flexview.ai/dicomweb', - wadoRoot: 'https://viewer.flexview.ai/dicomweb', + qidoRoot: 'https://dd32w2rfebxel.cloudfront.net/dicomweb', + wadoRoot: 'https://dd32w2rfebxel.cloudfront.net/dicomweb', qidoSupportsIncludeField: false, supportsReject: false, supportsStow: false, diff --git a/platform/viewer/src/routes/DataSourceWrapper.tsx b/platform/viewer/src/routes/DataSourceWrapper.tsx index 951e5dba8..51fa05d95 100644 --- a/platform/viewer/src/routes/DataSourceWrapper.tsx +++ b/platform/viewer/src/routes/DataSourceWrapper.tsx @@ -20,9 +20,7 @@ function DataSourceWrapper(props) { const location = useLocation(); // TODO - get the variable from the props all the time... - let dataSourceName = new URLSearchParams(location.search).get( - 'datasourcename' - ); + let dataSourceName = new URLSearchParams(location.search).get('datasources'); const dataPath = dataSourceName ? `/${dataSourceName}` : ''; if (!dataSourceName && window.config.defaultDataSourceName) { diff --git a/platform/viewer/src/routes/WorkList/WorkList.tsx b/platform/viewer/src/routes/WorkList/WorkList.tsx index 005282ad8..9ce0cfdb0 100644 --- a/platform/viewer/src/routes/WorkList/WorkList.tsx +++ b/platform/viewer/src/routes/WorkList/WorkList.tsx @@ -498,7 +498,7 @@ const defaultFilterValues = { sortDirection: 'none', pageNumber: 1, resultsPerPage: 25, - datasourcename: '', + datasources: '', }; function _tryParseInt(str, defaultValue) { @@ -530,7 +530,7 @@ function _getQueryFilterValues(query) { sortDirection: query.get('sortDirection'), pageNumber: _tryParseInt(query.get('pageNumber'), undefined), resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined), - datasourcename: query.get('datasourcename'), + datasources: query.get('datasources'), }; // Delete null/undefined keys diff --git a/platform/viewer/src/routes/index.tsx b/platform/viewer/src/routes/index.tsx index e93a70e89..aee16bd2a 100644 --- a/platform/viewer/src/routes/index.tsx +++ b/platform/viewer/src/routes/index.tsx @@ -74,6 +74,7 @@ const createRoutes = ({ {...route.props} route={route} servicesManager={servicesManager} + extensionManager={extensionManager} hotkeysManager={hotkeysManager} /> diff --git a/yarn.lock b/yarn.lock index 9317f3d64..7ed8045a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6283,10 +6283,10 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^16.0.0": - version "16.14.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.26.tgz#82540a240ba7207ebe87d9579051bc19c9ef7605" - integrity sha512-c/5CYyciOO4XdFcNhZW1O2woVx86k4T+DO2RorHZL7EhitkNQgSD/SgpdZJAUJa/qjVgOmTM44gHkAdZSXeQuQ== +"@types/react@^17.0.38": + version "17.0.53" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab" + integrity sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -8791,16 +8791,16 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: +classnames@^2.2.5: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + clean-css@^4.2.3: version "4.2.4" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" @@ -10245,6 +10245,11 @@ dayjs@^1.10.4: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.2.tgz#fa0f5223ef0d6724b3d8327134890cfe3d72fbe5" integrity sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw== +dayjs@^1.11.6: + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + dcmjs@^0.28.3: version "0.28.3" resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.28.3.tgz#a756ab4b02363d12545c9830b8f97b5141723727" @@ -15811,12 +15816,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@4.17.21, lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: +lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== From 8edd4ec054772334136de8f63e75fc841edd0b56 Mon Sep 17 00:00:00 2001 From: Leonardo Campos Date: Sun, 5 Feb 2023 23:03:19 -0300 Subject: [PATCH 18/47] fix(SR): fix Length and Bidirectional tools (#3143) --- .docker/Nginx-Orthanc/docker-compose.yml | 10 ++++- .../src/getSopClassHandlerModule.js | 2 +- .../src/tools/DICOMSRDisplayTool.ts | 42 ++++++++----------- .../promptHydrateStructuredReport.js | 2 +- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/.docker/Nginx-Orthanc/docker-compose.yml b/.docker/Nginx-Orthanc/docker-compose.yml index 62cf8df25..b12382f39 100644 --- a/.docker/Nginx-Orthanc/docker-compose.yml +++ b/.docker/Nginx-Orthanc/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.5' services: orthanc: - image: jodogne/orthanc-plugins:1.5.6 + image: jodogne/orthanc-plugins:1.5.7 hostname: orthanc volumes: # Config @@ -13,3 +13,11 @@ services: - '4242:4242' # DICOM - '8042:8042' # Web restart: unless-stopped + nginx: + image: nginx:latest + volumes: + - ./config/nginx.conf:/etc/nginx/nginx.conf + ports: + - '80:80' #ngnix proxy + depends_on: + - orthanc diff --git a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js index 96d6e5de2..f92f56460 100644 --- a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js @@ -597,7 +597,7 @@ function _getLabelFromMeasuredValueSequence( const { CodeValue } = MeasurementUnitsCodeSequence; const formatedNumericValue = NumericValue - ? Number(NumericValue).toFixed(1) + ? Number(NumericValue).toFixed(2) : ''; return { diff --git a/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts b/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts index 536c8681a..6aa7a1347 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts @@ -121,28 +121,23 @@ export default class DICOMSRDisplayTool extends AnnotationTool { const renderableDataForGraphicType = renderableData[GraphicType]; let renderMethod; - let renderTextBox; let canvasCoordinatesAdapter; switch (GraphicType) { case SCOORD_TYPES.POINT: renderMethod = this.renderPoint; - renderTextBox = this.renderTextBox; break; case SCOORD_TYPES.MULTIPOINT: renderMethod = this.renderMultipoint; - renderTextBox = this.renderTextBox; break; case SCOORD_TYPES.POLYLINE: renderMethod = this.renderPolyLine; break; case SCOORD_TYPES.CIRCLE: renderMethod = this.renderEllipse; - renderTextBox = this.renderTextBox; break; case SCOORD_TYPES.ELLIPSE: renderMethod = this.renderEllipse; - renderTextBox = this.renderTextBox; canvasCoordinatesAdapter = utilities.math.ellipse.getCanvasEllipseCorners; break; @@ -159,18 +154,15 @@ export default class DICOMSRDisplayTool extends AnnotationTool { options ); - if (typeof renderTextBox === 'function') { - renderTextBox.call( - this, - svgDrawingHelper, - viewport, - canvasCoordinates, - canvasCoordinatesAdapter, - annotation, - styleSpecifier, - options - ); - } + this.renderTextBox( + svgDrawingHelper, + viewport, + canvasCoordinates, + canvasCoordinatesAdapter, + annotation, + styleSpecifier, + options + ); }); } }; @@ -187,11 +179,11 @@ export default class DICOMSRDisplayTool extends AnnotationTool { color: options.color, width: options.lineWidth, }; - let canvasCoordinates; + let allCanvasCoordinates = []; renderableData.map((data, index) => { - canvasCoordinates = data.map(p => viewport.worldToCanvas(p)); - + const canvasCoordinates = data.map(p => viewport.worldToCanvas(p)); const lineUID = `${index}`; + if (canvasCoordinates.length === 2) { drawing.drawLine( svgDrawingHelper, @@ -210,9 +202,11 @@ export default class DICOMSRDisplayTool extends AnnotationTool { drawingOptions ); } + + allCanvasCoordinates = allCanvasCoordinates.concat(canvasCoordinates); }); - return canvasCoordinates; // used for drawing textBox + return allCanvasCoordinates; // used for drawing textBox } renderMultipoint( @@ -405,9 +399,9 @@ export default class DICOMSRDisplayTool extends AnnotationTool { } const SHORT_HAND_MAP = { - 'Short Axis': 'W ', - 'Long Axis': 'L ', - AREA: 'Area ', + 'Short Axis': 'W: ', + 'Long Axis': 'L: ', + AREA: 'Area: ', Length: '', CORNERSTONEFREETEXT: '', }; diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js index 37d7961e2..7ae57bd49 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js @@ -1,4 +1,4 @@ -import hydrateStructuredReport from '@ohif/extension-cornerstone-dicom-sr'; +import { hydrateStructuredReport } from '@ohif/extension-cornerstone-dicom-sr'; const RESPONSE = { NO_NEVER: -1, From 0e1a58da79cf0f14e71a3bcfcb726eed6ba2dfb4 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Mon, 6 Feb 2023 17:05:13 -0500 Subject: [PATCH 19/47] fix: Use @cornerstonejs/adapters (#3116) Also update the sort series to be consistent, using a single version of the series sort, and fix an issue with longitudinal mode export. --- .../src/commandsModule.js | 3 +- .../src/getSopClassHandlerModule.js | 4 +- .../utils/getFilteredCornerstoneToolState.ts | 2 +- .../src/utils/hydrateStructuredReport.js | 4 +- .../src/utils/isRehydratable.js | 4 +- .../src/utils/isToolSupported.js | 4 +- .../viewports/OHIFCornerstoneSRViewport.tsx | 13 ++++- extensions/cornerstone/package.json | 1 + .../default/src/DicomLocalDataSource/index.js | 38 +++++++++++---- .../default/src/DicomWebDataSource/qido.js | 3 ++ .../wado/retrieveMetadataLoaderAsync.js | 5 +- .../default/src/Panels/PanelStudyBrowser.tsx | 4 +- platform/core/src/utils/index.js | 15 +++++- platform/core/src/utils/index.test.js | 5 ++ .../core/src/utils/isLowPriorityModality.ts | 0 platform/core/src/utils/sortBySeriesDate.js | 17 ------- .../core/src/utils/sortStudy.ts | 47 +++++++++++++++---- yarn.lock | 25 ++++++++++ 18 files changed, 141 insertions(+), 53 deletions(-) rename extensions/default/src/DicomWebDataSource/utils/isLowPriorityModality.js => platform/core/src/utils/isLowPriorityModality.ts (100%) delete mode 100644 platform/core/src/utils/sortBySeriesDate.js rename extensions/default/src/DicomWebDataSource/utils/sortStudy.js => platform/core/src/utils/sortStudy.ts (70%) diff --git a/extensions/cornerstone-dicom-sr/src/commandsModule.js b/extensions/cornerstone-dicom-sr/src/commandsModule.js index d9c18cfc1..00431a3c8 100644 --- a/extensions/cornerstone-dicom-sr/src/commandsModule.js +++ b/extensions/cornerstone-dicom-sr/src/commandsModule.js @@ -2,10 +2,11 @@ import { metaData, utilities } from '@cornerstonejs/core'; import OHIF from '@ohif/core'; import dcmjs from 'dcmjs'; +import { adaptersSR } from '@cornerstonejs/adapters'; import getFilteredCornerstoneToolState from './utils/getFilteredCornerstoneToolState'; -const { MeasurementReport } = dcmjs.adapters.Cornerstone3D; +const { MeasurementReport } = adaptersSR.Cornerstone3D; const { log } = OHIF; /** diff --git a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js index f92f56460..7d40d11b6 100644 --- a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js @@ -2,9 +2,9 @@ import { SOPClassHandlerName, SOPClassHandlerId } from './id'; import { utils, classes } from '@ohif/core'; import addMeasurement from './utils/addMeasurement'; import isRehydratable from './utils/isRehydratable'; -import { adapters } from 'dcmjs'; +import { adaptersSR } from '@cornerstonejs/adapters'; -const { CodeScheme: Cornerstone3DCodeScheme } = adapters.Cornerstone3D; +const { CodeScheme: Cornerstone3DCodeScheme } = adaptersSR.Cornerstone3D; const { ImageSet, MetadataProvider: metadataProvider } = classes; // TODO -> diff --git a/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts b/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts index 6dcecdd88..1ef1842a5 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts +++ b/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts @@ -39,7 +39,7 @@ function getFilteredCornerstoneToolState( const findingSites = []; // NOTE -> We use the CORNERSTONEJS coding schemeDesignator which we have - // defined in the dcmjs adapters + // defined in the @cornerstonejs/adapters if (measurementDataI.label) { if (additionalFindingTypes.includes(toolType)) { finding = { diff --git a/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js index 0ca978028..758e666a0 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js +++ b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js @@ -1,10 +1,10 @@ import { utilities, metaData } from '@cornerstonejs/core'; import OHIF, { DicomMetadataStore } from '@ohif/core'; import getLabelFromDCMJSImportedToolData from './getLabelFromDCMJSImportedToolData'; -import { adapters } from 'dcmjs'; +import { adaptersSR } from '@cornerstonejs/adapters'; const { guid } = OHIF.utils; -const { MeasurementReport, CORNERSTONE_3D_TAG } = adapters.Cornerstone3D; +const { MeasurementReport, CORNERSTONE_3D_TAG } = adaptersSR.Cornerstone3D; const CORNERSTONE_3D_TOOLS_SOURCE_NAME = 'Cornerstone3DTools'; const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1'; diff --git a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js index 44af7d276..b167e0a8e 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js +++ b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js @@ -1,6 +1,6 @@ -import { adapters } from 'dcmjs'; +import { adaptersSR } from '@cornerstonejs/adapters'; -const cornerstoneAdapters = adapters.Cornerstone3D; +const cornerstoneAdapters = adaptersSR.Cornerstone3D; const supportedLegacyCornerstoneTags = ['cornerstoneTools@^4.0.0']; const CORNERSTONE_3D_TAG = cornerstoneAdapters.CORNERSTONE_3D_TAG; diff --git a/extensions/cornerstone-dicom-sr/src/utils/isToolSupported.js b/extensions/cornerstone-dicom-sr/src/utils/isToolSupported.js index 4e455c0d6..cdbb2e725 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/isToolSupported.js +++ b/extensions/cornerstone-dicom-sr/src/utils/isToolSupported.js @@ -1,4 +1,4 @@ -import dcmjs from 'dcmjs'; +import { adaptersSR } from '@cornerstonejs/adapters'; /** * Checks if dcmjs has support to determined tool @@ -7,7 +7,7 @@ import dcmjs from 'dcmjs'; * @returns {boolean} */ const isToolSupported = toolName => { - const adapter = dcmjs.adapters.Cornerstone3D; + const adapter = adaptersSR.Cornerstone3D; return !!adapter[toolName]; }; diff --git a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx index bff4dba42..e17d7dee7 100644 --- a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx @@ -81,14 +81,23 @@ function OHIFCornerstoneSRViewport(props) { sendTrackedMeasurementsEvent = tracked?.[1]; } if (!sendTrackedMeasurementsEvent) { - // if no panels from measurement-tracking extension is used, this code will trun + // if no panels from measurement-tracking extension is used, this code will run trackedMeasurements = null; sendTrackedMeasurementsEvent = (eventName, { displaySetInstanceUID }) => { MeasurementService.clearMeasurements(); - hydrateStructuredReport( + const { SeriesInstanceUIDs } = hydrateStructuredReport( { servicesManager, extensionManager }, displaySetInstanceUID ); + const displaySets = DisplaySetService.getDisplaySetsForSeries( + SeriesInstanceUIDs[0] + ); + if (displaySets.length) { + viewportGridService.setDisplaySetsForViewport({ + viewportIndex: activeViewportIndex, + displaySetInstanceUIDs: [displaySets[0].displaySetInstanceUID], + }); + } }; } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 414159a3d..651efa898 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -43,6 +43,7 @@ }, "dependencies": { "@babel/runtime": "7.17.9", + "@cornerstonejs/adapters": "^0.2.1", "@cornerstonejs/core": "^0.27.1", "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", "@cornerstonejs/tools": "^0.36.3", diff --git a/extensions/default/src/DicomLocalDataSource/index.js b/extensions/default/src/DicomLocalDataSource/index.js index 1e29238bf..fc6f366bb 100644 --- a/extensions/default/src/DicomLocalDataSource/index.js +++ b/extensions/default/src/DicomLocalDataSource/index.js @@ -5,19 +5,37 @@ import dcmjs from 'dcmjs'; const metadataProvider = OHIF.classes.MetadataProvider; const { EVENTS } = DicomMetadataStore; -// Sorting SR modalities to be at the end of series list -function customSort(seriesA, seriesB) { - const modalityA = seriesA.instances[0].Modality; - const modalityB = seriesB.instances[0].Modality; +const END_MODALITIES = { + SR: true, + SEG: true, + DOC: true, +}; - if (modalityA === 'SR') { - return +1; +const compareValue = (v1, v2, def = 0) => { + if (v1 === v2) return def; + if (v1 < v2) return -1; + return 1; +}; + +// Sorting SR modalities to be at the end of series list +const customSort = (seriesA, seriesB) => { + const instanceA = seriesA.instances[0]; + const instanceB = seriesB.instances[0]; + const modalityA = instanceA.Modality; + const modalityB = instanceB.Modality; + + const isEndA = END_MODALITIES[modalityA]; + const isEndB = END_MODALITIES[modalityB]; + + if (isEndA && isEndB) { + // Compare by series date + return compareValue(instanceA.SeriesNumber, instanceB.SeriesNumber); } - if (modalityB === 'SR') { - return -1; + if (!isEndA && !isEndB) { + return compareValue(instanceB.SeriesNumber, instanceA.SeriesNumber); } - return 0; -} + return isEndA ? -1 : 1; +}; function createDicomLocalApi(dicomLocalConfig) { const { name } = dicomLocalConfig; diff --git a/extensions/default/src/DicomWebDataSource/qido.js b/extensions/default/src/DicomWebDataSource/qido.js index 2ac8b1fcf..ce372cd5f 100644 --- a/extensions/default/src/DicomWebDataSource/qido.js +++ b/extensions/default/src/DicomWebDataSource/qido.js @@ -23,6 +23,7 @@ * | offset | {number} | */ import { DICOMWeb, utils } from '@ohif/core'; +import { sortStudySeries } from '@ohif/core/src/utils/sortStudy'; const { getString, getName, getModalities } = DICOMWeb; @@ -90,6 +91,8 @@ export function processSeriesResults(qidoSeries) { ); } + sortStudySeries(series); + return series; } diff --git a/extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoaderAsync.js b/extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoaderAsync.js index 3d7294edf..096c3c818 100644 --- a/extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoaderAsync.js +++ b/extensions/default/src/DicomWebDataSource/wado/retrieveMetadataLoaderAsync.js @@ -1,5 +1,8 @@ import dcmjs from 'dcmjs'; -import { sortStudySeries, sortingCriteria } from '../utils/sortStudy'; +import { + sortStudySeries, + sortingCriteria, +} from '@ohif/core/src/utils/sortStudy'; import RetrieveMetadataLoader from './retrieveMetadataLoader'; /** diff --git a/extensions/default/src/Panels/PanelStudyBrowser.tsx b/extensions/default/src/Panels/PanelStudyBrowser.tsx index 49f84f751..0da795044 100644 --- a/extensions/default/src/Panels/PanelStudyBrowser.tsx +++ b/extensions/default/src/Panels/PanelStudyBrowser.tsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { StudyBrowser, useImageViewer, useViewportGrid } from '@ohif/ui'; import { utils } from '@ohif/core'; -const { formatDate } = utils; +const { sortStudyInstances, formatDate } = utils; /** * @@ -139,6 +139,7 @@ function PanelStudyBrowser({ currentDisplaySets, thumbnailImageSrcMap ); + sortStudyInstances(mappedDisplaySets); setDisplaySets(mappedDisplaySets); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -300,6 +301,7 @@ function _mapDisplaySets(displaySets, thumbnailImageSrcMap) { seriesNumber: ds.SeriesNumber, modality: ds.Modality, seriesDate: ds.SeriesDate, + seriesTime: ds.SeriesTime, numInstances: ds.numImageFrames, StudyInstanceUID: ds.StudyInstanceUID, componentType, diff --git a/platform/core/src/utils/index.js b/platform/core/src/utils/index.js index cc8124158..d428a6648 100644 --- a/platform/core/src/utils/index.js +++ b/platform/core/src/utils/index.js @@ -2,7 +2,6 @@ import ObjectPath from './objectPath'; import absoluteUrl from './absoluteUrl'; import guid from './guid'; import sortBy from './sortBy.js'; -import sortBySeriesDate from './sortBySeriesDate.js'; import writeScript from './writeScript.js'; import b64toBlob from './b64toBlob.js'; //import loadAndCacheDerivedDisplaySets from './loadAndCacheDerivedDisplaySets.js'; @@ -26,6 +25,13 @@ import debounce from './debounce'; import roundNumber from './roundNumber'; import downloadCSVReport from './downloadCSVReport'; import isEqualWithin from './isEqualWithin'; +import { + sortStudy, + sortStudySeries, + sortStudyInstances, + sortingCriteria, + seriesSortCriteria, +} from './sortStudy'; // Commented out unused functionality. // Need to implement new mechanism for derived displaySets using the displaySetManager. @@ -35,7 +41,12 @@ const utils = { ObjectPath, absoluteUrl, sortBy, - sortBySeriesDate, + sortBySeriesDate: sortStudySeries, + sortStudy, + sortStudySeries, + sortStudyInstances, + sortingCriteria, + seriesSortCriteria, writeScript, formatDate, formatPN, diff --git a/platform/core/src/utils/index.test.js b/platform/core/src/utils/index.test.js index 5fdcab61f..9b83f8db5 100644 --- a/platform/core/src/utils/index.test.js +++ b/platform/core/src/utils/index.test.js @@ -6,8 +6,13 @@ describe('Top level exports', () => { 'guid', 'ObjectPath', 'absoluteUrl', + 'seriesSortCriteria', 'sortBy', + 'sortStudy', 'sortBySeriesDate', + 'sortStudyInstances', + 'sortStudySeries', + 'sortingCriteria', 'isLowPriorityModality', 'writeScript', 'debounce', diff --git a/extensions/default/src/DicomWebDataSource/utils/isLowPriorityModality.js b/platform/core/src/utils/isLowPriorityModality.ts similarity index 100% rename from extensions/default/src/DicomWebDataSource/utils/isLowPriorityModality.js rename to platform/core/src/utils/isLowPriorityModality.ts diff --git a/platform/core/src/utils/sortBySeriesDate.js b/platform/core/src/utils/sortBySeriesDate.js deleted file mode 100644 index 1a694934c..000000000 --- a/platform/core/src/utils/sortBySeriesDate.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Sorting function - * Sorts an array by seriesDate and seriesNumber if equal - */ -const sortBySeriesDate = array => - array.sort((a, b) => { - if (a.seriesNumber !== b.seriesNumber) { - return a.seriesNumber - b.seriesNumber; - } - - const seriesDateA = Date.parse(a.seriesDate); - const seriesDateB = Date.parse(b.seriesDate); - - return seriesDateA - seriesDateB; - }); - -export default sortBySeriesDate; diff --git a/extensions/default/src/DicomWebDataSource/utils/sortStudy.js b/platform/core/src/utils/sortStudy.ts similarity index 70% rename from extensions/default/src/DicomWebDataSource/utils/sortStudy.js rename to platform/core/src/utils/sortStudy.ts index 467d6fcc7..a39c8a16a 100644 --- a/extensions/default/src/DicomWebDataSource/utils/sortStudy.js +++ b/platform/core/src/utils/sortStudy.ts @@ -1,5 +1,22 @@ import isLowPriorityModality from './isLowPriorityModality'; +const compareSeriesDateTime = (a, b) => { + const seriesDateA = Date.parse( + `${a.seriesDate ?? a.SeriesDate} ${a.seriesTime ?? a.SeriesTime}` + ); + const seriesDateB = Date.parse( + `${a.seriesDate ?? a.SeriesDate} ${a.seriesTime ?? a.SeriesTime}` + ); + return seriesDateA - seriesDateB; +}; + +const defaultSeriesSort = (a, b) => { + const seriesNumberA = a.SeriesNumber ?? a.seriesNumber; + const seriesNumberB = b.SeriesNumber ?? b.seriesNumber; + if (seriesNumberA === seriesNumberB) return compareSeriesDateTime(a, b); + return seriesNumberA - seriesNumberB; +}; + /** * Series sorting criteria: series considered low priority are moved to the end * of the list and series number is used to break ties @@ -7,20 +24,24 @@ import isLowPriorityModality from './isLowPriorityModality'; * @param {Object} secondSeries */ function seriesInfoSortingCriteria(firstSeries, secondSeries) { - const aLowPriority = isLowPriorityModality(firstSeries.Modality); - const bLowPriority = isLowPriorityModality(secondSeries.Modality); - if (!aLowPriority && bLowPriority) { + const aLowPriority = isLowPriorityModality( + firstSeries.Modality ?? firstSeries.modality + ); + const bLowPriority = isLowPriorityModality( + secondSeries.Modality ?? secondSeries.modality + ); + + if (aLowPriority) { + return bLowPriority ? defaultSeriesSort(secondSeries, firstSeries) : 1; + } else if (bLowPriority) { return -1; } - if (aLowPriority && !bLowPriority) { - return 1; - } - return firstSeries.SeriesNumber - secondSeries.SeriesNumber; + return defaultSeriesSort(firstSeries, secondSeries); } const seriesSortCriteria = { - default: (a, b) => a.SeriesNumber - b.SeriesNumber, + default: seriesInfoSortingCriteria, seriesInfoSortingCriteria, }; @@ -44,7 +65,7 @@ const sortingCriteria = { const sortStudySeries = ( series, seriesSortingCriteria = seriesSortCriteria.default, - sortFunction + sortFunction = null ) => { if (typeof sortFunction === 'function') return sortFunction(series); else return series.sort(seriesSortingCriteria); @@ -96,4 +117,10 @@ export default function sortStudy( return study; } -export { sortStudy, sortStudySeries, sortStudyInstances, sortingCriteria }; +export { + sortStudy, + sortStudySeries, + sortStudyInstances, + sortingCriteria, + seriesSortCriteria, +}; diff --git a/yarn.lock b/yarn.lock index 7ed8045a8..f91f3a726 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2372,6 +2372,19 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@cornerstonejs/adapters@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-0.2.1.tgz#c1de369d82e05a4ff58dce25dc441e870b0ef991" + integrity sha512-5oHHwpSR9sjRh3GBsHh3sBF8kiWbgAdNiVf1nWc7dc3PtemWl+BiPr7xLE0/9aRe0BCRkgyU/u/Yqgk7I/pZLg== + dependencies: + "@babel/runtime-corejs2" "^7.17.8" + dcmjs "^0.29.4" + gl-matrix "^3.4.3" + lodash.clonedeep "^4.5.0" + loglevelnext "^3.0.1" + ndarray "^1.0.19" + pako "^2.0.4" + "@cornerstonejs/calculate-suv@^1.0.3": version "1.0.3" resolved "https://registry.npmjs.org/@cornerstonejs/calculate-suv/-/calculate-suv-1.0.3.tgz#6d99a72032c0f90cebf44dc6f0b12a5f1102e884" @@ -10262,6 +10275,18 @@ dcmjs@^0.28.3: ndarray "^1.0.19" pako "^2.0.4" +dcmjs@^0.29.4: + version "0.29.4" + resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.29.4.tgz#3fb13945611979f756bc91b3f199fd87b4eabdb4" + integrity sha512-PzD6C4oB7v/AVTIPbkS6D6hjgVcSW7+T+DsxFpkD1xcEgU4qjGM16WGEHH3ZAPDBF0Xgm2d9FXUu/lXZIyfmow== + dependencies: + "@babel/runtime-corejs2" "^7.17.8" + gl-matrix "^3.1.0" + lodash.clonedeep "^4.5.0" + loglevelnext "^3.0.1" + ndarray "^1.0.19" + pako "^2.0.4" + debug-log@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" From 7f799b8e3d4f652f088d58d0974c185e927a0fdd Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Tue, 7 Feb 2023 14:31:55 -0500 Subject: [PATCH 20/47] fix: Create typed services and allow lower case access to agree with naming conventions (#3141) * fix: Add typed services * fix: Typed services - PR changes * remaining of the cineService and toolbarService renaming --------- Co-authored-by: Alireza --- .../src/Viewport/OHIFCornerstoneViewport.tsx | 4 +-- .../Overlays/ViewportImageScrollbar.tsx | 13 ++++++--- .../src/Viewport/Overlays/ViewportOverlay.tsx | 12 ++++---- extensions/cornerstone/src/commandsModule.ts | 15 +++++----- extensions/cornerstone/src/index.tsx | 4 +-- extensions/cornerstone/src/init.tsx | 4 +-- extensions/cornerstone/src/initCineService.ts | 4 +-- .../CornerstoneViewportService.ts | 3 +- .../src/utils/mpr/toggleMPRHangingProtocol.ts | 4 +-- extensions/default/src/Toolbar/Toolbar.tsx | 18 ++++++------ .../src/Toolbar/ToolbarLayoutSelector.tsx | 10 +++++-- extensions/default/src/getToolbarModule.tsx | 2 -- extensions/tmtv/src/Panels/PanelPetSUV.tsx | 14 +++++----- modes/basic-dev-mode/src/index.js | 16 +++++------ modes/basic-test-mode/src/index.js | 14 +++++----- modes/longitudinal/src/index.js | 14 +++++----- modes/tmtv/src/index.js | 14 +++++----- .../core/src/classes/CommandsManager.test.js | 2 +- ...{CommandsManager.js => CommandsManager.ts} | 0 .../core/src/classes/HotkeysManager.test.js | 10 +++---- platform/core/src/classes/index.js | 11 ++------ platform/core/src/index.test.js | 5 ++-- platform/core/src/index.ts | 15 ++++++---- .../{CineService.js => CineService.ts} | 13 ++++++--- .../CineService/{index.js => index.ts} | 0 .../CustomizationService.ts | 10 ++++++- .../services/CustomizationService/index.ts | 10 +------ ...MetadataStore.js => DicomMetadataStore.ts} | 0 .../DicomMetadataStore/{index.js => index.ts} | 0 ...playSetService.js => DisplaySetService.ts} | 21 ++++++++------ .../src/services/DisplaySetService/index.js | 8 ------ .../src/services/DisplaySetService/index.ts | 3 ++ .../HangingProtocolService.ts | 8 ++++++ .../services/HangingProtocolService/index.js | 8 ------ .../services/HangingProtocolService/index.ts | 3 ++ .../MeasurementService.test.js | 4 +-- ...rementService.js => MeasurementService.ts} | 22 +++++++-------- .../src/services/MeasurementService/index.js | 8 ------ .../src/services/MeasurementService/index.ts | 3 ++ .../core/src/services/ServicesManager.test.js | 8 +++--- ...{ServicesManager.js => ServicesManager.ts} | 7 +++++ .../{ToolBarService.ts => ToolbarService.ts} | 18 ++++++++---- .../core/src/services/ToolBarService/index.ts | 9 ++---- .../src/services/UIDialogService/index.js | 12 +++++--- .../core/src/services/UIModalService/index.js | 12 +++++--- .../services/UINotificationService/index.js | 11 +++++--- .../services/UIViewportDialogService/index.js | 8 ++++-- .../UserAuthenticationService.js | 11 +++++--- .../ViewportGridService.ts | 28 +++++++++---------- .../{index.js => index.ts} | 0 .../core/src/services/{index.js => index.ts} | 15 +++++----- platform/core/src/types/Services.ts | 27 ++++++++++++++++++ platform/core/src/types/index.ts | 4 +++ .../components/SplitButton/SplitButton.tsx | 8 +++--- platform/viewer/src/appInit.js | 28 +++++++++---------- 55 files changed, 302 insertions(+), 233 deletions(-) rename platform/core/src/classes/{CommandsManager.js => CommandsManager.ts} (100%) rename platform/core/src/services/CineService/{CineService.js => CineService.ts} (90%) rename platform/core/src/services/CineService/{index.js => index.ts} (100%) rename platform/core/src/services/DicomMetadataStore/{DicomMetadataStore.js => DicomMetadataStore.ts} (100%) rename platform/core/src/services/DicomMetadataStore/{index.js => index.ts} (100%) rename platform/core/src/services/DisplaySetService/{DisplaySetService.js => DisplaySetService.ts} (94%) delete mode 100644 platform/core/src/services/DisplaySetService/index.js create mode 100644 platform/core/src/services/DisplaySetService/index.ts delete mode 100644 platform/core/src/services/HangingProtocolService/index.js create mode 100644 platform/core/src/services/HangingProtocolService/index.ts rename platform/core/src/services/MeasurementService/{MeasurementService.js => MeasurementService.ts} (98%) delete mode 100644 platform/core/src/services/MeasurementService/index.js create mode 100644 platform/core/src/services/MeasurementService/index.ts rename platform/core/src/services/{ServicesManager.js => ServicesManager.ts} (87%) rename platform/core/src/services/ToolBarService/{ToolBarService.ts => ToolbarService.ts} (94%) rename platform/core/src/services/ViewportGridService/{index.js => index.ts} (100%) rename platform/core/src/services/{index.js => index.ts} (80%) create mode 100644 platform/core/src/types/Services.ts diff --git a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx index 9b6981318..4525585fb 100644 --- a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx +++ b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx @@ -118,7 +118,7 @@ const OHIFCornerstoneViewport = React.memo(props => { const { MeasurementService, DisplaySetService, - ToolBarService, + toolbarService, ToolGroupService, SyncGroupService, CornerstoneViewportService, @@ -355,7 +355,7 @@ const OHIFCornerstoneViewport = React.memo(props => { >
{ const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( @@ -25,12 +29,12 @@ function CornerstoneImageScrollbar({ viewportId ); - const { isCineEnabled } = CineService.getState(); + const { isCineEnabled } = cineService.getState(); if (isCineEnabled) { // on image scrollbar change, stop the CINE if it is playing - CineService.stopClip(element); - CineService.setCine({ id: viewportIndex, isPlaying: false }); + cineService.stopClip(element); + cineService.setCine({ id: viewportIndex, isPlaying: false }); } csToolsUtils.jumpToSlice(viewport.element, { @@ -144,6 +148,7 @@ CornerstoneImageScrollbar.propTypes = { scrollbarHeight: PropTypes.string, imageSliceData: PropTypes.object.isRequired, setImageSliceData: PropTypes.func.isRequired, + servicesManager: PropTypes.object.isRequired, }; export default CornerstoneImageScrollbar; diff --git a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx index b3dfab944..8314b269f 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx @@ -3,6 +3,7 @@ import { vec3 } from 'gl-matrix'; import PropTypes from 'prop-types'; import { metaData, Enums, utilities } from '@cornerstonejs/core'; import { ViewportOverlay } from '@ohif/ui'; +import { ServicesManager } from '@ohif/core'; const EPSILON = 1e-4; @@ -15,7 +16,7 @@ function CornerstoneViewportOverlay({ }) { const { CornerstoneViewportService, - ToolBarService, + toolbarService, } = servicesManager.services; const [voi, setVOI] = useState({ windowCenter: null, windowWidth: null }); const [scale, setScale] = useState(1); @@ -25,19 +26,19 @@ function CornerstoneViewportOverlay({ * Initial toolbar state */ useEffect(() => { - setActiveTools(ToolBarService.getActiveTools()); + setActiveTools(toolbarService.getActiveTools()); }, []); useEffect(() => { let isMounted = true; - const { unsubscribe } = ToolBarService.subscribe( - ToolBarService.EVENTS.TOOL_BAR_STATE_MODIFIED, + const { unsubscribe } = toolbarService.subscribe( + toolbarService.EVENTS.TOOL_BAR_STATE_MODIFIED, () => { if (!isMounted) { return; } - setActiveTools(ToolBarService.getActiveTools()); + setActiveTools(toolbarService.getActiveTools()); } ); @@ -287,6 +288,7 @@ CornerstoneViewportOverlay.propTypes = { viewportData: PropTypes.object, imageIndex: PropTypes.number, viewportIndex: PropTypes.number, + servicesManager: ServicesManager, }; export default CornerstoneViewportOverlay; diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index 585f1bf74..ed19e95b4 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -10,6 +10,7 @@ import { utilities as cstUtils, ReferenceLinesTool, } from '@cornerstonejs/tools'; +import { ServicesManager } from '@ohif/core'; import { getEnabledElement as OHIFgetEnabledElement } from './state'; import CornerstoneViewportDownloadForm from './utils/CornerstoneViewportDownloadForm'; @@ -22,13 +23,13 @@ const commandsModule = ({ servicesManager }) => { const { ViewportGridService, ToolGroupService, - CineService, - ToolBarService, + cineService, + toolbarService, UIDialogService, CornerstoneViewportService, HangingProtocolService, UINotificationService, - } = servicesManager.services; + } = (servicesManager as ServicesManager).services; function _getActiveViewportEnabledElement() { const { activeViewportIndex } = ViewportGridService.getState(); @@ -92,11 +93,11 @@ const commandsModule = ({ servicesManager }) => { }, toggleCine: () => { const { viewports } = ViewportGridService.getState(); - const { isCineEnabled } = CineService.getState(); - CineService.setIsCineEnabled(!isCineEnabled); - ToolBarService.setButton('Cine', { props: { isActive: !isCineEnabled } }); + const { isCineEnabled } = cineService.getState(); + cineService.setIsCineEnabled(!isCineEnabled); + toolbarService.setButton('Cine', { props: { isActive: !isCineEnabled } }); viewports.forEach((_, index) => - CineService.setCine({ id: index, isPlaying: false }) + cineService.setCine({ id: index, isPlaying: false }) ); }, setWindowLevel({ window, level, toolGroupId }) { diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx index ebddeb64c..27a524311 100644 --- a/extensions/cornerstone/src/index.tsx +++ b/extensions/cornerstone/src/index.tsx @@ -87,12 +87,12 @@ const cornerstoneExtension = { // const onNewImageHandler = jumpData => { // commandsManager.runCommand('jumpToImage', jumpData); // }; - const { ToolBarService } = servicesManager.services; + const { ToolbarService } = servicesManager.services; return ( diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index 9070875c1..b50a5c78c 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -68,7 +68,7 @@ export default async function init({ UIDialogService, UIModalService, UINotificationService, - CineService, + cineService, CornerstoneViewportService, HangingProtocolService, ToolGroupService, @@ -137,7 +137,7 @@ export default async function init({ CornerstoneViewportService ); - initCineService(CineService); + initCineService(cineService); const _getDefaultPosition = event => ({ x: (event && event.currentPoints.client[0]) || 0, diff --git a/extensions/cornerstone/src/initCineService.ts b/extensions/cornerstone/src/initCineService.ts index 75c1fdbb6..09d6d6296 100644 --- a/extensions/cornerstone/src/initCineService.ts +++ b/extensions/cornerstone/src/initCineService.ts @@ -1,6 +1,6 @@ import { utilities } from '@cornerstonejs/tools'; -function initCineService(CineService) { +function initCineService(cineService) { const playClip = (element, playClipOptions) => { return utilities.cine.playClip(element, playClipOptions); }; @@ -9,7 +9,7 @@ function initCineService(CineService) { return utilities.cine.stopClip(element); }; - CineService.setServiceImplementation({ playClip, stopClip }); + cineService.setServiceImplementation({ playClip, stopClip }); } export default initCineService; diff --git a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts index 227ff111f..6cac23218 100644 --- a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts @@ -760,7 +760,8 @@ class CornerstoneViewportService implements IViewportService { export default function ExtendedCornerstoneViewportService(serviceManager) { return { - name: 'CornerstoneViewportService', + name: 'cornerstoneViewportService', + altName: 'CornerstoneViewportService', create: ({ configuration = {} }) => { return new CornerstoneViewportService(serviceManager); }, diff --git a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts index dfe18f5f4..a72061ed6 100644 --- a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts +++ b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts @@ -42,7 +42,7 @@ export default function toggleMPRHangingProtocol({ UINotificationService, HangingProtocolService, ViewportGridService, - ToolBarService, + toolbarService, } = servicesManager.services; // TODO Introduce a service to persist the state of the current hanging protocol/app. @@ -185,7 +185,7 @@ export default function toggleMPRHangingProtocol({ } }); - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'WindowLevel', itemId: 'WindowLevel', interactionType: 'tool', diff --git a/extensions/default/src/Toolbar/Toolbar.tsx b/extensions/default/src/Toolbar/Toolbar.tsx index 68a064754..e2f22a2d2 100644 --- a/extensions/default/src/Toolbar/Toolbar.tsx +++ b/extensions/default/src/Toolbar/Toolbar.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; import classnames from 'classnames'; export default function Toolbar({ servicesManager }) { - const { ToolBarService } = servicesManager.services; + const { toolbarService } = servicesManager.services; const [toolbarButtons, setToolbarButtons] = useState([]); const [buttonState, setButtonState] = useState({ primaryToolId: '', @@ -12,20 +12,20 @@ export default function Toolbar({ servicesManager }) { // Could track buttons and state separately...? useEffect(() => { - const { unsubscribe: unsub1 } = ToolBarService.subscribe( - ToolBarService.EVENTS.TOOL_BAR_MODIFIED, - () => setToolbarButtons(ToolBarService.getButtonSection('primary')) + const { unsubscribe: unsub1 } = toolbarService.subscribe( + toolbarService.EVENTS.TOOL_BAR_MODIFIED, + () => setToolbarButtons(toolbarService.getButtonSection('primary')) ); - const { unsubscribe: unsub2 } = ToolBarService.subscribe( - ToolBarService.EVENTS.TOOL_BAR_STATE_MODIFIED, - () => setButtonState({ ...ToolBarService.state }) + const { unsubscribe: unsub2 } = toolbarService.subscribe( + toolbarService.EVENTS.TOOL_BAR_STATE_MODIFIED, + () => setButtonState({ ...toolbarService.state }) ); return () => { unsub1(); unsub2(); }; - }, [ToolBarService]); + }, [toolbarService]); return ( <> @@ -55,7 +55,7 @@ export default function Toolbar({ servicesManager }) { {...componentProps} bState={buttonState} isActive={isActive} - onInteraction={args => ToolBarService.recordInteraction(args)} + onInteraction={args => toolbarService.recordInteraction(args)} servicesManager={servicesManager} />
diff --git a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx index 56efcda34..789096966 100644 --- a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx +++ b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx @@ -6,6 +6,8 @@ import { useViewportGrid, } from '@ohif/ui'; +import { ServicesManager } from '@ohif/core'; + function LayoutSelector({ rows, columns, @@ -17,7 +19,10 @@ function LayoutSelector({ const [disableSelector, setDisableSelector] = useState(false); const [viewportGridState, viewportGridService] = useViewportGrid(); - const { HangingProtocolService, ToolBarService } = servicesManager.services; + const { + HangingProtocolService, + toolbarService, + } = (servicesManager as ServicesManager).services; const closeOnOutsideClick = () => { if (isOpen) { @@ -61,7 +66,7 @@ function LayoutSelector({ // TODO Here the layout change will amount to a change of hanging protocol as specified by the extension for this layout selector tool // followed by the change of the grid itself. if (HangingProtocolService.getActiveProtocol().protocol.id === 'mpr') { - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'MPR', itemId: 'MPR', interactionType: 'toggle', @@ -104,6 +109,7 @@ LayoutSelector.propTypes = { rows: PropTypes.number, columns: PropTypes.number, onLayoutChange: PropTypes.func, + servicesManager: PropTypes.instanceOf(ServicesManager), }; LayoutSelector.defaultProps = { diff --git a/extensions/default/src/getToolbarModule.tsx b/extensions/default/src/getToolbarModule.tsx index f29744d60..60dd94ddc 100644 --- a/extensions/default/src/getToolbarModule.tsx +++ b/extensions/default/src/getToolbarModule.tsx @@ -4,8 +4,6 @@ import ToolbarLayoutSelector from './Toolbar/ToolbarLayoutSelector.tsx'; import ToolbarSplitButton from './Toolbar/ToolbarSplitButton.tsx'; export default function getToolbarModule({ commandsManager, servicesManager }) { - const toolbarService = servicesManager.services.ToolBarService; - return [ { name: 'ohif.divider', diff --git a/extensions/tmtv/src/Panels/PanelPetSUV.tsx b/extensions/tmtv/src/Panels/PanelPetSUV.tsx index 2f1e969f7..b07476f1f 100644 --- a/extensions/tmtv/src/Panels/PanelPetSUV.tsx +++ b/extensions/tmtv/src/Panels/PanelPetSUV.tsx @@ -1,7 +1,7 @@ -import React, { useEffect, useState, useCallback } from 'react'; +import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { Input, Button } from '@ohif/ui'; -import { DicomMetadataStore } from '@ohif/core'; +import { DicomMetadataStore, ServicesManager } from '@ohif/core'; import { useTranslation } from 'react-i18next'; const DEFAULT_MEATADATA = { @@ -27,9 +27,9 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { const { DisplaySetService, ToolGroupService, - ToolBarService, + toolbarService, HangingProtocolService, - } = servicesManager.services; + } = (servicesManager as ServicesManager).services; const [metadata, setMetadata] = useState(DEFAULT_MEATADATA); const [ptDisplaySet, setPtDisplaySet] = useState(null); @@ -126,9 +126,9 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { }); }); - ToolBarService.state.toggles['Crosshairs'] = false; - ToolBarService._broadcastEvent( - ToolBarService.EVENTS.TOOL_BAR_STATE_MODIFIED + toolbarService.state.toggles['Crosshairs'] = false; + toolbarService._broadcastEvent( + toolbarService.EVENTS.TOOL_BAR_STATE_MODIFIED ); // metadata should be dcmjs naturalized diff --git a/modes/basic-dev-mode/src/index.js b/modes/basic-dev-mode/src/index.js index e8b602442..45778fde6 100644 --- a/modes/basic-dev-mode/src/index.js +++ b/modes/basic-dev-mode/src/index.js @@ -1,5 +1,5 @@ import toolbarButtons from './toolbarButtons.js'; -import { hotkeys } from '@ohif/core'; +import { hotkeys, ServicesManager } from '@ohif/core'; import { id } from './id'; const configs = { @@ -53,7 +53,7 @@ function modeFactory({ modeConfiguration }) { * Lifecycle hooks */ onModeEnter: ({ servicesManager, extensionManager }) => { - const { ToolBarService, ToolGroupService } = servicesManager.services; + const { toolbarService, ToolGroupService } = servicesManager.services; const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); @@ -94,7 +94,7 @@ function modeFactory({ modeConfiguration }) { let unsubscribe; const activateTool = () => { - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'WindowLevel', itemId: 'WindowLevel', interactionType: 'tool', @@ -121,9 +121,9 @@ function modeFactory({ modeConfiguration }) { activateTool )); - ToolBarService.init(extensionManager); - ToolBarService.addButtons(toolbarButtons); - ToolBarService.createButtonSection('primary', [ + toolbarService.init(extensionManager); + toolbarService.addButtons(toolbarButtons); + toolbarService.createButtonSection('primary', [ 'MeasurementTools', 'Zoom', 'WindowLevel', @@ -136,10 +136,10 @@ function modeFactory({ modeConfiguration }) { const { ToolGroupService, MeasurementService, - ToolBarService, + toolbarService, } = servicesManager.services; - ToolBarService.reset(); + toolbarService.reset(); ToolGroupService.destroy(); }, validationTags: { diff --git a/modes/basic-test-mode/src/index.js b/modes/basic-test-mode/src/index.js index cd96d37c3..b932ff574 100644 --- a/modes/basic-test-mode/src/index.js +++ b/modes/basic-test-mode/src/index.js @@ -69,7 +69,7 @@ function modeFactory() { onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { MeasurementService, - ToolBarService, + toolbarService, ToolGroupService, } = servicesManager.services; @@ -81,7 +81,7 @@ function modeFactory() { let unsubscribe; const activateTool = () => { - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'WindowLevel', itemId: 'WindowLevel', interactionType: 'tool', @@ -108,9 +108,9 @@ function modeFactory() { activateTool )); - ToolBarService.init(extensionManager); - ToolBarService.addButtons(toolbarButtons); - ToolBarService.createButtonSection('primary', [ + toolbarService.init(extensionManager); + toolbarService.addButtons(toolbarButtons); + toolbarService.createButtonSection('primary', [ 'MeasurementTools', 'Zoom', 'WindowLevel', @@ -126,12 +126,12 @@ function modeFactory() { const { ToolGroupService, SyncGroupService, - ToolBarService, + toolbarService, SegmentationService, CornerstoneViewportService, } = servicesManager.services; - ToolBarService.reset(); + toolbarService.reset(); ToolGroupService.destroy(); SyncGroupService.destroy(); SegmentationService.destroy(); diff --git a/modes/longitudinal/src/index.js b/modes/longitudinal/src/index.js index 28c7b5814..eb31d1600 100644 --- a/modes/longitudinal/src/index.js +++ b/modes/longitudinal/src/index.js @@ -69,7 +69,7 @@ function modeFactory() { onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { MeasurementService, - ToolBarService, + toolbarService, ToolGroupService, } = servicesManager.services; @@ -81,7 +81,7 @@ function modeFactory() { let unsubscribe; const activateTool = () => { - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'WindowLevel', itemId: 'WindowLevel', interactionType: 'tool', @@ -108,9 +108,9 @@ function modeFactory() { activateTool )); - ToolBarService.init(extensionManager); - ToolBarService.addButtons(toolbarButtons); - ToolBarService.createButtonSection('primary', [ + toolbarService.init(extensionManager); + toolbarService.addButtons(toolbarButtons); + toolbarService.createButtonSection('primary', [ 'MeasurementTools', 'Zoom', 'WindowLevel', @@ -126,12 +126,12 @@ function modeFactory() { const { ToolGroupService, SyncGroupService, - ToolBarService, + toolbarService, SegmentationService, CornerstoneViewportService, } = servicesManager.services; - ToolBarService.reset(); + toolbarService.reset(); ToolGroupService.destroy(); SyncGroupService.destroy(); SegmentationService.destroy(); diff --git a/modes/tmtv/src/index.js b/modes/tmtv/src/index.js index cb927d6e2..e6bb5ab9a 100644 --- a/modes/tmtv/src/index.js +++ b/modes/tmtv/src/index.js @@ -42,7 +42,7 @@ function modeFactory({ modeConfiguration }) { */ onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { - ToolBarService, + toolbarService, ToolGroupService, HangingProtocolService, DisplaySetService, @@ -58,7 +58,7 @@ function modeFactory({ modeConfiguration }) { initToolGroups(toolNames, Enums, ToolGroupService, commandsManager); const setWindowLevelActive = () => { - ToolBarService.recordInteraction({ + toolbarService.recordInteraction({ groupId: 'WindowLevel', itemId: 'WindowLevel', interactionType: 'tool', @@ -120,9 +120,9 @@ function modeFactory({ modeConfiguration }) { ); unsubscriptions.push(unsubscribe); - ToolBarService.init(extensionManager); - ToolBarService.addButtons(toolbarButtons); - ToolBarService.createButtonSection('primary', [ + toolbarService.init(extensionManager); + toolbarService.addButtons(toolbarButtons); + toolbarService.createButtonSection('primary', [ 'MeasurementTools', 'Zoom', 'WindowLevel', @@ -136,13 +136,13 @@ function modeFactory({ modeConfiguration }) { const { ToolGroupService, SyncGroupService, - ToolBarService, + toolbarService, SegmentationService, CornerstoneViewportService, } = servicesManager.services; unsubscriptions.forEach(unsubscribe => unsubscribe()); - ToolBarService.reset(); + toolbarService.reset(); ToolGroupService.destroy(); SyncGroupService.destroy(); SegmentationService.destroy(); diff --git a/platform/core/src/classes/CommandsManager.test.js b/platform/core/src/classes/CommandsManager.test.js index 69d190e31..7b9fee3ea 100644 --- a/platform/core/src/classes/CommandsManager.test.js +++ b/platform/core/src/classes/CommandsManager.test.js @@ -1,4 +1,4 @@ -import CommandsManager from './CommandsManager.js'; +import CommandsManager from './CommandsManager'; import log from './../log.js'; jest.mock('./../log.js'); diff --git a/platform/core/src/classes/CommandsManager.js b/platform/core/src/classes/CommandsManager.ts similarity index 100% rename from platform/core/src/classes/CommandsManager.js rename to platform/core/src/classes/CommandsManager.ts diff --git a/platform/core/src/classes/HotkeysManager.test.js b/platform/core/src/classes/HotkeysManager.test.js index 1f83c4823..3cb68be17 100644 --- a/platform/core/src/classes/HotkeysManager.test.js +++ b/platform/core/src/classes/HotkeysManager.test.js @@ -1,12 +1,12 @@ -import CommandsManager from './CommandsManager.js'; -import HotkeysManager from './HotkeysManager.js'; +import CommandsManager from './CommandsManager'; +import HotkeysManager from './HotkeysManager'; import hotkeys from './../utils/hotkeys'; -import log from './../log.js'; +import log from './../log'; import objectHash from 'object-hash'; -jest.mock('./CommandsManager.js'); +jest.mock('./CommandsManager'); jest.mock('./../utils/hotkeys'); -jest.mock('./../log.js'); +jest.mock('./../log'); describe('HotkeysManager', () => { let hotkeysManager, commandsManager; diff --git a/platform/core/src/classes/index.js b/platform/core/src/classes/index.js index 241b2f546..ce7e107a4 100644 --- a/platform/core/src/classes/index.js +++ b/platform/core/src/classes/index.js @@ -1,14 +1,9 @@ -import CommandsManager from './CommandsManager.js'; -import HotkeysManager from './HotkeysManager.js'; +import CommandsManager from './CommandsManager'; +import HotkeysManager from './HotkeysManager'; import ImageSet from './ImageSet'; import MetadataProvider from './MetadataProvider'; -export { - MetadataProvider, - CommandsManager, - HotkeysManager, - ImageSet, -}; +export { MetadataProvider, CommandsManager, HotkeysManager, ImageSet }; const classes = { MetadataProvider, diff --git a/platform/core/src/index.test.js b/platform/core/src/index.test.js index cd07dfd60..2fd94bf9b 100644 --- a/platform/core/src/index.test.js +++ b/platform/core/src/index.test.js @@ -24,14 +24,14 @@ describe('Top level exports', () => { 'OHIF', // 'CineService', - 'CustomizationServiceRegistration', + 'CustomizationService', 'UIDialogService', 'UIModalService', 'UINotificationService', 'UIViewportDialogService', 'DisplaySetService', 'MeasurementService', - 'ToolBarService', + 'ToolbarService', 'Types', 'ViewportGridService', 'HangingProtocolService', @@ -39,6 +39,7 @@ describe('Top level exports', () => { 'IWebApiDataSource', 'DicomMetadataStore', 'pubSubServiceInterface', + 'PubSubService', ].sort(); const exports = Object.keys(OHIF).sort(); diff --git a/platform/core/src/index.ts b/platform/core/src/index.ts index 9abc4e1e3..35f809c57 100644 --- a/platform/core/src/index.ts +++ b/platform/core/src/index.ts @@ -21,13 +21,14 @@ import { // DicomMetadataStore, DisplaySetService, - ToolBarService, + ToolbarService, MeasurementService, ViewportGridService, HangingProtocolService, pubSubServiceInterface, + PubSubService, UserAuthenticationService, - CustomizationServiceRegistration, + CustomizationService, } from './services'; import IWebApiDataSource from './DataSources/IWebApiDataSource'; @@ -58,20 +59,21 @@ const OHIF = { viewer: {}, // CineService, - CustomizationServiceRegistration, + CustomizationService, UIDialogService, UIModalService, UINotificationService, UIViewportDialogService, DisplaySetService, MeasurementService, - ToolBarService, // TODO: TYPO + ToolbarService, ViewportGridService, HangingProtocolService, UserAuthenticationService, IWebApiDataSource, DicomMetadataStore, pubSubServiceInterface, + PubSubService, }; export { @@ -94,20 +96,21 @@ export { DICOMWeb, // CineService, - CustomizationServiceRegistration, + CustomizationService, UIDialogService, UIModalService, UINotificationService, UIViewportDialogService, DisplaySetService, MeasurementService, - ToolBarService, + ToolbarService, ViewportGridService, HangingProtocolService, UserAuthenticationService, IWebApiDataSource, DicomMetadataStore, pubSubServiceInterface, + PubSubService, Types, }; diff --git a/platform/core/src/services/CineService/CineService.js b/platform/core/src/services/CineService/CineService.ts similarity index 90% rename from platform/core/src/services/CineService/CineService.js rename to platform/core/src/services/CineService/CineService.ts index ac3600d8b..4d81a624e 100644 --- a/platform/core/src/services/CineService/CineService.js +++ b/platform/core/src/services/CineService/CineService.ts @@ -64,9 +64,14 @@ function setServiceImplementation({ } } -export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; +const CineService = { + REGISTRATION: { + altName: name, + name: 'cineService', + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; + +export default CineService; diff --git a/platform/core/src/services/CineService/index.js b/platform/core/src/services/CineService/index.ts similarity index 100% rename from platform/core/src/services/CineService/index.js rename to platform/core/src/services/CineService/index.ts diff --git a/platform/core/src/services/CustomizationService/CustomizationService.ts b/platform/core/src/services/CustomizationService/CustomizationService.ts index ee8a55ef4..25a3dd3be 100644 --- a/platform/core/src/services/CustomizationService/CustomizationService.ts +++ b/platform/core/src/services/CustomizationService/CustomizationService.ts @@ -1,6 +1,7 @@ import merge from 'lodash.merge'; import { PubSubService } from '../_shared/pubSubServiceInterface'; import { Customization, NestedStrings, Obj } from './types'; +import { CommandsManager } from '../../classes'; const EVENTS = { MODE_CUSTOMIZATION_MODIFIED: 'event::CustomizationService:modeModified', @@ -50,7 +51,14 @@ const flattenNestedStrings = ( * every module for the given id and to load it/add it to the extensions. */ export default class CustomizationService extends PubSubService { - commandsManager: Record; + public static REGISTRATION = { + name: 'customizationService', + create: ({ configuration = {}, commandsManager }) => { + return new CustomizationService({ configuration, commandsManager }); + }, + }; + + commandsManager: CommandsManager; extensionManager: Record; modeCustomizations: Record = {}; diff --git a/platform/core/src/services/CustomizationService/index.ts b/platform/core/src/services/CustomizationService/index.ts index d2eec2824..b80db0017 100644 --- a/platform/core/src/services/CustomizationService/index.ts +++ b/platform/core/src/services/CustomizationService/index.ts @@ -1,11 +1,3 @@ import CustomizationService from './CustomizationService'; -const CustomizationServiceRegistration = { - name: 'customizationService', - create: ({ configuration = {}, commandsManager }) => { - return new CustomizationService({ configuration, commandsManager }); - }, -}; - -export default CustomizationServiceRegistration; -export { CustomizationService, CustomizationServiceRegistration }; +export default CustomizationService; diff --git a/platform/core/src/services/DicomMetadataStore/DicomMetadataStore.js b/platform/core/src/services/DicomMetadataStore/DicomMetadataStore.ts similarity index 100% rename from platform/core/src/services/DicomMetadataStore/DicomMetadataStore.js rename to platform/core/src/services/DicomMetadataStore/DicomMetadataStore.ts diff --git a/platform/core/src/services/DicomMetadataStore/index.js b/platform/core/src/services/DicomMetadataStore/index.ts similarity index 100% rename from platform/core/src/services/DicomMetadataStore/index.js rename to platform/core/src/services/DicomMetadataStore/index.ts diff --git a/platform/core/src/services/DisplaySetService/DisplaySetService.js b/platform/core/src/services/DisplaySetService/DisplaySetService.ts similarity index 94% rename from platform/core/src/services/DisplaySetService/DisplaySetService.js rename to platform/core/src/services/DisplaySetService/DisplaySetService.ts index da3813a3b..552e7936c 100644 --- a/platform/core/src/services/DisplaySetService/DisplaySetService.js +++ b/platform/core/src/services/DisplaySetService/DisplaySetService.ts @@ -1,4 +1,4 @@ -import pubSubServiceInterface from '../_shared/pubSubServiceInterface'; +import { PubSubService } from '../_shared/pubSubServiceInterface'; import EVENTS from './EVENTS'; const displaySetCache = []; @@ -28,16 +28,21 @@ const findInstance = (instance, displaySets) => { return false; }; -export default class DisplaySetService { - constructor() { - this.activeDisplaySets = []; - this.listeners = {}; - this.EVENTS = EVENTS; +export default class DisplaySetService extends PubSubService { + public static REGISTRATION = { + altName: 'DisplaySetService', + name: 'displaySetService', + create: ({ configuration = {} }) => { + return new DisplaySetService(); + }, + }; - Object.assign(this, pubSubServiceInterface); + public activeDisplaySets = []; + constructor() { + super(EVENTS); } - init(extensionManager, SOPClassHandlerIds) { + public init(extensionManager, SOPClassHandlerIds): void { this.extensionManager = extensionManager; this.SOPClassHandlerIds = SOPClassHandlerIds; this.activeDisplaySets = []; diff --git a/platform/core/src/services/DisplaySetService/index.js b/platform/core/src/services/DisplaySetService/index.js deleted file mode 100644 index 4946d8e0e..000000000 --- a/platform/core/src/services/DisplaySetService/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import DisplaySetService from './DisplaySetService'; - -export default { - name: 'DisplaySetService', - create: ({ configuration = {} }) => { - return new DisplaySetService(); - }, -}; diff --git a/platform/core/src/services/DisplaySetService/index.ts b/platform/core/src/services/DisplaySetService/index.ts new file mode 100644 index 000000000..6039e648c --- /dev/null +++ b/platform/core/src/services/DisplaySetService/index.ts @@ -0,0 +1,3 @@ +import DisplaySetService from './DisplaySetService'; + +export default DisplaySetService; diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts index 4d650ee1a..bca69e2c9 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts @@ -19,6 +19,14 @@ const EVENTS = { type Protocol = HangingProtocol.Protocol | HangingProtocol.ProtocolGenerator; class HangingProtocolService { + public static REGISTRATION = { + name: 'hangingProtocolService', + altName: 'HangingProtocolService', + create: ({ configuration = {}, commandsManager, servicesManager }) => { + return new HangingProtocolService(commandsManager, servicesManager); + }, + }; + studies: StudyMetadata[]; // stores all the protocols (object or function that returns an object) in a map protocols: Map; diff --git a/platform/core/src/services/HangingProtocolService/index.js b/platform/core/src/services/HangingProtocolService/index.js deleted file mode 100644 index 92e288c4e..000000000 --- a/platform/core/src/services/HangingProtocolService/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import HangingProtocolService from './HangingProtocolService'; - -export default { - name: 'HangingProtocolService', - create: ({ configuration = {}, commandsManager, servicesManager }) => { - return new HangingProtocolService(commandsManager, servicesManager); - }, -}; diff --git a/platform/core/src/services/HangingProtocolService/index.ts b/platform/core/src/services/HangingProtocolService/index.ts new file mode 100644 index 000000000..2d5a41716 --- /dev/null +++ b/platform/core/src/services/HangingProtocolService/index.ts @@ -0,0 +1,3 @@ +import HangingProtocolService from './HangingProtocolService'; + +export default HangingProtocolService; diff --git a/platform/core/src/services/MeasurementService/MeasurementService.test.js b/platform/core/src/services/MeasurementService/MeasurementService.test.js index 3ec0a2799..75113e371 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.test.js +++ b/platform/core/src/services/MeasurementService/MeasurementService.test.js @@ -1,7 +1,7 @@ -import MeasurementService from './MeasurementService.js'; +import MeasurementService from './MeasurementService'; import log from '../../log'; -jest.mock('../../log.js', () => ({ +jest.mock('../../log', () => ({ info: jest.fn(), warn: jest.fn(), error: jest.fn(), diff --git a/platform/core/src/services/MeasurementService/MeasurementService.js b/platform/core/src/services/MeasurementService/MeasurementService.ts similarity index 98% rename from platform/core/src/services/MeasurementService/MeasurementService.js rename to platform/core/src/services/MeasurementService/MeasurementService.ts index 4e38b711a..64cb53561 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.js +++ b/platform/core/src/services/MeasurementService/MeasurementService.ts @@ -1,6 +1,6 @@ import log from '../../log'; import guid from '../../utils/guid'; -import pubSubServiceInterface from '../_shared/pubSubServiceInterface'; +import { PubSubService } from '../_shared/pubSubServiceInterface'; /** * Measurement source schema @@ -94,27 +94,27 @@ const VALUE_TYPES = { * Note and Todo: We should be able to support measurements that are composed of multiple * annotations, but that is not the case at the moment. */ -class MeasurementService { +class MeasurementService extends PubSubService { + public static REGISTRATION = { + name: 'measurementService', + altName: 'MeasurementService', + create: ({ configuration = {} }) => { + return new MeasurementService(); + }, + }; + constructor() { + super(EVENTS); this.sources = {}; this.mappings = {}; this.measurements = {}; - this.listeners = {}; this._jumpToMeasurementCache = {}; - Object.defineProperty(this, 'EVENTS', { - value: EVENTS, - writable: false, - enumerable: true, - configurable: false, - }); Object.defineProperty(this, 'VALUE_TYPES', { value: VALUE_TYPES, writable: false, enumerable: true, configurable: false, }); - - Object.assign(this, pubSubServiceInterface); } /** diff --git a/platform/core/src/services/MeasurementService/index.js b/platform/core/src/services/MeasurementService/index.js deleted file mode 100644 index 308f7401d..000000000 --- a/platform/core/src/services/MeasurementService/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import MeasurementService from './MeasurementService'; - -export default { - name: 'MeasurementService', - create: ({ configuration = {} }) => { - return new MeasurementService(); - }, -}; diff --git a/platform/core/src/services/MeasurementService/index.ts b/platform/core/src/services/MeasurementService/index.ts new file mode 100644 index 000000000..2560cc86c --- /dev/null +++ b/platform/core/src/services/MeasurementService/index.ts @@ -0,0 +1,3 @@ +import MeasurementService from './MeasurementService'; + +export default MeasurementService; diff --git a/platform/core/src/services/ServicesManager.test.js b/platform/core/src/services/ServicesManager.test.js index dd6fd478c..30b115975 100644 --- a/platform/core/src/services/ServicesManager.test.js +++ b/platform/core/src/services/ServicesManager.test.js @@ -1,9 +1,9 @@ -import ServicesManager from './ServicesManager.js'; -import log from '../log.js'; +import ServicesManager from './ServicesManager'; +import log from '../log'; -jest.mock('./../log.js'); +jest.mock('./../log'); -describe('ServicesManager.js', () => { +describe('ServicesManager', () => { let servicesManager, commandsManager; beforeEach(() => { diff --git a/platform/core/src/services/ServicesManager.js b/platform/core/src/services/ServicesManager.ts similarity index 87% rename from platform/core/src/services/ServicesManager.js rename to platform/core/src/services/ServicesManager.ts index ef3b04a46..ab6b34728 100644 --- a/platform/core/src/services/ServicesManager.js +++ b/platform/core/src/services/ServicesManager.ts @@ -1,6 +1,9 @@ import log from './../log.js'; +import Services from '../types/Services'; export default class ServicesManager { + public services: Services = {}; + constructor(commandsManager) { this._commandsManager = commandsManager; this.services = {}; @@ -39,6 +42,10 @@ export default class ServicesManager { commandsManager: this._commandsManager, servicesManager: this, }); + if (service.altName) { + console.log('Registering old name', service.altName); + this.services[service.altName] = this.services[service.name]; + } } else { log.warn(`Service create factory function not defined. Exiting early.`); return; diff --git a/platform/core/src/services/ToolBarService/ToolBarService.ts b/platform/core/src/services/ToolBarService/ToolbarService.ts similarity index 94% rename from platform/core/src/services/ToolBarService/ToolBarService.ts rename to platform/core/src/services/ToolBarService/ToolbarService.ts index 3aa745bb2..e9df3ccfa 100644 --- a/platform/core/src/services/ToolBarService/ToolBarService.ts +++ b/platform/core/src/services/ToolBarService/ToolbarService.ts @@ -1,17 +1,25 @@ import merge from 'lodash.merge'; -import pubSubServiceInterface from '../_shared/pubSubServiceInterface'; +import { PubSubService } from '../_shared/pubSubServiceInterface'; const EVENTS = { TOOL_BAR_MODIFIED: 'event::toolBarService:toolBarModified', TOOL_BAR_STATE_MODIFIED: 'event::toolBarService:toolBarStateModified', }; -export default class ToolBarService { +export default class ToolbarService extends PubSubService { + public static REGISTRATION = { + name: 'toolbarService', + // Note the old name is ToolBarService, with an upper B + altName: 'ToolBarService', + create: ({ commandsManager }) => { + return new ToolbarService(commandsManager); + }, + }; + constructor(commandsManager) { + super(EVENTS); this._commandsManager = commandsManager; // - this.EVENTS = EVENTS; - this.listeners = {}; this.buttons = {}; this.unsubscriptions = []; // if tools need to unsubscribe from events this.buttonSections = { @@ -32,8 +40,6 @@ export default class ToolBarService { /* track most recent click per group...? */ }, }; - - Object.assign(this, pubSubServiceInterface); } init(extensionManager) { diff --git a/platform/core/src/services/ToolBarService/index.ts b/platform/core/src/services/ToolBarService/index.ts index e283314d8..0147896b4 100644 --- a/platform/core/src/services/ToolBarService/index.ts +++ b/platform/core/src/services/ToolBarService/index.ts @@ -1,8 +1,3 @@ -import ToolBarService from './ToolBarService'; +import ToolbarService from './ToolbarService'; -export default { - name: 'ToolBarService', - create: ({ configuration = {}, commandsManager }) => { - return new ToolBarService(commandsManager); - }, -}; +export default ToolbarService; diff --git a/platform/core/src/services/UIDialogService/index.js b/platform/core/src/services/UIDialogService/index.js index c6e126ee5..dfa38c63c 100644 --- a/platform/core/src/services/UIDialogService/index.js +++ b/platform/core/src/services/UIDialogService/index.js @@ -25,7 +25,7 @@ * @property {Function} onDrag Called while dragging. */ -const name = 'UIDialogService'; +const name = 'uiDialogService'; const publicAPI = { name, @@ -119,9 +119,13 @@ function setServiceImplementation({ } } +// TODO - export type here export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; + REGISTRATION: { + name, + altName: 'UIDialogService', + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; diff --git a/platform/core/src/services/UIModalService/index.js b/platform/core/src/services/UIModalService/index.js index 884e53500..babeb6e5c 100644 --- a/platform/core/src/services/UIModalService/index.js +++ b/platform/core/src/services/UIModalService/index.js @@ -11,7 +11,7 @@ * @property {string} [customClassName=null] The custom class to style the modal. */ -const name = 'UIModalService'; +const name = 'uiModalService'; const publicAPI = { name, @@ -79,9 +79,13 @@ function setServiceImplementation({ } } +// TODO - export TS Type export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; + REGISTRATION: { + name, + altName: 'UIModalService', + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; diff --git a/platform/core/src/services/UINotificationService/index.js b/platform/core/src/services/UINotificationService/index.js index 0cdb8ea95..a21033759 100644 --- a/platform/core/src/services/UINotificationService/index.js +++ b/platform/core/src/services/UINotificationService/index.js @@ -10,7 +10,7 @@ * @property {boolean} [autoClose=true] */ -const name = 'UINotificationService'; +const name = 'uiNotificationService'; const serviceShowRequestQueue = []; @@ -91,8 +91,11 @@ function setServiceImplementation({ } export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; + REGISTRATION: { + name, + altName: 'UINotificationService', + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; diff --git a/platform/core/src/services/UIViewportDialogService/index.js b/platform/core/src/services/UIViewportDialogService/index.js index 57154848d..9ad1c90ba 100644 --- a/platform/core/src/services/UIViewportDialogService/index.js +++ b/platform/core/src/services/UIViewportDialogService/index.js @@ -75,8 +75,10 @@ function setServiceImplementation({ } export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; + REGISTRATION: { + name, + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; diff --git a/platform/core/src/services/UserAuthenticationService/UserAuthenticationService.js b/platform/core/src/services/UserAuthenticationService/UserAuthenticationService.js index 61b3be334..e112542e8 100644 --- a/platform/core/src/services/UserAuthenticationService/UserAuthenticationService.js +++ b/platform/core/src/services/UserAuthenticationService/UserAuthenticationService.js @@ -1,4 +1,4 @@ -const name = 'UserAuthenticationService'; +const name = 'userAuthenticationService'; const publicAPI = { name, @@ -85,8 +85,11 @@ function setServiceImplementation({ } export default { - name, - create: ({ configuration = {} }) => { - return publicAPI; + REGISTRATION: { + name, + altName: 'UserAuthenticationService', + create: ({ configuration = {} }) => { + return publicAPI; + }, }, }; diff --git a/platform/core/src/services/ViewportGridService/ViewportGridService.ts b/platform/core/src/services/ViewportGridService/ViewportGridService.ts index 0700afa00..ae1a6a01e 100644 --- a/platform/core/src/services/ViewportGridService/ViewportGridService.ts +++ b/platform/core/src/services/ViewportGridService/ViewportGridService.ts @@ -1,21 +1,26 @@ -import pubSubServiceInterface from './../_shared/pubSubServiceInterface'; +import { PubSubService } from '../_shared/pubSubServiceInterface'; const EVENTS = { ACTIVE_VIEWPORT_INDEX_CHANGED: 'event::activeviewportindexchanged', }; -class ViewportGridService { +class ViewportGridService extends PubSubService { + public static REGISTRATION = { + name: 'viewportGridService', + altName: 'ViewportGridService', + create: ({ configuration = {} }) => { + return new ViewportGridService(); + }, + }; + serviceImplementation = {}; - EVENTS: { [key: string]: string }; - listeners = {}; constructor() { - Object.assign(this, pubSubServiceInterface); + super(EVENTS); this.serviceImplementation = {}; - this.EVENTS = EVENTS; } - setServiceImplementation({ + public setServiceImplementation({ getState: getStateImplementation, setActiveViewportIndex: setActiveViewportIndexImplementation, setDisplaySetsForViewport: setDisplaySetsForViewportImplementation, @@ -26,7 +31,7 @@ class ViewportGridService { reset: resetImplementation, onModeExit: onModeExitImplementation, set: setImplementation, - }) { + }): void { if (getStateImplementation) { this.serviceImplementation._getState = getStateImplementation; } @@ -119,9 +124,4 @@ class ViewportGridService { } } -export default { - name: 'ViewportGridService', - create: ({ configuration = {} }) => { - return new ViewportGridService(); - }, -}; +export default ViewportGridService; diff --git a/platform/core/src/services/ViewportGridService/index.js b/platform/core/src/services/ViewportGridService/index.ts similarity index 100% rename from platform/core/src/services/ViewportGridService/index.js rename to platform/core/src/services/ViewportGridService/index.ts diff --git a/platform/core/src/services/index.js b/platform/core/src/services/index.ts similarity index 80% rename from platform/core/src/services/index.js rename to platform/core/src/services/index.ts index 01605f407..41a17d5be 100644 --- a/platform/core/src/services/index.js +++ b/platform/core/src/services/index.ts @@ -1,12 +1,12 @@ import MeasurementService from './MeasurementService'; -import ServicesManager from './ServicesManager.js'; +import ServicesManager from './ServicesManager'; import UIDialogService from './UIDialogService'; import UIModalService from './UIModalService'; import UINotificationService from './UINotificationService'; import UIViewportDialogService from './UIViewportDialogService'; import DicomMetadataStore from './DicomMetadataStore'; import DisplaySetService from './DisplaySetService'; -import ToolBarService from './ToolBarService'; +import ToolbarService from './ToolBarService'; import ViewportGridService from './ViewportGridService'; import CineService from './CineService'; import HangingProtocolService from './HangingProtocolService'; @@ -14,23 +14,22 @@ import pubSubServiceInterface, { PubSubService, } from './_shared/pubSubServiceInterface'; import UserAuthenticationService from './UserAuthenticationService'; -import { - CustomizationService, - CustomizationServiceRegistration, -} from './CustomizationService'; +import CustomizationService from './CustomizationService'; + +import Services from '../types/Services'; export { + Services, MeasurementService, ServicesManager, CustomizationService, - CustomizationServiceRegistration, UIDialogService, UIModalService, UINotificationService, UIViewportDialogService, DicomMetadataStore, DisplaySetService, - ToolBarService, + ToolbarService, ViewportGridService, HangingProtocolService, CineService, diff --git a/platform/core/src/types/Services.ts b/platform/core/src/types/Services.ts new file mode 100644 index 000000000..e710bfe9f --- /dev/null +++ b/platform/core/src/types/Services.ts @@ -0,0 +1,27 @@ +import { + HangingProtocolService, + CustomizationService, + MeasurementService, + ViewportGridService, + ToolbarService, + DisplaySetService, +} from '../services'; + +/** + * The interface for the services object + */ +export default interface Services { + hangingProtocolService?: HangingProtocolService; + customizationService?: CustomizationService; + measurementService?: MeasurementService; + displaySetService?: DisplaySetService; + cineService?: Record; + toolbarService?: ToolbarService; + cornerstoneViewportService?: Record; + uiDialogService?: Record; + toolGroupService?: Record; + uiNotificationService?: Record; + viewportGridService?: ViewportGridService; + syncGroupService?: Record; + cornerstoneCacheService?: Record; +} diff --git a/platform/core/src/types/index.ts b/platform/core/src/types/index.ts index 9e1f79557..0d1c9a1cb 100644 --- a/platform/core/src/types/index.ts +++ b/platform/core/src/types/index.ts @@ -9,6 +9,8 @@ import { ExtensionManager } from '../extensions'; import { CustomizationService, PubSubService } from '../services'; import * as HangingProtocol from './HangingProtocol'; import Command from './Command'; +import Services from './Services'; +import { CommandsManager } from '../classes'; export * from '../services/CustomizationService/types'; @@ -22,4 +24,6 @@ export type { PubSubService, CustomizationService, Command, + Services, + CommandsManager, }; diff --git a/platform/ui/src/components/SplitButton/SplitButton.tsx b/platform/ui/src/components/SplitButton/SplitButton.tsx index b9d998c94..00c354098 100644 --- a/platform/ui/src/components/SplitButton/SplitButton.tsx +++ b/platform/ui/src/components/SplitButton/SplitButton.tsx @@ -92,7 +92,7 @@ const SplitButton = ({ }) => { const { t } = useTranslation('Buttons'); - const { ToolBarService } = servicesManager.services; + const { toolbarService } = servicesManager.services; const { primaryToolId, toggles } = bState; /* Bubbles up individual item clicks */ @@ -146,7 +146,7 @@ const SplitButton = ({ (isPrimaryToggle && toggles[state.primary.id] === true); const PrimaryButtonComponent = - ToolBarService.getButtonComponentForUIType(state.primary.uiType) ?? + toolbarService.getButtonComponentForUIType(state.primary.uiType) ?? ToolbarButton; const primaryButtonClassName = classes.Primary({ @@ -197,7 +197,7 @@ const SplitButton = ({ {...state.primary} bState={bState} isActive={isPrimaryActive} - onInteraction={args => ToolBarService.recordInteraction(args)} + onInteraction={args => toolbarService.recordInteraction(args)} servicesManager={servicesManager} // All rounding is taken care of by className rounded="none" @@ -295,7 +295,7 @@ SplitButton.propTypes = { isActive: PropTypes.bool, }) ), - /** Callback function to inform ToolBarService of important events */ + /** Callback function to inform toolbarService of important events */ onInteraction: PropTypes.func.isRequired, }; diff --git a/platform/viewer/src/appInit.js b/platform/viewer/src/appInit.js index b764cdd12..82ed506c1 100644 --- a/platform/viewer/src/appInit.js +++ b/platform/viewer/src/appInit.js @@ -9,13 +9,13 @@ import { UIViewportDialogService, MeasurementService, DisplaySetService, - ToolBarService, + ToolbarService, ViewportGridService, HangingProtocolService, CineService, UserAuthenticationService, errorHandler, - CustomizationServiceRegistration, + CustomizationService, // utils, } from '@ohif/core'; @@ -45,18 +45,18 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) { }); servicesManager.registerServices([ - UINotificationService, - UIModalService, - UIDialogService, - UIViewportDialogService, - MeasurementService, - DisplaySetService, - [CustomizationServiceRegistration, appConfig.customizationService], - ToolBarService, - ViewportGridService, - HangingProtocolService, - CineService, - UserAuthenticationService, + UINotificationService.REGISTRATION, + UIModalService.REGISTRATION, + UIDialogService.REGISTRATION, + UIViewportDialogService.REGISTRATION, + MeasurementService.REGISTRATION, + DisplaySetService.REGISTRATION, + [CustomizationService.REGISTRATION, appConfig.customizationService], + ToolbarService.REGISTRATION, + ViewportGridService.REGISTRATION, + HangingProtocolService.REGISTRATION, + CineService.REGISTRATION, + UserAuthenticationService.REGISTRATION, ]); errorHandler.getHTTPErrorHandler = () => { From 390e439f38ef4a3bb4af597ab2bf18282d77725f Mon Sep 17 00:00:00 2001 From: wangxuan Date: Thu, 9 Feb 2023 00:54:34 +0800 Subject: [PATCH 21/47] feat: Fix the translation of the tab label on the right hand panel (#3153) --- platform/ui/src/components/SidePanel/SidePanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/ui/src/components/SidePanel/SidePanel.tsx b/platform/ui/src/components/SidePanel/SidePanel.tsx index 9119d51a8..6c19878cb 100644 --- a/platform/ui/src/components/SidePanel/SidePanel.tsx +++ b/platform/ui/src/components/SidePanel/SidePanel.tsx @@ -203,7 +203,7 @@ const SidePanel = ({ /> {/* Todo: ass secondary label here */} - {tabs.length === 1 && tabs[activeTabIndex].label} + {tabs.length === 1 && t(tabs[activeTabIndex].label) as string}
From 455854035763d8257f34f4a8295fef7a0d49181f Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:44:59 -0500 Subject: [PATCH 22/47] fix(cypress test): remove the click at beginning of the window level test: (#3158) 'OHIF Cornerstone Toolbar'.'checks if Levels tool will change the window width and center of an image'. --- .../measurement-tracking/OHIFCornerstoneToolbar.spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js index 175ded66a..27d4aa941 100644 --- a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js @@ -84,7 +84,6 @@ describe('OHIF Cornerstone Toolbar', () => { //drags the mouse inside the viewport to be able to interact with series cy.get('@viewport') - .click({ force: true }) .trigger('mousedown', 'center', { buttons: 1 }) // Since we have scrollbar on the right side of the viewport, we need to // force the mousemove since it goes to another element From a97fb2fc9aec10ca3e213fdbd9022289ac14e2d1 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 10 Feb 2023 14:30:56 -0500 Subject: [PATCH 23/47] fix(hotkeys): fix the hotkey manager to not save the defaults (#3162) --- platform/core/src/classes/Hotkey.ts | 8 ++ .../{HotkeysManager.js => HotkeysManager.ts} | 49 ++++++++--- .../src/extensions/ExtensionManager.test.js | 11 ++- ...xtensionManager.js => ExtensionManager.ts} | 81 ++++++++++++++++--- platform/core/src/extensions/index.js | 6 +- platform/core/src/types/AppConfig.ts | 7 ++ platform/core/src/types/Command.ts | 2 - platform/core/src/types/Consumer.ts | 3 +- platform/core/src/types/Services.ts | 1 + platform/core/src/types/StudyMetadata.ts | 5 +- platform/core/src/types/index.ts | 36 +++------ 11 files changed, 149 insertions(+), 60 deletions(-) create mode 100644 platform/core/src/classes/Hotkey.ts rename platform/core/src/classes/{HotkeysManager.js => HotkeysManager.ts} (85%) rename platform/core/src/extensions/{ExtensionManager.js => ExtensionManager.ts} (83%) create mode 100644 platform/core/src/types/AppConfig.ts diff --git a/platform/core/src/classes/Hotkey.ts b/platform/core/src/classes/Hotkey.ts new file mode 100644 index 000000000..73ca2d35f --- /dev/null +++ b/platform/core/src/classes/Hotkey.ts @@ -0,0 +1,8 @@ +export default interface Hotkey { + commandName: string; + commandOptions?: Record; + context?: string; + keys: string[]; + label: string; + isEditable?: boolean; +} diff --git a/platform/core/src/classes/HotkeysManager.js b/platform/core/src/classes/HotkeysManager.ts similarity index 85% rename from platform/core/src/classes/HotkeysManager.js rename to platform/core/src/classes/HotkeysManager.ts index 50a6dcdbc..03cafd55e 100644 --- a/platform/core/src/classes/HotkeysManager.js +++ b/platform/core/src/classes/HotkeysManager.ts @@ -1,6 +1,9 @@ import objectHash from 'object-hash'; -import log from './../log.js'; +import log from '../log.js'; import { hotkeys } from '../utils'; +import isequal from 'lodash.isequal'; +import Hotkey from './Hotkey'; +import ServicesManager from '../services/ServicesManager'; /** * @@ -13,6 +16,8 @@ import { hotkeys } from '../utils'; */ export class HotkeysManager { + private _servicesManager: ServicesManager; + constructor(commandsManager, servicesManager) { this.hotkeyDefinitions = {}; this.hotkeyDefaults = []; @@ -59,11 +64,17 @@ export class HotkeysManager { * * @param {HotkeyDefinition[] | Object} [hotkeyDefinitions=[]] Contains hotkeys definitions */ - setHotkeys(hotkeyDefinitions = []) { + setHotkeys(hotkeyDefinitions = [], key = 'hotkey-definitions') { try { const definitions = this.getValidDefinitions(hotkeyDefinitions); + if (isequal(definitions, this.hotkeyDefaults)) { + console.log('hotkeys REMOVING unused definition', key); + localStorage.removeItem(key); + } else { + console.log('hotkeys setting local storage', key); + localStorage.setItem(key, JSON.stringify(definitions)); + } definitions.forEach(definition => this.registerHotkeys(definition)); - localStorage.setItem('hotkey-definitions', JSON.stringify(definitions)); } catch (error) { const { UINotificationService } = this._servicesManager.services; UINotificationService.show({ @@ -165,7 +176,14 @@ export class HotkeysManager { * @returns {undefined} */ registerHotkeys( - { commandName, commandOptions = {}, keys, label, isEditable } = {}, + { + commandName, + commandOptions = {}, + context, + keys, + label, + isEditable, + }: Hotkey = {}, extension ) { if (!commandName) { @@ -181,9 +199,9 @@ export class HotkeysManager { if (previouslyRegisteredDefinition) { const previouslyRegisteredKeys = previouslyRegisteredDefinition.keys; this._unbindHotkeys(commandName, previouslyRegisteredKeys); - log.info( - `[hotkeys] Unbinding ${commandName} with ${options} options from ${previouslyRegisteredKeys}` - ); + // log.info( + // `[hotkeys] Unbinding ${commandName} with ${options} options from ${previouslyRegisteredKeys}` + // ); } // Set definition & bind @@ -194,10 +212,11 @@ export class HotkeysManager { label, isEditable, }; - this._bindHotkeys(commandName, commandOptions, keys); - log.info( - `[hotkeys] Binding ${commandName} with ${options} options to ${keys}` - ); + this._bindHotkeys(commandName, commandOptions, context, keys); + // log.info( + // `[hotkeys] Binding ${commandName} with ${options} from ${context || + // 'default'} options to ${keys}` + // ); } /** @@ -226,7 +245,7 @@ export class HotkeysManager { * @param {string[]} keys - One or more key combinations that should trigger command * @returns {undefined} */ - _bindHotkeys(commandName, commandOptions = {}, keys) { + _bindHotkeys(commandName, commandOptions = {}, context, keys) { const isKeyDefined = keys === '' || keys === undefined; if (isKeyDefined) { return; @@ -238,7 +257,11 @@ export class HotkeysManager { hotkeys.bind(combinedKeys, evt => { evt.preventDefault(); evt.stopPropagation(); - this._commandsManager.runCommand(commandName, { evt, ...commandOptions }); + this._commandsManager.runCommand( + commandName, + { evt, ...commandOptions }, + context + ); }); } diff --git a/platform/core/src/extensions/ExtensionManager.test.js b/platform/core/src/extensions/ExtensionManager.test.js index 47c737518..4177deab7 100644 --- a/platform/core/src/extensions/ExtensionManager.test.js +++ b/platform/core/src/extensions/ExtensionManager.test.js @@ -1,10 +1,10 @@ -import ExtensionManager from './ExtensionManager.js'; -import MODULE_TYPES from './MODULE_TYPES.js'; +import ExtensionManager from './ExtensionManager'; +import MODULE_TYPES from './MODULE_TYPES'; import log from './../log.js'; jest.mock('./../log.js'); -describe('ExtensionManager.js', () => { +describe('ExtensionManager.ts', () => { let extensionManager, commandsManager, servicesManager, appConfig; beforeEach(() => { @@ -238,6 +238,9 @@ describe('ExtensionManager.js', () => { getCustomizationModule: () => { return [{}]; }, + getStateSyncModule: () => { + return [{}]; + }, }; await extensionManager.registerExtension(extension); @@ -245,7 +248,7 @@ describe('ExtensionManager.js', () => { // Registers 1 module per module type Object.keys(extensionManager.modules).forEach(moduleType => { const modulesForType = extensionManager.modules[moduleType]; - + console.log('moduleType', moduleType); expect(modulesForType.length).toBe(1); }); }); diff --git a/platform/core/src/extensions/ExtensionManager.js b/platform/core/src/extensions/ExtensionManager.ts similarity index 83% rename from platform/core/src/extensions/ExtensionManager.js rename to platform/core/src/extensions/ExtensionManager.ts index b8ea618e6..81a4a54cd 100644 --- a/platform/core/src/extensions/ExtensionManager.js +++ b/platform/core/src/extensions/ExtensionManager.ts @@ -1,13 +1,59 @@ -import MODULE_TYPES from './MODULE_TYPES.js'; -import log from './../log.js'; +import MODULE_TYPES from './MODULE_TYPES'; +import log from '../log'; +import { AppConfig } from '../types/AppConfig'; +import { ServicesManager } from '../services'; +import { HotkeysManager, CommandsManager } from '../classes'; + +/** + * This is the arguments given to create the extension. + */ +export interface ExtensionConstructor { + servicesManager: ServicesManager; + commandsManager: CommandsManager; + hotkeysManager: HotkeysManager; + appConfig: AppConfig; +} + +/** + * The configuration of an extension. + * This uses type as the extension manager only knows that the configuration + * is an object of some sort, and doesn't know anything else about it. + */ +export type ExtensionConfiguration = Record; + +/** + * The parameters passed to the extension. + */ +export interface ExtensionParams extends ExtensionConstructor { + extensionManager: ExtensionManager; + configuration?: ExtensionConfiguration; +} + +/** + * The type of an actual extension instance. + * This is an interface as it declares possible calls, but extensions can + * have more values than this. + */ +export interface Extension { + preRegistration?: (p: ExtensionParams) => void; +} + +export type ExtensionRegister = { + id: string; + create: (p: ExtensionParams) => Extension; +}; export default class ExtensionManager { + private _commandsManager: CommandsManager; + private _servicesManager: ServicesManager; + private _hotkeysManager: HotkeysManager; + constructor({ commandsManager, servicesManager, hotkeysManager, appConfig = {}, - }) { + }: ExtensionConstructor) { this.modules = {}; this.registeredExtensionIds = []; this.moduleTypeNames = Object.values(MODULE_TYPES); @@ -28,11 +74,17 @@ export default class ExtensionManager { this.activeDataSource = undefined; } - setActiveDataSource(dataSourceName) { + public setActiveDataSource(dataSourceName: string): void { this.activeDataSource = dataSourceName; } - onModeEnter() { + /** + * Calls all the services and extension on mode enters. + * The service onModeEnter is called first + * Then registered extensions onModeEnter is called + * This is supposed to setup the extension for a standard entry. + */ + public onModeEnter(): void { const { registeredExtensionIds, _servicesManager, @@ -61,7 +113,7 @@ export default class ExtensionManager { }); } - onModeExit() { + public onModeExit(): void { const { registeredExtensionIds, _servicesManager, @@ -97,7 +149,13 @@ export default class ExtensionManager { * * @param {Object[]} extensions - Array of extensions */ - registerExtensions = async (extensions, dataSources = []) => { + public registerExtensions = async ( + extensions: ( + | ExtensionRegister + | [ExtensionRegister, ExtensionConfiguration] + )[], + dataSources: unknown[] = [] + ): Promise => { // Todo: we ideally should be able to run registrations in parallel // but currently since some extensions need to be registered before // others, we need to run them sequentially. We need a postInit hook @@ -127,16 +185,16 @@ export default class ExtensionManager { * @param {Object} extension * @param {Object} configuration */ - registerExtension = async ( - extension, + public registerExtension = async ( + extension: ExtensionRegister, configuration = {}, dataSources = [] - ) => { + ): Promise => { if (!extension) { throw new Error('Attempting to register a null/undefined extension.'); } - let extensionId = extension.id; + const extensionId = extension.id; if (!extensionId) { // Note: Mode framework cannot function without IDs. @@ -203,6 +261,7 @@ export default class ExtensionManager { case MODULE_TYPES.CONTEXT: case MODULE_TYPES.LAYOUT_TEMPLATE: case MODULE_TYPES.CUSTOMIZATION: + case MODULE_TYPES.STATE_SYNC: case MODULE_TYPES.UTILITY: // Default for most extension points, // Just adds each entry ready for consumption by mode. diff --git a/platform/core/src/extensions/index.js b/platform/core/src/extensions/index.js index 50a27db11..e5919875e 100644 --- a/platform/core/src/extensions/index.js +++ b/platform/core/src/extensions/index.js @@ -1,9 +1,11 @@ import ExtensionManager from './ExtensionManager'; -import MODULE_TYPES from './MODULE_TYPES.js'; +import MODULE_TYPES from './MODULE_TYPES'; -export default { +const DEFAULT_EXPORTS = { ExtensionManager, MODULE_TYPES, }; +export default DEFAULT_EXPORTS; + export { ExtensionManager, MODULE_TYPES }; diff --git a/platform/core/src/types/AppConfig.ts b/platform/core/src/types/AppConfig.ts new file mode 100644 index 000000000..3c75694cb --- /dev/null +++ b/platform/core/src/types/AppConfig.ts @@ -0,0 +1,7 @@ +import Hotkey from '../classes/Hotkey'; + +export interface AppConfig { + extensions?: string[]; + defaultDataSourceName?: string; + hotkeys?: Record | Hotkey[]; +} diff --git a/platform/core/src/types/Command.ts b/platform/core/src/types/Command.ts index 42d75f63b..83c774379 100644 --- a/platform/core/src/types/Command.ts +++ b/platform/core/src/types/Command.ts @@ -3,5 +3,3 @@ export interface Command { commandOptions?: Record; context?: string; } - -export default Command; diff --git a/platform/core/src/types/Consumer.ts b/platform/core/src/types/Consumer.ts index a761630d4..8c59ebc34 100644 --- a/platform/core/src/types/Consumer.ts +++ b/platform/core/src/types/Consumer.ts @@ -1,5 +1,4 @@ /** * Just a function that consumes a single argument, with no return. */ -type Consumer = (props: Record) => void; -export default Consumer; +export type Consumer = (props: Record) => void; diff --git a/platform/core/src/types/Services.ts b/platform/core/src/types/Services.ts index e710bfe9f..d906d17b5 100644 --- a/platform/core/src/types/Services.ts +++ b/platform/core/src/types/Services.ts @@ -24,4 +24,5 @@ export default interface Services { viewportGridService?: ViewportGridService; syncGroupService?: Record; cornerstoneCacheService?: Record; + segmentationService?: Record; } diff --git a/platform/core/src/types/StudyMetadata.ts b/platform/core/src/types/StudyMetadata.ts index 5a0cf8155..e06299e3c 100644 --- a/platform/core/src/types/StudyMetadata.ts +++ b/platform/core/src/types/StudyMetadata.ts @@ -1,4 +1,6 @@ -/** Defines a typescript type for study metadata */ +/** Defines a typescript interface for study metadata. + * This defines the types for when using study metadata as interfaces. + */ export interface PatientMetadata extends Record { PatientName?: string; @@ -20,4 +22,3 @@ export interface InstanceMetadata extends SeriesMetadata { readonly SOPInstanceUID: string; InstanceNumber?: string | number; } -export default StudyMetadata; diff --git a/platform/core/src/types/index.ts b/platform/core/src/types/index.ts index 0d1c9a1cb..f3229b98d 100644 --- a/platform/core/src/types/index.ts +++ b/platform/core/src/types/index.ts @@ -1,29 +1,17 @@ -import { - StudyMetadata, - SeriesMetadata, - InstanceMetadata, -} from './StudyMetadata'; - -import Consumer from './Consumer'; -import { ExtensionManager } from '../extensions'; -import { CustomizationService, PubSubService } from '../services'; +import * as Extensions from '../extensions/ExtensionManager'; import * as HangingProtocol from './HangingProtocol'; -import Command from './Command'; import Services from './Services'; -import { CommandsManager } from '../classes'; +import Hotkey from '../classes/Hotkey'; export * from '../services/CustomizationService/types'; +// Separate out some generic types +export * from './AppConfig'; +export * from './Consumer'; +export * from './Command'; +export * from './StudyMetadata'; -export type { - ExtensionManager, - HangingProtocol, - StudyMetadata, - SeriesMetadata, - InstanceMetadata, - Consumer, - PubSubService, - CustomizationService, - Command, - Services, - CommandsManager, -}; +/** + * Export the types used within the various services and managers, but + * not the services/managers themselves, which are exported at the top level. + */ +export { Extensions, HangingProtocol, Services, Hotkey }; From 8af0362d12409994be2085707fed5330c3ffeb4f Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 10 Feb 2023 16:46:09 -0500 Subject: [PATCH 24/47] fix(typescript): rename services to fix typescript (#3165) * fix: Rename services to lower camel case, hp, measure * fix: Rename DisplaySetService instances to displaySetService * fix: Rename CornerstoneViewportService to lower camel case * fix: Added lower case segmentationService rename * rename other services (#3166) * rename uiDialogService * rename toolGroupService * rename uiNotificationService * rename viewportGridService * rename syncGroupService * rename CornerstoneCacheService * Fix a syntax error in hotkeys * Fix a couple of rename issues that were missed --------- Co-authored-by: Alireza --- .../src/getSopClassHandlerModule.js | 14 +- .../src/panels/PanelSegmentation.tsx | 62 ++++----- .../src/panels/callInputDialog.tsx | 10 +- .../src/utils/_hydrateSEG.ts | 20 +-- .../src/utils/initSEGToolGroup.ts | 4 +- .../viewports/OHIFCornerstoneSEGViewport.tsx | 36 ++--- extensions/cornerstone-dicom-sr/package.json | 6 +- .../src/getSopClassHandlerModule.js | 10 +- .../cornerstone-dicom-sr/src/onModeEnter.js | 4 +- .../src/tools/tools/SRArrowAnnotate.ts | 4 +- .../src/tools/tools/SRBidirectional.ts | 4 +- .../src/tools/tools/SREllipticalROI.ts | 4 +- .../src/tools/tools/SRLength.ts | 4 +- .../getLabelFromDCMJSImportedToolData.js | 2 +- .../src/utils/hydrateStructuredReport.js | 10 +- .../src/utils/isRehydratable.js | 8 +- .../viewports/OHIFCornerstoneSRViewport.tsx | 26 ++-- extensions/cornerstone/package.json | 8 +- .../src/Viewport/OHIFCornerstoneViewport.tsx | 124 +++++++++--------- .../Viewport/Overlays/CornerstoneOverlays.tsx | 8 +- .../Overlays/ViewportImageScrollbar.tsx | 8 +- .../Overlays/ViewportOrientationMarkers.tsx | 4 +- .../src/Viewport/Overlays/ViewportOverlay.tsx | 14 +- extensions/cornerstone/src/commandsModule.ts | 54 ++++---- extensions/cornerstone/src/index.tsx | 13 +- extensions/cornerstone/src/init.tsx | 72 +++++----- .../cornerstone/src/initMeasurementService.js | 64 ++++----- .../CornerstoneCacheService.ts | 22 +++- .../services/CornerstoneCacheService/index.js | 9 +- .../SegmentationService.ts | 30 ++--- .../src/services/SegmentationService/index.js | 3 +- .../src/services/SyncGroupService/index.js | 3 +- .../ToolGroupService/ToolGroupService.ts | 16 ++- .../src/services/ToolGroupService/index.js | 9 +- .../CornerstoneViewportService.ts | 36 ++--- .../ViewportService/IViewportService.ts | 2 +- .../src/services/ViewportService/Viewport.ts | 2 +- .../utils/CornerstoneViewportDownloadForm.tsx | 4 +- .../cornerstone/src/utils/callInputDialog.tsx | 10 +- .../ArrowAnnotate.js | 16 +-- .../Bidirectional.js | 16 +-- .../EllipticalROI.js | 16 +-- .../measurementServiceMappings/Length.js | 18 +-- .../measurementServiceMappingsFactory.js | 34 ++--- .../utils/getSOPInstanceAttributes.js | 8 +- .../src/utils/mpr/toggleMPRHangingProtocol.ts | 40 +++--- .../utils/stackSync/toggleStackImageSync.ts | 18 +-- extensions/default/package.json | 2 +- .../default/src/Actions/createReportAsync.tsx | 16 +-- .../src/Panels/PanelMeasurementTable.tsx | 58 ++++---- .../default/src/Panels/PanelStudyBrowser.tsx | 28 ++-- .../src/Panels/createReportDialogPrompt.tsx | 10 +- .../requestDisplaySetCreationForStudy.js | 4 +- .../src/Toolbar/ToolbarLayoutSelector.tsx | 10 +- extensions/default/src/ViewerLayout/index.tsx | 10 +- extensions/default/src/commandsModule.js | 22 ++-- .../src/utils/getNextSRSeriesNumber.js | 4 +- extensions/dicom-pdf/package.json | 2 +- extensions/dicom-video/package.json | 2 +- extensions/measurement-tracking/package.json | 6 +- .../src/_shared/createReportAsync.tsx | 16 +-- .../src/_shared/createReportDialogPrompt.tsx | 10 +- .../src/_shared/getNextSRSeriesNumber.js | 4 +- .../TrackedMeasurementsContext.tsx | 22 ++-- .../promptHydrateStructuredReport.js | 4 +- .../promptSaveReport.js | 14 +- .../PanelMeasurementTableTracking/index.tsx | 56 ++++---- .../PanelStudyBrowserTracking.tsx | 84 ++++++------ .../requestDisplaySetCreationForStudy.js | 4 +- .../viewports/TrackedCornerstoneViewport.tsx | 18 +-- extensions/tmtv/package.json | 2 +- extensions/tmtv/src/Panels/PanelPetSUV.tsx | 20 +-- .../PanelROIThresholdSegmentation.tsx | 30 ++--- .../segmentationEditHandler.tsx | 10 +- extensions/tmtv/src/commandsModule.js | 52 ++++---- extensions/tmtv/src/init.js | 16 +-- .../RectangleROIStartEndThreshold.js | 10 +- .../measurementServiceMappingsFactory.js | 12 +- modes/basic-dev-mode/src/index.js | 14 +- modes/basic-test-mode/src/index.js | 28 ++-- modes/basic-test-mode/src/initToolGroups.js | 20 +-- modes/longitudinal/src/index.js | 28 ++-- modes/longitudinal/src/initToolGroups.js | 20 +-- modes/tmtv/src/index.js | 38 +++--- modes/tmtv/src/initToolGroups.js | 22 ++-- .../src/utils/setCrosshairsConfiguration.js | 10 +- modes/tmtv/src/utils/setFusionActiveVolume.js | 14 +- platform/core/package.json | 2 +- platform/core/src/classes/HotkeysManager.ts | 4 +- .../core/src/extensions/ExtensionManager.ts | 4 +- .../HangingProtocolService.test.js | 27 ++-- .../HangingProtocolService.ts | 26 ++-- platform/docs/docs/platform/services/index.md | 4 +- platform/viewer/package.json | 2 +- .../viewer/src/components/ViewportGrid.tsx | 46 +++---- platform/viewer/src/routes/Mode/Mode.tsx | 16 +-- yarn.lock | 50 +++---- 97 files changed, 934 insertions(+), 908 deletions(-) diff --git a/extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js b/extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js index a0303f076..774294332 100644 --- a/extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js @@ -71,8 +71,8 @@ function _getDisplaySetsFromSeries( displaySet.referencedSeriesInstanceUID = referencedSeries.SeriesInstanceUID; displaySet.getReferenceDisplaySet = () => { - const { DisplaySetService } = servicesManager.services; - const referencedDisplaySets = DisplaySetService.getDisplaySetsForSeries( + const { displaySetService } = servicesManager.services; + const referencedDisplaySets = displaySetService.getDisplaySetsForSeries( displaySet.referencedSeriesInstanceUID ); @@ -113,9 +113,9 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) { // We don't want to fire multiple loads, so we'll wait for the first to finish // and also return the same promise to any other callers. loadPromises[SOPInstanceUID] = new Promise(async (resolve, reject) => { - const { SegmentationService } = servicesManager.services; + const { segmentationService } = servicesManager.services; - if (_segmentationExistsInCache(segDisplaySet, SegmentationService)) { + if (_segmentationExistsInCache(segDisplaySet, segmentationService)) { return; } @@ -133,7 +133,7 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) { } const suppressEvents = true; - SegmentationService.createSegmentationForSEGDisplaySet( + segmentationService.createSegmentationForSEGDisplaySet( segDisplaySet, null, suppressEvents @@ -175,10 +175,10 @@ async function _loadSegments(extensionManager, segDisplaySet, headers) { return segments; } -function _segmentationExistsInCache(segDisplaySet, SegmentationService) { +function _segmentationExistsInCache(segDisplaySet, segmentationService) { // This should be abstracted with the CornerstoneCacheService const labelmapVolumeId = segDisplaySet.displaySetInstanceUID; - const segVolume = SegmentationService.getLabelmapVolume(labelmapVolumeId); + const segVolume = segmentationService.getLabelmapVolume(labelmapVolumeId); return segVolume !== undefined; } diff --git a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx index ff81fd12d..cbdcfbf6e 100644 --- a/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx +++ b/extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx @@ -11,11 +11,11 @@ export default function PanelSegmentation({ commandsManager, }) { const { - SegmentationService, - UIDialogService, - ViewportGridService, - ToolGroupService, - CornerstoneViewportService, + segmentationService, + uiDialogService, + viewportGridService, + toolGroupService, + cornerstoneViewportService, } = servicesManager.services; const { t } = useTranslation('PanelSegmentation'); @@ -23,10 +23,10 @@ export default function PanelSegmentation({ const [ initialSegmentationConfigurations, setInitialSegmentationConfigurations, - ] = useState(SegmentationService.getConfiguration()); + ] = useState(segmentationService.getConfiguration()); const [segmentations, setSegmentations] = useState(() => - SegmentationService.getSegmentations() + segmentationService.getSegmentations() ); const [isMinimized, setIsMinimized] = useState({}); @@ -54,14 +54,14 @@ export default function PanelSegmentation({ useEffect(() => { // ~~ Subscription - const added = SegmentationService.EVENTS.SEGMENTATION_ADDED; - const updated = SegmentationService.EVENTS.SEGMENTATION_UPDATED; - const removed = SegmentationService.EVENTS.SEGMENTATION_REMOVED; + const added = segmentationService.EVENTS.SEGMENTATION_ADDED; + const updated = segmentationService.EVENTS.SEGMENTATION_UPDATED; + const removed = segmentationService.EVENTS.SEGMENTATION_REMOVED; const subscriptions = []; [added, updated, removed].forEach(evt => { - const { unsubscribe } = SegmentationService.subscribe(evt, () => { - const segmentations = SegmentationService.getSegmentations(); + const { unsubscribe } = segmentationService.subscribe(evt, () => { + const segmentations = segmentationService.getSegmentations(); setSegmentations(segmentations); }); subscriptions.push(unsubscribe); @@ -75,15 +75,15 @@ export default function PanelSegmentation({ }, []); const onSegmentationClick = (segmentationId: string) => { - SegmentationService.setActiveSegmentationForToolGroup(segmentationId); + segmentationService.setActiveSegmentationForToolGroup(segmentationId); }; const onSegmentationDelete = (segmentationId: string) => { - SegmentationService.remove(segmentationId); + segmentationService.remove(segmentationId); }; const getToolGroupIds = segmentationId => { - const toolGroupIds = SegmentationService.getToolGroupIdsWithSegmentation( + const toolGroupIds = segmentationService.getToolGroupIdsWithSegmentation( segmentationId ); @@ -91,7 +91,7 @@ export default function PanelSegmentation({ }; const onSegmentClick = (segmentationId, segmentIndex) => { - SegmentationService.setActiveSegmentForSegmentation( + segmentationService.setActiveSegmentForSegmentation( segmentationId, segmentIndex ); @@ -100,11 +100,11 @@ export default function PanelSegmentation({ toolGroupIds.forEach(toolGroupId => { // const toolGroupId = - SegmentationService.setActiveSegmentationForToolGroup( + segmentationService.setActiveSegmentationForToolGroup( segmentationId, toolGroupId ); - SegmentationService.jumpToSegmentCenter( + segmentationService.jumpToSegmentCenter( segmentationId, segmentIndex, toolGroupId @@ -113,17 +113,17 @@ export default function PanelSegmentation({ }; const onSegmentEdit = (segmentationId, segmentIndex) => { - const segmentation = SegmentationService.getSegmentation(segmentationId); + const segmentation = segmentationService.getSegmentation(segmentationId); const segment = segmentation.segments[segmentIndex]; const { label } = segment; - callInputDialog(UIDialogService, label, (label, actionId) => { + callInputDialog(uiDialogService, label, (label, actionId) => { if (label === '') { return; } - SegmentationService.setSegmentLabelForSegmentation( + segmentationService.setSegmentLabelForSegmentation( segmentationId, segmentIndex, label @@ -132,15 +132,15 @@ export default function PanelSegmentation({ }; const onSegmentationEdit = segmentationId => { - const segmentation = SegmentationService.getSegmentation(segmentationId); + const segmentation = segmentationService.getSegmentation(segmentationId); const { label } = segmentation; - callInputDialog(UIDialogService, label, (label, actionId) => { + callInputDialog(uiDialogService, label, (label, actionId) => { if (label === '') { return; } - SegmentationService.addOrUpdateSegmentation( + segmentationService.addOrUpdateSegmentation( { id: segmentationId, label, @@ -157,7 +157,7 @@ export default function PanelSegmentation({ }; const onSegmentDelete = (segmentationId, segmentIndex) => { - // SegmentationService.removeSegmentFromSegmentation( + // segmentationService.removeSegmentFromSegmentation( // segmentationId, // segmentIndex // ); @@ -165,14 +165,14 @@ export default function PanelSegmentation({ }; const onToggleSegmentVisibility = (segmentationId, segmentIndex) => { - const segmentation = SegmentationService.getSegmentation(segmentationId); + const segmentation = segmentationService.getSegmentation(segmentationId); const segmentInfo = segmentation.segments[segmentIndex]; const isVisible = !segmentInfo.isVisible; const toolGroupIds = getToolGroupIds(segmentationId); // Todo: right now we apply the visibility to all tool groups toolGroupIds.forEach(toolGroupId => { - SegmentationService.setSegmentVisibility( + segmentationService.setSegmentVisibility( segmentationId, segmentIndex, isVisible, @@ -182,17 +182,17 @@ export default function PanelSegmentation({ }; const onToggleSegmentationVisibility = segmentationId => { - SegmentationService.toggleSegmentationVisibility(segmentationId); + segmentationService.toggleSegmentationVisibility(segmentationId); }; const setSegmentationConfiguration = useCallback( (segmentationId, key, value) => { - SegmentationService.setConfiguration({ + segmentationService.setConfiguration({ segmentationId, [key]: value, }); }, - [SegmentationService] + [segmentationService] ); return ( @@ -280,7 +280,7 @@ PanelSegmentation.propTypes = { }), servicesManager: PropTypes.shape({ services: PropTypes.shape({ - SegmentationService: PropTypes.shape({ + segmentationService: PropTypes.shape({ getSegmentation: PropTypes.func.isRequired, getSegmentations: PropTypes.func.isRequired, toggleSegmentationVisibility: PropTypes.func.isRequired, diff --git a/extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx b/extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx index 9ae8e5eb8..f8d521008 100644 --- a/extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx +++ b/extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Input, Dialog } from '@ohif/ui'; -function callInputDialog(UIDialogService, label, callback) { +function callInputDialog(uiDialogService, label, callback) { const dialogId = 'enter-segment-label'; const onSubmitHandler = ({ action, value }) => { @@ -13,11 +13,11 @@ function callInputDialog(UIDialogService, label, callback) { callback('', action.id); break; } - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); }; - if (UIDialogService) { - UIDialogService.create({ + if (uiDialogService) { + uiDialogService.create({ id: dialogId, centralize: true, isDraggable: false, @@ -27,7 +27,7 @@ function callInputDialog(UIDialogService, label, callback) { title: 'Enter Segment Label', value: { label }, noCloseButton: true, - onClose: () => UIDialogService.dismiss({ id: dialogId }), + onClose: () => uiDialogService.dismiss({ id: dialogId }), actions: [ { id: 'cancel', text: 'Cancel', type: 'primary' }, { id: 'save', text: 'Confirm', type: 'secondary' }, diff --git a/extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts b/extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts index c27439fcd..ac0f04892 100644 --- a/extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts +++ b/extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts @@ -5,9 +5,9 @@ async function _hydrateSEGDisplaySet({ servicesManager, }) { const { - SegmentationService, - HangingProtocolService, - ViewportGridService, + segmentationService, + hangingProtocolService, + viewportGridService, } = servicesManager.services; const displaySetInstanceUID = segDisplaySet.referencedDisplaySetInstanceUID; @@ -17,22 +17,22 @@ async function _hydrateSEGDisplaySet({ // We need the hydration to notify panels about the new segmentation added const suppressEvents = false; - segmentationId = await SegmentationService.createSegmentationForSEGDisplaySet( + segmentationId = await segmentationService.createSegmentationForSEGDisplaySet( segDisplaySet, segmentationId, suppressEvents ); - SegmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID); + segmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID); - const { viewports } = ViewportGridService.getState(); + const { viewports } = viewportGridService.getState(); - const updatedViewports = HangingProtocolService.getViewportsRequireUpdate( + const updatedViewports = hangingProtocolService.getViewportsRequireUpdate( viewportIndex, displaySetInstanceUID ); - ViewportGridService.setDisplaySetsForViewports(updatedViewports); + viewportGridService.setDisplaySetsForViewports(updatedViewports); // Todo: fix this after we have a better way for stack viewport segmentations @@ -45,13 +45,13 @@ async function _hydrateSEGDisplaySet({ return; } - const shouldDisplaySeg = SegmentationService.shouldRenderSegmentation( + const shouldDisplaySeg = segmentationService.shouldRenderSegmentation( viewport.displaySetInstanceUIDs, segDisplaySet.displaySetInstanceUID ); if (shouldDisplaySeg) { - ViewportGridService.setDisplaySetsForViewport({ + viewportGridService.setDisplaySetsForViewport({ viewportIndex: index, displaySetInstanceUIDs: viewport.displaySetInstanceUIDs, viewportOptions: { diff --git a/extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts b/extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts index e4c15df9b..fe114dbcd 100644 --- a/extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts +++ b/extensions/cornerstone-dicom-seg/src/utils/initSEGToolGroup.ts @@ -1,5 +1,5 @@ function createSEGToolGroupAndAddTools( - ToolGroupService, + toolGroupService, toolGroupId, extensionManager ) { @@ -28,7 +28,7 @@ function createSEGToolGroupAndAddTools( enabled: [{ toolName: toolNames.SegmentationDisplay }], }; - return ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, {}); + return toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, {}); } export default createSEGToolGroupAndAddTools; diff --git a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx index ad6376803..7644aa045 100644 --- a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx +++ b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx @@ -33,10 +33,10 @@ function OHIFCornerstoneSEGViewport(props) { const { t } = useTranslation('SEGViewport'); const { - DisplaySetService, - ToolGroupService, - SegmentationService, - UINotificationService, + displaySetService, + toolGroupService, + segmentationService, + uiNotificationService, } = servicesManager.services; const toolGroupId = `${SEG_TOOLGROUP_BASE_NAME}-${viewportIndex}`; @@ -127,7 +127,7 @@ function OHIFCornerstoneSEGViewport(props) { direction => { direction = direction === 'left' ? -1 : 1; const segmentationId = segDisplaySet.displaySetInstanceUID; - const segmentation = SegmentationService.getSegmentation(segmentationId); + const segmentation = segmentationService.getSegmentation(segmentationId); const { segments } = segmentation; @@ -141,7 +141,7 @@ function OHIFCornerstoneSEGViewport(props) { newSelectedSegmentIndex = numberOfSegments - 1; } - SegmentationService.jumpToSegmentCenter( + segmentationService.jumpToSegmentCenter( segmentationId, newSelectedSegmentIndex, toolGroupId @@ -168,8 +168,8 @@ function OHIFCornerstoneSEGViewport(props) { }, [servicesManager, viewportIndex, segDisplaySet, segIsLoading]); useEffect(() => { - const { unsubscribe } = SegmentationService.subscribe( - SegmentationService.EVENTS.SEGMENTATION_PIXEL_DATA_CREATED, + const { unsubscribe } = segmentationService.subscribe( + segmentationService.EVENTS.SEGMENTATION_PIXEL_DATA_CREATED, evt => { if ( evt.segDisplaySet.displaySetInstanceUID === @@ -179,7 +179,7 @@ function OHIFCornerstoneSEGViewport(props) { } if (evt.overlappingSegments) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Overlapping Segments', message: 'Overlapping segments detected which is not currently supported', @@ -195,8 +195,8 @@ function OHIFCornerstoneSEGViewport(props) { }, [segDisplaySet]); useEffect(() => { - const { unsubscribe } = SegmentationService.subscribe( - SegmentationService.EVENTS.SEGMENT_PIXEL_DATA_CREATED, + const { unsubscribe } = segmentationService.subscribe( + segmentationService.EVENTS.SEGMENT_PIXEL_DATA_CREATED, ({ segmentIndex, numSegments }) => { setProcessingProgress({ segmentIndex, @@ -214,8 +214,8 @@ function OHIFCornerstoneSEGViewport(props) { Cleanup the SEG viewport when the viewport is destroyed */ useEffect(() => { - const onDisplaySetsRemovedSubscription = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_REMOVED, + const onDisplaySetsRemovedSubscription = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_REMOVED, ({ displaySetInstanceUIDs }) => { const activeViewport = viewports[activeViewportIndex]; if ( @@ -235,14 +235,14 @@ function OHIFCornerstoneSEGViewport(props) { }, []); useEffect(() => { - let toolGroup = ToolGroupService.getToolGroup(toolGroupId); + let toolGroup = toolGroupService.getToolGroup(toolGroupId); if (toolGroup) { return; } toolGroup = createSEGToolGroupAndAddTools( - ToolGroupService, + toolGroupService, toolGroupId, extensionManager ); @@ -251,11 +251,11 @@ function OHIFCornerstoneSEGViewport(props) { return () => { // remove the segmentation representations if seg displayset changed - SegmentationService.removeSegmentationRepresentationFromToolGroup( + segmentationService.removeSegmentationRepresentationFromToolGroup( toolGroupId ); - ToolGroupService.destroyToolGroup(toolGroupId); + toolGroupService.destroyToolGroup(toolGroupId); }; }, []); @@ -264,7 +264,7 @@ function OHIFCornerstoneSEGViewport(props) { return () => { // remove the segmentation representations if seg displayset changed - SegmentationService.removeSegmentationRepresentationFromToolGroup( + segmentationService.removeSegmentationRepresentationFromToolGroup( toolGroupId ); referencedDisplaySetRef.current = null; diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 886f16648..c64a9a177 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -36,7 +36,7 @@ "@ohif/extension-cornerstone": "^3.0.0", "@ohif/extension-measurement-tracking": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", @@ -45,7 +45,7 @@ "dependencies": { "@babel/runtime": "7.16.3", "classnames": "^2.3.2", - "@cornerstonejs/core": "^0.27.1", - "@cornerstonejs/tools": "^0.36.3" + "@cornerstonejs/core": "0.30.1", + "@cornerstonejs/tools": "0.39.0" } } diff --git a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js index 7d40d11b6..7bc1e1fdf 100644 --- a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js @@ -119,7 +119,7 @@ function _getDisplaySetsFromSeries( } function _load(displaySet, servicesManager, extensionManager) { - const { DisplaySetService, MeasurementService } = servicesManager.services; + const { displaySetService, measurementService } = servicesManager.services; const dataSources = extensionManager.getDataSources(); const dataSource = dataSources[0]; @@ -128,7 +128,7 @@ function _load(displaySet, servicesManager, extensionManager) { displaySet.referencedImages = _getReferencedImagesList(ContentSequence); displaySet.measurements = _getMeasurements(ContentSequence); - const mappings = MeasurementService.getSourceMappings( + const mappings = measurementService.getSourceMappings( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); @@ -138,7 +138,7 @@ function _load(displaySet, servicesManager, extensionManager) { displaySet.isLoaded = true; // Check currently added displaySets and add measurements if the sources exist. - DisplaySetService.activeDisplaySets.forEach(activeDisplaySet => { + displaySetService.activeDisplaySets.forEach(activeDisplaySet => { _checkIfCanAddMeasurementsToDisplaySet( displaySet, activeDisplaySet, @@ -147,8 +147,8 @@ function _load(displaySet, servicesManager, extensionManager) { }); // Subscribe to new displaySets as the source may come in after. - DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_ADDED, + displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_ADDED, data => { const { displaySetsAdded } = data; // If there are still some measurements that have not yet been loaded into cornerstone, diff --git a/extensions/cornerstone-dicom-sr/src/onModeEnter.js b/extensions/cornerstone-dicom-sr/src/onModeEnter.js index fcd6d5407..61b6985ef 100644 --- a/extensions/cornerstone-dicom-sr/src/onModeEnter.js +++ b/extensions/cornerstone-dicom-sr/src/onModeEnter.js @@ -1,8 +1,8 @@ import { SOPClassHandlerId } from './id'; export default function onModeEnter({ servicesManager }) { - const { DisplaySetService } = servicesManager.services; - const displaySetCache = DisplaySetService.getDisplaySetCache(); + const { displaySetService } = servicesManager.services; + const displaySetCache = displaySetService.getDisplaySetCache(); const srDisplaySets = displaySetCache.filter( ds => ds.SOPClassHandlerId === SOPClassHandlerId diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts index 66b2a1e10..2500a2dc0 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts @@ -4,8 +4,8 @@ import { ArrowAnnotateTool } from '@cornerstonejs/tools'; * The reason we are extending ArrowAnnotateTool is to create a new tool for SR * viewport which basically has a different name. This is done since Cornerstone * has shifted from creating tool instances for each annotation, and we have ArrowAnnotate - * mappers at the MeasurementService, so if we didn't do this, we would be mapping - * the SR annotation to the MeasurementService (since there is a ArrowAnnotateTool mapper), + * mappers at the measurementService, so if we didn't do this, we would be mapping + * the SR annotation to the measurementService (since there is a ArrowAnnotateTool mapper), * but with extending and renaming it, there is not mapper for SRArrowAnnotateTool; hence * no mapping; hence no new measurement, just temporary ones for the SR viewport. */ diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts index 458f4b186..2b121d0d0 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts @@ -4,8 +4,8 @@ import { BidirectionalTool } from '@cornerstonejs/tools'; * The reason we are extending BidirectionalTool is to create a new tool for SR * viewport which basically has a different name. This is done since Cornerstone * has shifted from creating tool instances for each annotation, and we have Bidirectional - * mappers at the MeasurementService, so if we didn't do this, we would be mapping - * the SR annotation to the MeasurementService (since there is a BidirectionalTool mapper), + * mappers at the measurementService, so if we didn't do this, we would be mapping + * the SR annotation to the measurementService (since there is a BidirectionalTool mapper), * but with extending and renaming it, there is not mapper for SRBidirectionalTool; hence * no mapping; hence no new measurement, just temporary ones for the SR viewport. */ diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts index 08f0f7005..66d97da94 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts @@ -4,8 +4,8 @@ import { EllipticalROITool } from '@cornerstonejs/tools'; * The reason we are extending EllipticalROITool is to create a new tool for SR * viewport which basically has a different name. This is done since Cornerstone * has shifted from creating tool instances for each annotation, and we have EllipticalROI - * mappers at the MeasurementService, so if we didn't do this, we would be mapping - * the SR annotation to the MeasurementService (since there is a EllipticalROITool mapper), + * mappers at the measurementService, so if we didn't do this, we would be mapping + * the SR annotation to the measurementService (since there is a EllipticalROITool mapper), * but with extending and renaming it, there is not mapper for SREllipticalROITool; hence * no mapping; hence no new measurement, just temporary ones for the SR viewport. */ diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts index 62acba7c7..cc3c44de9 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts @@ -4,8 +4,8 @@ import { LengthTool } from '@cornerstonejs/tools'; * The reason we are extending LengthTool is to create a new tool for SR * viewport which basically has a different name. This is done since Cornerstone * has shifted from creating tool instances for each annotation, and we have Length - * mappers at the MeasurementService, so if we didn't do this, we would be mapping - * the SR annotation to the MeasurementService (since there is a LengthTool mapper), + * mappers at the measurementService, so if we didn't do this, we would be mapping + * the SR annotation to the measurementService (since there is a LengthTool mapper), * but with extending and renaming it, there is not mapper for SRLengthTool; hence * no mapping; hence no new measurement, just temporary ones for the SR viewport. */ diff --git a/extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js b/extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js index 77dc0ad75..18a2ad1f5 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js +++ b/extensions/cornerstone-dicom-sr/src/utils/getLabelFromDCMJSImportedToolData.js @@ -1,6 +1,6 @@ /** * Extracts the label from the toolData imported from dcmjs. We need to do this - * as dcmjs does not depeend on OHIF/the MeasurementService, it just produces data for cornestoneTools. + * as dcmjs does not depeend on OHIF/the measurementService, it just produces data for cornestoneTools. * This optional data is available for the consumer to process if they wish to. * @param {object} toolData The tooldata relating to the * diff --git a/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js index 758e666a0..bb1246e5c 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js +++ b/extensions/cornerstone-dicom-sr/src/utils/hydrateStructuredReport.js @@ -20,14 +20,14 @@ export default function hydrateStructuredReport( displaySetInstanceUID ) { const dataSource = extensionManager.getActiveDataSource()[0]; - const { MeasurementService, DisplaySetService } = servicesManager.services; + const { measurementService, displaySetService } = servicesManager.services; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); // TODO -> We should define a strict versioning somewhere. - const mappings = MeasurementService.getSourceMappings( + const mappings = measurementService.getSourceMappings( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); @@ -166,7 +166,7 @@ export default function hydrateStructuredReport( }, }; - const source = MeasurementService.getSource( + const source = measurementService.getSource( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); @@ -176,7 +176,7 @@ export default function hydrateStructuredReport( m => m.annotationType === annotationType ); - MeasurementService.addRawMeasurement( + measurementService.addRawMeasurement( source, annotationType, { annotation }, diff --git a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js index b167e0a8e..3474e3b11 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js +++ b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js @@ -6,11 +6,11 @@ const supportedLegacyCornerstoneTags = ['cornerstoneTools@^4.0.0']; const CORNERSTONE_3D_TAG = cornerstoneAdapters.CORNERSTONE_3D_TAG; /** - * Checks if the given `displaySet`can be rehydrated into the `MeasurementService`. + * Checks if the given `displaySet`can be rehydrated into the `measurementService`. * * @param {object} displaySet The SR `displaySet` to check. - * @param {object[]} mappings The CornerstoneTools 4 mappings to the `MeasurementService`. - * @returns {boolean} True if the SR can be rehydrated into the `MeasurementService`. + * @param {object[]} mappings The CornerstoneTools 4 mappings to the `measurementService`. + * @returns {boolean} True if the SR can be rehydrated into the `measurementService`. */ export default function isRehydratable(displaySet, mappings) { if (!mappings || !mappings.length) { @@ -30,7 +30,7 @@ export default function isRehydratable(displaySet, mappings) { adapterKeys.forEach(key => { if (mappingDefinitions.includes(key)) { - // Must have both a dcmjs adapter and a MeasurementService + // Must have both a dcmjs adapter and a measurementService // Definition in order to be a candidate for import. adapters.push(cornerstoneAdapters[key]); } diff --git a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx index e17d7dee7..8c788e5b9 100644 --- a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx @@ -36,9 +36,9 @@ function OHIFCornerstoneSRViewport(props) { const { t } = useTranslation('SRViewport'); const { - DisplaySetService, - CornerstoneViewportService, - MeasurementService, + displaySetService, + cornerstoneViewportService, + measurementService, } = servicesManager.services; // SR viewport will always have a single display set @@ -84,12 +84,12 @@ function OHIFCornerstoneSRViewport(props) { // if no panels from measurement-tracking extension is used, this code will run trackedMeasurements = null; sendTrackedMeasurementsEvent = (eventName, { displaySetInstanceUID }) => { - MeasurementService.clearMeasurements(); + measurementService.clearMeasurements(); const { SeriesInstanceUIDs } = hydrateStructuredReport( { servicesManager, extensionManager }, displaySetInstanceUID ); - const displaySets = DisplaySetService.getDisplaySetsForSeries( + const displaySets = displaySetService.getDisplaySetsForSeries( SeriesInstanceUIDs[0] ); if (displaySets.length) { @@ -152,7 +152,7 @@ function OHIFCornerstoneSRViewport(props) { _getViewportReferencedDisplaySetData( srDisplaySet, newMeasurementSelected, - DisplaySetService + displaySetService ).then(({ referencedDisplaySet, referencedDisplaySetMetadata }) => { setMeasurementSelected(newMeasurementSelected); setActiveImageDisplaySetData(referencedDisplaySet); @@ -166,13 +166,13 @@ function OHIFCornerstoneSRViewport(props) { // it means that we have a new referenced display set, and the // imageIdIndex will handle it by updating the viewport, but if they - // are the same we just need to use MeasurementService to jump to the + // are the same we just need to use measurementService to jump to the // new measurement - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); - const csViewport = CornerstoneViewportService.getCornerstoneViewport( + const csViewport = cornerstoneViewportService.getCornerstoneViewport( viewportInfo.getViewportId() ); @@ -259,8 +259,8 @@ function OHIFCornerstoneSRViewport(props) { Cleanup the SR viewport when the viewport is destroyed */ useEffect(() => { - const onDisplaySetsRemovedSubscription = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_REMOVED, + const onDisplaySetsRemovedSubscription = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_REMOVED, ({ displaySetInstanceUIDs }) => { const activeViewport = viewports[activeViewportIndex]; if ( @@ -432,14 +432,14 @@ OHIFCornerstoneSRViewport.defaultProps = { async function _getViewportReferencedDisplaySetData( displaySet, measurementSelected, - DisplaySetService + displaySetService ) { const { measurements } = displaySet; const measurement = measurements[measurementSelected]; const { displaySetInstanceUID } = measurement; - const referencedDisplaySet = DisplaySetService.getDisplaySetByUID( + const referencedDisplaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 651efa898..e296cab79 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -30,7 +30,7 @@ "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", "cornerstone-wado-image-loader": "^4.2.1", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", @@ -43,10 +43,10 @@ }, "dependencies": { "@babel/runtime": "7.17.9", - "@cornerstonejs/adapters": "^0.2.1", - "@cornerstonejs/core": "^0.27.1", + "@cornerstonejs/adapters": "0.3.0", + "@cornerstonejs/core": "0.30.1", "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", - "@cornerstonejs/tools": "^0.36.3", + "@cornerstonejs/tools": "0.39.0", "@kitware/vtk.js": "25.9.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx index 4525585fb..d150c44e0 100644 --- a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx +++ b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx @@ -116,14 +116,14 @@ const OHIFCornerstoneViewport = React.memo(props => { const elementRef = useRef(); const { - MeasurementService, - DisplaySetService, + measurementService, + displaySetService, toolbarService, - ToolGroupService, - SyncGroupService, - CornerstoneViewportService, - CornerstoneCacheService, - ViewportGridService, + toolGroupService, + syncGroupService, + cornerstoneViewportService, + cornerstoneCacheService, + viewportGridService, } = servicesManager.services; // useCallback for scroll bar height calculation @@ -135,13 +135,13 @@ const OHIFCornerstoneViewport = React.memo(props => { // useCallback for onResize const onResize = useCallback(() => { if (elementRef.current) { - CornerstoneViewportService.resize(); + cornerstoneViewportService.resize(); setImageScrollBarHeight(); } }, [elementRef]); const cleanUpServices = useCallback(() => { - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); @@ -153,9 +153,9 @@ const OHIFCornerstoneViewport = React.memo(props => { const renderingEngineId = viewportInfo.getRenderingEngineId(); const syncGroups = viewportInfo.getSyncGroups(); - ToolGroupService.removeViewportFromToolGroup(viewportId, renderingEngineId); + toolGroupService.removeViewportFromToolGroup(viewportId, renderingEngineId); - SyncGroupService.removeViewportFromSyncGroup( + syncGroupService.removeViewportFromSyncGroup( viewportId, renderingEngineId, syncGroups @@ -170,7 +170,7 @@ const OHIFCornerstoneViewport = React.memo(props => { } const { viewportId, element } = evt.detail; - const viewportInfo = CornerstoneViewportService.getViewportInfo( + const viewportInfo = cornerstoneViewportService.getViewportInfo( viewportId ); const viewportIndex = viewportInfo.getViewportIndex(); @@ -181,13 +181,13 @@ const OHIFCornerstoneViewport = React.memo(props => { const toolGroupId = viewportInfo.getToolGroupId(); const syncGroups = viewportInfo.getSyncGroups(); - ToolGroupService.addViewportToToolGroup( + toolGroupService.addViewportToToolGroup( viewportId, renderingEngineId, toolGroupId ); - SyncGroupService.addViewportToSyncGroup( + syncGroupService.addViewportToSyncGroup( viewportId, renderingEngineId, syncGroups @@ -197,12 +197,12 @@ const OHIFCornerstoneViewport = React.memo(props => { onElementEnabled(evt); } }, - [viewportIndex, onElementEnabled, ToolGroupService] + [viewportIndex, onElementEnabled, toolGroupService] ); // disable the element upon unmounting useEffect(() => { - CornerstoneViewportService.enableViewport( + cornerstoneViewportService.enableViewport( viewportIndex, viewportOptions, elementRef.current @@ -218,10 +218,10 @@ const OHIFCornerstoneViewport = React.memo(props => { return () => { cleanUpServices(); - CornerstoneViewportService.disableElement(viewportIndex); + cornerstoneViewportService.disableElement(viewportIndex); if (onElementDisabled) { - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); @@ -244,24 +244,24 @@ const OHIFCornerstoneViewport = React.memo(props => { // Note: this approach does not actually end of sending network requests // and it uses the network cache useEffect(() => { - const { unsubscribe } = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, + const { unsubscribe } = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SET_SERIES_METADATA_INVALIDATED, async invalidatedDisplaySetInstanceUID => { - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); if (viewportInfo.hasDisplaySet(invalidatedDisplaySetInstanceUID)) { const viewportData = viewportInfo.getViewportData(); - const newViewportData = await CornerstoneCacheService.invalidateViewportData( + const newViewportData = await cornerstoneCacheService.invalidateViewportData( viewportData, invalidatedDisplaySetInstanceUID, dataSource, - DisplaySetService + displaySetService ); const keepCamera = true; - CornerstoneViewportService.updateViewport( + cornerstoneViewportService.updateViewport( viewportIndex, newViewportData, keepCamera @@ -281,14 +281,14 @@ const OHIFCornerstoneViewport = React.memo(props => { } const loadViewportData = async () => { - const viewportData = await CornerstoneCacheService.createViewportData( + const viewportData = await cornerstoneCacheService.createViewportData( displaySets, viewportOptions, dataSource, initialImageIndex ); - CornerstoneViewportService.setViewportData( + cornerstoneViewportService.setViewportData( viewportIndex, viewportData, viewportOptions, @@ -311,23 +311,23 @@ const OHIFCornerstoneViewport = React.memo(props => { */ useEffect(() => { const unsubscribeFromJumpToMeasurementEvents = _subscribeToJumpToMeasurementEvents( - MeasurementService, - DisplaySetService, + measurementService, + displaySetService, elementRef, viewportIndex, displaySets, - ViewportGridService, - CornerstoneViewportService + viewportGridService, + cornerstoneViewportService ); _checkForCachedJumpToMeasurementEvents( - MeasurementService, - DisplaySetService, + measurementService, + displaySetService, elementRef, viewportIndex, displaySets, - ViewportGridService, - CornerstoneViewportService + viewportGridService, + cornerstoneViewportService ); return () => { @@ -365,19 +365,19 @@ const OHIFCornerstoneViewport = React.memo(props => { }, areEqual); function _subscribeToJumpToMeasurementEvents( - MeasurementService, - DisplaySetService, + measurementService, + displaySetService, elementRef, viewportIndex, displaySets, - ViewportGridService, - CornerstoneViewportService + viewportGridService, + cornerstoneViewportService ) { const displaysUIDs = displaySets.map( displaySet => displaySet.displaySetInstanceUID ); - const { unsubscribe } = MeasurementService.subscribe( - MeasurementService.EVENTS.JUMP_TO_MEASUREMENT, + const { unsubscribe } = measurementService.subscribe( + measurementService.EVENTS.JUMP_TO_MEASUREMENT, ({ measurement }) => { if (!measurement) return; @@ -387,10 +387,10 @@ function _subscribeToJumpToMeasurementEvents( measurement, elementRef, viewportIndex, - MeasurementService, - DisplaySetService, - ViewportGridService, - CornerstoneViewportService + measurementService, + displaySetService, + viewportGridService, + cornerstoneViewportService ); } } @@ -401,25 +401,25 @@ function _subscribeToJumpToMeasurementEvents( // Check if there is a queued jumpToMeasurement event function _checkForCachedJumpToMeasurementEvents( - MeasurementService, - DisplaySetService, + measurementService, + displaySetService, elementRef, viewportIndex, displaySets, - ViewportGridService, - CornerstoneViewportService + viewportGridService, + cornerstoneViewportService ) { const displaysUIDs = displaySets.map( displaySet => displaySet.displaySetInstanceUID ); - const measurementIdToJumpTo = MeasurementService.getJumpToMeasurement( + const measurementIdToJumpTo = measurementService.getJumpToMeasurement( viewportIndex ); if (measurementIdToJumpTo && elementRef) { // Jump to measurement if the measurement exists - const measurement = MeasurementService.getMeasurement( + const measurement = measurementService.getMeasurement( measurementIdToJumpTo ); @@ -428,10 +428,10 @@ function _checkForCachedJumpToMeasurementEvents( measurement, elementRef, viewportIndex, - MeasurementService, - DisplaySetService, - ViewportGridService, - CornerstoneViewportService + measurementService, + displaySetService, + viewportGridService, + cornerstoneViewportService ); } } @@ -441,10 +441,10 @@ function _jumpToMeasurement( measurement, targetElementRef, viewportIndex, - MeasurementService, - DisplaySetService, - ViewportGridService, - CornerstoneViewportService + measurementService, + displaySetService, + viewportGridService, + cornerstoneViewportService ) { const targetElement = targetElementRef.current; const { displaySetInstanceUID, SOPInstanceUID, frameNumber } = measurement; @@ -453,7 +453,7 @@ function _jumpToMeasurement( console.warn('cannot jump in a non-acquisition plane measurements yet'); } - const referencedDisplaySet = DisplaySetService.getDisplaySetByUID( + const referencedDisplaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -461,11 +461,11 @@ function _jumpToMeasurement( // to set it properly // setCornerstoneMeasurementActive(measurement); - ViewportGridService.setActiveViewportIndex(viewportIndex); + viewportGridService.setActiveViewportIndex(viewportIndex); const enableElement = getEnabledElement(targetElement); - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); @@ -520,7 +520,7 @@ function _jumpToMeasurement( cs3DTools.annotation.selection.setAnnotationSelected(measurement.uid); // Jump to measurement consumed, remove. - MeasurementService.removeJumpToMeasurement(viewportIndex); + measurementService.removeJumpToMeasurement(viewportIndex); } } diff --git a/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx b/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx index 92e88d4f5..160b6b294 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx @@ -7,7 +7,7 @@ import ViewportImageSliceLoadingIndicator from './ViewportImageSliceLoadingIndic function CornerstoneOverlays(props) { const { viewportIndex, element, scrollbarHeight, servicesManager } = props; - const { CornerstoneViewportService } = servicesManager.services; + const { cornerstoneViewportService } = servicesManager.services; const [imageSliceData, setImageSliceData] = useState({ imageIndex: 0, numberOfSlices: 0, @@ -15,8 +15,8 @@ function CornerstoneOverlays(props) { const [viewportData, setViewportData] = useState(null); useEffect(() => { - const { unsubscribe } = CornerstoneViewportService.subscribe( - CornerstoneViewportService.EVENTS.VIEWPORT_DATA_CHANGED, + const { unsubscribe } = cornerstoneViewportService.subscribe( + cornerstoneViewportService.EVENTS.VIEWPORT_DATA_CHANGED, props => { if (props.viewportIndex !== viewportIndex) { return; @@ -36,7 +36,7 @@ function CornerstoneOverlays(props) { } if (viewportData) { - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); diff --git a/extensions/cornerstone/src/Viewport/Overlays/ViewportImageScrollbar.tsx b/extensions/cornerstone/src/Viewport/Overlays/ViewportImageScrollbar.tsx index 7a3658c15..074e0a969 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/ViewportImageScrollbar.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/ViewportImageScrollbar.tsx @@ -16,16 +16,16 @@ function CornerstoneImageScrollbar({ }) { const { cineService, - CornerstoneViewportService, + cornerstoneViewportService, } = (servicesManager as ServicesManger).services; const onImageScrollbarChange = (imageIndex, viewportIndex) => { - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); const viewportId = viewportInfo.getViewportId(); - const viewport = CornerstoneViewportService.getCornerstoneViewport( + const viewport = cornerstoneViewportService.getCornerstoneViewport( viewportId ); @@ -48,7 +48,7 @@ function CornerstoneImageScrollbar({ return; } - const viewport = CornerstoneViewportService.getCornerstoneViewportByIndex( + const viewport = cornerstoneViewportService.getCornerstoneViewportByIndex( viewportIndex ); diff --git a/extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.tsx b/extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.tsx index 2f912c9ce..c974bce45 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/ViewportOrientationMarkers.tsx @@ -30,7 +30,7 @@ function ViewportOrientationMarkers({ const [rotation, setRotation] = useState(0); const [flipHorizontal, setFlipHorizontal] = useState(false); const [flipVertical, setFlipVertical] = useState(false); - const { CornerstoneViewportService } = servicesManager.services; + const { cornerstoneViewportService } = servicesManager.services; useEffect(() => { const cameraModifiedListener = ( @@ -114,7 +114,7 @@ function ViewportOrientationMarkers({ flipHorizontal ); - const ohifViewport = CornerstoneViewportService.getViewportInfoByIndex( + const ohifViewport = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); diff --git a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx index 8314b269f..b9e542b94 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx @@ -15,7 +15,7 @@ function CornerstoneViewportOverlay({ servicesManager, }) { const { - CornerstoneViewportService, + cornerstoneViewportService, toolbarService, } = servicesManager.services; const [voi, setVOI] = useState({ windowCenter: null, windowWidth: null }); @@ -86,7 +86,7 @@ function CornerstoneViewportOverlay({ previousCamera.parallelScale !== camera.parallelScale || previousCamera.scale !== camera.scale ) { - const viewport = CornerstoneViewportService.getCornerstoneViewportByIndex( + const viewport = cornerstoneViewportService.getCornerstoneViewportByIndex( viewportIndex ); @@ -169,7 +169,7 @@ function CornerstoneViewportOverlay({ viewportData, imageIndex, viewportIndex, - CornerstoneViewportService + cornerstoneViewportService ); } @@ -189,7 +189,7 @@ function CornerstoneViewportOverlay({ return null; } - const ohifViewport = CornerstoneViewportService.getViewportInfoByIndex( + const ohifViewport = cornerstoneViewportService.getViewportInfoByIndex( viewportIndex ); @@ -241,7 +241,7 @@ function _getInstanceNumberFromVolume( viewportData, imageIndex, viewportIndex, - CornerstoneViewportService + cornerstoneViewportService ) { const volumes = viewportData.volumes; @@ -253,7 +253,7 @@ function _getInstanceNumberFromVolume( const volume = volumes[0]; const { direction, imageIds } = volume; - const cornerstoneViewport = CornerstoneViewportService.getCornerstoneViewportByIndex( + const cornerstoneViewport = cornerstoneViewportService.getCornerstoneViewportByIndex( viewportIndex ); @@ -288,7 +288,7 @@ CornerstoneViewportOverlay.propTypes = { viewportData: PropTypes.object, imageIndex: PropTypes.number, viewportIndex: PropTypes.number, - servicesManager: ServicesManager, + servicesManager: PropTypes.instanceOf(ServicesManager), }; export default CornerstoneViewportOverlay; diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index ed19e95b4..c0462af51 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -21,18 +21,18 @@ import toggleStackImageSync from './utils/stackSync/toggleStackImageSync'; const commandsModule = ({ servicesManager }) => { const { - ViewportGridService, - ToolGroupService, + viewportGridService, + toolGroupService, cineService, toolbarService, - UIDialogService, - CornerstoneViewportService, - HangingProtocolService, - UINotificationService, + uiDialogService, + cornerstoneViewportService, + hangingProtocolService, + uiNotificationService, } = (servicesManager as ServicesManager).services; function _getActiveViewportEnabledElement() { - const { activeViewportIndex } = ViewportGridService.getState(); + const { activeViewportIndex } = viewportGridService.getState(); const { element } = OHIFgetEnabledElement(activeViewportIndex) || {}; const enabledElement = getEnabledElement(element); return enabledElement; @@ -68,7 +68,7 @@ const commandsModule = ({ servicesManager }) => { toolGroupIdToUse = toolGroup.id; } - const toolGroup = ToolGroupService.getToolGroup(toolGroupIdToUse); + const toolGroup = toolGroupService.getToolGroup(toolGroupIdToUse); return toolGroup; } @@ -77,7 +77,7 @@ const commandsModule = ({ servicesManager }) => { return _getActiveViewportEnabledElement(); }, setViewportActive: ({ viewportId }) => { - const viewportInfo = CornerstoneViewportService.getViewportInfo( + const viewportInfo = cornerstoneViewportService.getViewportInfo( viewportId ); if (!viewportInfo) { @@ -86,13 +86,13 @@ const commandsModule = ({ servicesManager }) => { } const viewportIndex = viewportInfo.getViewportIndex(); - ViewportGridService.setActiveViewportIndex(viewportIndex); + viewportGridService.setActiveViewportIndex(viewportIndex); }, arrowTextCallback: ({ callback, data }) => { - callInputDialog(UIDialogService, data, callback); + callInputDialog(uiDialogService, data, callback); }, toggleCine: () => { - const { viewports } = ViewportGridService.getState(); + const { viewports } = viewportGridService.getState(); const { isCineEnabled } = cineService.getState(); cineService.setIsCineEnabled(!isCineEnabled); toolbarService.setButton('Cine', { props: { isActive: !isCineEnabled } }); @@ -106,7 +106,7 @@ const commandsModule = ({ servicesManager }) => { const windowCenterNum = Number(level); const { viewportId } = _getActiveViewportEnabledElement(); - const viewportToolGroupId = ToolGroupService.getToolGroupForViewport( + const viewportToolGroupId = toolGroupService.getToolGroupForViewport( viewportId ); @@ -115,7 +115,7 @@ const commandsModule = ({ servicesManager }) => { } // get actor from the viewport - const renderingEngine = CornerstoneViewportService.getRenderingEngine(); + const renderingEngine = cornerstoneViewportService.getRenderingEngine(); const viewport = renderingEngine.getViewport(viewportId); const { lower, upper } = csUtils.windowLevel.toLowHighRange( @@ -136,7 +136,7 @@ const commandsModule = ({ servicesManager }) => { const activeViewportToolGroup = _getToolGroup(null); if (!activeViewportToolGroup._toolInstances.Crosshairs) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Crosshairs', message: 'You need to be in a MPR view to use Crosshairs. Click on MPR button in the toolbar to activate it.', @@ -148,7 +148,7 @@ const commandsModule = ({ servicesManager }) => { } } - const { viewports } = ViewportGridService.getState() || { + const { viewports } = viewportGridService.getState() || { viewports: [], }; @@ -195,7 +195,7 @@ const commandsModule = ({ servicesManager }) => { }); }, showDownloadViewportModal: () => { - const { activeViewportIndex } = ViewportGridService.getState(); + const { activeViewportIndex } = viewportGridService.getState(); const { UIModalService } = servicesManager.services; if (UIModalService) { @@ -205,7 +205,7 @@ const commandsModule = ({ servicesManager }) => { contentProps: { activeViewportIndex, onClose: UIModalService.hide, - CornerstoneViewportService, + cornerstoneViewportService, }, }); } @@ -378,7 +378,7 @@ const commandsModule = ({ servicesManager }) => { colormap, immediate = false, }) => { - const viewport = CornerstoneViewportService.getCornerstoneViewportByIndex( + const viewport = cornerstoneViewportService.getCornerstoneViewportByIndex( viewportIndex ); @@ -397,18 +397,18 @@ const commandsModule = ({ servicesManager }) => { } }, incrementActiveViewport: () => { - const { activeViewportIndex, viewports } = ViewportGridService.getState(); + const { activeViewportIndex, viewports } = viewportGridService.getState(); const nextViewportIndex = (activeViewportIndex + 1) % viewports.length; - ViewportGridService.setActiveViewportIndex(nextViewportIndex); + viewportGridService.setActiveViewportIndex(nextViewportIndex); }, decrementActiveViewport: () => { - const { activeViewportIndex, viewports } = ViewportGridService.getState(); + const { activeViewportIndex, viewports } = viewportGridService.getState(); const nextViewportIndex = (activeViewportIndex - 1 + viewports.length) % viewports.length; - ViewportGridService.setActiveViewportIndex(nextViewportIndex); + viewportGridService.setActiveViewportIndex(nextViewportIndex); }, setHangingProtocol: ({ protocolId }) => { - HangingProtocolService.setProtocol(protocolId); + hangingProtocolService.setProtocol(protocolId); }, toggleMPR: ({ toggledState }) => { toggleMPRHangingProtocol({ @@ -425,13 +425,13 @@ const commandsModule = ({ servicesManager }) => { }); }, toggleReferenceLines: ({ toggledState }) => { - const { activeViewportIndex } = ViewportGridService.getState(); - const viewportInfo = CornerstoneViewportService.getViewportInfoByIndex( + const { activeViewportIndex } = viewportGridService.getState(); + const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( activeViewportIndex ); const viewportId = viewportInfo.getViewportId(); - const toolGroup = ToolGroupService.getToolGroupForViewport(viewportId); + const toolGroup = toolGroupService.getToolGroupForViewport(viewportId); if (!toggledState) { toolGroup.setToolDisabled(ReferenceLinesTool.toolName); diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx index 27a524311..a3ebc57c2 100644 --- a/extensions/cornerstone/src/index.tsx +++ b/extensions/cornerstone/src/index.tsx @@ -7,6 +7,8 @@ import { imageRetrievalPoolManager, } from '@cornerstonejs/core'; import { Enums as cs3DToolsEnums } from '@cornerstonejs/tools'; +import { Types } from '@ohif/core'; + import init from './init'; import commandsModule from './commandsModule'; import getHangingProtocolModule from './getHangingProtocolModule'; @@ -41,7 +43,7 @@ const OHIFCornerstoneViewport = props => { /** * */ -const cornerstoneExtension = { +const cornerstoneExtension: Types.Extensions.Extension = { /** * Only required property. Should be a unique value across all extensions. */ @@ -71,13 +73,18 @@ const cornerstoneExtension = { configuration = {}, appConfig, }) { + // Todo: we should be consistent with how services get registered. Use REGISTRATION static method for all servicesManager.registerService( CornerstoneViewportService(servicesManager) ); - servicesManager.registerService(ToolGroupService(servicesManager)); + servicesManager.registerService( + ToolGroupService.REGISTRATION(servicesManager) + ); servicesManager.registerService(SyncGroupService(servicesManager)); servicesManager.registerService(SegmentationService(servicesManager)); - servicesManager.registerService(CornerstoneCacheService(servicesManager)); + servicesManager.registerService( + CornerstoneCacheService.REGISTRATION(servicesManager) + ); await init({ servicesManager, commandsManager, configuration, appConfig }); }, diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index b50a5c78c..a374935ef 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -63,22 +63,22 @@ export default async function init({ const { UserAuthenticationService, - MeasurementService, - DisplaySetService, - UIDialogService, + measurementService, + displaySetService, + uiDialogService, UIModalService, - UINotificationService, + uiNotificationService, cineService, - CornerstoneViewportService, - HangingProtocolService, - ToolGroupService, - ViewportGridService, + cornerstoneViewportService, + hangingProtocolService, + toolGroupService, + viewportGridService, } = servicesManager.services; window.services = servicesManager.services; if (!window.crossOriginIsolated) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Cross Origin Isolation', message: 'Cross Origin Isolation is not enabled, volume rendering will not work (e.g., MPR)', @@ -87,7 +87,7 @@ export default async function init({ } if (cornerstone.getShouldUseCPURendering()) { - _showCPURenderingModal(UIModalService, HangingProtocolService); + _showCPURenderingModal(UIModalService, hangingProtocolService); } const labelmapRepresentation = @@ -110,15 +110,15 @@ export default async function init({ cornerstoneStreamingImageVolumeLoader ); - HangingProtocolService.registerImageLoadStrategy( + hangingProtocolService.registerImageLoadStrategy( 'interleaveCenter', interleaveCenterLoader ); - HangingProtocolService.registerImageLoadStrategy( + hangingProtocolService.registerImageLoadStrategy( 'interleaveTopToBottom', interleaveTopToBottom ); - HangingProtocolService.registerImageLoadStrategy('nth', nthLoader); + hangingProtocolService.registerImageLoadStrategy('nth', nthLoader); metaData.addProvider(metadataProvider.get.bind(metadataProvider), 9999); @@ -132,9 +132,9 @@ export default async function init({ /* Measurement Service */ const measurementServiceSource = connectToolsToMeasurementService( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ); initCineService(cineService); @@ -145,7 +145,7 @@ export default async function init({ }); const onRightClick = event => { - if (!UIDialogService) { + if (!uiDialogService) { console.warn('Unable to show dialog; no UI Dialog Service available.'); return; } @@ -172,15 +172,15 @@ export default async function init({ CONTEXT_MENU_OPEN = true; - UIDialogService.dismiss({ id: 'context-menu' }); - UIDialogService.create({ + uiDialogService.dismiss({ id: 'context-menu' }); + uiDialogService.create({ id: 'context-menu', isDraggable: false, preservePosition: false, defaultPosition: _getDefaultPosition(event.detail), content: ContextMenuMeasurements, onClickOutside: () => { - UIDialogService.dismiss({ id: 'context-menu' }); + uiDialogService.dismiss({ id: 'context-menu' }); CONTEXT_MENU_OPEN = false; }, contentProps: { @@ -200,15 +200,15 @@ export default async function init({ }, onClose: () => { CONTEXT_MENU_OPEN = false; - UIDialogService.dismiss({ id: 'context-menu' }); + uiDialogService.dismiss({ id: 'context-menu' }); }, onSetLabel: item => { const { annotationUID } = item.value; - const measurement = MeasurementService.getMeasurement(annotationUID); + const measurement = measurementService.getMeasurement(annotationUID); callInputDialog( - UIDialogService, + uiDialogService, measurement, (label, actionId) => { if (actionId === 'cancel') { @@ -219,7 +219,7 @@ export default async function init({ label, }); - MeasurementService.update( + measurementService.update( updatedMeasurement.uid, updatedMeasurement, true @@ -235,27 +235,27 @@ export default async function init({ }; const resetContextMenu = () => { - if (!UIDialogService) { + if (!uiDialogService) { console.warn('Unable to show dialog; no UI Dialog Service available.'); return; } CONTEXT_MENU_OPEN = false; - UIDialogService.dismiss({ id: 'context-menu' }); + uiDialogService.dismiss({ id: 'context-menu' }); }; // When a custom image load is performed, update the relevant viewports - HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.CUSTOM_IMAGE_LOAD_PERFORMED, + hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.CUSTOM_IMAGE_LOAD_PERFORMED, volumeInputArrayMap => { for (const entry of volumeInputArrayMap.entries()) { const [viewportId, volumeInputArray] = entry; - const viewport = CornerstoneViewportService.getCornerstoneViewport( + const viewport = cornerstoneViewportService.getCornerstoneViewport( viewportId ); - CornerstoneViewportService.setVolumesForViewport( + cornerstoneViewportService.setVolumesForViewport( viewport, volumeInputArray ); @@ -356,11 +356,11 @@ export default async function init({ elementDisabledHandler.bind(null) ); - ViewportGridService.subscribe( - ViewportGridService.EVENTS.ACTIVE_VIEWPORT_INDEX_CHANGED, + viewportGridService.subscribe( + viewportGridService.EVENTS.ACTIVE_VIEWPORT_INDEX_CHANGED, ({ viewportIndex }) => { const viewportId = `viewport-${viewportIndex}`; - const toolGroup = ToolGroupService.getToolGroupForViewport(viewportId); + const toolGroup = toolGroupService.getToolGroupForViewport(viewportId); if (!toolGroup || !toolGroup._toolInstances?.['ReferenceLines']) { return; @@ -403,7 +403,7 @@ function CPUModal() { ); } -function _showCPURenderingModal(UIModalService, HangingProtocolService) { +function _showCPURenderingModal(UIModalService, hangingProtocolService) { const callback = progress => { if (progress === 100) { UIModalService.show({ @@ -415,8 +415,8 @@ function _showCPURenderingModal(UIModalService, HangingProtocolService) { } }; - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.HANGING_PROTOCOL_APPLIED_FOR_VIEWPORT, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.HANGING_PROTOCOL_APPLIED_FOR_VIEWPORT, ({ progress }) => { const done = callback(progress); diff --git a/extensions/cornerstone/src/initMeasurementService.js b/extensions/cornerstone/src/initMeasurementService.js index cb143c38f..8a0d492bc 100644 --- a/extensions/cornerstone/src/initMeasurementService.js +++ b/extensions/cornerstone/src/initMeasurementService.js @@ -13,9 +13,9 @@ const CORNERSTONE_3D_TOOLS_SOURCE_NAME = 'Cornerstone3DTools'; const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1'; const initMeasurementService = ( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ) => { /* Initialization */ const { @@ -24,17 +24,17 @@ const initMeasurementService = ( EllipticalROI, ArrowAnnotate, } = measurementServiceMappingsFactory( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ); - const csTools3DVer1MeasurementSource = MeasurementService.createSource( + const csTools3DVer1MeasurementSource = measurementService.createSource( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); /* Mappings */ - MeasurementService.addMapping( + measurementService.addMapping( csTools3DVer1MeasurementSource, 'Length', Length.matchingCriteria, @@ -42,7 +42,7 @@ const initMeasurementService = ( Length.toMeasurement ); - MeasurementService.addMapping( + measurementService.addMapping( csTools3DVer1MeasurementSource, 'Bidirectional', Bidirectional.matchingCriteria, @@ -50,7 +50,7 @@ const initMeasurementService = ( Bidirectional.toMeasurement ); - MeasurementService.addMapping( + measurementService.addMapping( csTools3DVer1MeasurementSource, 'EllipticalROI', EllipticalROI.matchingCriteria, @@ -58,7 +58,7 @@ const initMeasurementService = ( EllipticalROI.toMeasurement ); - MeasurementService.addMapping( + measurementService.addMapping( csTools3DVer1MeasurementSource, 'ArrowAnnotate', ArrowAnnotate.matchingCriteria, @@ -70,18 +70,18 @@ const initMeasurementService = ( }; const connectToolsToMeasurementService = ( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ) => { const csTools3DVer1MeasurementSource = initMeasurementService( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ); connectMeasurementServiceToTools( - MeasurementService, - CornerstoneViewportService, + measurementService, + cornerstoneViewportService, csTools3DVer1MeasurementSource ); const { annotationToMeasurement, remove } = csTools3DVer1MeasurementSource; @@ -113,7 +113,7 @@ const connectToolsToMeasurementService = ( } = annotationModifiedEventDetail; // If the measurement hasn't been added, don't modify it - const measurement = MeasurementService.getMeasurement(annotationUID); + const measurement = measurementService.getMeasurement(annotationUID); if (!measurement) { return; @@ -138,13 +138,13 @@ const connectToolsToMeasurementService = ( if (removedSelectedAnnotationUIDs) { removedSelectedAnnotationUIDs.forEach(annotationUID => - MeasurementService.setMeasurementSelected(annotationUID, false) + measurementService.setMeasurementSelected(annotationUID, false) ); } if (addedSelectedAnnotationUIDs) { addedSelectedAnnotationUIDs.forEach(annotationUID => - MeasurementService.setMeasurementSelected(annotationUID, true) + measurementService.setMeasurementSelected(annotationUID, true) ); } } catch (error) { @@ -166,7 +166,7 @@ const connectToolsToMeasurementService = ( annotation: { annotationUID }, } = annotationRemovedEventDetail; - const measurement = MeasurementService.getMeasurement(annotationUID); + const measurement = measurementService.getMeasurement(annotationUID); if (measurement) { console.log('~~ removeEvt', csToolsEvent); @@ -198,8 +198,8 @@ const connectToolsToMeasurementService = ( }; const connectMeasurementServiceToTools = ( - MeasurementService, - CornerstoneViewportService, + measurementService, + cornerstoneViewportService, measurementSource ) => { const { @@ -207,14 +207,14 @@ const connectMeasurementServiceToTools = ( MEASUREMENTS_CLEARED, MEASUREMENT_UPDATED, RAW_MEASUREMENT_ADDED, - } = MeasurementService.EVENTS; + } = measurementService.EVENTS; - const csTools3DVer1MeasurementSource = MeasurementService.getSource( + const csTools3DVer1MeasurementSource = measurementService.getSource( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); - MeasurementService.subscribe(MEASUREMENTS_CLEARED, ({ measurements }) => { + measurementService.subscribe(MEASUREMENTS_CLEARED, ({ measurements }) => { if (!Object.keys(measurements).length) { return; } @@ -229,7 +229,7 @@ const connectMeasurementServiceToTools = ( } }); - MeasurementService.subscribe( + measurementService.subscribe( MEASUREMENT_UPDATED, ({ source, measurement, notYetUpdatedAtSource }) => { if (source.name !== CORNERSTONE_3D_TOOLS_SOURCE_NAME) { @@ -263,7 +263,7 @@ const connectMeasurementServiceToTools = ( } ); - MeasurementService.subscribe( + measurementService.subscribe( RAW_MEASUREMENT_ADDED, ({ source, measurement, data, dataSource }) => { if (source.name !== CORNERSTONE_3D_TOOLS_SOURCE_NAME) { @@ -316,14 +316,14 @@ const connectMeasurementServiceToTools = ( } ); - MeasurementService.subscribe( + measurementService.subscribe( MEASUREMENT_REMOVED, ({ source, measurement: removedMeasurementId }) => { if (source?.name && source.name !== CORNERSTONE_3D_TOOLS_SOURCE_NAME) { return; } removeAnnotation(removedMeasurementId); - const renderingEngine = CornerstoneViewportService.getRenderingEngine(); + const renderingEngine = cornerstoneViewportService.getRenderingEngine(); // Note: We could do a better job by triggering the render on the // viewport itself, but the removeAnnotation does not include that info... renderingEngine.render(); diff --git a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts index 4370bb956..c3475491d 100644 --- a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts +++ b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts @@ -1,5 +1,5 @@ +import { ServicesManager } from '@ohif/core'; import { cache as cs3DCache, Enums, volumeLoader } from '@cornerstonejs/core'; -import { utils } from '@ohif/core'; import getCornerstoneViewportType from '../../utils/getCornerstoneViewportType'; import { @@ -10,6 +10,16 @@ import { const VOLUME_LOADER_SCHEME = 'cornerstoneStreamingImageVolume'; class CornerstoneCacheService { + static REGISTRATION = (serviceManager: ServicesManager) => { + return { + name: 'cornerstoneCacheService', + altName: 'CornerstoneCacheService', + create: ({ configuration = {} }) => { + return new CornerstoneCacheService(serviceManager); + }, + }; + }; + stackImageIds: Map = new Map(); volumeImageIds: Map = new Map(); @@ -69,7 +79,7 @@ class CornerstoneCacheService { viewportData: VolumeViewportData, invalidatedDisplaySetInstanceUID: string, dataSource, - DisplaySetService + displaySetService ) { if (viewportData.viewportType === Enums.ViewportType.STACK) { throw new Error('Invalidation of StackViewport is not supported yet'); @@ -85,7 +95,7 @@ class CornerstoneCacheService { } const displaySets = viewportData.data.map(({ displaySetInstanceUID }) => - DisplaySetService.getDisplaySetByUID(displaySetInstanceUID) + displaySetService.getDisplaySetByUID(displaySetInstanceUID) ); const newViewportData = await this._getVolumeViewportData( @@ -203,7 +213,7 @@ class CornerstoneCacheService { } private _shouldRenderSegmentation(displaySets) { - const { SegmentationService } = this.servicesManager.services; + const { segmentationService } = this.servicesManager.services; const viewportDisplaySetInstanceUIDs = displaySets.map( ({ displaySetInstanceUID }) => displaySetInstanceUID @@ -211,12 +221,12 @@ class CornerstoneCacheService { // check inside segmentations if any of them are referencing the displaySets // that are about to be displayed - const segmentations = SegmentationService.getSegmentations(); + const segmentations = segmentationService.getSegmentations(); for (const segmentation of segmentations) { const segDisplaySetInstanceUID = segmentation.displaySetInstanceUID; - const shouldDisplaySeg = SegmentationService.shouldRenderSegmentation( + const shouldDisplaySeg = segmentationService.shouldRenderSegmentation( viewportDisplaySetInstanceUIDs, segDisplaySetInstanceUID ); diff --git a/extensions/cornerstone/src/services/CornerstoneCacheService/index.js b/extensions/cornerstone/src/services/CornerstoneCacheService/index.js index 4386dcdde..39b5a1e56 100644 --- a/extensions/cornerstone/src/services/CornerstoneCacheService/index.js +++ b/extensions/cornerstone/src/services/CornerstoneCacheService/index.js @@ -1,10 +1,3 @@ import CornerstoneCacheService from './CornerstoneCacheService'; -export default function ExtendedCornerstoneCacheService(serviceManager) { - return { - name: 'CornerstoneCacheService', - create: ({ configuration = {} }) => { - return new CornerstoneCacheService(serviceManager); - }, - }; -} +export default CornerstoneCacheService; diff --git a/extensions/cornerstone/src/services/SegmentationService/SegmentationService.ts b/extensions/cornerstone/src/services/SegmentationService/SegmentationService.ts index 54b88c2ae..56ff73781 100644 --- a/extensions/cornerstone/src/services/SegmentationService/SegmentationService.ts +++ b/extensions/cornerstone/src/services/SegmentationService/SegmentationService.ts @@ -738,7 +738,7 @@ class SegmentationService { highlightHideOthers = false, highlightFunctionType: 'ease-in-out' // todo: make animation functions configurable from outside ): void { - const { ToolGroupService } = this.servicesManager.services; + const { toolGroupService } = this.servicesManager.services; const center = this._getSegmentCenter(segmentationId, segmentIndex); const { world } = center; @@ -751,10 +751,10 @@ class SegmentationService { if (Array.isArray(toolGroupId)) { toolGroupId.forEach(toolGroup => { - toolGroups.push(ToolGroupService.getToolGroup(toolGroup)); + toolGroups.push(toolGroupService.getToolGroup(toolGroup)); }); } else { - toolGroups.push(ToolGroupService.getToolGroup(toolGroupId)); + toolGroups.push(toolGroupService.getToolGroup(toolGroupId)); } toolGroups.forEach(toolGroup => { @@ -1240,9 +1240,9 @@ class SegmentationService { } // if (brushSize !== undefined) { - // const { ToolGroupService } = this.servicesManager.services; + // const { toolGroupService } = this.servicesManager.services; - // const toolGroupIds = ToolGroupService.getToolGroupIds(); + // const toolGroupIds = toolGroupService.getToolGroupIds(); // toolGroupIds.forEach(toolGroupId => { // cstUtils.segmentation.setBrushSizeForToolGroup(toolGroupId, brushSize); @@ -1250,9 +1250,9 @@ class SegmentationService { // } // if (brushThresholdGate !== undefined) { - // const { ToolGroupService } = this.servicesManager.services; + // const { toolGroupService } = this.servicesManager.services; - // const toolGroupIds = ToolGroupService.getFirstToolGroupIds(); + // const toolGroupIds = toolGroupService.getFirstToolGroupIds(); // toolGroupIds.forEach(toolGroupId => { // cstUtils.segmentation.setBrushThresholdForToolGroup( @@ -1324,11 +1324,11 @@ class SegmentationService { return false; } - const { DisplaySetService } = this.servicesManager.services; + const { displaySetService } = this.servicesManager.services; let shouldDisplaySeg = false; - const segDisplaySet = DisplaySetService.getDisplaySetByUID( + const segDisplaySet = displaySetService.getDisplaySetByUID( segDisplaySetInstanceUID ); @@ -1337,7 +1337,7 @@ class SegmentationService { viewportDisplaySetInstanceUIDs.forEach(displaySetInstanceUID => { // check if the displaySet is sharing the same frameOfReferenceUID // with the new segmentation - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -1710,7 +1710,7 @@ class SegmentationService { } private _setLabelmapConfigValue = (property, value) => { - const { CornerstoneViewportService } = this.servicesManager.services; + const { cornerstoneViewportService } = this.servicesManager.services; const config = cstSegmentation.config.getGlobalConfig(); @@ -1719,8 +1719,8 @@ class SegmentationService { // Todo: add non global (representation specific config as well) cstSegmentation.config.setGlobalConfig(config); - const renderingEngine = CornerstoneViewportService.getRenderingEngine(); - const viewportIds = CornerstoneViewportService.getViewportIds(); + const renderingEngine = cornerstoneViewportService.getRenderingEngine(); + const viewportIds = cornerstoneViewportService.getViewportIds(); renderingEngine.renderViewports(viewportIds); }; @@ -1953,8 +1953,8 @@ class SegmentationService { } private _getFirstToolGroupId = () => { - const { ToolGroupService } = this.servicesManager.services; - const toolGroupIds = ToolGroupService.getToolGroupIds(); + const { toolGroupService } = this.servicesManager.services; + const toolGroupIds = toolGroupService.getToolGroupIds(); return toolGroupIds[0]; }; diff --git a/extensions/cornerstone/src/services/SegmentationService/index.js b/extensions/cornerstone/src/services/SegmentationService/index.js index 3cc5767b6..7b89d9bec 100644 --- a/extensions/cornerstone/src/services/SegmentationService/index.js +++ b/extensions/cornerstone/src/services/SegmentationService/index.js @@ -2,7 +2,8 @@ import SegmentationService from './SegmentationService'; export default function ExtendedSegmentationService(servicesManager) { return { - name: 'SegmentationService', + name: 'segmentationService', + altName: 'SegmentationService', create: ({ configuration = {} }) => { return new SegmentationService({ servicesManager }); }, diff --git a/extensions/cornerstone/src/services/SyncGroupService/index.js b/extensions/cornerstone/src/services/SyncGroupService/index.js index 9a49fcca1..64cb989fe 100644 --- a/extensions/cornerstone/src/services/SyncGroupService/index.js +++ b/extensions/cornerstone/src/services/SyncGroupService/index.js @@ -2,7 +2,8 @@ import SyncGroupService from './SyncGroupService'; export default function ExtendedSyncGroupService(serviceManager) { return { - name: 'SyncGroupService', + altName: 'SyncGroupService', + name: 'syncGroupService', create: ({ configuration = {} }) => { return new SyncGroupService(serviceManager); }, diff --git a/extensions/cornerstone/src/services/ToolGroupService/ToolGroupService.ts b/extensions/cornerstone/src/services/ToolGroupService/ToolGroupService.ts index 96d9cd31e..f0f0bf4be 100644 --- a/extensions/cornerstone/src/services/ToolGroupService/ToolGroupService.ts +++ b/extensions/cornerstone/src/services/ToolGroupService/ToolGroupService.ts @@ -20,6 +20,16 @@ type Tools = { }; export default class ToolGroupService { + public static REGISTRATION = serviceManager => { + return { + name: 'toolGroupService', + altName: 'ToolGroupService', + create: ({ configuration = {} }) => { + return new ToolGroupService(serviceManager); + }, + }; + }; + serviceManager: any; private toolGroupIds: Set = new Set(); /** @@ -29,8 +39,8 @@ export default class ToolGroupService { EVENTS: { [key: string]: string }; constructor(serviceManager) { - const { CornerstoneViewportService } = serviceManager.services; - this.CornerstoneViewportService = CornerstoneViewportService; + const { cornerstoneViewportService } = serviceManager.services; + this.cornerstoneViewportService = cornerstoneViewportService; this.listeners = {}; this.EVENTS = EVENTS; Object.assign(this, pubSubServiceInterface); @@ -51,7 +61,7 @@ export default class ToolGroupService { } public getToolGroupForViewport(viewportId: string): Types.IToolGroup | void { - const renderingEngine = this.CornerstoneViewportService.getRenderingEngine(); + const renderingEngine = this.cornerstoneViewportService.getRenderingEngine(); return ToolGroupManager.getToolGroupForViewport( viewportId, renderingEngine.id diff --git a/extensions/cornerstone/src/services/ToolGroupService/index.js b/extensions/cornerstone/src/services/ToolGroupService/index.js index b57a6fecf..c45c14649 100644 --- a/extensions/cornerstone/src/services/ToolGroupService/index.js +++ b/extensions/cornerstone/src/services/ToolGroupService/index.js @@ -1,10 +1,3 @@ import ToolGroupService from './ToolGroupService'; -export default function ExtendedToolGroupService(serviceManager) { - return { - name: 'ToolGroupService', - create: ({ configuration = {} }) => { - return new ToolGroupService(serviceManager); - }, - }; -} +export default ToolGroupService; diff --git a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts index 6cac23218..05e4e382c 100644 --- a/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/CornerstoneViewportService.ts @@ -412,7 +412,7 @@ class CornerstoneViewportService implements IViewportService { // (This call may or may not create sub-requests for series metadata) const volumeInputArray = []; const displaySetOptionsArray = viewportInfo.getDisplaySetOptions(); - const { HangingProtocolService } = this.servicesManager.services; + const { hangingProtocolService } = this.servicesManager.services; const volumeToLoad = []; const displaySetInstanceUIDs = []; @@ -449,11 +449,11 @@ class CornerstoneViewportService implements IViewportService { this.viewportsDisplaySets.set(viewport.id, displaySetInstanceUIDs); if ( - HangingProtocolService.hasCustomImageLoadStrategy() && - !HangingProtocolService.customImageLoadPerformed + hangingProtocolService.hasCustomImageLoadStrategy() && + !hangingProtocolService.customImageLoadPerformed ) { // delegate the volume loading to the hanging protocol service if it has a custom image load strategy - return HangingProtocolService.runImageLoadStrategy({ + return hangingProtocolService.runImageLoadStrategy({ viewportId: viewport.id, volumeInputArray, }); @@ -469,9 +469,9 @@ class CornerstoneViewportService implements IViewportService { public async setVolumesForViewport(viewport, volumeInputArray) { const { - DisplaySetService, - SegmentationService, - ToolGroupService, + displaySetService, + segmentationService, + toolGroupService, } = this.servicesManager.services; await viewport.setVolumes(volumeInputArray); @@ -480,7 +480,7 @@ class CornerstoneViewportService implements IViewportService { const displaySetInstanceUIDs = this.viewportsDisplaySets.get(viewport.id); const segDisplaySet = displaySetInstanceUIDs - .map(DisplaySetService.getDisplaySetByUID) + .map(displaySetService.getDisplaySetByUID) .find(displaySet => displaySet && displaySet.Modality === 'SEG'); if (segDisplaySet) { @@ -488,18 +488,18 @@ class CornerstoneViewportService implements IViewportService { const referencedVolume = cache.getVolume(referencedVolumeId); const segmentationId = segDisplaySet.displaySetInstanceUID; - const toolGroup = ToolGroupService.getToolGroupForViewport(viewport.id); + const toolGroup = toolGroupService.getToolGroupForViewport(viewport.id); if (referencedVolume) { - SegmentationService.addSegmentationRepresentationToToolGroup( + segmentationService.addSegmentationRepresentationToToolGroup( toolGroup.id, segmentationId ); } } else { - const toolGroup = ToolGroupService.getToolGroupForViewport(viewport.id); + const toolGroup = toolGroupService.getToolGroupForViewport(viewport.id); const toolGroupSegmentationRepresentations = - SegmentationService.getSegmentationRepresentationsForToolGroup( + segmentationService.getSegmentationRepresentationsForToolGroup( toolGroup.id ) || []; @@ -508,7 +508,7 @@ class CornerstoneViewportService implements IViewportService { // and we can look into hydrated segmentations to check if any of them are // associated with the primary displaySet // get segmentations only returns the hydrated segmentations - const segmentations = SegmentationService.getSegmentations(); + const segmentations = segmentationService.getSegmentations(); for (const segmentation of segmentations) { // if there is already a segmentation representation for this segmentation @@ -543,11 +543,11 @@ class CornerstoneViewportService implements IViewportService { } if (shouldDisplaySeg) { - const toolGroup = ToolGroupService.getToolGroupForViewport( + const toolGroup = toolGroupService.getToolGroupForViewport( viewport.id ); - SegmentationService.addSegmentationRepresentationToToolGroup( + segmentationService.addSegmentationRepresentationToToolGroup( toolGroup.id, segmentation.id ); @@ -557,7 +557,7 @@ class CornerstoneViewportService implements IViewportService { const viewportInfo = this.getViewportInfo(viewport.id); - const toolGroup = ToolGroupService.getToolGroupForViewport(viewport.id); + const toolGroup = toolGroupService.getToolGroupForViewport(viewport.id); csToolsUtils.segmentation.triggerSegmentationRender(toolGroup.id); const initialImageOptions = viewportInfo.getInitialImageOptions(); @@ -733,8 +733,8 @@ class CornerstoneViewportService implements IViewportService { } _getFrameOfReferenceUID(displaySetInstanceUID) { - const { DisplaySetService } = this.servicesManager.services; - const displaySet = DisplaySetService.getDisplaySetByUID( + const { displaySetService } = this.servicesManager.services; + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); diff --git a/extensions/cornerstone/src/services/ViewportService/IViewportService.ts b/extensions/cornerstone/src/services/ViewportService/IViewportService.ts index 5fe88ba63..87168cb7f 100644 --- a/extensions/cornerstone/src/services/ViewportService/IViewportService.ts +++ b/extensions/cornerstone/src/services/ViewportService/IViewportService.ts @@ -12,7 +12,7 @@ import { */ export interface IViewportService { servicesManager: unknown; - HangingProtocolService: unknown; + hangingProtocolService: unknown; renderingEngine: unknown; viewportGridResizeObserver: unknown; viewportsInfo: unknown; diff --git a/extensions/cornerstone/src/services/ViewportService/Viewport.ts b/extensions/cornerstone/src/services/ViewportService/Viewport.ts index eae87ada0..03fce0312 100644 --- a/extensions/cornerstone/src/services/ViewportService/Viewport.ts +++ b/extensions/cornerstone/src/services/ViewportService/Viewport.ts @@ -7,7 +7,7 @@ import { SyncGroup } from '../SyncGroupService/SyncGroupService'; import { StackViewportData, VolumeViewportData, -} from './CornerstoneCacheService'; +} from '../../types/CornerstoneCacheService'; export type InitialImageOptions = { index?: number; diff --git a/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx b/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx index 973bd9dbe..3c44131eb 100644 --- a/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx +++ b/extensions/cornerstone/src/utils/CornerstoneViewportDownloadForm.tsx @@ -21,7 +21,7 @@ const VIEWPORT_ID = 'cornerstone-viewport-download-form'; const CornerstoneViewportDownloadForm = ({ onClose, activeViewportIndex, - CornerstoneViewportService, + cornerstoneViewportService, }) => { const enabledElement = OHIFgetEnabledElement(activeViewportIndex); const activeViewportElement = enabledElement?.element; @@ -154,7 +154,7 @@ const CornerstoneViewportDownloadForm = ({ const { viewport } = activeViewportEnabledElement; - const renderingEngine = CornerstoneViewportService.getRenderingEngine(); + const renderingEngine = cornerstoneViewportService.getRenderingEngine(); const downloadViewport = renderingEngine.getViewport(VIEWPORT_ID); if (downloadViewport instanceof StackViewport) { diff --git a/extensions/cornerstone/src/utils/callInputDialog.tsx b/extensions/cornerstone/src/utils/callInputDialog.tsx index acdb2bdf0..b52fbc355 100644 --- a/extensions/cornerstone/src/utils/callInputDialog.tsx +++ b/extensions/cornerstone/src/utils/callInputDialog.tsx @@ -11,7 +11,7 @@ import { Input, Dialog } from '@ohif/ui'; * @param {*} isArrowAnnotateInputDialog */ function callInputDialog( - UIDialogService, + uiDialogService, data, callback, isArrowAnnotateInputDialog = true @@ -32,11 +32,11 @@ function callInputDialog( callback('', action.id); break; } - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); }; - if (UIDialogService) { - UIDialogService.create({ + if (uiDialogService) { + uiDialogService.create({ id: dialogId, centralize: true, isDraggable: false, @@ -46,7 +46,7 @@ function callInputDialog( title: 'Enter your annotation', value: { label }, noCloseButton: true, - onClose: () => UIDialogService.dismiss({ id: dialogId }), + onClose: () => uiDialogService.dismiss({ id: dialogId }), actions: [ { id: 'cancel', text: 'Cancel', type: 'primary' }, { id: 'save', text: 'Save', type: 'secondary' }, diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/ArrowAnnotate.js b/extensions/cornerstone/src/utils/measurementServiceMappings/ArrowAnnotate.js index 6562b1ec7..9a6f6e49b 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/ArrowAnnotate.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/ArrowAnnotate.js @@ -12,8 +12,8 @@ const Length = { */ toMeasurement: ( csToolsEventDetail, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, getValueTypeFromToolType ) => { const { annotation, viewportId } = csToolsEventDetail; @@ -37,26 +37,26 @@ const Length = { StudyInstanceUID, } = getSOPInstanceAttributes( referencedImageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ); let displaySet; if (SOPInstanceUID) { - displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID ); } else { - displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); } const { points } = data.handles; const mappedAnnotations = getMappedAnnotations( annotation, - DisplaySetService + displaySetService ); const displayText = getDisplayText(mappedAnnotations, displaySet); @@ -84,7 +84,7 @@ const Length = { }, }; -function getMappedAnnotations(annotation, DisplaySetService) { +function getMappedAnnotations(annotation, displaySetService) { const { metadata, data } = annotation; const { text } = data; const { referencedImageId } = metadata; @@ -97,7 +97,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { frameNumber, } = getSOPInstanceAttributes(referencedImageId); - const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + const displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID, frameNumber diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js b/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js index ed2ea6c27..781a0f909 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/Bidirectional.js @@ -8,8 +8,8 @@ const Bidirectional = { toAnnotation: measurement => {}, toMeasurement: ( csToolsEventDetail, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, getValueTypeFromToolType ) => { const { annotation, viewportId } = csToolsEventDetail; @@ -33,26 +33,26 @@ const Bidirectional = { StudyInstanceUID, } = getSOPInstanceAttributes( referencedImageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ); let displaySet; if (SOPInstanceUID) { - displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID ); } else { - displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); } const { points } = data.handles; const mappedAnnotations = getMappedAnnotations( annotation, - DisplaySetService + displaySetService ); const displayText = getDisplayText(mappedAnnotations, displaySet); @@ -79,7 +79,7 @@ const Bidirectional = { }, }; -function getMappedAnnotations(annotation, DisplaySetService) { +function getMappedAnnotations(annotation, displaySetService) { const { metadata, data } = annotation; const { cachedStats } = data; const { referencedImageId, referencedSeriesInstanceUID } = metadata; @@ -105,7 +105,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { frameNumber, } = getSOPInstanceAttributes(referencedImageId); - const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + const displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID, frameNumber diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js b/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js index 49025e22e..006842602 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/EllipticalROI.js @@ -7,8 +7,8 @@ const EllipticalROI = { toAnnotation: measurement => {}, toMeasurement: ( csToolsEventDetail, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, getValueTypeFromToolType ) => { const { annotation, viewportId } = csToolsEventDetail; @@ -32,26 +32,26 @@ const EllipticalROI = { StudyInstanceUID, } = getSOPInstanceAttributes( referencedImageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ); let displaySet; if (SOPInstanceUID) { - displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID ); } else { - displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); } const { points } = data.handles; const mappedAnnotations = getMappedAnnotations( annotation, - DisplaySetService + displaySetService ); const displayText = getDisplayText(mappedAnnotations, displaySet); @@ -78,7 +78,7 @@ const EllipticalROI = { }, }; -function getMappedAnnotations(annotation, DisplaySetService) { +function getMappedAnnotations(annotation, displaySetService) { const { metadata, data } = annotation; const { cachedStats } = data; const { referencedImageId } = metadata; @@ -105,7 +105,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { frameNumber, } = getSOPInstanceAttributes(referencedImageId); - const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + const displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID, frameNumber diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js b/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js index 8388c8482..206208257 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/Length.js @@ -1,6 +1,6 @@ import SUPPORTED_TOOLS from './constants/supportedTools'; import getSOPInstanceAttributes from './utils/getSOPInstanceAttributes'; -import { DisplaySetService, utils } from '@ohif/core'; +import { displaySetService, utils } from '@ohif/core'; const Length = { toAnnotation: measurement => {}, @@ -13,8 +13,8 @@ const Length = { */ toMeasurement: ( csToolsEventDetail, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, getValueTypeFromToolType ) => { const { annotation, viewportId } = csToolsEventDetail; @@ -38,26 +38,26 @@ const Length = { StudyInstanceUID, } = getSOPInstanceAttributes( referencedImageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ); let displaySet; if (SOPInstanceUID) { - displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID ); } else { - displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); } const { points } = data.handles; const mappedAnnotations = getMappedAnnotations( annotation, - DisplaySetService + displaySetService ); const displayText = getDisplayText(mappedAnnotations, displaySet); @@ -84,7 +84,7 @@ const Length = { }, }; -function getMappedAnnotations(annotation, DisplaySetService) { +function getMappedAnnotations(annotation, displaySetService) { const { metadata, data } = annotation; const { cachedStats } = data; const { referencedImageId } = metadata; @@ -110,7 +110,7 @@ function getMappedAnnotations(annotation, DisplaySetService) { frameNumber, } = getSOPInstanceAttributes(referencedImageId); - const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + const displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID, frameNumber diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js b/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js index 2a7776e97..1e2f91daf 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js @@ -4,9 +4,9 @@ import EllipticalROI from './EllipticalROI'; import ArrowAnnotate from './ArrowAnnotate'; const measurementServiceMappingsFactory = ( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ) => { /** * Maps measurement service format object to cornerstone annotation object. @@ -23,7 +23,7 @@ const measurementServiceMappingsFactory = ( RECTANGLE, BIDIRECTIONAL, POINT, - } = MeasurementService.VALUE_TYPES; + } = measurementService.VALUE_TYPES; // TODO -> I get why this was attempted, but its not nearly flexible enough. // A single measurement may have an ellipse + a bidirectional measurement, for instances. @@ -45,13 +45,13 @@ const measurementServiceMappingsFactory = ( toMeasurement: csToolsAnnotation => Length.toMeasurement( csToolsAnnotation, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, _getValueTypeFromToolType ), matchingCriteria: [ { - valueType: MeasurementService.VALUE_TYPES.POLYLINE, + valueType: measurementService.VALUE_TYPES.POLYLINE, points: 2, }, ], @@ -61,19 +61,19 @@ const measurementServiceMappingsFactory = ( toMeasurement: csToolsAnnotation => Bidirectional.toMeasurement( csToolsAnnotation, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, _getValueTypeFromToolType ), matchingCriteria: [ // TODO -> We should eventually do something like shortAxis + longAxis, // But its still a little unclear how these automatic interpretations will work. { - valueType: MeasurementService.VALUE_TYPES.POLYLINE, + valueType: measurementService.VALUE_TYPES.POLYLINE, points: 2, }, { - valueType: MeasurementService.VALUE_TYPES.POLYLINE, + valueType: measurementService.VALUE_TYPES.POLYLINE, points: 2, }, ], @@ -83,13 +83,13 @@ const measurementServiceMappingsFactory = ( toMeasurement: csToolsAnnotation => EllipticalROI.toMeasurement( csToolsAnnotation, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, _getValueTypeFromToolType ), matchingCriteria: [ { - valueType: MeasurementService.VALUE_TYPES.ELLIPSE, + valueType: measurementService.VALUE_TYPES.ELLIPSE, }, ], }, @@ -98,13 +98,13 @@ const measurementServiceMappingsFactory = ( toMeasurement: csToolsAnnotation => ArrowAnnotate.toMeasurement( csToolsAnnotation, - DisplaySetService, - CornerstoneViewportService, + displaySetService, + cornerstoneViewportService, _getValueTypeFromToolType ), matchingCriteria: [ { - valueType: MeasurementService.VALUE_TYPES.POINT, + valueType: measurementService.VALUE_TYPES.POINT, points: 1, }, ], diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js index 7cefa4ceb..b93226bb1 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/getSOPInstanceAttributes.js @@ -13,7 +13,7 @@ import * as cornerstone from '@cornerstonejs/core'; */ export default function getSOPInstanceAttributes( imageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ) { if (imageId) { @@ -23,7 +23,7 @@ export default function getSOPInstanceAttributes( // Todo: implement for volume viewports and use the referencedSeriesInstanceUID // if no imageId => measurement is not in the acquisition plane - // const metadata = getUIDFromScene(CornerstoneViewportService, viewportId); + // const metadata = getUIDFromScene(cornerstoneViewportService, viewportId); // if (!metadata) { // throw new Error('Not viewport with imageId found'); @@ -49,8 +49,8 @@ function _getUIDFromImageID(imageId) { }; } -// function getUIDFromScene(CornerstoneViewportService) { -// const renderingEngine = CornerstoneViewportService.getRenderingEngine(); +// function getUIDFromScene(cornerstoneViewportService) { +// const renderingEngine = cornerstoneViewportService.getRenderingEngine(); // const scene = renderingEngine.getScene(sceneUID); // const viewportUIDs = scene.getViewportIds(); diff --git a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts index a72061ed6..6515cea8d 100644 --- a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts +++ b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts @@ -39,9 +39,9 @@ export default function toggleMPRHangingProtocol({ getToolGroup, }) { const { - UINotificationService, - HangingProtocolService, - ViewportGridService, + uiNotificationService, + hangingProtocolService, + viewportGridService, toolbarService, } = servicesManager.services; @@ -54,12 +54,12 @@ export default function toggleMPRHangingProtocol({ viewports, numRows, numCols, - } = ViewportGridService.getState(); + } = viewportGridService.getState(); const viewportDisplaySetInstanceUIDs = viewports[activeViewportIndex].displaySetInstanceUIDs; const errorCallback = error => { - UINotificationService.show({ + uiNotificationService.show({ title: 'Multiplanar reconstruction (MPR) ', message: 'Cannot create MPR for this DisplaySet since it is not reconstructable.', @@ -69,7 +69,7 @@ export default function toggleMPRHangingProtocol({ }; // What is the current active protocol and stage number to restore later - const { protocol, stage } = HangingProtocolService.getActiveProtocol(); + const { protocol, stage } = hangingProtocolService.getActiveProtocol(); if (toggledState) { resetCachedState(); @@ -102,7 +102,7 @@ export default function toggleMPRHangingProtocol({ getToolGroup ); - HangingProtocolService.setProtocol( + hangingProtocolService.setProtocol( MPR_TOOLGROUP_ID, matchDetails, errorCallback @@ -111,7 +111,7 @@ export default function toggleMPRHangingProtocol({ } const restoreErrorCallback = error => { - UINotificationService.show({ + uiNotificationService.show({ title: 'Multiplanar reconstruction (MPR) ', message: 'Something went wrong while trying to restore the previous layout.', @@ -130,7 +130,7 @@ export default function toggleMPRHangingProtocol({ // cached protocol and stage. However, for the default protocol, we need // to also apply the layout type and properties. if (cachedState.protocol.id !== 'default') { - HangingProtocolService.setProtocol( + hangingProtocolService.setProtocol( cachedState.protocol.id, viewportMatchDetails, restoreErrorCallback @@ -139,14 +139,14 @@ export default function toggleMPRHangingProtocol({ return; } - HangingProtocolService.setProtocol( + hangingProtocolService.setProtocol( 'default', viewportMatchDetails, restoreErrorCallback ); if (numRows !== properties.rows || numCols !== properties.columns) { - ViewportGridService.setLayout({ + viewportGridService.setLayout({ numRows: properties.rows, numCols: properties.columns, layoutType, @@ -169,7 +169,7 @@ export default function toggleMPRHangingProtocol({ viewportOptions, displaySetsInfo, } = viewportMatchDetailsForViewport; - ViewportGridService.setDisplaySetsForViewport({ + viewportGridService.setDisplaySetsForViewport({ viewportIndex, displaySetInstanceUIDs: displaySetsInfo.map( displaySetInfo => displaySetInfo.displaySetInstanceUID @@ -177,7 +177,7 @@ export default function toggleMPRHangingProtocol({ viewportOptions, }); } else { - ViewportGridService.setDisplaySetsForViewport({ + viewportGridService.setDisplaySetsForViewport({ viewportIndex, displaySetInstanceUIDs: [], viewportOptions: {}, @@ -217,15 +217,15 @@ function _disableCrosshairs(toolGroupIds, getToolGroup) { function _getViewportsInfo({ protocol, stage, viewports, servicesManager }) { // here we need to use the viewports and try to map it into the - // viewportMatchDetails and displaySetMatch that HangingProtocolService + // viewportMatchDetails and displaySetMatch that hangingProtocolService // expects const { - ViewportGridService, - HangingProtocolService, - ToolGroupService, + viewportGridService, + hangingProtocolService, + toolGroupService, } = servicesManager.services; - const { numRows, numCols } = ViewportGridService.getState(); + const { numRows, numCols } = viewportGridService.getState(); let viewportMatchDetails = new Map(); @@ -261,7 +261,7 @@ function _getViewportsInfo({ protocol, stage, viewports, servicesManager }) { } }); } else { - ({ viewportMatchDetails } = HangingProtocolService.getMatchDetails()); + ({ viewportMatchDetails } = hangingProtocolService.getMatchDetails()); } // get the toolGroup state for viewports @@ -277,7 +277,7 @@ function _getViewportsInfo({ protocol, stage, viewports, servicesManager }) { if (viewportIds.length) { toolOptions = viewportIds.map(viewportId => { - const toolGroup = ToolGroupService.getToolGroupForViewport(viewportId); + const toolGroup = toolGroupService.getToolGroupForViewport(viewportId); return { toolGroupId: toolGroup.id, toolOptions: toolGroup.toolOptions, diff --git a/extensions/cornerstone/src/utils/stackSync/toggleStackImageSync.ts b/extensions/cornerstone/src/utils/stackSync/toggleStackImageSync.ts index 3ff32cdbe..5a0de4677 100644 --- a/extensions/cornerstone/src/utils/stackSync/toggleStackImageSync.ts +++ b/extensions/cornerstone/src/utils/stackSync/toggleStackImageSync.ts @@ -12,10 +12,10 @@ export default function toggleStackImageSync({ getEnabledElement, }) { const { - SyncGroupService, - ViewportGridService, - DisplaySetService, - CornerstoneViewportService, + syncGroupService, + viewportGridService, + displaySetService, + cornerstoneViewportService, } = servicesManager.services; if (!toggledState) { @@ -23,7 +23,7 @@ export default function toggleStackImageSync({ const { viewports, synchronizerId } = syncGroupInfo; viewports.forEach(({ viewportId, renderingEngineId }) => { - SyncGroupService.removeViewportFromSyncGroup( + syncGroupService.removeViewportFromSyncGroup( viewportId, renderingEngineId, synchronizerId @@ -37,7 +37,7 @@ export default function toggleStackImageSync({ STACK_IMAGE_SYNC_GROUPS_INFO = []; // create synchronization groups and add viewports - let { viewports } = ViewportGridService.getState(); + let { viewports } = viewportGridService.getState(); // filter empty viewports viewports = viewports.filter( @@ -50,7 +50,7 @@ export default function toggleStackImageSync({ const { displaySetInstanceUIDs } = viewport; for (const displaySetInstanceUID of displaySetInstanceUIDs) { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -70,7 +70,7 @@ export default function toggleStackImageSync({ return acc; } - const { element } = CornerstoneViewportService.getViewportInfo(viewportId); + const { element } = cornerstoneViewportService.getViewportInfo(viewportId); const { viewport: csViewport, renderingEngineId } = getEnabledElement( element ); @@ -99,7 +99,7 @@ export default function toggleStackImageSync({ calculateViewportRegistrations(viewports); viewports.forEach(({ viewportId, renderingEngineId }) => { - SyncGroupService.addViewportToSyncGroup(viewportId, renderingEngineId, { + syncGroupService.addViewportToSyncGroup(viewportId, renderingEngineId, { type: 'stackimage', id: synchronizerId, source: true, diff --git a/extensions/default/package.json b/extensions/default/package.json index a894ef8d9..c6c9f3140 100644 --- a/extensions/default/package.json +++ b/extensions/default/package.json @@ -32,7 +32,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/i18n": "^1.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicomweb-client": "^0.6.0", "prop-types": "^15.6.2", "react": "^17.0.2", diff --git a/extensions/default/src/Actions/createReportAsync.tsx b/extensions/default/src/Actions/createReportAsync.tsx index f9641c801..98080288b 100644 --- a/extensions/default/src/Actions/createReportAsync.tsx +++ b/extensions/default/src/Actions/createReportAsync.tsx @@ -17,11 +17,11 @@ async function createReportAsync( options ) { const { - DisplaySetService, - UINotificationService, - UIDialogService, + displaySetService, + uiNotificationService, + uiDialogService, } = servicesManager.services; - const loadingDialogId = UIDialogService.create({ + const loadingDialogId = uiDialogService.create({ showOverlay: true, isDraggable: false, centralize: true, @@ -46,9 +46,9 @@ async function createReportAsync( // automatically calls makeDisplaySets DicomMetadataStore.addInstances([naturalizedReport], true); - const displaySetInstanceUID = DisplaySetService.getMostRecentDisplaySet(); + const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet(); - UINotificationService.show({ + uiNotificationService.show({ title: 'Create Report', message: 'Measurements saved successfully', type: 'success', @@ -56,13 +56,13 @@ async function createReportAsync( return [displaySetInstanceUID]; } catch (error) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Create Report', message: error.message || 'Failed to store measurements', type: 'error', }); } finally { - UIDialogService.dismiss({ id: loadingDialogId }); + uiDialogService.dismiss({ id: loadingDialogId }); } } diff --git a/extensions/default/src/Panels/PanelMeasurementTable.tsx b/extensions/default/src/Panels/PanelMeasurementTable.tsx index 1d2b0f6f0..f049dfd5b 100644 --- a/extensions/default/src/Panels/PanelMeasurementTable.tsx +++ b/extensions/default/src/Panels/PanelMeasurementTable.tsx @@ -21,10 +21,10 @@ export default function PanelMeasurementTable({ const [viewportGrid, viewportGridService] = useViewportGrid(); const { activeViewportIndex, viewports } = viewportGrid; const { - MeasurementService, - UIDialogService, - UINotificationService, - DisplaySetService, + measurementService, + uiDialogService, + uiNotificationService, + displaySetService, } = servicesManager.services; const [displayMeasurements, setDisplayMeasurements] = useState([]); @@ -34,21 +34,21 @@ export default function PanelMeasurementTable({ 100 ); // ~~ Initial - setDisplayMeasurements(_getMappedMeasurements(MeasurementService)); + setDisplayMeasurements(_getMappedMeasurements(measurementService)); // ~~ Subscription - const added = MeasurementService.EVENTS.MEASUREMENT_ADDED; - const addedRaw = MeasurementService.EVENTS.RAW_MEASUREMENT_ADDED; - const updated = MeasurementService.EVENTS.MEASUREMENT_UPDATED; - const removed = MeasurementService.EVENTS.MEASUREMENT_REMOVED; - const cleared = MeasurementService.EVENTS.MEASUREMENTS_CLEARED; + const added = measurementService.EVENTS.MEASUREMENT_ADDED; + const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED; + const updated = measurementService.EVENTS.MEASUREMENT_UPDATED; + const removed = measurementService.EVENTS.MEASUREMENT_REMOVED; + const cleared = measurementService.EVENTS.MEASUREMENTS_CLEARED; const subscriptions = []; [added, addedRaw, updated, removed, cleared].forEach(evt => { subscriptions.push( - MeasurementService.subscribe(evt, () => { + measurementService.subscribe(evt, () => { debouncedSetDisplayMeasurements( - _getMappedMeasurements(MeasurementService) + _getMappedMeasurements(measurementService) ); }).unsubscribe ); @@ -63,20 +63,20 @@ export default function PanelMeasurementTable({ }, []); async function exportReport() { - const measurements = MeasurementService.getMeasurements(); + const measurements = measurementService.getMeasurements(); - downloadCSVReport(measurements, MeasurementService); + downloadCSVReport(measurements, measurementService); } async function clearMeasurements() { - MeasurementService.clearMeasurements(); + measurementService.clearMeasurements(); } async function createReport() { // filter measurements that are added to the active study const activeViewport = viewports[activeViewportIndex]; - const measurements = MeasurementService.getMeasurements(); - const displaySet = DisplaySetService.getDisplaySetByUID( + const measurements = measurementService.getMeasurements(); + const displaySet = displaySetService.getDisplaySetByUID( activeViewport.displaySetInstanceUIDs[0] ); const trackedMeasurements = measurements.filter( @@ -84,7 +84,7 @@ export default function PanelMeasurementTable({ ); if (trackedMeasurements.length <= 0) { - UINotificationService.show({ + uiNotificationService.show({ title: 'No Measurements', message: 'No Measurements are added to the current Study.', type: 'info', @@ -93,7 +93,7 @@ export default function PanelMeasurementTable({ return; } - const promptResult = await createReportDialogPrompt(UIDialogService, { + const promptResult = await createReportDialogPrompt(uiDialogService, { extensionManager, }); @@ -109,7 +109,7 @@ export default function PanelMeasurementTable({ ? 'Research Derived Series' // default : promptResult.value; // provided value - const SeriesNumber = getNextSRSeriesNumber(DisplaySetService); + const SeriesNumber = getNextSRSeriesNumber(displaySetService); const displaySetInstanceUIDs = await createReportAsync( servicesManager, @@ -125,20 +125,20 @@ export default function PanelMeasurementTable({ } const jumpToImage = ({ uid, isActive }) => { - MeasurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid); + measurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid); onMeasurementItemClickHandler({ uid, isActive }); }; const onMeasurementItemEditHandler = ({ uid, isActive }) => { - const measurement = MeasurementService.getMeasurement(uid); + const measurement = measurementService.getMeasurement(uid); //Todo: why we are jumping to image? // jumpToImage({ id, isActive }); const onSubmitHandler = ({ action, value }) => { switch (action.id) { case 'save': { - MeasurementService.update( + measurementService.update( uid, { ...measurement, @@ -148,10 +148,10 @@ export default function PanelMeasurementTable({ ); } } - UIDialogService.dismiss({ id: 'enter-annotation' }); + uiDialogService.dismiss({ id: 'enter-annotation' }); }; - UIDialogService.create({ + uiDialogService.create({ id: 'enter-annotation', centralize: true, isDraggable: false, @@ -234,7 +234,7 @@ export default function PanelMeasurementTable({ PanelMeasurementTable.propTypes = { servicesManager: PropTypes.shape({ services: PropTypes.shape({ - MeasurementService: PropTypes.shape({ + measurementService: PropTypes.shape({ getMeasurements: PropTypes.func.isRequired, subscribe: PropTypes.func.isRequired, EVENTS: PropTypes.object.isRequired, @@ -244,11 +244,11 @@ PanelMeasurementTable.propTypes = { }).isRequired, }; -function _getMappedMeasurements(MeasurementService) { - const measurements = MeasurementService.getMeasurements(); +function _getMappedMeasurements(measurementService) { + const measurements = measurementService.getMeasurements(); const mappedMeasurements = measurements.map((m, index) => - _mapMeasurementToDisplay(m, index, MeasurementService.VALUE_TYPES) + _mapMeasurementToDisplay(m, index, measurementService.VALUE_TYPES) ); return mappedMeasurements; diff --git a/extensions/default/src/Panels/PanelStudyBrowser.tsx b/extensions/default/src/Panels/PanelStudyBrowser.tsx index 0da795044..05f32fefd 100644 --- a/extensions/default/src/Panels/PanelStudyBrowser.tsx +++ b/extensions/default/src/Panels/PanelStudyBrowser.tsx @@ -17,9 +17,9 @@ function PanelStudyBrowser({ dataSource, }) { const { - HangingProtocolService, - DisplaySetService, - UINotificationService, + hangingProtocolService, + displaySetService, + uiNotificationService, } = servicesManager.services; // Normally you nest the components so the tree isn't so deep, and the data // doesn't have to have such an intense shape. This works well enough for now. @@ -42,13 +42,13 @@ function PanelStudyBrowser({ let updatedViewports = []; const viewportIndex = activeViewportIndex; try { - updatedViewports = HangingProtocolService.getViewportsRequireUpdate( + updatedViewports = hangingProtocolService.getViewportsRequireUpdate( viewportIndex, displaySetInstanceUID ); } catch (error) { console.warn(error); - UINotificationService.show({ + uiNotificationService.show({ title: 'Thumbnail Double Click', message: 'The selected display sets could not be added to the viewport due to a mismatch in the Hanging Protocol rules.', @@ -103,10 +103,10 @@ function PanelStudyBrowser({ // // ~~ Initial Thumbnails useEffect(() => { - const currentDisplaySets = DisplaySetService.activeDisplaySets; + const currentDisplaySets = displaySetService.activeDisplaySets; currentDisplaySets.forEach(async dSet => { const newImageSrcEntry = {}; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( dSet.displaySetInstanceUID ); const imageIds = dataSource.getImageIdsForDisplaySet(displaySet); @@ -134,7 +134,7 @@ function PanelStudyBrowser({ // ~~ displaySets useEffect(() => { // TODO: Are we sure `activeDisplaySets` will always be accurate? - const currentDisplaySets = DisplaySetService.activeDisplaySets; + const currentDisplaySets = displaySetService.activeDisplaySets; const mappedDisplaySets = _mapDisplaySets( currentDisplaySets, thumbnailImageSrcMap @@ -148,13 +148,13 @@ function PanelStudyBrowser({ // ~~ subscriptions --> displaySets useEffect(() => { // DISPLAY_SETS_ADDED returns an array of DisplaySets that were added - const SubscriptionDisplaySetsAdded = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_ADDED, + const SubscriptionDisplaySetsAdded = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_ADDED, data => { const { displaySetsAdded } = data; displaySetsAdded.forEach(async dSet => { const newImageSrcEntry = {}; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( dSet.displaySetInstanceUID ); const imageIds = dataSource.getImageIdsForDisplaySet(displaySet); @@ -179,8 +179,8 @@ function PanelStudyBrowser({ // TODO: Will this always hold _all_ the displaySets we care about? // DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets` - const SubscriptionDisplaySetsChanged = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_CHANGED, + const SubscriptionDisplaySetsChanged = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => { const mappedDisplaySets = _mapDisplaySets( changedDisplaySets, @@ -222,7 +222,7 @@ function PanelStudyBrowser({ if (!shouldCollapseStudy) { const madeInClient = true; requestDisplaySetCreationForStudy( - DisplaySetService, + displaySetService, StudyInstanceUID, madeInClient ); diff --git a/extensions/default/src/Panels/createReportDialogPrompt.tsx b/extensions/default/src/Panels/createReportDialogPrompt.tsx index d635b4354..531d24ed7 100644 --- a/extensions/default/src/Panels/createReportDialogPrompt.tsx +++ b/extensions/default/src/Panels/createReportDialogPrompt.tsx @@ -8,7 +8,7 @@ export const CREATE_REPORT_DIALOG_RESPONSE = { }; export default function createReportDialogPrompt( - UIDialogService, + uiDialogService, { extensionManager } ) { return new Promise(function (resolve, reject) { @@ -16,7 +16,7 @@ export default function createReportDialogPrompt( const _handleClose = () => { // Dismiss dialog - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); // Notify of cancel action resolve({ action: CREATE_REPORT_DIALOG_RESPONSE.CANCEL, @@ -31,7 +31,7 @@ export default function createReportDialogPrompt( * @param {string} param0.value - value from input field */ const _handleFormSubmit = ({ action, value }) => { - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); switch (action.id) { case 'save': resolve({ @@ -66,7 +66,7 @@ export default function createReportDialogPrompt( }; }); - dialogId = UIDialogService.create({ + dialogId = uiDialogService.create({ centralize: true, isDraggable: false, content: Dialog, @@ -93,7 +93,7 @@ export default function createReportDialogPrompt( }; const onKeyPressHandler = event => { if (event.key === 'Enter') { - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); resolve({ action: CREATE_REPORT_DIALOG_RESPONSE.CREATE_REPORT, value: value.label, diff --git a/extensions/default/src/Panels/requestDisplaySetCreationForStudy.js b/extensions/default/src/Panels/requestDisplaySetCreationForStudy.js index 52f4a038f..c10a5d97b 100644 --- a/extensions/default/src/Panels/requestDisplaySetCreationForStudy.js +++ b/extensions/default/src/Panels/requestDisplaySetCreationForStudy.js @@ -1,12 +1,12 @@ function requestDisplaySetCreationForStudy( dataSource, - DisplaySetService, + displaySetService, StudyInstanceUID, madeInClient ) { // TODO: is this already short-circuited by the map of Retrieve promises? if ( - DisplaySetService.activeDisplaySets.some( + displaySetService.activeDisplaySets.some( displaySet => displaySet.StudyInstanceUID === StudyInstanceUID ) ) { diff --git a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx index 789096966..a385c071d 100644 --- a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx +++ b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx @@ -20,7 +20,7 @@ function LayoutSelector({ const [viewportGridState, viewportGridService] = useViewportGrid(); const { - HangingProtocolService, + hangingProtocolService, toolbarService, } = (servicesManager as ServicesManager).services; @@ -31,8 +31,8 @@ function LayoutSelector({ }; useEffect(() => { - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.PROTOCOL_CHANGED, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.PROTOCOL_CHANGED, evt => { const { protocol } = evt; } @@ -41,7 +41,7 @@ function LayoutSelector({ return () => { unsubscribe(); }; - }, [HangingProtocolService]); + }, [hangingProtocolService]); useEffect(() => { window.addEventListener('click', closeOnOutsideClick); @@ -65,7 +65,7 @@ function LayoutSelector({ // TODO Here the layout change will amount to a change of hanging protocol as specified by the extension for this layout selector tool // followed by the change of the grid itself. - if (HangingProtocolService.getActiveProtocol().protocol.id === 'mpr') { + if (hangingProtocolService.getActiveProtocol().protocol.id === 'mpr') { toolbarService.recordInteraction({ groupId: 'MPR', itemId: 'MPR', diff --git a/extensions/default/src/ViewerLayout/index.tsx b/extensions/default/src/ViewerLayout/index.tsx index 1ee954b55..46df33cd5 100644 --- a/extensions/default/src/ViewerLayout/index.tsx +++ b/extensions/default/src/ViewerLayout/index.tsx @@ -58,7 +58,7 @@ function ViewerLayout({ appConfig.showLoadingIndicator ); - const { HangingProtocolService } = servicesManager.services; + const { hangingProtocolService } = servicesManager.services; const { hotkeyDefinitions, hotkeyDefaults } = hotkeysManager; const versionNumber = process.env.VERSION_NUMBER; @@ -167,11 +167,11 @@ function ViewerLayout({ }; useEffect(() => { - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.HANGING_PROTOCOL_APPLIED_FOR_VIEWPORT, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.HANGING_PROTOCOL_APPLIED_FOR_VIEWPORT, // Todo: right now to set the loading indicator to false, we need to wait for the - // HangingProtocolService to finish applying the viewport matching to each viewport, + // hangingProtocolService to finish applying the viewport matching to each viewport, // however, this might not be the only approach to set the loading indicator to false. we need to explore this further. ({ progress }) => { if (progress === 100) { @@ -183,7 +183,7 @@ function ViewerLayout({ return () => { unsubscribe(); }; - }, [HangingProtocolService]); + }, [hangingProtocolService]); const getViewportComponentData = viewportComponent => { const { entry } = getComponent(viewportComponent.namespace); diff --git a/extensions/default/src/commandsModule.js b/extensions/default/src/commandsModule.js index eb576784d..deb413f98 100644 --- a/extensions/default/src/commandsModule.js +++ b/extensions/default/src/commandsModule.js @@ -3,37 +3,37 @@ import React from 'react'; const commandsModule = ({ servicesManager, commandsManager }) => { const { - MeasurementService, - HangingProtocolService, - UINotificationService, - ViewportGridService, - DisplaySetService, + measurementService, + hangingProtocolService, + uiNotificationService, + viewportGridService, + displaySetService, } = servicesManager.services; const actions = { displayNotification: ({ text, title, type }) => { - UINotificationService.show({ + uiNotificationService.show({ title: title, message: text, type: type, }); }, clearMeasurements: () => { - MeasurementService.clear(); + measurementService.clear(); }, nextStage: () => { // next stage in hanging protocols - HangingProtocolService.nextProtocolStage(); + hangingProtocolService.nextProtocolStage(); }, previousStage: () => { - HangingProtocolService.previousProtocolStage(); + hangingProtocolService.previousProtocolStage(); }, openDICOMTagViewer() { - const { activeViewportIndex, viewports } = ViewportGridService.getState(); + const { activeViewportIndex, viewports } = viewportGridService.getState(); const activeViewportSpecificData = viewports[activeViewportIndex]; const { displaySetInstanceUIDs } = activeViewportSpecificData; - const displaySets = DisplaySetService.activeDisplaySets; + const displaySets = displaySetService.activeDisplaySets; const { UIModalService } = servicesManager.services; const displaySetInstanceUID = displaySetInstanceUIDs[0]; diff --git a/extensions/default/src/utils/getNextSRSeriesNumber.js b/extensions/default/src/utils/getNextSRSeriesNumber.js index d5865d38e..c980aae9c 100644 --- a/extensions/default/src/utils/getNextSRSeriesNumber.js +++ b/extensions/default/src/utils/getNextSRSeriesNumber.js @@ -1,7 +1,7 @@ const MIN_SR_SERIES_NUMBER = 4700; -export default function getNextSRSeriesNumber(DisplaySetService) { - const activeDisplaySets = DisplaySetService.getActiveDisplaySets(); +export default function getNextSRSeriesNumber(displaySetService) { + const activeDisplaySets = displaySetService.getActiveDisplaySets(); const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR'); const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber); const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER); diff --git a/extensions/dicom-pdf/package.json b/extensions/dicom-pdf/package.json index 03fe4c66a..d6ac78f82 100644 --- a/extensions/dicom-pdf/package.json +++ b/extensions/dicom-pdf/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/dicom-video/package.json b/extensions/dicom-video/package.json index 4d86d4251..17ac39036 100644 --- a/extensions/dicom-video/package.json +++ b/extensions/dicom-video/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 0e9f1349b..a6acf2588 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,10 +32,10 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.3.2", - "@cornerstonejs/core": "^0.27.1", - "@cornerstonejs/tools": "^0.36.3", + "@cornerstonejs/core": "0.30.1", + "@cornerstonejs/tools": "0.39.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "prop-types": "^15.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/extensions/measurement-tracking/src/_shared/createReportAsync.tsx b/extensions/measurement-tracking/src/_shared/createReportAsync.tsx index f9641c801..98080288b 100644 --- a/extensions/measurement-tracking/src/_shared/createReportAsync.tsx +++ b/extensions/measurement-tracking/src/_shared/createReportAsync.tsx @@ -17,11 +17,11 @@ async function createReportAsync( options ) { const { - DisplaySetService, - UINotificationService, - UIDialogService, + displaySetService, + uiNotificationService, + uiDialogService, } = servicesManager.services; - const loadingDialogId = UIDialogService.create({ + const loadingDialogId = uiDialogService.create({ showOverlay: true, isDraggable: false, centralize: true, @@ -46,9 +46,9 @@ async function createReportAsync( // automatically calls makeDisplaySets DicomMetadataStore.addInstances([naturalizedReport], true); - const displaySetInstanceUID = DisplaySetService.getMostRecentDisplaySet(); + const displaySetInstanceUID = displaySetService.getMostRecentDisplaySet(); - UINotificationService.show({ + uiNotificationService.show({ title: 'Create Report', message: 'Measurements saved successfully', type: 'success', @@ -56,13 +56,13 @@ async function createReportAsync( return [displaySetInstanceUID]; } catch (error) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Create Report', message: error.message || 'Failed to store measurements', type: 'error', }); } finally { - UIDialogService.dismiss({ id: loadingDialogId }); + uiDialogService.dismiss({ id: loadingDialogId }); } } diff --git a/extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx b/extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx index cdad87953..397ad1810 100644 --- a/extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx +++ b/extensions/measurement-tracking/src/_shared/createReportDialogPrompt.tsx @@ -3,13 +3,13 @@ import React from 'react'; import { Dialog, Input } from '@ohif/ui'; import RESPONSE from './PROMPT_RESPONSES'; -export default function createReportDialogPrompt(UIDialogService) { +export default function createReportDialogPrompt(uiDialogService) { return new Promise(function(resolve, reject) { let dialogId = undefined; const _handleClose = () => { // Dismiss dialog - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); // Notify of cancel action resolve({ action: RESPONSE.CANCEL, value: undefined }); }; @@ -20,7 +20,7 @@ export default function createReportDialogPrompt(UIDialogService) { * @param {string} param0.value - value from input field */ const _handleFormSubmit = ({ action, value }) => { - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); switch (action.id) { case 'save': resolve({ action: RESPONSE.CREATE_REPORT, value: value.label }); @@ -31,7 +31,7 @@ export default function createReportDialogPrompt(UIDialogService) { } }; - dialogId = UIDialogService.create({ + dialogId = uiDialogService.create({ centralize: true, isDraggable: false, content: Dialog, @@ -55,7 +55,7 @@ export default function createReportDialogPrompt(UIDialogService) { }; const onKeyPressHandler = event => { if (event.key === 'Enter') { - UIDialogService.dismiss({ id: dialogId }); + uiDialogService.dismiss({ id: dialogId }); resolve({ action: RESPONSE.CREATE_REPORT, value: value.label }); } }; diff --git a/extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js b/extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js index d5865d38e..c980aae9c 100644 --- a/extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js +++ b/extensions/measurement-tracking/src/_shared/getNextSRSeriesNumber.js @@ -1,7 +1,7 @@ const MIN_SR_SERIES_NUMBER = 4700; -export default function getNextSRSeriesNumber(DisplaySetService) { - const activeDisplaySets = DisplaySetService.getActiveDisplaySets(); +export default function getNextSRSeriesNumber(displaySetService) { + const activeDisplaySets = displaySetService.getActiveDisplaySets(); const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR'); const srSeriesNumbers = srDisplaySets.map(ds => ds.SeriesNumber); const maxSeriesNumber = Math.max(...srSeriesNumbers, MIN_SR_SERIES_NUMBER); diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx index 7ac6d46f2..b35f16389 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx @@ -34,10 +34,10 @@ function TrackedMeasurementsContextProvider( const machineOptions = Object.assign({}, defaultOptions); machineOptions.actions = Object.assign({}, machineOptions.actions, { jumpToFirstMeasurementInActiveViewport: (ctx, evt) => { - const { MeasurementService } = servicesManager.services; + const { measurementService } = servicesManager.services; const { trackedStudy, trackedSeries } = ctx; - const measurements = MeasurementService.getMeasurements(); + const measurements = measurementService.getMeasurements(); const trackedMeasurements = measurements.filter( m => trackedStudy === m.referenceStudyUID && @@ -46,7 +46,7 @@ function TrackedMeasurementsContextProvider( const uid = trackedMeasurements[0].uid; - MeasurementService.jumpToMeasurement( + measurementService.jumpToMeasurement( viewportGrid.activeViewportIndex, uid ); @@ -63,24 +63,24 @@ function TrackedMeasurementsContextProvider( } }, discardPreviouslyTrackedMeasurements: (ctx, evt) => { - const { MeasurementService } = servicesManager.services; - const measurements = MeasurementService.getMeasurements(); + const { measurementService } = servicesManager.services; + const measurements = measurementService.getMeasurements(); const filteredMeasurements = measurements.filter(ms => ctx.prevTrackedSeries.includes(ms.referenceSeriesUID) ); const measurementIds = filteredMeasurements.map(fm => fm.id); for (let i = 0; i < measurementIds.length; i++) { - MeasurementService.remove(measurementIds[i]); + measurementService.remove(measurementIds[i]); } }, clearAllMeasurements: (ctx, evt) => { - const { MeasurementService } = servicesManager.services; - const measurements = MeasurementService.getMeasurements(); + const { measurementService } = servicesManager.services; + const measurements = measurementService.getMeasurements(); const measurementIds = measurements.map(fm => fm.uid); for (let i = 0; i < measurementIds.length; i++) { - MeasurementService.remove(measurementIds[i]); + measurementService.remove(measurementIds[i]); } }, }); @@ -139,8 +139,8 @@ function TrackedMeasurementsContextProvider( // Todo: Getting the first displaySetInstanceUID is wrong, but we don't have // tracking fusion viewports yet. This should change when we do. - const { DisplaySetService } = servicesManager.services; - const displaySet = DisplaySetService.getDisplaySetByUID( + const { displaySetService } = servicesManager.services; + const displaySet = displaySetService.getDisplaySetByUID( activeViewport.displaySetInstanceUIDs[0] ); diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js index 7ae57bd49..bc889bfc7 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptHydrateStructuredReport.js @@ -17,10 +17,10 @@ function promptHydrateStructuredReport( ) { const { UIViewportDialogService, - DisplaySetService, + displaySetService, } = servicesManager.services; const { viewportIndex, displaySetInstanceUID } = evt; - const srDisplaySet = DisplaySetService.getDisplaySetByUID( + const srDisplaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js index 3e825aae2..2aa54db80 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/promptSaveReport.js @@ -9,9 +9,9 @@ function promptSaveReport( evt ) { const { - UIDialogService, - MeasurementService, - DisplaySetService, + uiDialogService, + measurementService, + displaySetService, } = servicesManager.services; const viewportIndex = evt.viewportIndex === undefined @@ -26,13 +26,13 @@ function promptSaveReport( let displaySetInstanceUIDs; return new Promise(async function(resolve, reject) { - // TODO: Fallback if (UIDialogService) { - const promptResult = await createReportDialogPrompt(UIDialogService); + // TODO: Fallback if (uiDialogService) { + const promptResult = await createReportDialogPrompt(uiDialogService); if (promptResult.action === RESPONSE.CREATE_REPORT) { const dataSources = extensionManager.getDataSources(); const dataSource = dataSources[0]; - const measurements = MeasurementService.getMeasurements(); + const measurements = measurementService.getMeasurements(); const trackedMeasurements = measurements.filter( m => trackedStudy === m.referenceStudyUID && @@ -45,7 +45,7 @@ function promptSaveReport( ? 'Research Derived Series' // default : promptResult.value; // provided value - const SeriesNumber = getNextSRSeriesNumber(DisplaySetService); + const SeriesNumber = getNextSRSeriesNumber(displaySetService); displaySetInstanceUIDs = await createReportAsync( servicesManager, diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx index f376aecfb..0947eab69 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.tsx @@ -32,9 +32,9 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { 200 ); const { - MeasurementService, - UIDialogService, - DisplaySetService, + measurementService, + uiDialogService, + displaySetService, } = servicesManager.services; const [ trackedMeasurements, @@ -47,7 +47,7 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { const [displayMeasurements, setDisplayMeasurements] = useState([]); useEffect(() => { - const measurements = MeasurementService.getMeasurements(); + const measurements = measurementService.getMeasurements(); const filteredMeasurements = measurements.filter( m => trackedStudy === m.referenceStudyUID && @@ -57,14 +57,14 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { const mappedMeasurements = filteredMeasurements.map(m => _mapMeasurementToDisplay( m, - MeasurementService.VALUE_TYPES, - DisplaySetService + measurementService.VALUE_TYPES, + displaySetService ) ); setDisplayMeasurements(mappedMeasurements); // eslint-ignore-next-line }, [ - MeasurementService, + measurementService, trackedStudy, trackedSeries, debouncedMeasurementChangeTimestamp, @@ -110,20 +110,20 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { // TODO: Better way to consolidated, debounce, check on change? // Are we exposing the right API for measurementService? - // This watches for ALL MeasurementService changes. It updates a timestamp, + // This watches for ALL measurementService changes. It updates a timestamp, // which is debounced. After a brief period of inactivity, this triggers // a re-render where we grab up-to-date measurements useEffect(() => { - const added = MeasurementService.EVENTS.MEASUREMENT_ADDED; - const addedRaw = MeasurementService.EVENTS.RAW_MEASUREMENT_ADDED; - const updated = MeasurementService.EVENTS.MEASUREMENT_UPDATED; - const removed = MeasurementService.EVENTS.MEASUREMENT_REMOVED; - const cleared = MeasurementService.EVENTS.MEASUREMENTS_CLEARED; + const added = measurementService.EVENTS.MEASUREMENT_ADDED; + const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED; + const updated = measurementService.EVENTS.MEASUREMENT_UPDATED; + const removed = measurementService.EVENTS.MEASUREMENT_REMOVED; + const cleared = measurementService.EVENTS.MEASUREMENTS_CLEARED; const subscriptions = []; [added, addedRaw, updated, removed, cleared].forEach(evt => { subscriptions.push( - MeasurementService.subscribe(evt, () => { + measurementService.subscribe(evt, () => { setMeasurementsUpdated(Date.now().toString()); }).unsubscribe ); @@ -134,33 +134,33 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { unsub(); }); }; - }, [MeasurementService, sendTrackedMeasurementsEvent]); + }, [measurementService, sendTrackedMeasurementsEvent]); async function exportReport() { - const measurements = MeasurementService.getMeasurements(); + const measurements = measurementService.getMeasurements(); const trackedMeasurements = measurements.filter( m => trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID) ); - downloadCSVReport(trackedMeasurements, MeasurementService); + downloadCSVReport(trackedMeasurements, measurementService); } const jumpToImage = ({ uid, isActive }) => { - MeasurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid); + measurementService.jumpToMeasurement(viewportGrid.activeViewportIndex, uid); onMeasurementItemClickHandler({ uid, isActive }); }; const onMeasurementItemEditHandler = ({ uid, isActive }) => { - const measurement = MeasurementService.getMeasurement(uid); + const measurement = measurementService.getMeasurement(uid); jumpToImage({ uid, isActive }); const onSubmitHandler = ({ action, value }) => { switch (action.id) { case 'save': { - MeasurementService.update( + measurementService.update( uid, { ...measurement, @@ -170,10 +170,10 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { ); } } - UIDialogService.dismiss({ id: 'enter-annotation' }); + uiDialogService.dismiss({ id: 'enter-annotation' }); }; - UIDialogService.create({ + uiDialogService.create({ id: 'enter-annotation', centralize: true, isDraggable: false, @@ -230,10 +230,10 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { }; const displayMeasurementsWithoutFindings = displayMeasurements.filter( - dm => dm.measurementType !== MeasurementService.VALUE_TYPES.POINT + dm => dm.measurementType !== measurementService.VALUE_TYPES.POINT ); const additionalFindings = displayMeasurements.filter( - dm => dm.measurementType === MeasurementService.VALUE_TYPES.POINT + dm => dm.measurementType === measurementService.VALUE_TYPES.POINT ); return ( @@ -286,7 +286,7 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { PanelMeasurementTableTracking.propTypes = { servicesManager: PropTypes.shape({ services: PropTypes.shape({ - MeasurementService: PropTypes.shape({ + measurementService: PropTypes.shape({ getMeasurements: PropTypes.func.isRequired, VALUE_TYPES: PropTypes.object.isRequired, }).isRequired, @@ -294,8 +294,8 @@ PanelMeasurementTableTracking.propTypes = { }).isRequired, }; -// TODO: This could be a MeasurementService mapper -function _mapMeasurementToDisplay(measurement, types, DisplaySetService) { +// TODO: This could be a measurementService mapper +function _mapMeasurementToDisplay(measurement, types, displaySetService) { const { referenceStudyUID, referenceSeriesUID, SOPInstanceUID } = measurement; // TODO: We don't deal with multiframe well yet, would need to update @@ -307,7 +307,7 @@ function _mapMeasurementToDisplay(measurement, types, DisplaySetService) { SOPInstanceUID ); - const displaySets = DisplaySetService.getDisplaySetsForSeries( + const displaySets = displaySetService.getDisplaySetsForSeries( referenceSeriesUID ); diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 84bcfddc9..9983aadf5 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; -import { HangingProtocolService, utils } from '@ohif/core'; +import { utils } from '@ohif/core'; import { StudyBrowser, useImageViewer, @@ -23,11 +23,11 @@ function PanelStudyBrowserTracking({ dataSource, }) { const { - MeasurementService, - DisplaySetService, - UIDialogService, - HangingProtocolService, - UINotificationService, + measurementService, + displaySetService, + uiDialogService, + hangingProtocolService, + uiNotificationService, } = servicesManager.services; // Normally you nest the components so the tree isn't so deep, and the data @@ -55,13 +55,13 @@ function PanelStudyBrowserTracking({ let updatedViewports = []; const viewportIndex = activeViewportIndex; try { - updatedViewports = HangingProtocolService.getViewportsRequireUpdate( + updatedViewports = hangingProtocolService.getViewportsRequireUpdate( viewportIndex, displaySetInstanceUID ); } catch (error) { console.warn(error); - UINotificationService.show({ + uiNotificationService.show({ title: 'Thumbnail Double Click', message: 'The selected display sets could not be added to the viewport due to a mismatch in the Hanging Protocol rules.', @@ -79,13 +79,13 @@ function PanelStudyBrowserTracking({ const isSingleViewport = numCols === 1 && numRows === 1; useEffect(() => { - const added = MeasurementService.EVENTS.MEASUREMENT_ADDED; - const addedRaw = MeasurementService.EVENTS.RAW_MEASUREMENT_ADDED; + const added = measurementService.EVENTS.MEASUREMENT_ADDED; + const addedRaw = measurementService.EVENTS.RAW_MEASUREMENT_ADDED; const subscriptions = []; [added, addedRaw].forEach(evt => { subscriptions.push( - MeasurementService.subscribe(evt, ({ source, measurement }) => { + measurementService.subscribe(evt, ({ source, measurement }) => { const { referenceSeriesUID: SeriesInstanceUID, referenceStudyUID: StudyInstanceUID, @@ -106,7 +106,7 @@ function PanelStudyBrowserTracking({ unsub(); }); }; - }, [MeasurementService, activeViewportIndex, sendTrackedMeasurementsEvent]); + }, [measurementService, activeViewportIndex, sendTrackedMeasurementsEvent]); const { trackedStudy, trackedSeries } = trackedMeasurements.context; @@ -150,10 +150,10 @@ function PanelStudyBrowserTracking({ // ~~ Initial Thumbnails useEffect(() => { - const currentDisplaySets = DisplaySetService.activeDisplaySets; + const currentDisplaySets = displaySetService.activeDisplaySets; currentDisplaySets.forEach(async dSet => { const newImageSrcEntry = {}; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( dSet.displaySetInstanceUID ); const imageIds = dataSource.getImageIdsForDisplaySet(displaySet); @@ -171,12 +171,12 @@ function PanelStudyBrowserTracking({ } }); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [DisplaySetService, dataSource, getImageSrc]); + }, [displaySetService, dataSource, getImageSrc]); // ~~ displaySets useEffect(() => { // TODO: Are we sure `activeDisplaySets` will always be accurate? - const currentDisplaySets = DisplaySetService.activeDisplaySets; + const currentDisplaySets = displaySetService.activeDisplaySets; const mappedDisplaySets = _mapDisplaySets( currentDisplaySets, thumbnailImageSrcMap, @@ -184,15 +184,15 @@ function PanelStudyBrowserTracking({ viewports, isSingleViewport, dataSource, - DisplaySetService, - UIDialogService, - UINotificationService + displaySetService, + uiDialogService, + uiNotificationService ); setDisplaySets(mappedDisplaySets); // eslint-disable-next-line react-hooks/exhaustive-deps }, [ - DisplaySetService.activeDisplaySets, + displaySetService.activeDisplaySets, trackedSeries, thumbnailImageSrcMap, viewports, @@ -202,15 +202,15 @@ function PanelStudyBrowserTracking({ // ~~ subscriptions --> displaySets useEffect(() => { // DISPLAY_SETS_ADDED returns an array of DisplaySets that were added - const SubscriptionDisplaySetsAdded = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_ADDED, + const SubscriptionDisplaySetsAdded = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_ADDED, data => { const { displaySetsAdded, options } = data; displaySetsAdded.forEach(async dSet => { const displaySetInstanceUID = dSet.displaySetInstanceUID; const newImageSrcEntry = {}; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -237,8 +237,8 @@ function PanelStudyBrowserTracking({ // TODO: Will this always hold _all_ the displaySets we care about? // DISPLAY_SETS_CHANGED returns `DisplaySerService.activeDisplaySets` - const SubscriptionDisplaySetsChanged = DisplaySetService.subscribe( - DisplaySetService.EVENTS.DISPLAY_SETS_CHANGED, + const SubscriptionDisplaySetsChanged = displaySetService.subscribe( + displaySetService.EVENTS.DISPLAY_SETS_CHANGED, changedDisplaySets => { const mappedDisplaySets = _mapDisplaySets( changedDisplaySets, @@ -247,9 +247,9 @@ function PanelStudyBrowserTracking({ viewports, isSingleViewport, dataSource, - DisplaySetService, - UIDialogService, - UINotificationService + displaySetService, + uiDialogService, + uiNotificationService ); setDisplaySets(mappedDisplaySets); @@ -262,7 +262,7 @@ function PanelStudyBrowserTracking({ }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [ - DisplaySetService, + displaySetService, dataSource, getImageSrc, thumbnailImageSrcMap, @@ -294,7 +294,7 @@ function PanelStudyBrowserTracking({ if (!shouldCollapseStudy) { const madeInClient = true; requestDisplaySetCreationForStudy( - DisplaySetService, + displaySetService, StudyInstanceUID, madeInClient ); @@ -357,7 +357,7 @@ function PanelStudyBrowserTracking({ setActiveTabName(clickedTabName); }} onClickUntrack={displaySetInstanceUID => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); // TODO: shift this somewhere else where we're centralizing this logic? @@ -414,9 +414,9 @@ function _mapDisplaySets( viewports, // TODO: make array of `displaySetInstanceUIDs`? isSingleViewport, dataSource, - DisplaySetService, - UIDialogService, - UINotificationService + displaySetService, + uiDialogService, + uiNotificationService ) { const thumbnailDisplaySets = []; const thumbnailNoImageDisplaySets = []; @@ -466,7 +466,7 @@ function _mapDisplaySets( if (dataSource.reject && dataSource.reject.series) { thumbnailProps.canReject = true; thumbnailProps.onReject = () => { - UIDialogService.create({ + uiDialogService.create({ id: 'ds-reject-sr', centralize: true, isDraggable: false, @@ -489,7 +489,7 @@ function _mapDisplaySets( classes: ['reject-yes-button'], }, ], - onClose: () => UIDialogService.dismiss({ id: 'ds-reject-sr' }), + onClose: () => uiDialogService.dismiss({ id: 'ds-reject-sr' }), onShow: () => { const yesButton = document.querySelector('.reject-yes-button'); @@ -503,16 +503,16 @@ function _mapDisplaySets( ds.StudyInstanceUID, ds.SeriesInstanceUID ); - DisplaySetService.deleteDisplaySet(displaySetInstanceUID); - UIDialogService.dismiss({ id: 'ds-reject-sr' }); - UINotificationService.show({ + displaySetService.deleteDisplaySet(displaySetInstanceUID); + uiDialogService.dismiss({ id: 'ds-reject-sr' }); + uiNotificationService.show({ title: 'Delete Report', message: 'Report deleted successfully', type: 'success', }); } catch (error) { - UIDialogService.dismiss({ id: 'ds-reject-sr' }); - UINotificationService.show({ + uiDialogService.dismiss({ id: 'ds-reject-sr' }); + uiNotificationService.show({ title: 'Delete Report', message: 'Failed to delete report', type: 'error', @@ -520,7 +520,7 @@ function _mapDisplaySets( } break; case 'cancel': - UIDialogService.dismiss({ id: 'ds-reject-sr' }); + uiDialogService.dismiss({ id: 'ds-reject-sr' }); break; } }, diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/requestDisplaySetCreationForStudy.js b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/requestDisplaySetCreationForStudy.js index b6b79ec2e..7da70cb9f 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/requestDisplaySetCreationForStudy.js +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/requestDisplaySetCreationForStudy.js @@ -1,11 +1,11 @@ function requestDisplaySetCreationForStudy( dataSource, - DisplaySetService, + displaySetService, StudyInstanceUID, madeInClient ) { if ( - DisplaySetService.activeDisplaySets.some( + displaySetService.activeDisplaySets.some( displaySet => displaySet.StudyInstanceUID === StudyInstanceUID ) ) { diff --git a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx index 4cf48444a..6d0971f43 100644 --- a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx +++ b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx @@ -35,8 +35,8 @@ function TrackedCornerstoneViewport(props) { const { t } = useTranslation('TrackedViewport'); const { - MeasurementService, - CornerstoneViewportService, + measurementService, + cornerstoneViewportService, } = servicesManager.services; // Todo: handling more than one displaySet on the same viewport @@ -99,9 +99,9 @@ function TrackedCornerstoneViewport(props) { }, }); - CornerstoneViewportService.getRenderingEngine().renderViewport( - viewportId - ); + cornerstoneViewportService + .getRenderingEngine() + .renderViewport(viewportId); return; } @@ -112,7 +112,7 @@ function TrackedCornerstoneViewport(props) { }, }); - CornerstoneViewportService.getRenderingEngine().renderViewport(viewportId); + cornerstoneViewportService.getRenderingEngine().renderViewport(viewportId); return () => { annotation.config.style.setViewportToolStyles(viewportId, {}); @@ -177,7 +177,7 @@ function TrackedCornerstoneViewport(props) { setTrackedMeasurementUID(newTrackedMeasurementUID); - MeasurementService.jumpToMeasurement( + measurementService.jumpToMeasurement( viewportIndex, newTrackedMeasurementUID ); @@ -281,8 +281,8 @@ function _getNextMeasurementUID( trackedMeasurementId, trackedMeasurements ) { - const { MeasurementService } = servicesManager.services; - const measurements = MeasurementService.getMeasurements(); + const { measurementService } = servicesManager.services; + const measurements = measurementService.getMeasurements(); const { trackedSeries } = trackedMeasurements.context; diff --git a/extensions/tmtv/package.json b/extensions/tmtv/package.json index 9bb5c9479..a789437a1 100644 --- a/extensions/tmtv/package.json +++ b/extensions/tmtv/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/tmtv/src/Panels/PanelPetSUV.tsx b/extensions/tmtv/src/Panels/PanelPetSUV.tsx index b07476f1f..9cb5dbfd6 100644 --- a/extensions/tmtv/src/Panels/PanelPetSUV.tsx +++ b/extensions/tmtv/src/Panels/PanelPetSUV.tsx @@ -25,10 +25,10 @@ const DEFAULT_MEATADATA = { export default function PanelPetSUV({ servicesManager, commandsManager }) { const { t } = useTranslation('PanelSUV'); const { - DisplaySetService, - ToolGroupService, + displaySetService, + toolGroupService, toolbarService, - HangingProtocolService, + hangingProtocolService, } = (servicesManager as ServicesManager).services; const [metadata, setMetadata] = useState(DEFAULT_MEATADATA); const [ptDisplaySet, setPtDisplaySet] = useState(null); @@ -70,8 +70,8 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { }; useEffect(() => { - const displaySets = DisplaySetService.getActiveDisplaySets(); - const { viewportMatchDetails } = HangingProtocolService.getMatchDetails(); + const displaySets = displaySetService.getActiveDisplaySets(); + const { viewportMatchDetails } = hangingProtocolService.getMatchDetails(); if (!displaySets.length) { return; } @@ -89,8 +89,8 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { // get the patientMetadata from the StudyInstanceUIDs and update the state useEffect(() => { - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.PROTOCOL_CHANGED, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.PROTOCOL_CHANGED, ({ viewportMatchDetails }) => { const displaySetInfo = getMatchingPTDisplaySet(viewportMatchDetails); @@ -112,7 +112,7 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { throw new Error('No ptDisplaySet found'); } - const toolGroupIds = ToolGroupService.getToolGroupIds(); + const toolGroupIds = toolGroupService.getToolGroupIds(); // Todo: we don't have a proper way to perform a toggle command and update the // state for the toolbar, so here, we manually toggle the toolbar @@ -139,7 +139,7 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { ); // update the displaySets - DisplaySetService.setDisplaySetMetadataInvalidated( + displaySetService.setDisplaySetMetadataInvalidated( ptDisplaySet.displaySetInstanceUID ); } @@ -238,7 +238,7 @@ export default function PanelPetSUV({ servicesManager, commandsManager }) { PanelPetSUV.propTypes = { servicesManager: PropTypes.shape({ services: PropTypes.shape({ - MeasurementService: PropTypes.shape({ + measurementService: PropTypes.shape({ getMeasurements: PropTypes.func.isRequired, subscribe: PropTypes.func.isRequired, EVENTS: PropTypes.object.isRequired, diff --git a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx index 238dcfc0f..0d47b93f5 100644 --- a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx +++ b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx @@ -45,14 +45,14 @@ export default function PanelRoiThresholdSegmentation({ servicesManager, commandsManager, }) { - const { SegmentationService } = servicesManager.services; + const { segmentationService } = servicesManager.services; const { t } = useTranslation('PanelSUV'); const [showConfig, setShowConfig] = useState(false); const [labelmapLoading, setLabelmapLoading] = useState(false); const [selectedSegmentationId, setSelectedSegmentationId] = useState(null); const [segmentations, setSegmentations] = useState(() => - SegmentationService.getSegmentations() + segmentationService.getSegmentations() ); const [config, dispatch] = useReducer(reducer, { @@ -90,7 +90,7 @@ export default function PanelRoiThresholdSegmentation({ const lesionGlyoclysisStats = lesionStats.volume * lesionStats.meanValue; // update segDetails with the suv peak for the active segmentation - const segmentation = SegmentationService.getSegmentation( + const segmentation = segmentationService.getSegmentation( selectedSegmentationId ); @@ -101,7 +101,7 @@ export default function PanelRoiThresholdSegmentation({ }; const notYetUpdatedAtSource = true; - SegmentationService.addOrUpdateSegmentation( + segmentationService.addOrUpdateSegmentation( { ...segmentation, ...Object.assign(segmentation.cachedStats, cachedStats), @@ -118,13 +118,13 @@ export default function PanelRoiThresholdSegmentation({ */ useEffect(() => { // ~~ Subscription - const added = SegmentationService.EVENTS.SEGMENTATION_ADDED; - const updated = SegmentationService.EVENTS.SEGMENTATION_UPDATED; + const added = segmentationService.EVENTS.SEGMENTATION_ADDED; + const updated = segmentationService.EVENTS.SEGMENTATION_UPDATED; const subscriptions = []; [added, updated].forEach(evt => { - const { unsubscribe } = SegmentationService.subscribe(evt, () => { - const segmentations = SegmentationService.getSegmentations(); + const { unsubscribe } = segmentationService.subscribe(evt, () => { + const segmentations = segmentationService.getSegmentations(); setSegmentations(segmentations); }); subscriptions.push(unsubscribe); @@ -138,10 +138,10 @@ export default function PanelRoiThresholdSegmentation({ }, []); useEffect(() => { - const { unsubscribe } = SegmentationService.subscribe( - SegmentationService.EVENTS.SEGMENTATION_REMOVED, + const { unsubscribe } = segmentationService.subscribe( + segmentationService.EVENTS.SEGMENTATION_REMOVED, () => { - const segmentations = SegmentationService.getSegmentations(); + const segmentations = segmentationService.getSegmentations(); setSegmentations(segmentations); if (segmentations.length > 0) { @@ -223,15 +223,15 @@ export default function PanelRoiThresholdSegmentation({ setSelectedSegmentationId(id); }} onToggleVisibility={id => { - SegmentationService.toggleSegmentationVisibility(id); + segmentationService.toggleSegmentationVisibility(id); }} onToggleVisibilityAll={ids => { ids.map(id => { - SegmentationService.toggleSegmentationVisibility(id); + segmentationService.toggleSegmentationVisibility(id); }); }} onDelete={id => { - SegmentationService.remove(id); + segmentationService.remove(id); }} onEdit={id => { segmentationEditHandler({ @@ -285,7 +285,7 @@ PanelRoiThresholdSegmentation.propTypes = { }), servicesManager: PropTypes.shape({ services: PropTypes.shape({ - SegmentationService: PropTypes.shape({ + segmentationService: PropTypes.shape({ getSegmentation: PropTypes.func.isRequired, getSegmentations: PropTypes.func.isRequired, toggleSegmentationVisibility: PropTypes.func.isRequired, diff --git a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/segmentationEditHandler.tsx b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/segmentationEditHandler.tsx index 363127b01..433a9a704 100644 --- a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/segmentationEditHandler.tsx +++ b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/segmentationEditHandler.tsx @@ -2,14 +2,14 @@ import React from 'react'; import { Input, Dialog } from '@ohif/ui'; function segmentationItemEditHandler({ id, servicesManager }) { - const { SegmentationService, UIDialogService } = servicesManager.services; + const { segmentationService, uiDialogService } = servicesManager.services; - const segmentation = SegmentationService.getSegmentation(id); + const segmentation = segmentationService.getSegmentation(id); const onSubmitHandler = ({ action, value }) => { switch (action.id) { case 'save': { - SegmentationService.addOrUpdateSegmentation( + segmentationService.addOrUpdateSegmentation( { ...segmentation, ...value, @@ -18,10 +18,10 @@ function segmentationItemEditHandler({ id, servicesManager }) { ); } } - UIDialogService.dismiss({ id: 'enter-annotation' }); + uiDialogService.dismiss({ id: 'enter-annotation' }); }; - UIDialogService.create({ + uiDialogService.create({ id: 'enter-annotation', centralize: true, isDraggable: false, diff --git a/extensions/tmtv/src/commandsModule.js b/extensions/tmtv/src/commandsModule.js index 4916f99fb..bc4de2c98 100644 --- a/extensions/tmtv/src/commandsModule.js +++ b/extensions/tmtv/src/commandsModule.js @@ -20,13 +20,13 @@ const commandsModule = ({ extensionManager, }) => { const { - ViewportGridService, - UINotificationService, - DisplaySetService, - HangingProtocolService, - ToolGroupService, - CornerstoneViewportService, - SegmentationService, + viewportGridService, + uiNotificationService, + displaySetService, + hangingProtocolService, + toolGroupService, + cornerstoneViewportService, + segmentationService, } = servicesManager.services; const utilityModule = extensionManager.getModuleEntry( @@ -36,14 +36,14 @@ const commandsModule = ({ const { getEnabledElement } = utilityModule.exports; function _getActiveViewportsEnabledElement() { - const { activeViewportIndex } = ViewportGridService.getState(); + const { activeViewportIndex } = viewportGridService.getState(); const { element } = getEnabledElement(activeViewportIndex) || {}; const enabledElement = cs.getEnabledElement(element); return enabledElement; } function _getMatchedViewportsToolGroupIds() { - const { viewportMatchDetails } = HangingProtocolService.getMatchDetails(); + const { viewportMatchDetails } = hangingProtocolService.getMatchDetails(); const toolGroupIds = []; viewportMatchDetails.forEach((value, key) => { const { viewportOptions } = value; @@ -67,7 +67,7 @@ const commandsModule = ({ for (const [viewportIndex, viewportDetails] of viewportMatchDetails) { const { displaySetsInfo } = viewportDetails; const displaySets = displaySetsInfo.map(({ displaySetInstanceUID }) => - DisplaySetService.getDisplaySetByUID(displaySetInstanceUID) + displaySetService.getDisplaySetByUID(displaySetInstanceUID) ); if (!displaySets || displaySets.length === 0) { @@ -121,17 +121,17 @@ const commandsModule = ({ createNewLabelmapFromPT: async () => { // Create a segmentation of the same resolution as the source data // using volumeLoader.createAndCacheDerivedVolume. - const { viewportMatchDetails } = HangingProtocolService.getMatchDetails(); + const { viewportMatchDetails } = hangingProtocolService.getMatchDetails(); const ptDisplaySet = actions.getMatchingPTDisplaySet({ viewportMatchDetails, }); if (!ptDisplaySet) { - UINotificationService.error('No matching PT display set found'); + uiNotificationService.error('No matching PT display set found'); return; } - const segmentationId = await SegmentationService.createSegmentationForDisplaySet( + const segmentationId = await segmentationService.createSegmentationForDisplaySet( ptDisplaySet.displaySetInstanceUID ); @@ -142,14 +142,14 @@ const commandsModule = ({ for (const toolGroupId of toolGroupIds) { const hydrateSegmentation = true; - await SegmentationService.addSegmentationRepresentationToToolGroup( + await segmentationService.addSegmentationRepresentationToToolGroup( toolGroupId, segmentationId, hydrateSegmentation, representationType ); - SegmentationService.setActiveSegmentationForToolGroup( + segmentationService.setActiveSegmentationForToolGroup( segmentationId, toolGroupId ); @@ -161,7 +161,7 @@ const commandsModule = ({ const toolGroupIds = _getMatchedViewportsToolGroupIds(); toolGroupIds.forEach(toolGroupId => { - SegmentationService.setActiveSegmentationForToolGroup( + segmentationService.setActiveSegmentationForToolGroup( segmentationId, toolGroupId ); @@ -193,7 +193,7 @@ const commandsModule = ({ ); if (annotationUIDs.length === 0) { - UINotificationService.show({ + uiNotificationService.show({ title: 'Commands Module', message: 'No ROIThreshold Tool is Selected', type: 'error', @@ -289,7 +289,7 @@ const commandsModule = ({ }, calculateTMTV: ({ segmentations }) => { const labelmaps = segmentations.map(s => - SegmentationService.getLabelmapVolume(s.id) + segmentationService.getLabelmapVolume(s.id) ); if (!labelmaps.length) { @@ -314,7 +314,7 @@ const commandsModule = ({ }, getTotalLesionGlycolysis: ({ segmentations }) => { const labelmapVolumes = segmentations.map(s => - SegmentationService.getLabelmapVolume(s.id) + segmentationService.getLabelmapVolume(s.id) ); let mergedLabelmap; @@ -448,7 +448,7 @@ const commandsModule = ({ }, getSegmentationCSVReport: ({ segmentations }) => { if (!segmentations || !segmentations.length) { - segmentations = SegmentationService.getSegmentations(); + segmentations = segmentationService.getSegmentations(); } let report = {}; @@ -474,7 +474,7 @@ const commandsModule = ({ } }); - const labelmapVolume = SegmentationService.getLabelmapVolume(id); + const labelmapVolume = segmentationService.getLabelmapVolume(id); if (!labelmapVolume) { report[id] = segReport; @@ -484,7 +484,7 @@ const commandsModule = ({ const referencedVolumeId = labelmapVolume.referencedVolumeId; segReport.referencedVolumeId = referencedVolumeId; - const referencedVolume = SegmentationService.getLabelmapVolume( + const referencedVolume = segmentationService.getLabelmapVolume( referencedVolumeId ); @@ -525,8 +525,8 @@ const commandsModule = ({ dicomRTAnnotationExport(annotations); }, setFusionPTColormap: ({ toolGroupId, colormap }) => { - const toolGroup = ToolGroupService.getToolGroup(toolGroupId); - const { viewportMatchDetails } = HangingProtocolService.getMatchDetails(); + const toolGroup = toolGroupService.getToolGroup(toolGroupId); + const { viewportMatchDetails } = hangingProtocolService.getMatchDetails(); const ptDisplaySet = actions.getMatchingPTDisplaySet({ viewportMatchDetails, @@ -540,7 +540,7 @@ const commandsModule = ({ let viewports = []; fusionViewportIds.forEach(viewportId => { - const viewportInfo = CornerstoneViewportService.getViewportInfo( + const viewportInfo = cornerstoneViewportService.getViewportInfo( viewportId ); @@ -552,7 +552,7 @@ const commandsModule = ({ }); viewports.push( - CornerstoneViewportService.getCornerstoneViewport(viewportId) + cornerstoneViewportService.getCornerstoneViewport(viewportId) ); }); diff --git a/extensions/tmtv/src/init.js b/extensions/tmtv/src/init.js index 72fa9af88..3c694cf37 100644 --- a/extensions/tmtv/src/init.js +++ b/extensions/tmtv/src/init.js @@ -16,25 +16,25 @@ const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1'; */ export default function init({ servicesManager, extensionManager }) { const { - MeasurementService, - DisplaySetService, - CornerstoneViewportService, + measurementService, + displaySetService, + cornerstoneViewportService, } = servicesManager.services; addTool(RectangleROIStartEndThresholdTool); const { RectangleROIStartEndThreshold } = measurementServiceMappingsFactory( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ); - const csTools3DVer1MeasurementSource = MeasurementService.getSource( + const csTools3DVer1MeasurementSource = measurementService.getSource( CORNERSTONE_3D_TOOLS_SOURCE_NAME, CORNERSTONE_3D_TOOLS_SOURCE_VERSION ); - MeasurementService.addMapping( + measurementService.addMapping( csTools3DVer1MeasurementSource, 'RectangleROIStartEndThreshold', RectangleROIStartEndThreshold.matchingCriteria, diff --git a/extensions/tmtv/src/utils/measurementServiceMappings/RectangleROIStartEndThreshold.js b/extensions/tmtv/src/utils/measurementServiceMappings/RectangleROIStartEndThreshold.js index 9508c2532..5d2100aff 100644 --- a/extensions/tmtv/src/utils/measurementServiceMappings/RectangleROIStartEndThreshold.js +++ b/extensions/tmtv/src/utils/measurementServiceMappings/RectangleROIStartEndThreshold.js @@ -12,8 +12,8 @@ const RectangleROIStartEndThreshold = { */ toMeasurement: ( csToolsEventDetail, - DisplaySetService, - CornerstoneViewportService + displaySetService, + cornerstoneViewportService ) => { const { annotation, viewportId } = csToolsEventDetail; const { metadata, data, annotationUID } = annotation; @@ -36,19 +36,19 @@ const RectangleROIStartEndThreshold = { StudyInstanceUID, } = getSOPInstanceAttributes( referencedImageId, - CornerstoneViewportService, + cornerstoneViewportService, viewportId ); let displaySet; if (SOPInstanceUID) { - displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( SOPInstanceUID, SeriesInstanceUID ); } else { - displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); } const { cachedStats } = data; diff --git a/extensions/tmtv/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js b/extensions/tmtv/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js index ec69721ef..f99b956a1 100644 --- a/extensions/tmtv/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js +++ b/extensions/tmtv/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js @@ -1,9 +1,9 @@ import RectangleROIStartEndThreshold from './RectangleROIStartEndThreshold'; const measurementServiceMappingsFactory = ( - MeasurementService, - DisplaySetService, - CornerstoneViewportService + measurementService, + displaySetService, + cornerstoneViewportService ) => { return { RectangleROIStartEndThreshold: { @@ -11,12 +11,12 @@ const measurementServiceMappingsFactory = ( toMeasurement: csToolsAnnotation => RectangleROIStartEndThreshold.toMeasurement( csToolsAnnotation, - DisplaySetService, - CornerstoneViewportService + displaySetService, + cornerstoneViewportService ), matchingCriteria: [ { - valueType: MeasurementService.VALUE_TYPES.ROI_THRESHOLD_MANUAL, + valueType: measurementService.VALUE_TYPES.ROI_THRESHOLD_MANUAL, }, ], }, diff --git a/modes/basic-dev-mode/src/index.js b/modes/basic-dev-mode/src/index.js index 45778fde6..204b7b612 100644 --- a/modes/basic-dev-mode/src/index.js +++ b/modes/basic-dev-mode/src/index.js @@ -53,7 +53,7 @@ function modeFactory({ modeConfiguration }) { * Lifecycle hooks */ onModeEnter: ({ servicesManager, extensionManager }) => { - const { toolbarService, ToolGroupService } = servicesManager.services; + const { toolbarService, toolGroupService } = servicesManager.services; const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); @@ -89,7 +89,7 @@ function modeFactory({ modeConfiguration }) { }; const toolGroupId = 'default'; - ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, configs); + toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, configs); let unsubscribe; @@ -116,8 +116,8 @@ function modeFactory({ modeConfiguration }) { // Since we only have one viewport for the basic cs3d mode and it has // only one hanging protocol, we can just use the first viewport - ({ unsubscribe } = ToolGroupService.subscribe( - ToolGroupService.EVENTS.VIEWPORT_ADDED, + ({ unsubscribe } = toolGroupService.subscribe( + toolGroupService.EVENTS.VIEWPORT_ADDED, activateTool )); @@ -134,13 +134,13 @@ function modeFactory({ modeConfiguration }) { }, onModeExit: ({ servicesManager }) => { const { - ToolGroupService, - MeasurementService, + toolGroupService, + measurementService, toolbarService, } = servicesManager.services; toolbarService.reset(); - ToolGroupService.destroy(); + toolGroupService.destroy(); }, validationTags: { study: [], diff --git a/modes/basic-test-mode/src/index.js b/modes/basic-test-mode/src/index.js index b932ff574..7a35b70b2 100644 --- a/modes/basic-test-mode/src/index.js +++ b/modes/basic-test-mode/src/index.js @@ -68,15 +68,15 @@ function modeFactory() { */ onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { - MeasurementService, + measurementService, toolbarService, - ToolGroupService, + toolGroupService, } = servicesManager.services; - MeasurementService.clearMeasurements(); + measurementService.clearMeasurements(); // Init Default and SR ToolGroups - initToolGroups(extensionManager, ToolGroupService, commandsManager); + initToolGroups(extensionManager, toolGroupService, commandsManager); let unsubscribe; @@ -103,8 +103,8 @@ function modeFactory() { // Since we only have one viewport for the basic cs3d mode and it has // only one hanging protocol, we can just use the first viewport - ({ unsubscribe } = ToolGroupService.subscribe( - ToolGroupService.EVENTS.VIEWPORT_ADDED, + ({ unsubscribe } = toolGroupService.subscribe( + toolGroupService.EVENTS.VIEWPORT_ADDED, activateTool )); @@ -124,18 +124,18 @@ function modeFactory() { }, onModeExit: ({ servicesManager }) => { const { - ToolGroupService, - SyncGroupService, + toolGroupService, + syncGroupService, toolbarService, - SegmentationService, - CornerstoneViewportService, + segmentationService, + cornerstoneViewportService, } = servicesManager.services; toolbarService.reset(); - ToolGroupService.destroy(); - SyncGroupService.destroy(); - SegmentationService.destroy(); - CornerstoneViewportService.destroy(); + toolGroupService.destroy(); + syncGroupService.destroy(); + segmentationService.destroy(); + cornerstoneViewportService.destroy(); }, validationTags: { study: [], diff --git a/modes/basic-test-mode/src/initToolGroups.js b/modes/basic-test-mode/src/initToolGroups.js index 74057f146..105b1a2f8 100644 --- a/modes/basic-test-mode/src/initToolGroups.js +++ b/modes/basic-test-mode/src/initToolGroups.js @@ -1,6 +1,6 @@ function initDefaultToolGroup( extensionManager, - ToolGroupService, + toolGroupService, commandsManager, toolGroupId ) { @@ -60,10 +60,10 @@ function initDefaultToolGroup( }, }; - ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); } -function initSRToolGroup(extensionManager, ToolGroupService, commandsManager) { +function initSRToolGroup(extensionManager, toolGroupService, commandsManager) { const SRUtilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools' ); @@ -138,10 +138,10 @@ function initSRToolGroup(extensionManager, ToolGroupService, commandsManager) { }; const toolGroupId = 'SRToolGroup'; - ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); } -function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { +function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) { const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); @@ -208,18 +208,18 @@ function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { }, }; - ToolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); } -function initToolGroups(extensionManager, ToolGroupService, commandsManager) { +function initToolGroups(extensionManager, toolGroupService, commandsManager) { initDefaultToolGroup( extensionManager, - ToolGroupService, + toolGroupService, commandsManager, 'default' ); - initSRToolGroup(extensionManager, ToolGroupService, commandsManager); - initMPRToolGroup(extensionManager, ToolGroupService, commandsManager); + initSRToolGroup(extensionManager, toolGroupService, commandsManager); + initMPRToolGroup(extensionManager, toolGroupService, commandsManager); } export default initToolGroups; diff --git a/modes/longitudinal/src/index.js b/modes/longitudinal/src/index.js index eb31d1600..09c6ec146 100644 --- a/modes/longitudinal/src/index.js +++ b/modes/longitudinal/src/index.js @@ -68,15 +68,15 @@ function modeFactory() { */ onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { - MeasurementService, + measurementService, toolbarService, - ToolGroupService, + toolGroupService, } = servicesManager.services; - MeasurementService.clearMeasurements(); + measurementService.clearMeasurements(); // Init Default and SR ToolGroups - initToolGroups(extensionManager, ToolGroupService, commandsManager); + initToolGroups(extensionManager, toolGroupService, commandsManager); let unsubscribe; @@ -103,8 +103,8 @@ function modeFactory() { // Since we only have one viewport for the basic cs3d mode and it has // only one hanging protocol, we can just use the first viewport - ({ unsubscribe } = ToolGroupService.subscribe( - ToolGroupService.EVENTS.VIEWPORT_ADDED, + ({ unsubscribe } = toolGroupService.subscribe( + toolGroupService.EVENTS.VIEWPORT_ADDED, activateTool )); @@ -124,18 +124,18 @@ function modeFactory() { }, onModeExit: ({ servicesManager }) => { const { - ToolGroupService, - SyncGroupService, + toolGroupService, + syncGroupService, toolbarService, - SegmentationService, - CornerstoneViewportService, + segmentationService, + cornerstoneViewportService, } = servicesManager.services; toolbarService.reset(); - ToolGroupService.destroy(); - SyncGroupService.destroy(); - SegmentationService.destroy(); - CornerstoneViewportService.destroy(); + toolGroupService.destroy(); + syncGroupService.destroy(); + segmentationService.destroy(); + cornerstoneViewportService.destroy(); }, validationTags: { study: [], diff --git a/modes/longitudinal/src/initToolGroups.js b/modes/longitudinal/src/initToolGroups.js index 74057f146..105b1a2f8 100644 --- a/modes/longitudinal/src/initToolGroups.js +++ b/modes/longitudinal/src/initToolGroups.js @@ -1,6 +1,6 @@ function initDefaultToolGroup( extensionManager, - ToolGroupService, + toolGroupService, commandsManager, toolGroupId ) { @@ -60,10 +60,10 @@ function initDefaultToolGroup( }, }; - ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); } -function initSRToolGroup(extensionManager, ToolGroupService, commandsManager) { +function initSRToolGroup(extensionManager, toolGroupService, commandsManager) { const SRUtilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools' ); @@ -138,10 +138,10 @@ function initSRToolGroup(extensionManager, ToolGroupService, commandsManager) { }; const toolGroupId = 'SRToolGroup'; - ToolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig); } -function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { +function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) { const utilityModule = extensionManager.getModuleEntry( '@ohif/extension-cornerstone.utilityModule.tools' ); @@ -208,18 +208,18 @@ function initMPRToolGroup(extensionManager, ToolGroupService, commandsManager) { }, }; - ToolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); } -function initToolGroups(extensionManager, ToolGroupService, commandsManager) { +function initToolGroups(extensionManager, toolGroupService, commandsManager) { initDefaultToolGroup( extensionManager, - ToolGroupService, + toolGroupService, commandsManager, 'default' ); - initSRToolGroup(extensionManager, ToolGroupService, commandsManager); - initMPRToolGroup(extensionManager, ToolGroupService, commandsManager); + initSRToolGroup(extensionManager, toolGroupService, commandsManager); + initMPRToolGroup(extensionManager, toolGroupService, commandsManager); } export default initToolGroups; diff --git a/modes/tmtv/src/index.js b/modes/tmtv/src/index.js index e6bb5ab9a..d9a4e885a 100644 --- a/modes/tmtv/src/index.js +++ b/modes/tmtv/src/index.js @@ -43,9 +43,9 @@ function modeFactory({ modeConfiguration }) { onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => { const { toolbarService, - ToolGroupService, - HangingProtocolService, - DisplaySetService, + toolGroupService, + hangingProtocolService, + displaySetService, } = servicesManager.services; const utilityModule = extensionManager.getModuleEntry( @@ -55,7 +55,7 @@ function modeFactory({ modeConfiguration }) { const { toolNames, Enums } = utilityModule.exports; // Init Default and SR ToolGroups - initToolGroups(toolNames, Enums, ToolGroupService, commandsManager); + initToolGroups(toolNames, Enums, toolGroupService, commandsManager); const setWindowLevelActive = () => { toolbarService.recordInteraction({ @@ -91,28 +91,28 @@ function modeFactory({ modeConfiguration }) { }); }; - const { unsubscribe } = ToolGroupService.subscribe( - ToolGroupService.EVENTS.VIEWPORT_ADDED, + const { unsubscribe } = toolGroupService.subscribe( + toolGroupService.EVENTS.VIEWPORT_ADDED, () => { // For fusion toolGroup we need to add the volumeIds for the crosshairs // since in the fusion viewport we don't want both PT and CT to render MIP // when slabThickness is modified const { displaySetMatchDetails, - } = HangingProtocolService.getMatchDetails(); + } = hangingProtocolService.getMatchDetails(); setCrosshairsConfiguration( displaySetMatchDetails, toolNames, - ToolGroupService, - DisplaySetService + toolGroupService, + displaySetService ); setFusionActiveVolume( displaySetMatchDetails, toolNames, - ToolGroupService, - DisplaySetService + toolGroupService, + displaySetService ); setWindowLevelActive(); @@ -134,19 +134,19 @@ function modeFactory({ modeConfiguration }) { }, onModeExit: ({ servicesManager }) => { const { - ToolGroupService, - SyncGroupService, + toolGroupService, + syncGroupService, toolbarService, - SegmentationService, - CornerstoneViewportService, + segmentationService, + cornerstoneViewportService, } = servicesManager.services; unsubscriptions.forEach(unsubscribe => unsubscribe()); toolbarService.reset(); - ToolGroupService.destroy(); - SyncGroupService.destroy(); - SegmentationService.destroy(); - CornerstoneViewportService.destroy(); + toolGroupService.destroy(); + syncGroupService.destroy(); + segmentationService.destroy(); + cornerstoneViewportService.destroy(); }, validationTags: { study: [], diff --git a/modes/tmtv/src/initToolGroups.js b/modes/tmtv/src/initToolGroups.js index 3167d7528..21e14e126 100644 --- a/modes/tmtv/src/initToolGroups.js +++ b/modes/tmtv/src/initToolGroups.js @@ -7,7 +7,7 @@ export const toolGroupIds = { // MPR: 'mpr', }; -function _initToolGroups(toolNames, Enums, ToolGroupService, commandsManager) { +function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) { const tools = { active: [ { @@ -65,12 +65,12 @@ function _initToolGroups(toolNames, Enums, ToolGroupService, commandsManager) { }, }; - ToolGroupService.createToolGroupAndAddTools( + toolGroupService.createToolGroupAndAddTools( toolGroupIds.CT, tools, toolsConfig ); - ToolGroupService.createToolGroupAndAddTools( + toolGroupService.createToolGroupAndAddTools( toolGroupIds.PT, { active: tools.active, @@ -83,12 +83,12 @@ function _initToolGroups(toolNames, Enums, ToolGroupService, commandsManager) { }, toolsConfig ); - ToolGroupService.createToolGroupAndAddTools( + toolGroupService.createToolGroupAndAddTools( toolGroupIds.Fusion, tools, toolsConfig ); - ToolGroupService.createToolGroupAndAddTools( + toolGroupService.createToolGroupAndAddTools( toolGroupIds.default, tools, toolsConfig @@ -116,14 +116,14 @@ function _initToolGroups(toolNames, Enums, ToolGroupService, commandsManager) { }, }; - ToolGroupService.createToolGroupAndAddTools( + toolGroupService.createToolGroupAndAddTools( toolGroupIds.MIP, mipTools, mipToolsConfig ); } -function initMPRToolGroup(toolNames, Enums, ToolGroupService, commandsManager) { +function initMPRToolGroup(toolNames, Enums, toolGroupService, commandsManager) { const tools = { active: [ { @@ -181,12 +181,12 @@ function initMPRToolGroup(toolNames, Enums, ToolGroupService, commandsManager) { }, }; - ToolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); + toolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig); } -function initToolGroups(toolNames, Enums, ToolGroupService, commandsManager) { - _initToolGroups(toolNames, Enums, ToolGroupService, commandsManager); - // initMPRToolGroup(toolNames, Enums, ToolGroupService, commandsManager); +function initToolGroups(toolNames, Enums, toolGroupService, commandsManager) { + _initToolGroups(toolNames, Enums, toolGroupService, commandsManager); + // initMPRToolGroup(toolNames, Enums, toolGroupService, commandsManager); } export default initToolGroups; diff --git a/modes/tmtv/src/utils/setCrosshairsConfiguration.js b/modes/tmtv/src/utils/setCrosshairsConfiguration.js index 3d83fd14a..cc6b4f57d 100644 --- a/modes/tmtv/src/utils/setCrosshairsConfiguration.js +++ b/modes/tmtv/src/utils/setCrosshairsConfiguration.js @@ -3,8 +3,8 @@ import { toolGroupIds } from '../initToolGroups'; export default function setCrosshairsConfiguration( matches, toolNames, - ToolGroupService, - DisplaySetService + toolGroupService, + displaySetService ) { const matchDetails = matches.get('ctDisplaySet'); @@ -13,11 +13,11 @@ export default function setCrosshairsConfiguration( } const { SeriesInstanceUID } = matchDetails; - const displaySets = DisplaySetService.getDisplaySetsForSeries( + const displaySets = displaySetService.getDisplaySetsForSeries( SeriesInstanceUID ); - const toolConfig = ToolGroupService.getToolConfiguration( + const toolConfig = toolGroupService.getToolConfiguration( toolGroupIds.Fusion, toolNames.Crosshairs ); @@ -27,7 +27,7 @@ export default function setCrosshairsConfiguration( filterActorUIDsToSetSlabThickness: [displaySets[0].displaySetInstanceUID], }; - ToolGroupService.setToolConfiguration( + toolGroupService.setToolConfiguration( toolGroupIds.Fusion, toolNames.Crosshairs, crosshairsConfig diff --git a/modes/tmtv/src/utils/setFusionActiveVolume.js b/modes/tmtv/src/utils/setFusionActiveVolume.js index 44790eebe..ed7b1f6a9 100644 --- a/modes/tmtv/src/utils/setFusionActiveVolume.js +++ b/modes/tmtv/src/utils/setFusionActiveVolume.js @@ -3,8 +3,8 @@ import { toolGroupIds } from '../initToolGroups'; export default function setFusionActiveVolume( matches, toolNames, - ToolGroupService, - DisplaySetService + toolGroupService, + displaySetService ) { const matchDetails = matches.get('ptDisplaySet'); @@ -14,7 +14,7 @@ export default function setFusionActiveVolume( const { SeriesInstanceUID } = matchDetails; - const displaySets = DisplaySetService.getDisplaySetsForSeries( + const displaySets = displaySetService.getDisplaySetsForSeries( SeriesInstanceUID ); @@ -22,12 +22,12 @@ export default function setFusionActiveVolume( return; } - const wlToolConfig = ToolGroupService.getToolConfiguration( + const wlToolConfig = toolGroupService.getToolConfiguration( toolGroupIds.Fusion, toolNames.WindowLevel ); - const ellipticalToolConfig = ToolGroupService.getToolConfiguration( + const ellipticalToolConfig = toolGroupService.getToolConfiguration( toolGroupIds.Fusion, toolNames.EllipticalROI ); @@ -45,13 +45,13 @@ export default function setFusionActiveVolume( volumeId, }; - ToolGroupService.setToolConfiguration( + toolGroupService.setToolConfiguration( toolGroupIds.Fusion, toolNames.WindowLevel, windowLevelConfig ); - ToolGroupService.setToolConfiguration( + toolGroupService.setToolConfiguration( toolGroupIds.Fusion, toolNames.EllipticalROI, ellipticalROIConfig diff --git a/platform/core/package.json b/platform/core/package.json index 6fba39630..811a389b1 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,7 +37,7 @@ }, "dependencies": { "@babel/runtime": "7.16.3", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "dicomweb-client": "^0.6.0", "isomorphic-base64": "^1.0.2", "lodash.merge": "^4.6.1", diff --git a/platform/core/src/classes/HotkeysManager.ts b/platform/core/src/classes/HotkeysManager.ts index 03cafd55e..ddb2757ec 100644 --- a/platform/core/src/classes/HotkeysManager.ts +++ b/platform/core/src/classes/HotkeysManager.ts @@ -76,8 +76,8 @@ export class HotkeysManager { } definitions.forEach(definition => this.registerHotkeys(definition)); } catch (error) { - const { UINotificationService } = this._servicesManager.services; - UINotificationService.show({ + const { uiNotificationService, } = this._servicesManager.services; + uiNotificationService.show({ title: 'Hotkeys Manager', message: 'Error while setting hotkeys', type: 'error', diff --git a/platform/core/src/extensions/ExtensionManager.ts b/platform/core/src/extensions/ExtensionManager.ts index 81a4a54cd..8a3f1ebdf 100644 --- a/platform/core/src/extensions/ExtensionManager.ts +++ b/platform/core/src/extensions/ExtensionManager.ts @@ -347,11 +347,11 @@ export default class ExtensionManager { }; _initHangingProtocolsModule = (extensionModule, extensionId) => { - const { HangingProtocolService } = this._servicesManager.services; + const { hangingProtocolService } = this._servicesManager.services; extensionModule.forEach(({ id, protocol }) => { if (protocol) { // Only auto-register if protocol specified, otherwise let mode register - HangingProtocolService.addProtocol(id, protocol); + hangingProtocolService.addProtocol(id, protocol); } }); }; diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js b/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js index 160410bd3..19fbf8906 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.test.js @@ -1,4 +1,4 @@ -import HangingProtocolServiceClass from './HangingProtocolService'; +import HangingProtocolService from './HangingProtocolService'; const testProtocol = { id: 'test', @@ -149,7 +149,10 @@ describe('HangingProtocolService', () => { }, }, }; - const hps = new HangingProtocolServiceClass(commandsManager, servicesManager); + const hangingProtocolService = new HangingProtocolService( + commandsManager, + servicesManager + ); let initialScaling; afterEach(() => { @@ -158,36 +161,42 @@ describe('HangingProtocolService', () => { describe('with a static protocol', () => { beforeAll(() => { - hps.addProtocol(testProtocol.id, testProtocol); + hangingProtocolService.addProtocol(testProtocol.id, testProtocol); }); it('has one protocol', () => { - expect(hps.getProtocols().length).toBe(1); + expect(hangingProtocolService.getProtocols().length).toBe(1); }); describe('run', () => { it('matches best image match', () => { - checkHpsBestMatch(hps); + checkHpsBestMatch(hangingProtocolService); }); }); }); describe('with protocol generator', () => { beforeAll(() => { - hps.addProtocol(testProtocol.id, testProtocolGenerator); + hangingProtocolService.addProtocol( + testProtocol.id, + testProtocolGenerator + ); }); it('has one protocol', () => { - expect(hps.getProtocols().length).toBe(1); + expect(hangingProtocolService.getProtocols().length).toBe(1); }); describe('run', () => { it('matches best image match', () => { - checkHpsBestMatch(hps); + checkHpsBestMatch(hangingProtocolService); }); it('uses services manager', () => { - hps.run({ studies: [studyMatch], displaySets: studyMatchDisplaySets }); + hangingProtocolService.run({ + studies: [studyMatch], + displaySets: studyMatchDisplaySets, + }); expect(mockedFunction).toHaveBeenCalledTimes(1); }); }); diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts index bca69e2c9..1539529bb 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts @@ -866,13 +866,13 @@ class HangingProtocolService { protocol: Protocol, options: HangingProtocol.SetProtocolOptions ) { - const { DisplaySetService } = this._servicesManager.services; + const { displaySetService } = this._servicesManager.services; if (options.displaySetInstanceUIDs) { this._updateGlobalMatchByOptions( options as HangingProtocol.GlobalProtocolOptions, protocol, - DisplaySetService + displaySetService ); return; } @@ -893,7 +893,7 @@ class HangingProtocolService { options: HangingProtocol.ViewportSpecificProtocolOptions, protocol: HangingProtocol.Protocol ) { - const { DisplaySetService } = this._servicesManager.services; + const { displaySetService } = this._servicesManager.services; const { displaySetSelectors = {} } = protocol; const protocolViewports = protocol.stages[this.stage].viewports; @@ -914,7 +914,7 @@ class HangingProtocolService { displaySetAndViewportOptions.displaySetInstanceUIDs.forEach( (displaySetInstanceUID, index) => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -968,7 +968,7 @@ class HangingProtocolService { displaySetAndViewportOptions?.displaySetInstanceUIDs?.forEach( (displaySetInstanceUID, index) => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -999,7 +999,7 @@ class HangingProtocolService { protocolViewport: HangingProtocol.Viewport, displaySetSelectors: Record ) { - const { DisplaySetService } = this._servicesManager.services; + const { displaySetService } = this._servicesManager.services; const protocolViewportDisplaySets = protocolViewport.displaySets; const numDisplaySetsToSet = displaySetAndViewportOptions.displaySetInstanceUIDs.length; @@ -1015,7 +1015,7 @@ class HangingProtocolService { displaySetAndViewportOptions.displaySetInstanceUIDs.forEach( displaySetInstanceUID => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -1036,7 +1036,7 @@ class HangingProtocolService { private _updateGlobalMatchByOptions( options: HangingProtocol.GlobalProtocolOptions, protocol: Protocol, - DisplaySetService: any + displaySetService: any ) { const { displaySetSelectors = {} } = protocol; const protocolViewports = protocol.stages[this.stage].viewports; @@ -1045,7 +1045,7 @@ class HangingProtocolService { // we need to check each displaySetInstanceUIDs to see if it satisfies the // seriesMatching criteria options.displaySetInstanceUIDs.forEach(displaySetInstanceUID => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -1076,7 +1076,7 @@ class HangingProtocolService { Array.from(newDisplaySetIds).forEach((displaySetId, index) => { const displaySetInstanceUID = options.displaySetInstanceUIDs[index]; - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -1115,7 +1115,7 @@ class HangingProtocolService { }); remainingDisplaySetMatches.forEach(({ displaySetInstanceUID }) => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); @@ -1157,13 +1157,13 @@ class HangingProtocolService { } _validateOptions(options: HangingProtocol.SetProtocolOptions) { - const { DisplaySetService } = this._servicesManager.services; + const { displaySetService } = this._servicesManager.services; if (options.displaySetInstanceUIDs) { options = options as HangingProtocol.GlobalProtocolOptions; options.displaySetInstanceUIDs.forEach(displaySetInstanceUID => { - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( displaySetInstanceUID ); diff --git a/platform/docs/docs/platform/services/index.md b/platform/docs/docs/platform/services/index.md index c2190e9a9..c4a11b1ed 100644 --- a/platform/docs/docs/platform/services/index.md +++ b/platform/docs/docs/platform/services/index.md @@ -62,12 +62,12 @@ The following services is available in the `OHIF-v3`. - SegmentationService (NEW) + segmentationService (NEW) Segmentation Service - SegmentationService + segmentationService diff --git a/platform/viewer/package.json b/platform/viewer/package.json index 48ef595d9..a0f1e0f6e 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -65,7 +65,7 @@ "cornerstone-math": "^0.1.9", "cornerstone-wado-image-loader": "^4.2.1", "dayjs": "^1.11.6", - "dcmjs": "^0.28.3", + "dcmjs": "0.29.4", "detect-gpu": "^4.0.16", "dicom-parser": "^1.8.9", "dotenv-webpack": "^1.7.0", diff --git a/platform/viewer/src/components/ViewportGrid.tsx b/platform/viewer/src/components/ViewportGrid.tsx index 66d7e8e18..52a4eb62a 100644 --- a/platform/viewer/src/components/ViewportGrid.tsx +++ b/platform/viewer/src/components/ViewportGrid.tsx @@ -30,10 +30,10 @@ function ViewerViewportGrid(props) { // TODO -> Need some way of selecting which displaySets hit the viewports. const { - DisplaySetService, - MeasurementService, - HangingProtocolService, - UINotificationService, + displaySetService, + measurementService, + hangingProtocolService, + uiNotificationService, } = servicesManager.services; /** @@ -48,7 +48,7 @@ function ViewerViewportGrid(props) { const { viewportMatchDetails, hpAlreadyApplied, - } = HangingProtocolService.getMatchDetails(); + } = hangingProtocolService.getMatchDetails(); if (!viewportMatchDetails.size) { return; @@ -104,7 +104,7 @@ function ViewerViewportGrid(props) { const suppressEvent = true; const applied = true; - HangingProtocolService.setHangingProtocolAppliedForViewport( + hangingProtocolService.setHangingProtocolAppliedForViewport( viewportIndex, applied, suppressEvent @@ -119,13 +119,13 @@ function ViewerViewportGrid(props) { (viewportIndex, displaySetInstanceUID) => { let updatedViewports = []; try { - updatedViewports = HangingProtocolService.getViewportsRequireUpdate( + updatedViewports = hangingProtocolService.getViewportsRequireUpdate( viewportIndex, displaySetInstanceUID ); } catch (error) { console.warn(error); - UINotificationService.show({ + uiNotificationService.show({ title: 'Drag and Drop', message: 'The selected display sets could not be added to the viewport due to a mismatch in the Hanging Protocol rules.', @@ -136,18 +136,18 @@ function ViewerViewportGrid(props) { return updatedViewports; }, - [HangingProtocolService, UINotificationService] + [hangingProtocolService, uiNotificationService] ); useEffect(() => { - const displaySets = DisplaySetService.getActiveDisplaySets(); + const displaySets = displaySetService.getActiveDisplaySets(); updateDisplaySetsForViewports(displaySets); }, [numRows, numCols]); // Layout change based on hanging protocols useEffect(() => { - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.NEW_LAYOUT, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.NEW_LAYOUT, ({ layoutType, numRows, numCols, layoutOptions }) => { viewportGridService.setLayout({ numRows, @@ -165,10 +165,10 @@ function ViewerViewportGrid(props) { // Using Hanging protocol engine to match the displaySets useEffect(() => { - const { unsubscribe } = HangingProtocolService.subscribe( - HangingProtocolService.EVENTS.PROTOCOL_CHANGED, + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.PROTOCOL_CHANGED, () => { - const displaySets = DisplaySetService.getActiveDisplaySets(); + const displaySets = displaySetService.getActiveDisplaySets(); updateDisplaySetsForViewports(displaySets); } ); @@ -179,8 +179,8 @@ function ViewerViewportGrid(props) { }, [viewports]); useEffect(() => { - const { unsubscribe } = MeasurementService.subscribe( - MeasurementService.EVENTS.JUMP_TO_MEASUREMENT, + const { unsubscribe } = measurementService.subscribe( + measurementService.EVENTS.JUMP_TO_MEASUREMENT, ({ viewportIndex, measurement }) => { const { displaySetInstanceUID: referencedDisplaySetInstanceUID, @@ -198,7 +198,7 @@ function ViewerViewportGrid(props) { } } - const displaySet = DisplaySetService.getDisplaySetByUID( + const displaySet = displaySetService.getDisplaySetByUID( referencedDisplaySetInstanceUID ); @@ -335,7 +335,7 @@ function ViewerViewportGrid(props) { const displaySets = displaySetInstanceUIDsToUse.map( displaySetInstanceUID => { return ( - DisplaySetService.getDisplaySetByUID(displaySetInstanceUID) || {} + displaySetService.getDisplaySetByUID(displaySetInstanceUID) || {} ); } ); @@ -343,7 +343,7 @@ function ViewerViewportGrid(props) { const ViewportComponent = _getViewportComponent( displaySets, viewportComponents, - UINotificationService + uiNotificationService ); // look inside displaySets to see if they need reRendering @@ -403,7 +403,7 @@ function ViewerViewportGrid(props) { }, [viewports, activeViewportIndex, viewportComponents, dataSource]); /** - * Loading indicator until numCols and numRows are gotten from the HangingProtocolService + * Loading indicator until numCols and numRows are gotten from the hangingProtocolService */ if (!numRows || !numCols) { return null; @@ -428,7 +428,7 @@ ViewerViewportGrid.defaultProps = { function _getViewportComponent( displaySets, viewportComponents, - UINotificationService + uiNotificationService ) { if (!displaySets || !displaySets.length) { return EmptyViewport; @@ -453,7 +453,7 @@ function _getViewportComponent( } console.log("Can't show displaySet", SOPClassHandlerId, displaySets[0]); - UINotificationService.show({ + uiNotificationService.show({ title: 'Viewport Not Supported Yet', message: `Cannot display SOPClassId of ${displaySets[0].SOPClassUID} yet`, type: 'error', diff --git a/platform/viewer/src/routes/Mode/Mode.tsx b/platform/viewer/src/routes/Mode/Mode.tsx index 347114bd8..86839e27c 100644 --- a/platform/viewer/src/routes/Mode/Mode.tsx +++ b/platform/viewer/src/routes/Mode/Mode.tsx @@ -23,8 +23,8 @@ function defaultRouteInit( hangingProtocol ) { const { - DisplaySetService, - HangingProtocolService, + displaySetService, + hangingProtocolService, } = servicesManager.services; const unsubscriptions = []; @@ -38,7 +38,7 @@ function defaultRouteInit( SeriesInstanceUID ); - DisplaySetService.makeDisplaySets(seriesMetadata.instances, madeInClient); + displaySetService.makeDisplaySets(seriesMetadata.instances, madeInClient); } ); @@ -58,7 +58,7 @@ function defaultRouteInit( // until we run the hanging protocol matching service. Promise.allSettled(allRetrieves).then(() => { - const displaySets = DisplaySetService.getActiveDisplaySets(); + const displaySets = displaySetService.getActiveDisplaySets(); if (!displaySets || !displaySets.length) { return; @@ -84,7 +84,7 @@ function defaultRouteInit( // run the hanging protocol matching on the displaySets with the predefined // hanging protocol in the mode configuration - HangingProtocolService.run( + hangingProtocolService.run( { studies, activeStudy, displaySets }, hangingProtocol ); @@ -119,8 +119,8 @@ export default function ModeRoute({ } const { - DisplaySetService, - HangingProtocolService: hangingProtocolService, + displaySetService, + hangingProtocolService, } = servicesManager.services; const { extensions, sopClassHandlers, hotkeys, hangingProtocol } = mode; @@ -242,7 +242,7 @@ export default function ModeRoute({ // Extension // Add SOPClassHandlers to a new SOPClassManager. - DisplaySetService.init(extensionManager, sopClassHandlers); + displaySetService.init(extensionManager, sopClassHandlers); extensionManager.onModeEnter({ servicesManager, diff --git a/yarn.lock b/yarn.lock index f91f3a726..14f62d9b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2372,18 +2372,16 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cornerstonejs/adapters@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-0.2.1.tgz#c1de369d82e05a4ff58dce25dc441e870b0ef991" - integrity sha512-5oHHwpSR9sjRh3GBsHh3sBF8kiWbgAdNiVf1nWc7dc3PtemWl+BiPr7xLE0/9aRe0BCRkgyU/u/Yqgk7I/pZLg== +"@cornerstonejs/adapters@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-0.3.0.tgz#c0a2a904c92ebfae77520eba4fc64c07ebd06db4" + integrity sha512-o3GIrccNM0q/QF0//ueVIXeRltUmtTBkTR47qPgIY9gdi+3sYEFHEW6RTXe3OOtDDXOWgM88Jp3mWWUK4ZeXxg== dependencies: "@babel/runtime-corejs2" "^7.17.8" dcmjs "^0.29.4" gl-matrix "^3.4.3" lodash.clonedeep "^4.5.0" - loglevelnext "^3.0.1" ndarray "^1.0.19" - pako "^2.0.4" "@cornerstonejs/calculate-suv@^1.0.3": version "1.0.3" @@ -2410,6 +2408,14 @@ resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-1.0.3.tgz#4c82642e8a6beb0d263f5a263723aec4225e5300" integrity sha512-PK+9N/JL7ZMGum6OKuReRGGhWXpWjRC9WnltQ6aEzRKEQPMg+3WFiQPZowKCCG1I4whv35DYFRi6wu7RyRaEMQ== +"@cornerstonejs/core@0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.30.1.tgz#6cb7088260641e7e55de2edb11979b1a0c00c794" + integrity sha512-A7t6WtPut17uLGpv3cUfk1gSzEvWiFcCg1K3H0WGySdZsf4tIinb5xA+9oD2eaBPbvTXmIef4HWFIAsN3kAEgg== + dependencies: + detect-gpu "^4.0.45" + lodash.clonedeep "4.5.0" + "@cornerstonejs/core@^0.27.1": version "0.27.1" resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.27.1.tgz#1c56697cee8071eacfd9b1ee6f59c0fa6071accc" @@ -2418,6 +2424,14 @@ detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" +"@cornerstonejs/core@^0.28.0": + version "0.28.0" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.28.0.tgz#bc5114dfd332fcc5caf4ab049bcb08f6457e5f97" + integrity sha512-DSAdH2+8h/rRCTR6WbbGkY+vqnAVVZH47+GgGQQHscEwDD/K3ZO62JMl4LgcgkDzI0LIIZAk6CgAtok31yG/3Q== + dependencies: + detect-gpu "^4.0.45" + lodash.clonedeep "4.5.0" + "@cornerstonejs/streaming-image-volume-loader@^0.11.2": version "0.11.2" resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.11.2.tgz#75a8502a381a402a28ca2022f4bd2733eb90427f" @@ -2426,12 +2440,12 @@ "@cornerstonejs/core" "^0.27.1" cornerstone-wado-image-loader "^4.8.0" -"@cornerstonejs/tools@^0.36.3": - version "0.36.3" - resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.36.3.tgz#22769dbcac57f6811f37376ac45ea1041286d4a0" - integrity sha512-popsYtA5Tvr9u7AoRFASwAr9vdxT3S697sb14clydczbbURAk/vHJw1K70P55BJ38jVx/yaGqfZWObFMWbqPLg== +"@cornerstonejs/tools@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.39.0.tgz#7d9bac4c55bc19145c2051f7c7150b34570849e4" + integrity sha512-xDR51lOEuNIDaTJltZvxDK+BIdIbznXUsWt+OpYiiygCQYt1Lt2eHufO2wVFVPrMgvm0dryF+WQbRVwtWvx4yA== dependencies: - "@cornerstonejs/core" "^0.27.1" + "@cornerstonejs/core" "^0.28.0" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -10263,19 +10277,7 @@ dayjs@^1.11.6: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -dcmjs@^0.28.3: - version "0.28.3" - resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.28.3.tgz#a756ab4b02363d12545c9830b8f97b5141723727" - integrity sha512-GZOu+CtNvdWsPv8ga9Ywm/1YadEqT/+FhwcpgsbDAmKDUKe+6uNH+8KbEsRcaN1V5WFQEMwRbF9IRTl2qOoZvA== - dependencies: - "@babel/runtime-corejs2" "^7.17.8" - gl-matrix "^3.1.0" - lodash.clonedeep "^4.5.0" - loglevelnext "^3.0.1" - ndarray "^1.0.19" - pako "^2.0.4" - -dcmjs@^0.29.4: +dcmjs@0.29.4, dcmjs@^0.29.4: version "0.29.4" resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.29.4.tgz#3fb13945611979f756bc91b3f199fd87b4eabdb4" integrity sha512-PzD6C4oB7v/AVTIPbkS6D6hjgVcSW7+T+DsxFpkD1xcEgU4qjGM16WGEHH3ZAPDBF0Xgm2d9FXUu/lXZIyfmow== From ecfdc9a6877a9c5dbd44740d809b7a6f695b7d16 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Mon, 13 Feb 2023 08:55:55 -0500 Subject: [PATCH 25/47] fix(typescript): Missed renames UIModalService and UserAuthenticationService (#3171) --- extensions/cornerstone/src/commandsModule.ts | 8 ++++---- extensions/cornerstone/src/init.tsx | 12 ++++++------ .../cornerstone/src/initWADOImageLoader.js | 4 ++-- .../CornerstoneCacheService.ts | 4 ++-- .../default/src/DicomWebDataSource/index.js | 16 ++++++++-------- extensions/default/src/commandsModule.js | 6 +++--- platform/core/src/extensions/ExtensionManager.ts | 4 ++-- platform/core/src/types/Services.ts | 2 ++ platform/viewer/src/App.tsx | 10 +++++----- platform/viewer/src/routes/index.tsx | 4 ++-- .../viewer/src/utils/OpenIdConnectRoutes.tsx | 10 +++++----- 11 files changed, 41 insertions(+), 39 deletions(-) diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index c0462af51..b57e07d77 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -196,15 +196,15 @@ const commandsModule = ({ servicesManager }) => { }, showDownloadViewportModal: () => { const { activeViewportIndex } = viewportGridService.getState(); - const { UIModalService } = servicesManager.services; + const { uiModalService } = servicesManager.services; - if (UIModalService) { - UIModalService.show({ + if (uiModalService) { + uiModalService.show({ content: CornerstoneViewportDownloadForm, title: 'Download High Quality Image', contentProps: { activeViewportIndex, - onClose: UIModalService.hide, + onClose: uiModalService.hide, cornerstoneViewportService, }, }); diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index a374935ef..a44bee43a 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -62,11 +62,11 @@ export default async function init({ ); const { - UserAuthenticationService, + userAuthenticationService, measurementService, displaySetService, uiDialogService, - UIModalService, + uiModalService, uiNotificationService, cineService, cornerstoneViewportService, @@ -87,7 +87,7 @@ export default async function init({ } if (cornerstone.getShouldUseCPURendering()) { - _showCPURenderingModal(UIModalService, hangingProtocolService); + _showCPURenderingModal(uiModalService, hangingProtocolService); } const labelmapRepresentation = @@ -128,7 +128,7 @@ export default async function init({ prefetch: appConfig?.maxNumRequests?.prefetch || 10, }; - initWADOImageLoader(UserAuthenticationService, appConfig); + initWADOImageLoader(userAuthenticationService, appConfig); /* Measurement Service */ const measurementServiceSource = connectToolsToMeasurementService( @@ -403,10 +403,10 @@ function CPUModal() { ); } -function _showCPURenderingModal(UIModalService, hangingProtocolService) { +function _showCPURenderingModal(uiModalService, hangingProtocolService) { const callback = progress => { if (progress === 100) { - UIModalService.show({ + uiModalService.show({ content: CPUModal, title: 'OHIF Fell Back to CPU Rendering', }); diff --git a/extensions/cornerstone/src/initWADOImageLoader.js b/extensions/cornerstone/src/initWADOImageLoader.js index a7a8ec0f8..c072184ee 100644 --- a/extensions/cornerstone/src/initWADOImageLoader.js +++ b/extensions/cornerstone/src/initWADOImageLoader.js @@ -34,7 +34,7 @@ function initWebWorkers(appConfig) { } export default function initWADOImageLoader( - UserAuthenticationService, + userAuthenticationService, appConfig ) { cornerstoneWADOImageLoader.external.cornerstone = cornerstone; @@ -55,7 +55,7 @@ export default function initWADOImageLoader( convertFloatPixelDataToInt: false, }, beforeSend: function(xhr) { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); // Request: // JPEG-LS Lossless (1.2.840.10008.1.2.4.80) if available, otherwise accept diff --git a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts index c3475491d..01a359368 100644 --- a/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts +++ b/extensions/cornerstone/src/services/CornerstoneCacheService/CornerstoneCacheService.ts @@ -157,8 +157,8 @@ class CornerstoneCacheService { // getSOPClassHandler method if (displaySet.load && displaySet.load instanceof Function) { - const { UserAuthenticationService } = this.servicesManager.services; - const headers = UserAuthenticationService.getAuthorizationHeader(); + const { userAuthenticationService } = this.servicesManager.services; + const headers = userAuthenticationService.getAuthorizationHeader(); await displaySet.load({ headers }); volumeData.push({ diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index e51c7fd01..ccb61f620 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -49,7 +49,7 @@ const metadataProvider = classes.MetadataProvider; * @param {bool} lazyLoadStudy - "enableStudyLazyLoad"; Request series meta async instead of blocking * @param {string|bool} singlepart - indicates of the retrieves can fetch singlepart. Options are bulkdata, video, image or boolean true */ -function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { +function createDicomWebApi(dicomWebConfig, userAuthenticationService) { const { qidoRoot, wadoRoot, @@ -65,7 +65,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { url: qidoRoot, staticWado, singlepart, - headers: UserAuthenticationService.getAuthorizationHeader(), + headers: userAuthenticationService.getAuthorizationHeader(), errorInterceptor: errorHandler.getHTTPErrorHandler(), }; @@ -73,7 +73,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { url: wadoRoot, staticWado, singlepart, - headers: UserAuthenticationService.getAuthorizationHeader(), + headers: userAuthenticationService.getAuthorizationHeader(), errorInterceptor: errorHandler.getHTTPErrorHandler(), }; @@ -105,7 +105,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { studies: { mapParams: mapParams.bind(), search: async function (origParams) { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); if (headers) { qidoDicomWebClient.headers = headers; } @@ -130,7 +130,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { series: { // mapParams: mapParams.bind(), search: async function (studyInstanceUid) { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); if (headers) { qidoDicomWebClient.headers = headers; } @@ -146,7 +146,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { }, instances: { search: (studyInstanceUid, queryParameters) => { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); if (headers) { qidoDicomWebClient.headers = headers; } @@ -184,7 +184,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { sortFunction, madeInClient = false, } = {}) => { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); if (headers) { wadoDicomWebClient.headers = headers; } @@ -218,7 +218,7 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { store: { dicom: async dataset => { - const headers = UserAuthenticationService.getAuthorizationHeader(); + const headers = userAuthenticationService.getAuthorizationHeader(); if (headers) { wadoDicomWebClient.headers = headers; } diff --git a/extensions/default/src/commandsModule.js b/extensions/default/src/commandsModule.js index deb413f98..ba4e89de9 100644 --- a/extensions/default/src/commandsModule.js +++ b/extensions/default/src/commandsModule.js @@ -34,15 +34,15 @@ const commandsModule = ({ servicesManager, commandsManager }) => { const { displaySetInstanceUIDs } = activeViewportSpecificData; const displaySets = displaySetService.activeDisplaySets; - const { UIModalService } = servicesManager.services; + const { uiModalService } = servicesManager.services; const displaySetInstanceUID = displaySetInstanceUIDs[0]; - UIModalService.show({ + uiModalService.show({ content: DicomTagBrowser, contentProps: { displaySets, displaySetInstanceUID, - onClose: UIModalService.hide, + onClose: uiModalService.hide, }, title: 'DICOM Tag Browser', }); diff --git a/platform/core/src/extensions/ExtensionManager.ts b/platform/core/src/extensions/ExtensionManager.ts index 8a3f1ebdf..9906a3e87 100644 --- a/platform/core/src/extensions/ExtensionManager.ts +++ b/platform/core/src/extensions/ExtensionManager.ts @@ -357,7 +357,7 @@ export default class ExtensionManager { }; _initDataSourcesModule(extensionModule, extensionId, dataSources = []) { - const { UserAuthenticationService } = this._servicesManager.services; + const { userAuthenticationService } = this._servicesManager.services; dataSources.forEach(dataSource => { this.dataSourceDefs[dataSource.sourceName] = dataSource; }); @@ -369,7 +369,7 @@ export default class ExtensionManager { if (dataSource.namespace === namespace) { const dataSourceInstance = element.createDataSource( dataSource.configuration, - UserAuthenticationService + userAuthenticationService ); if (this.dataSourceMap[dataSource.sourceName]) { diff --git a/platform/core/src/types/Services.ts b/platform/core/src/types/Services.ts index d906d17b5..aed77fbff 100644 --- a/platform/core/src/types/Services.ts +++ b/platform/core/src/types/Services.ts @@ -11,6 +11,7 @@ import { * The interface for the services object */ export default interface Services { + userAuthenticationService?: Record; hangingProtocolService?: HangingProtocolService; customizationService?: CustomizationService; measurementService?: MeasurementService; @@ -21,6 +22,7 @@ export default interface Services { uiDialogService?: Record; toolGroupService?: Record; uiNotificationService?: Record; + uiModalService?: Record; viewportGridService?: ViewportGridService; syncGroupService?: Record; cornerstoneCacheService?: Record; diff --git a/platform/viewer/src/App.tsx b/platform/viewer/src/App.tsx index 4da997d39..f0f6d669d 100644 --- a/platform/viewer/src/App.tsx +++ b/platform/viewer/src/App.tsx @@ -60,18 +60,18 @@ function App({ config, defaultExtensions, defaultModes }) { const { UIDialogService, - UIModalService, + uiModalService, UINotificationService, UIViewportDialogService, ViewportGridService, CineService, - UserAuthenticationService, + userAuthenticationService, customizationService, } = servicesManager.services; const providers = [ [AppConfigProvider, { value: appConfigState }], - [UserAuthenticationProvider, { service: UserAuthenticationService }], + [UserAuthenticationProvider, { service: userAuthenticationService }], [I18nextProvider, { i18n }], [ThemeWrapper], [ViewportGridProvider, { service: ViewportGridService }], @@ -79,7 +79,7 @@ function App({ config, defaultExtensions, defaultModes }) { [CineProvider, { service: CineService }], [SnackbarProvider, { service: UINotificationService }], [DialogProvider, { service: UIDialogService }], - [ModalProvider, { service: UIModalService, modal: Modal }], + [ModalProvider, { service: uiModalService, modal: Modal }], ]; const CombinedProviders = ({ children }) => Compose({ components: providers, children }); @@ -106,7 +106,7 @@ function App({ config, defaultExtensions, defaultModes }) { ); } diff --git a/platform/viewer/src/routes/index.tsx b/platform/viewer/src/routes/index.tsx index aee16bd2a..ab5a605a5 100644 --- a/platform/viewer/src/routes/index.tsx +++ b/platform/viewer/src/routes/index.tsx @@ -81,7 +81,7 @@ const createRoutes = ({ ); } - const { UserAuthenticationService } = servicesManager.services; + const { userAuthenticationService } = servicesManager.services; // Note: PrivateRoutes in react-router-dom 6.x should be defined within // a Route element @@ -96,7 +96,7 @@ const createRoutes = ({ element={ diff --git a/platform/viewer/src/utils/OpenIdConnectRoutes.tsx b/platform/viewer/src/utils/OpenIdConnectRoutes.tsx index bab8c4b2b..861bd770b 100644 --- a/platform/viewer/src/utils/OpenIdConnectRoutes.tsx +++ b/platform/viewer/src/utils/OpenIdConnectRoutes.tsx @@ -104,12 +104,12 @@ function LoginComponent(userManager) { function OpenIdConnectRoutes({ oidc, routerBasename, - UserAuthenticationService, + userAuthenticationService, }) { const userManager = initUserManager(oidc, routerBasename); const getAuthorizationHeader = () => { - const user = UserAuthenticationService.getUser(); + const user = userAuthenticationService.getUser(); return { Authorization: `Bearer ${user.access_token}`, @@ -145,9 +145,9 @@ function OpenIdConnectRoutes({ }, []); useEffect(() => { - UserAuthenticationService.set({ enabled: true }); + userAuthenticationService.set({ enabled: true }); - UserAuthenticationService.setServiceImplementation({ + userAuthenticationService.setServiceImplementation({ getAuthorizationHeader, handleUnauthenticated, }); @@ -200,7 +200,7 @@ function OpenIdConnectRoutes({ sessionStorage.getItem('ohif-redirect-to') ); - UserAuthenticationService.setUser(user); + userAuthenticationService.setUser(user); navigate({ pathname, From 5e66faa45d35cbd356b8c1e4dc7fcfe583e17e62 Mon Sep 17 00:00:00 2001 From: Edward Son Date: Mon, 13 Feb 2023 09:14:48 -0500 Subject: [PATCH 26/47] Remove unusued Types import (#3167) Co-authored-by: edward65 --- platform/core/src/services/_shared/pubSubServiceInterface.js | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/core/src/services/_shared/pubSubServiceInterface.js b/platform/core/src/services/_shared/pubSubServiceInterface.js index 855f07280..20b5f27d7 100644 --- a/platform/core/src/services/_shared/pubSubServiceInterface.js +++ b/platform/core/src/services/_shared/pubSubServiceInterface.js @@ -1,5 +1,4 @@ import guid from '../../utils/guid'; -import * as Types from '../../Types'; /** * Consumer must implement: From f791a4cafb67288a874c6dcb99c0475a6a0cf7aa Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Tue, 14 Feb 2023 10:01:39 -0500 Subject: [PATCH 27/47] fix(ViewportGrid) fill blank viewports with display sets not yet in grid. (#3154) * fix(ViewportGrid): In ViewportGrid, fill blank viewports with display sets not yet in grid. ViewportGridService now allows off-screen viewports to remain so that so as to maintain continuity if they were filled by the UI/user. * PR feedback: moved getNumViewportPanes into the ViewportGridService API. * PR feedback: - renamed some variables - proper import/export of IDisplaySet - added some comments for clarification - fixed broken e2e tests * Some missed rename of Services. --- .../src/utils/mpr/toggleMPRHangingProtocol.ts | 25 +++++--- .../src/Toolbar/ToolbarLayoutSelector.tsx | 10 ++- .../PanelStudyBrowserTracking.tsx | 33 +++++----- .../ViewportGridService.ts | 8 +++ .../services/ui/viewport-grid-service.md | 3 +- .../services/ui/viewport-grid-service.md | 3 +- .../contextProviders/ViewportGridProvider.tsx | 28 ++++++++- .../viewer/src/components/ViewportGrid.tsx | 61 +++++++++++++++++-- 8 files changed, 138 insertions(+), 33 deletions(-) diff --git a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts index 6515cea8d..663643ab0 100644 --- a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts +++ b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts @@ -59,6 +59,13 @@ export default function toggleMPRHangingProtocol({ viewports[activeViewportIndex].displaySetInstanceUIDs; const errorCallback = error => { + // Unable to create MPR, so be sure to return to the cached/original protocol. + hangingProtocolService.setProtocol( + cachedState.protocol.id, + viewportMatchDetails, + restoreErrorCallback + ); + uiNotificationService.show({ title: 'Multiplanar reconstruction (MPR) ', message: @@ -276,13 +283,17 @@ function _getViewportsInfo({ protocol, stage, viewports, servicesManager }) { .filter(Boolean); if (viewportIds.length) { - toolOptions = viewportIds.map(viewportId => { - const toolGroup = toolGroupService.getToolGroupForViewport(viewportId); - return { - toolGroupId: toolGroup.id, - toolOptions: toolGroup.toolOptions, - }; - }); + toolOptions = viewportIds + .map(viewportId => { + const toolGroup = toolGroupService.getToolGroupForViewport(viewportId); + return toolGroup + ? { + toolGroupId: toolGroup.id, + toolOptions: toolGroup.toolOptions, + } + : null; + }) + .filter(Boolean); } return { viewportMatchDetails, viewportStructure, toolOptions }; diff --git a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx index a385c071d..6080de195 100644 --- a/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx +++ b/extensions/default/src/Toolbar/ToolbarLayoutSelector.tsx @@ -79,7 +79,15 @@ function LayoutSelector({ ], }); } - viewportGridService.setLayout({ numRows, numCols }); + + // When a new layout is selected, keep any extra/offscreen viewports + // so that if any of those viewports were populated via the UI then they + // will be maintained in case those viewports are redisplayed later. + viewportGridService.setLayout({ + numRows, + numCols, + keepExtraViewports: true, + }); }; return ( diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 9983aadf5..a04989f0b 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -182,7 +182,7 @@ function PanelStudyBrowserTracking({ thumbnailImageSrcMap, trackedSeries, viewports, - isSingleViewport, + viewportGridService, dataSource, displaySetService, uiDialogService, @@ -245,7 +245,7 @@ function PanelStudyBrowserTracking({ thumbnailImageSrcMap, trackedSeries, viewports, - isSingleViewport, + viewportGridService, dataSource, displaySetService, uiDialogService, @@ -412,7 +412,7 @@ function _mapDisplaySets( thumbnailImageSrcMap, trackedSeriesInstanceUIDs, viewports, // TODO: make array of `displaySetInstanceUIDs`? - isSingleViewport, + viewportGridService, dataSource, displaySetService, uiDialogService, @@ -423,18 +423,21 @@ function _mapDisplaySets( displaySets.forEach(ds => { const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID]; const componentType = _getComponentType(ds.Modality); - const viewportIdentificator = isSingleViewport - ? [] - : viewports.reduce((acc, viewportData, index) => { - if ( - viewportData?.displaySetInstanceUIDs?.includes( - ds.displaySetInstanceUID - ) - ) { - acc.push(viewportData.viewportLabel); - } - return acc; - }, []); + const numPanes = viewportGridService.getNumViewportPanes(); + const viewportIdentificator = + numPanes === 1 + ? [] + : viewports.reduce((acc, viewportData, index) => { + if ( + index < numPanes && + viewportData?.displaySetInstanceUIDs?.includes( + ds.displaySetInstanceUID + ) + ) { + acc.push(viewportData.viewportLabel); + } + return acc; + }, []); const array = componentType === 'thumbnailTracked' diff --git a/platform/core/src/services/ViewportGridService/ViewportGridService.ts b/platform/core/src/services/ViewportGridService/ViewportGridService.ts index ae1a6a01e..c35cc34c3 100644 --- a/platform/core/src/services/ViewportGridService/ViewportGridService.ts +++ b/platform/core/src/services/ViewportGridService/ViewportGridService.ts @@ -31,6 +31,7 @@ class ViewportGridService extends PubSubService { reset: resetImplementation, onModeExit: onModeExitImplementation, set: setImplementation, + getNumViewportPanes: getNumViewportPanesImplementation, }): void { if (getStateImplementation) { this.serviceImplementation._getState = getStateImplementation; @@ -62,6 +63,9 @@ class ViewportGridService extends PubSubService { if (setImplementation) { this.serviceImplementation._set = setImplementation; } + if (getNumViewportPanesImplementation) { + this.serviceImplementation._getNumViewportPanes = getNumViewportPanesImplementation; + } } public setActiveViewportIndex(index) { @@ -122,6 +126,10 @@ class ViewportGridService extends PubSubService { public set(state) { this.serviceImplementation._set(state); } + + public getNumViewportPanes() { + return this.serviceImplementation._getNumViewportPanes(); + } } export default ViewportGridService; diff --git a/platform/docs/docs/platform/services/ui/viewport-grid-service.md b/platform/docs/docs/platform/services/ui/viewport-grid-service.md index d48ab4e00..b6806343e 100644 --- a/platform/docs/docs/platform/services/ui/viewport-grid-service.md +++ b/platform/docs/docs/platform/services/ui/viewport-grid-service.md @@ -19,8 +19,9 @@ is expected to support, [check out it's interface in `@ohif/core`][interface] | `setActiveViewportIndex(index)` | Sets the active viewport index in the app | | `getState()` | Gets the states of the viewport (see below) | | `setDisplaySetsForViewport({ viewportIndex, displaySetInstanceUID })` | Sets displaySet for viewport based on displaySet Id | -| `setLayout({numCols, numRows})` | Sets rows and columns | +| `setLayout({numCols, numRows, keepExtraViewports})` | Sets rows and columns. When the total number of viewports decreases, optionally keep the extra/offscreen viewports. | | `reset()` | Resets the default states | +| `getNumViewportPanes()` | Gets the number of visible viewport panes | ## Implementations diff --git a/platform/docs/versioned_docs/version-3.0/platform/services/ui/viewport-grid-service.md b/platform/docs/versioned_docs/version-3.0/platform/services/ui/viewport-grid-service.md index d48ab4e00..39e2378a3 100644 --- a/platform/docs/versioned_docs/version-3.0/platform/services/ui/viewport-grid-service.md +++ b/platform/docs/versioned_docs/version-3.0/platform/services/ui/viewport-grid-service.md @@ -19,8 +19,9 @@ is expected to support, [check out it's interface in `@ohif/core`][interface] | `setActiveViewportIndex(index)` | Sets the active viewport index in the app | | `getState()` | Gets the states of the viewport (see below) | | `setDisplaySetsForViewport({ viewportIndex, displaySetInstanceUID })` | Sets displaySet for viewport based on displaySet Id | -| `setLayout({numCols, numRows})` | Sets rows and columns | +| `setLayout({numCols, numRows, keepExtraViewports})` | Sets rows and columns. When the total number of viewports decreases, optionally keep the extra/offscreen viewports. | | `reset()` | Resets the default states | +| `getNumViewportPanes()` | Gets the number of visible viewport panes | ## Implementations diff --git a/platform/ui/src/contextProviders/ViewportGridProvider.tsx b/platform/ui/src/contextProviders/ViewportGridProvider.tsx index fa6eb03ee..80a1647d9 100644 --- a/platform/ui/src/contextProviders/ViewportGridProvider.tsx +++ b/platform/ui/src/contextProviders/ViewportGridProvider.tsx @@ -86,6 +86,7 @@ export function ViewportGridProvider({ children, service }) { numRows, layoutOptions, layoutType = 'grid', + keepExtraViewports = false, } = action.payload; // If empty viewportOptions, we use numRow and numCols to calculate number of viewports @@ -97,8 +98,14 @@ export function ViewportGridProvider({ children, service }) { while (viewports.length < numPanes) { viewports.push({}); } - while (viewports.length > numPanes) { - viewports.pop(); + + // Extra viewports are kept when the grid layout is changed in the UI + // because the user populated those viewports and if the viewports were to + // return on screen their contents should be maintained. + if (!keepExtraViewports) { + while (viewports.length > numPanes) { + viewports.pop(); + } } for (let i = 0; i < numPanes; i++) { @@ -238,7 +245,13 @@ export function ViewportGridProvider({ children, service }) { ); const setLayout = useCallback( - ({ layoutType, numRows, numCols, layoutOptions = [] }) => + ({ + layoutType, + numRows, + numCols, + layoutOptions = [], + keepExtraViewports = false, + }) => dispatch({ type: 'SET_LAYOUT', payload: { @@ -246,6 +259,7 @@ export function ViewportGridProvider({ children, service }) { numRows, numCols, layoutOptions, + keepExtraViewports, }, }), [dispatch] @@ -288,6 +302,11 @@ export function ViewportGridProvider({ children, service }) { [dispatch] ); + const getNumViewportPanes = useCallback(() => { + const { numCols, numRows, viewports } = viewportGridState; + return Math.min(viewports.length, numCols * numRows); + }, [viewportGridState]); + /** * Sets the implementation of ViewportGridService that can be used by extensions. * @@ -306,6 +325,7 @@ export function ViewportGridProvider({ children, service }) { setCachedLayout, restoreCachedLayout, set, + getNumViewportPanes, }); } }, [ @@ -319,6 +339,7 @@ export function ViewportGridProvider({ children, service }) { setCachedLayout, restoreCachedLayout, set, + getNumViewportPanes, ]); const api = { @@ -331,6 +352,7 @@ export function ViewportGridProvider({ children, service }) { restoreCachedLayout, reset, set, + getNumViewportPanes, }; return ( diff --git a/platform/viewer/src/components/ViewportGrid.tsx b/platform/viewer/src/components/ViewportGrid.tsx index 52a4eb62a..349c7e4b6 100644 --- a/platform/viewer/src/components/ViewportGrid.tsx +++ b/platform/viewer/src/components/ViewportGrid.tsx @@ -54,20 +54,35 @@ function ViewerViewportGrid(props) { return; } - // Match each viewport individually - const numViewports = viewportGrid.numRows * viewportGrid.numCols; + const gridDisplaySetUIDs = []; + const blankViewportIndices = []; + + // Match each viewport individually. + const numViewports = viewportGridService.getNumViewportPanes(); + for ( let viewportIndex = 0; viewportIndex < numViewports; viewportIndex++ ) { + const viewportDisplaySetUIDs = + viewports[viewportIndex]?.displaySetInstanceUIDs ?? []; + if (hpAlreadyApplied.get(viewportIndex)) { + gridDisplaySetUIDs.push(...viewportDisplaySetUIDs); continue; } // if current viewport doesn't have a match if (viewportMatchDetails.get(viewportIndex) === undefined) { - return; + // if the current viewport is empty/blank + if (viewportDisplaySetUIDs.length === 0) { + blankViewportIndices.push(viewportIndex); + } else { + gridDisplaySetUIDs.push(...viewportDisplaySetUIDs); + } + + continue; } const { displaySetsInfo, viewportOptions } = viewportMatchDetails.get( @@ -87,6 +102,8 @@ function ViewerViewportGrid(props) { } ); + gridDisplaySetUIDs.push(...displaySetUIDsToHang); + viewportGridService.setDisplaySetsForViewport({ viewportIndex: viewportIndex, displaySetInstanceUIDs: displaySetUIDsToHang, @@ -111,6 +128,25 @@ function ViewerViewportGrid(props) { ); } } + + blankViewportIndices.forEach((blankVPIndex: number) => { + // try to fill the empty viewport with a display set not already in the grid + const displaySetsNotInGrid = availableDisplaySets.filter( + displaySet => + gridDisplaySetUIDs.indexOf(displaySet.displaySetInstanceUID) === -1 + ); + + if (displaySetsNotInGrid.length > 0) { + const displaySetUIDToAdd = + displaySetsNotInGrid[0].displaySetInstanceUID; + gridDisplaySetUIDs.push(displaySetUIDToAdd); + + viewportGridService.setDisplaySetsForViewport({ + viewportIndex: blankVPIndex, + displaySetInstanceUIDs: [displaySetUIDToAdd], + }); + } + }); }, [viewportGrid, numRows, numCols] ); @@ -178,6 +214,20 @@ function ViewerViewportGrid(props) { }; }, [viewports]); + useEffect(() => { + const { unsubscribe } = hangingProtocolService.subscribe( + hangingProtocolService.EVENTS.STAGE_CHANGE, + () => { + const displaySets = DisplaySetService.getActiveDisplaySets(); + updateDisplaySetsForViewports(displaySets); + } + ); + + return () => { + unsubscribe(); + }; + }, [viewports]); + useEffect(() => { const { unsubscribe } = measurementService.subscribe( measurementService.EVENTS.JUMP_TO_MEASUREMENT, @@ -314,7 +364,8 @@ function ViewerViewportGrid(props) { const getViewportPanes = useCallback(() => { const viewportPanes = []; - for (let i = 0; i < viewports.length; i++) { + const numViewports = viewportGridService.getNumViewportPanes(); + for (let i = 0; i < numViewports; i++) { const viewportIndex = i; const isActive = activeViewportIndex === viewportIndex; const paneMetadata = viewports[i] || {}; @@ -388,7 +439,7 @@ function ViewerViewportGrid(props) { 1 ? viewportLabel : ''} + viewportLabel={numViewports > 1 ? viewportLabel : ''} dataSource={dataSource} viewportOptions={viewportOptions} displaySetOptions={displaySetOptions} From 95bf3a105ba593b15c634e74059a7be35221e3d4 Mon Sep 17 00:00:00 2001 From: Alireza Date: Tue, 14 Feb 2023 14:17:13 -0500 Subject: [PATCH 28/47] chore: update vtk js to 26.4.0 (#3174) --- extensions/cornerstone/package.json | 2 +- package.json | 2 +- platform/viewer/src/components/ViewportGrid.tsx | 4 +++- yarn.lock | 9 +++++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index e296cab79..306598ac1 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -47,7 +47,7 @@ "@cornerstonejs/core": "0.30.1", "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", "@cornerstonejs/tools": "0.39.0", - "@kitware/vtk.js": "25.9.0", + "@kitware/vtk.js": "26.4.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", "lodash.merge": "^4.6.2", diff --git a/package.json b/package.json index 633b8010d..048c51de0 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@babel/runtime": "7.16.3", - "@kitware/vtk.js": "25.9.0", + "@kitware/vtk.js": "26.4.0", "core-js": "^3.2.1" }, "peerDependencies": { diff --git a/platform/viewer/src/components/ViewportGrid.tsx b/platform/viewer/src/components/ViewportGrid.tsx index 349c7e4b6..0c3d09fb9 100644 --- a/platform/viewer/src/components/ViewportGrid.tsx +++ b/platform/viewer/src/components/ViewportGrid.tsx @@ -133,7 +133,9 @@ function ViewerViewportGrid(props) { // try to fill the empty viewport with a display set not already in the grid const displaySetsNotInGrid = availableDisplaySets.filter( displaySet => - gridDisplaySetUIDs.indexOf(displaySet.displaySetInstanceUID) === -1 + gridDisplaySetUIDs.indexOf(displaySet.displaySetInstanceUID) === + -1 && + ['SEG', 'SR', 'RTSTRUCT'].indexOf(displaySet.Modality) === -1 ); if (displaySetsNotInGrid.length > 0) { diff --git a/yarn.lock b/yarn.lock index 14f62d9b6..08aba977d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3589,14 +3589,15 @@ merge-source-map "^1.1.0" schema-utils "^2.7.0" -"@kitware/vtk.js@25.9.0": - version "25.9.0" - resolved "https://registry.npmjs.org/@kitware/vtk.js/-/vtk.js-25.9.0.tgz#ecf555c56f6e117b454131c43aba45311a515ecc" - integrity sha512-L4OQavJkSZjYYvW4GsEVkX7hqPKEbzEKwitq9GcjoAijrV0MINyxkChRbYEEYnTMcSW3i2jZ/jmiXaPfXuhPFQ== +"@kitware/vtk.js@26.4.0": + version "26.4.0" + resolved "https://registry.npmjs.org/@kitware/vtk.js/-/vtk.js-26.4.0.tgz#2b876d94c33c365bbb6352cbe7b18f7942753ad3" + integrity sha512-V8lTv0E0/cp5ORLId0Noy3+NryZjneDvZOrHnRCGhVzMuH/aCND8xy8M9AejwC0BRI0mIp5eX9MjH3xhAlbeFg== dependencies: "@babel/runtime" "7.17.9" commander "9.2.0" d3-scale "4.0.2" + fast-deep-equal "^3.1.3" fflate "0.7.3" gl-matrix "3.4.3" globalthis "1.0.3" From 94bb4c7d4233dc15e9d0b05a766141a42b659607 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Thu, 16 Feb 2023 13:07:12 -0500 Subject: [PATCH 29/47] feat(ImageSet): Avoid exposing the images field by adding a getNumImagesMethod (#3179) --- platform/core/src/classes/ImageSet.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/core/src/classes/ImageSet.js b/platform/core/src/classes/ImageSet.js index 2a4142843..9f4ba7074 100644 --- a/platform/core/src/classes/ImageSet.js +++ b/platform/core/src/classes/ImageSet.js @@ -56,6 +56,8 @@ class ImageSet { } } + getNumImages = () => this.images.length + getImage(index) { return this.images[index]; } From b67c7b23e896eee6d01429c9717c5ba4493dbbf1 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Thu, 16 Feb 2023 13:10:08 -0500 Subject: [PATCH 30/47] fix(authentication): mode/datasource routes must be marked private so they can be protected via authentication. (#3178) --- platform/viewer/src/routes/buildModeRoutes.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/viewer/src/routes/buildModeRoutes.tsx b/platform/viewer/src/routes/buildModeRoutes.tsx index 88c5b7b12..76a9f3198 100644 --- a/platform/viewer/src/routes/buildModeRoutes.tsx +++ b/platform/viewer/src/routes/buildModeRoutes.tsx @@ -68,6 +68,7 @@ export default function buildModeRoutes({ routes.push({ path, children, + private: true, }); }); From ae4183852ffa4a89f5af5595be37a889e3ac2a4a Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Thu, 16 Feb 2023 13:50:59 -0500 Subject: [PATCH 31/47] fix: Patient name handling as either Alphabetic object or simply string object - formatPN should accept a string person name as well as an object with a Alphabetic field. - For DICOM JSON data sources, spread in the patient data from the study object into the instance. --- extensions/default/src/DicomJSONDataSource/index.js | 2 ++ .../src/viewports/TrackedCornerstoneViewport.tsx | 2 +- platform/core/src/utils/formatPN.js | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extensions/default/src/DicomJSONDataSource/index.js b/extensions/default/src/DicomJSONDataSource/index.js index faf120985..241d430af 100644 --- a/extensions/default/src/DicomJSONDataSource/index.js +++ b/extensions/default/src/DicomJSONDataSource/index.js @@ -206,8 +206,10 @@ function createDicomJSONApi(dicomJsonConfig) { url: instance.url, imageId: instance.url, ...series, + ...study, }; delete obj.instances; + delete obj.series; return obj; }); storeInstances(instances); diff --git a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx index 6d0971f43..c732215f4 100644 --- a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx +++ b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx @@ -211,7 +211,7 @@ function TrackedCornerstoneViewport(props) { seriesDescription: SeriesDescription, patientInformation: { patientName: PatientName - ? OHIF.utils.formatPN(PatientName.Alphabetic) + ? OHIF.utils.formatPN(PatientName) : '', patientSex: PatientSex || '', patientAge: PatientAge || '', diff --git a/platform/core/src/utils/formatPN.js b/platform/core/src/utils/formatPN.js index fb019ab5e..5e6f26a02 100644 --- a/platform/core/src/utils/formatPN.js +++ b/platform/core/src/utils/formatPN.js @@ -6,9 +6,11 @@ export default function formatPN(name) { return; } + const nameToUse = name.Alphabetic ?? name; + // Convert the first ^ to a ', '. String.replace() only affects // the first appearance of the character. - const commaBetweenFirstAndLast = name.replace('^', ', '); + const commaBetweenFirstAndLast = nameToUse.replace('^', ', '); // Replace any remaining '^' characters with spaces const cleaned = commaBetweenFirstAndLast.replace(/\^/g, ' '); From 926290f69ef8494c0e438de6a1356b5ce2acaaba Mon Sep 17 00:00:00 2001 From: Alireza Date: Fri, 17 Feb 2023 15:04:07 -0500 Subject: [PATCH 32/47] feat: add more e2e tests for MPR and add test mode and extension (#3180) * tests: add various e2e tests for MPR and measurements wip add cypress config feat: add mode and extension for testing add hp applied through search params add MPR tests apply review comments add more e2e tests update yarn lock * fix unit tests failing --- .webpack/webpack.base.js | 2 +- extensions/cornerstone-dicom-seg/package.json | 6 +- extensions/cornerstone-dicom-sr/package.json | 2 +- extensions/cornerstone/package.json | 2 +- extensions/cornerstone/src/init.tsx | 10 +- .../cornerstone/src/utils/callInputDialog.tsx | 1 + .../src/utils/mpr/toggleMPRHangingProtocol.ts | 43 +- extensions/default/package.json | 2 +- .../src/Panels/PanelMeasurementTable.tsx | 1 + extensions/dicom-pdf/package.json | 2 +- extensions/dicom-video/package.json | 2 +- extensions/measurement-tracking/package.json | 2 +- .../PanelMeasurementTableTracking/index.tsx | 1 + .../test-extension/.webpack/webpack.dev.js | 8 + .../test-extension/.webpack/webpack.prod.js | 43 + extensions/test-extension/LICENSE | 21 + extensions/test-extension/README.md | 4 + extensions/test-extension/babel.config.js | 1 + extensions/test-extension/package.json | 43 + extensions/test-extension/src/id.js | 5 + extensions/test-extension/src/index.tsx | 17 + extensions/tmtv/package.json | 2 +- modes/basic-dev-mode/package.json | 3 +- modes/basic-test-mode/package.json | 7 +- modes/basic-test-mode/src/index.js | 1 + modes/longitudinal/package.json | 2 +- modes/tmtv/package.json | 2 +- package.json | 6 +- .../cli/templates/extension/dependencies.json | 29 +- platform/cli/templates/mode/dependencies.json | 24 +- platform/core/package.json | 2 +- .../core/src/extensions/ExtensionManager.ts | 12 +- .../HangingProtocolService.ts | 19 +- platform/i18n/package.json | 2 +- platform/ui/src/components/Input/Input.tsx | 3 +- platform/ui/src/components/Modal/Modal.tsx | 1 + platform/ui/src/components/Select/Select.tsx | 1 + .../ThumbnailTracked/ThumbnailTracked.tsx | 6 +- platform/viewer/.webpack/webpack.pwa.js | 16 +- .../viewer/.webpack/writePluginImportsFile.js | 32 +- platform/viewer/cypress.config.ts | 40 + platform/viewer/cypress.json | 15 - platform/viewer/cypress/.eslintrc.js | 6 + .../integration/OHIFPdfDisplay.spec.js | 13 +- .../integration/OHIFVideoDisplay.spec.js | 13 +- .../OHIFCornerstoneHotkeys.spec.js | 39 +- .../OHIFCornerstoneToolbar.spec.js | 7 +- .../OHIFDownloadSnapshotFile.spec.js | 45 +- .../OHIFGeneralViewer.spec.js | 98 + .../OHIFMeasurementPanel.spec.js | 213 + .../OHIFStudyBrowser.spec.js | 45 + .../OHIFStudyViewer.spec.js | 339 - .../study-list/OHIFStudyList.spec.js | 55 +- .../cypress/integration/volume/MPR.spec.js | 139 + platform/viewer/cypress/support/aliases.js | 14 +- platform/viewer/cypress/support/commands.js | 54 +- platform/viewer/package.json | 10 +- platform/viewer/public/config/aws.js | 2 + platform/viewer/public/config/default.js | 2 + platform/viewer/public/config/demo.js | 2 + .../viewer/public/config/dicomweb-server.js | 2 + .../viewer/public/config/dicomweb_relative.js | 2 + .../public/config/docker_nginx-orthanc.js | 2 + .../docker_openresty-orthanc-keycloak.js | 2 + .../public/config/docker_openresty-orthanc.js | 2 + platform/viewer/public/config/e2e.js | 10 +- platform/viewer/public/config/google.js | 2 + platform/viewer/public/config/idc.js | 2 + .../viewer/public/config/local_dcm4chee.js | 2 + .../viewer/public/config/local_orthanc.js | 2 + platform/viewer/public/config/local_static.js | 2 + platform/viewer/public/config/multiple.js | 2 + platform/viewer/public/config/netlify.js | 2 + .../viewer/public/config/public_dicomweb.js | 2 + platform/viewer/src/appInit.js | 5 + platform/viewer/src/hooks/index.js | 3 +- platform/viewer/src/hooks/useSearchParams.js | 17 + platform/viewer/src/index.js | 31 +- platform/viewer/src/routes/Mode/Mode.tsx | 48 +- .../viewer/src/routes/WorkList/WorkList.tsx | 36 +- testdata | 2 +- tsconfig.json | 13 +- yarn.lock | 11416 +++++++--------- 83 files changed, 6286 insertions(+), 6860 deletions(-) create mode 100644 extensions/test-extension/.webpack/webpack.dev.js create mode 100644 extensions/test-extension/.webpack/webpack.prod.js create mode 100644 extensions/test-extension/LICENSE create mode 100644 extensions/test-extension/README.md create mode 100644 extensions/test-extension/babel.config.js create mode 100644 extensions/test-extension/package.json create mode 100644 extensions/test-extension/src/id.js create mode 100644 extensions/test-extension/src/index.tsx create mode 100644 platform/viewer/cypress.config.ts delete mode 100644 platform/viewer/cypress.json create mode 100644 platform/viewer/cypress/.eslintrc.js create mode 100644 platform/viewer/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js create mode 100644 platform/viewer/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js create mode 100644 platform/viewer/cypress/integration/measurement-tracking/OHIFStudyBrowser.spec.js delete mode 100644 platform/viewer/cypress/integration/measurement-tracking/OHIFStudyViewer.spec.js create mode 100644 platform/viewer/cypress/integration/volume/MPR.spec.js create mode 100644 platform/viewer/src/hooks/useSearchParams.js diff --git a/.webpack/webpack.base.js b/.webpack/webpack.base.js index 5ef24dbfd..700e9e1b3 100644 --- a/.webpack/webpack.base.js +++ b/.webpack/webpack.base.js @@ -39,7 +39,7 @@ module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => { const config = { mode: isProdBuild ? 'production' : 'development', - devtool: isProdBuild ? 'source-map' : 'eval-source-map', + devtool: isProdBuild ? 'source-map' : 'cheap-module-source-map', entry: { app: `${SRC_DIR}/index.js`, }, diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index a401b312f..10f6ce407 100644 --- a/extensions/cornerstone-dicom-seg/package.json +++ b/extensions/cornerstone-dicom-seg/package.json @@ -36,13 +36,13 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-i18next": "^10.11.0", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", + "react-router": "^6.8.1", + "react-router-dom": "^6.8.1", "webpack": "^5.50.0", "webpack-merge": "^5.7.3" }, "dependencies": { - "@babel/runtime": "7.7.6", + "@babel/runtime": "^7.20.13", "react-color": "^2.19.3" }, "devDependencies": { diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index c64a9a177..20a810b59 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -43,7 +43,7 @@ "react": "^17.0.2" }, "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", "@cornerstonejs/core": "0.30.1", "@cornerstonejs/tools": "0.39.0" diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 306598ac1..0518ba474 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -42,7 +42,7 @@ "lodash": "^4.17.21" }, "dependencies": { - "@babel/runtime": "7.17.9", + "@babel/runtime": "^7.20.13", "@cornerstonejs/adapters": "0.3.0", "@cornerstonejs/core": "0.30.1", "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index a44bee43a..8c7aad4bd 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -77,7 +77,10 @@ export default async function init({ window.services = servicesManager.services; - if (!window.crossOriginIsolated) { + if ( + appConfig.showWarningMessageForCrossOrigin && + !window.crossOriginIsolated + ) { uiNotificationService.show({ title: 'Cross Origin Isolation', message: @@ -86,7 +89,10 @@ export default async function init({ }); } - if (cornerstone.getShouldUseCPURendering()) { + if ( + appConfig.showCPUFallbackMessage && + cornerstone.getShouldUseCPURendering() + ) { _showCPURenderingModal(uiModalService, hangingProtocolService); } diff --git a/extensions/cornerstone/src/utils/callInputDialog.tsx b/extensions/cornerstone/src/utils/callInputDialog.tsx index b52fbc355..fb27f60d4 100644 --- a/extensions/cornerstone/src/utils/callInputDialog.tsx +++ b/extensions/cornerstone/src/utils/callInputDialog.tsx @@ -59,6 +59,7 @@ function callInputDialog( autoFocus className="mt-2 bg-black border-primary-main" type="text" + id="annotation" containerClassName="mr-2" value={value.label} onChange={event => { diff --git a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts index 663643ab0..cd6b556a2 100644 --- a/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts +++ b/extensions/cornerstone/src/utils/mpr/toggleMPRHangingProtocol.ts @@ -58,26 +58,20 @@ export default function toggleMPRHangingProtocol({ const viewportDisplaySetInstanceUIDs = viewports[activeViewportIndex].displaySetInstanceUIDs; - const errorCallback = error => { - // Unable to create MPR, so be sure to return to the cached/original protocol. - hangingProtocolService.setProtocol( - cachedState.protocol.id, - viewportMatchDetails, - restoreErrorCallback - ); + // What is the current active protocol and stage number to restore later + const { protocol, stage } = hangingProtocolService.getActiveProtocol(); + const restoreErrorCallback = error => { + console.error(error); uiNotificationService.show({ title: 'Multiplanar reconstruction (MPR) ', message: - 'Cannot create MPR for this DisplaySet since it is not reconstructable.', + 'Something went wrong while trying to restore the previous layout.', type: 'info', duration: 3000, }); }; - // What is the current active protocol and stage number to restore later - const { protocol, stage } = hangingProtocolService.getActiveProtocol(); - if (toggledState) { resetCachedState(); @@ -109,6 +103,23 @@ export default function toggleMPRHangingProtocol({ getToolGroup ); + const errorCallback = error => { + // Unable to create MPR, so be sure to return to the cached/original protocol. + hangingProtocolService.setProtocol( + cachedState.protocol.id, + viewportMatchDetails, + restoreErrorCallback + ); + + uiNotificationService.show({ + title: 'Multiplanar reconstruction (MPR) ', + message: + 'Cannot create MPR for this DisplaySet since it is not reconstructable.', + type: 'info', + duration: 3000, + }); + }; + hangingProtocolService.setProtocol( MPR_TOOLGROUP_ID, matchDetails, @@ -117,16 +128,6 @@ export default function toggleMPRHangingProtocol({ return; } - const restoreErrorCallback = error => { - uiNotificationService.show({ - title: 'Multiplanar reconstruction (MPR) ', - message: - 'Something went wrong while trying to restore the previous layout.', - type: 'info', - duration: 3000, - }); - }; - _disableCrosshairs([MPR_TOOLGROUP_ID], getToolGroup); const { layoutType, properties } = cachedState.viewportStructure; diff --git a/extensions/default/package.json b/extensions/default/package.json index c6c9f3140..8c15e721a 100644 --- a/extensions/default/package.json +++ b/extensions/default/package.json @@ -42,7 +42,7 @@ "webpack-merge": "^5.7.3" }, "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "@cornerstonejs/calculate-suv": "^1.0.3" } } diff --git a/extensions/default/src/Panels/PanelMeasurementTable.tsx b/extensions/default/src/Panels/PanelMeasurementTable.tsx index f049dfd5b..be95aa0b2 100644 --- a/extensions/default/src/Panels/PanelMeasurementTable.tsx +++ b/extensions/default/src/Panels/PanelMeasurementTable.tsx @@ -176,6 +176,7 @@ export default function PanelMeasurementTable({
{ + return webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); +}; diff --git a/extensions/test-extension/.webpack/webpack.prod.js b/extensions/test-extension/.webpack/webpack.prod.js new file mode 100644 index 000000000..946363c53 --- /dev/null +++ b/extensions/test-extension/.webpack/webpack.prod.js @@ -0,0 +1,43 @@ +const webpack = require('webpack'); +const merge = require('webpack-merge'); +const path = require('path'); +const webpackCommon = require('./../../../.webpack/webpack.base.js'); +const pkg = require('./../package.json'); + +const ROOT_DIR = path.join(__dirname, './..'); +const SRC_DIR = path.join(__dirname, '../src'); +const DIST_DIR = path.join(__dirname, '../dist'); + +module.exports = (env, argv) => { + const commonConfig = webpackCommon(env, argv, { SRC_DIR, DIST_DIR }); + + return merge(commonConfig, { + stats: { + colors: true, + hash: true, + timings: true, + assets: true, + chunks: false, + chunkModules: false, + modules: false, + children: false, + warnings: true, + }, + optimization: { + minimize: true, + sideEffects: true, + }, + output: { + path: ROOT_DIR, + library: 'OHIFExtDICOMSR', + libraryTarget: 'umd', + libraryExport: 'default', + filename: pkg.main, + }, + plugins: [ + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 1, + }), + ], + }); +}; diff --git a/extensions/test-extension/LICENSE b/extensions/test-extension/LICENSE new file mode 100644 index 000000000..19e20dd35 --- /dev/null +++ b/extensions/test-extension/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Open Health Imaging Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extensions/test-extension/README.md b/extensions/test-extension/README.md new file mode 100644 index 000000000..985985fce --- /dev/null +++ b/extensions/test-extension/README.md @@ -0,0 +1,4 @@ +# Test Extension +This extension will provide uitlities and module to help with testing. It is not intended to be used in production. +For instance, we can use the hanging protocol module to inject a hanging protocol into the core and later +use it to test the hanging protocol detection mechanism. diff --git a/extensions/test-extension/babel.config.js b/extensions/test-extension/babel.config.js new file mode 100644 index 000000000..325ca2a8e --- /dev/null +++ b/extensions/test-extension/babel.config.js @@ -0,0 +1 @@ +module.exports = require('../../babel.config.js'); diff --git a/extensions/test-extension/package.json b/extensions/test-extension/package.json new file mode 100644 index 000000000..f0640ef99 --- /dev/null +++ b/extensions/test-extension/package.json @@ -0,0 +1,43 @@ +{ + "name": "@ohif/extension-test", + "version": "0.0.1", + "description": "OHIF extension used inside e2e testing", + "author": "OHIF", + "license": "MIT", + "repository": "OHIF/Viewers", + "main": "dist/index.umd.js", + "module": "src/index.tsx", + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1.16.0" + }, + "files": [ + "dist", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --debug --output-pathinfo", + "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js", + "build:package": "yarn run build", + "start": "yarn run dev", + "test:unit": "jest --watchAll", + "test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests" + }, + "peerDependencies": { + "@ohif/core": "^3.0.0", + "@ohif/ui": "^2.0.0", + "dcmjs": "0.29.4", + "dicom-parser": "^1.8.9", + "hammerjs": "^2.0.8", + "prop-types": "^15.6.2", + "react": "^17.0.2" + }, + "dependencies": { + "@babel/runtime": "^7.20.13", + "classnames": "^2.3.2" + } +} diff --git a/extensions/test-extension/src/id.js b/extensions/test-extension/src/id.js new file mode 100644 index 000000000..ebe5acd98 --- /dev/null +++ b/extensions/test-extension/src/id.js @@ -0,0 +1,5 @@ +import packageJson from '../package.json'; + +const id = packageJson.name; + +export { id }; diff --git a/extensions/test-extension/src/index.tsx b/extensions/test-extension/src/index.tsx new file mode 100644 index 000000000..5c07074c3 --- /dev/null +++ b/extensions/test-extension/src/index.tsx @@ -0,0 +1,17 @@ +import { id } from './id'; +import { Types } from '@ohif/core'; + +/** + * + */ +const testExtension: Types.Extensions.Extension = { + /** + * Only required property. Should be a unique value across all extensions. + */ + id, + preRegistration() { + console.debug('hello from test-extension init.js'); + }, +}; + +export default testExtension; diff --git a/extensions/tmtv/package.json b/extensions/tmtv/package.json index a789437a1..f5b5a0255 100644 --- a/extensions/tmtv/package.json +++ b/extensions/tmtv/package.json @@ -37,7 +37,7 @@ "react": "^17.0.2" }, "dependencies": { - "@babel/runtime": "7.7.6", + "@babel/runtime": "^7.20.13", "classnames": "^2.3.2" } } diff --git a/modes/basic-dev-mode/package.json b/modes/basic-dev-mode/package.json index a0f52c22b..27f1b4474 100644 --- a/modes/basic-dev-mode/package.json +++ b/modes/basic-dev-mode/package.json @@ -32,13 +32,12 @@ "@ohif/core": "^3.0.0", "@ohif/extension-default": "^3.0.0", "@ohif/extension-cornerstone": "^3.0.0", - "@ohif/extension-cornerstone": "^3.0.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-dicom-pdf": "^3.0.1", "@ohif/extension-dicom-video": "^3.0.1" }, "dependencies": { - "@babel/runtime": "7.13.10" + "@babel/runtime": "^7.20.13" }, "devDependencies": { "webpack": "^5.50.0", diff --git a/modes/basic-test-mode/package.json b/modes/basic-test-mode/package.json index 06dded827..226069f86 100644 --- a/modes/basic-test-mode/package.json +++ b/modes/basic-test-mode/package.json @@ -1,5 +1,5 @@ { - "name": "mode-basic-test-mode", + "name": "@ohif/mode-test", "version": "0.0.1", "description": "Basic mode for testing", "author": "OHIF", @@ -38,10 +38,11 @@ "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "@ohif/extension-dicom-pdf": "^3.0.1", "@ohif/extension-dicom-video": "^3.0.1", - "@ohif/extension-measurement-tracking": "^3.0.0" + "@ohif/extension-measurement-tracking": "^3.0.0", + "@ohif/extension-test": "0.0.1" }, "dependencies": { - "@babel/runtime": "7.16.3" + "@babel/runtime": "^7.20.13" }, "devDependencies": { "webpack": "^5.50.0", diff --git a/modes/basic-test-mode/src/index.js b/modes/basic-test-mode/src/index.js index 7a35b70b2..129aa6834 100644 --- a/modes/basic-test-mode/src/index.js +++ b/modes/basic-test-mode/src/index.js @@ -54,6 +54,7 @@ const extensionDependencies = { '@ohif/extension-cornerstone-dicom-seg': '^3.0.0', '@ohif/extension-dicom-pdf': '^3.0.1', '@ohif/extension-dicom-video': '^3.0.1', + '@ohif/extension-test': '^0.0.1', }; function modeFactory() { diff --git a/modes/longitudinal/package.json b/modes/longitudinal/package.json index 82dc751ab..7a35b2b9a 100644 --- a/modes/longitudinal/package.json +++ b/modes/longitudinal/package.json @@ -41,7 +41,7 @@ "@ohif/extension-measurement-tracking": "^3.0.0" }, "dependencies": { - "@babel/runtime": "7.16.3" + "@babel/runtime": "^7.20.13" }, "devDependencies": { "webpack": "^5.50.0", diff --git a/modes/tmtv/package.json b/modes/tmtv/package.json index ebe4ddbee..3fec25c27 100644 --- a/modes/tmtv/package.json +++ b/modes/tmtv/package.json @@ -41,7 +41,7 @@ "@ohif/extension-measurement-tracking": "^3.0.0" }, "dependencies": { - "@babel/runtime": "7.16.3" + "@babel/runtime": "^7.20.13" }, "devDependencies": { "webpack": "^5.50.0", diff --git a/package.json b/package.json index 048c51de0..a9464a4d0 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "link-list": "npm ls --depth=0 --link=true" }, "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "@kitware/vtk.js": "26.4.0", "core-js": "^3.2.1" }, @@ -124,7 +124,7 @@ "start-server-and-test": "^1.10.0", "style-loader": "^1.0.0", "terser-webpack-plugin": "^5.1.4", - "typescript": "^4.2.3", + "typescript": "4.6.4", "unused-webpack-plugin": "2.4.0", "webpack": "^5.50.0", "webpack-cli": "^4.7.2", @@ -146,6 +146,6 @@ ] }, "resolutions": { - "**/@babel/runtime": "7.16.3" + "**/@babel/runtime": "^7.20.13" } } diff --git a/platform/cli/templates/extension/dependencies.json b/platform/cli/templates/extension/dependencies.json index 8b6e193ec..98cf9a215 100644 --- a/platform/cli/templates/extension/dependencies.json +++ b/platform/cli/templates/extension/dependencies.json @@ -23,26 +23,29 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-i18next": "^10.11.0", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0", + "react-router": "^6.8.1", + "react-router-dom": "^6.8.1", "webpack": "^5.50.0", "webpack-merge": "^5.7.3" }, "dependencies": { - "@babel/runtime": "7.7.6" + "@babel/runtime": "^7.20.13" }, "devDependencies": { - "@babel/core": "^7.5.0", - "@babel/plugin-proposal-class-properties": "^7.5.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-runtime": "^7.5.0", + "@babel/core": "^7.17.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-runtime": "^7.17.0", "babel-plugin-inline-react-svg": "^2.0.1", - "@babel/preset-env": "^7.5.0", - "@babel/preset-react": "^7.0.0", - "@babel/preset-typescript": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.13.0", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.13.0", + "babel-eslint": "^8.0.3", "babel-loader": "^8.0.0-beta.4", "clean-webpack-plugin": "^4.0.0", diff --git a/platform/cli/templates/mode/dependencies.json b/platform/cli/templates/mode/dependencies.json index 55dc20621..3a0c1b72f 100644 --- a/platform/cli/templates/mode/dependencies.json +++ b/platform/cli/templates/mode/dependencies.json @@ -20,19 +20,21 @@ "@ohif/core": "^3.0.0" }, "dependencies": { - "@babel/runtime": "7.7.6" + "@babel/runtime": "^7.20.13" }, "devDependencies": { - "@babel/core": "^7.5.0", - "@babel/plugin-proposal-class-properties": "^7.5.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-runtime": "^7.5.0", - "@babel/preset-env": "^7.5.0", - "@babel/preset-react": "^7.0.0", - "@babel/preset-typescript": "^7.17.12", + "@babel/core": "^7.17.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.17.3", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-runtime": "^7.17.0", + "@babel/plugin-transform-typescript": "^7.13.0", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.13.0", "babel-eslint": "^8.0.3", "babel-loader": "^8.0.0-beta.4", "babel-plugin-inline-react-svg": "^2.0.1", diff --git a/platform/core/package.json b/platform/core/package.json index 811a389b1..486fcc36d 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -36,7 +36,7 @@ "@ohif/ui": "^2.0.0" }, "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "dcmjs": "0.29.4", "dicomweb-client": "^0.6.0", "isomorphic-base64": "^1.0.2", diff --git a/platform/core/src/extensions/ExtensionManager.ts b/platform/core/src/extensions/ExtensionManager.ts index 9906a3e87..5827915cc 100644 --- a/platform/core/src/extensions/ExtensionManager.ts +++ b/platform/core/src/extensions/ExtensionManager.ts @@ -35,6 +35,7 @@ export interface ExtensionParams extends ExtensionConstructor { * have more values than this. */ export interface Extension { + id: string; preRegistration?: (p: ExtensionParams) => void; } @@ -160,11 +161,18 @@ export default class ExtensionManager { // but currently since some extensions need to be registered before // others, we need to run them sequentially. We need a postInit hook // to avoid this sequential async registration - for (const extension of extensions) { + for (let i = 0; i < extensions.length; i++) { + const extension = extensions[i]; const hasConfiguration = Array.isArray(extension); try { if (hasConfiguration) { - const [ohifExtension, configuration] = extension; + // Important: for some reason in the line below the type + // of extension is not recognized as [ExtensionRegister, + // ExtensionConfiguration] by babel DON"T CHANGE IT + // Same for the for loop above don't use + // for (const extension of extensions) + const ohifExtension = extension[0]; + const configuration = extension[1]; await this.registerExtension( ohifExtension, configuration, diff --git a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts index 1539529bb..f85ea5905 100644 --- a/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts +++ b/platform/core/src/services/HangingProtocolService/HangingProtocolService.ts @@ -185,7 +185,11 @@ class HangingProtocolService { * @param protocolId - the id of the protocol * @returns protocol - the protocol with the given id */ - public getProtocolById(id: string): HangingProtocol.Protocol { + public getProtocolById(id: string): HangingProtocol.Protocol | undefined { + if (!id) { + return; + } + const protocol = this.protocols.get(id); if (protocol instanceof Function) { @@ -233,7 +237,7 @@ class HangingProtocolService { * If active protocols ids is null right now, then the specified * protocol will become the only active protocol. */ - public addActiveProtocol(id: string): void { + public addActiveProtocolId(id: string): void { if (!id) { return; } @@ -247,17 +251,17 @@ class HangingProtocolService { * Sets the active hanging protocols to use, by name. If the value is empty, * then resets the active protocols to all the named items. */ - public setActiveProtocols(hangingProtocol?: string[] | string): void { - if (!hangingProtocol || !hangingProtocol.length) { + public setActiveProtocolIds(protocolId?: string[] | string): void { + if (!protocolId || !protocolId.length) { this.activeProtocolIds = null; console.log('No active protocols, setting all to active'); return; } - if (typeof hangingProtocol === 'string') { - this.setActiveProtocols([hangingProtocol]); + if (typeof protocolId === 'string') { + this.setActiveProtocolIds([protocolId]); return; } - this.activeProtocolIds = [...hangingProtocol]; + this.activeProtocolIds = [...protocolId]; } /** @@ -272,7 +276,6 @@ class HangingProtocolService { * @param params.displaySets is the list of display sets associated with * the studies to display in viewports. * @param protocol is a specific protocol to apply. - * @returns */ public run({ studies, displaySets, activeStudy }, protocolId) { this.studies = [...studies]; diff --git a/platform/i18n/package.json b/platform/i18n/package.json index 3a03b04e8..f66c7fdf2 100644 --- a/platform/i18n/package.json +++ b/platform/i18n/package.json @@ -36,7 +36,7 @@ "react-i18next": "^10.11.0" }, "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "i18next-locize-backend": "^2.0.0", "locize-editor": "^2.0.0", "locize-lastused": "^1.1.0" diff --git a/platform/ui/src/components/Input/Input.tsx b/platform/ui/src/components/Input/Input.tsx index 3a1c4e771..a03a4ae7e 100644 --- a/platform/ui/src/components/Input/Input.tsx +++ b/platform/ui/src/components/Input/Input.tsx @@ -57,6 +57,7 @@ const Input = ({ }; Input.propTypes = { + id: PropTypes.string, label: PropTypes.string, containerClassName: PropTypes.string, labelClassName: PropTypes.string, @@ -70,7 +71,7 @@ Input.propTypes = { readOnly: PropTypes.bool, onKeyPress: PropTypes.func, onKeyDown: PropTypes.func, - disabled: PropTypes.bool + disabled: PropTypes.bool, }; export default Input; diff --git a/platform/ui/src/components/Modal/Modal.tsx b/platform/ui/src/components/Modal/Modal.tsx index bd226422d..7d0d9e67e 100644 --- a/platform/ui/src/components/Modal/Modal.tsx +++ b/platform/ui/src/components/Modal/Modal.tsx @@ -32,6 +32,7 @@ const Modal = ({ {title} diff --git a/platform/ui/src/components/Select/Select.tsx b/platform/ui/src/components/Select/Select.tsx index 70bdae808..aab80f349 100644 --- a/platform/ui/src/components/Select/Select.tsx +++ b/platform/ui/src/components/Select/Select.tsx @@ -79,6 +79,7 @@ const Select = ({ className, 'flex flex-col flex-1 customSelect__wrapper' )} + data-cy={`input-${id}`} classNamePrefix="customSelect" isDisabled={isDisabled} isClearable={isClearable} diff --git a/platform/ui/src/components/ThumbnailTracked/ThumbnailTracked.tsx b/platform/ui/src/components/ThumbnailTracked/ThumbnailTracked.tsx index 782bbe40c..1c750c353 100644 --- a/platform/ui/src/components/ThumbnailTracked/ThumbnailTracked.tsx +++ b/platform/ui/src/components/ThumbnailTracked/ThumbnailTracked.tsx @@ -95,7 +95,11 @@ const ThumbnailTracked = ({ > -
+ +
{renderViewportLabels()}
diff --git a/platform/viewer/.webpack/webpack.pwa.js b/platform/viewer/.webpack/webpack.pwa.js index 439810acf..925610c0f 100644 --- a/platform/viewer/.webpack/webpack.pwa.js +++ b/platform/viewer/.webpack/webpack.pwa.js @@ -29,18 +29,18 @@ const copyPluginFromExtensions = writePluginImportFile(SRC_DIR, DIST_DIR); const setHeaders = (res, path) => { if (path.indexOf('.gz') !== -1) { - res.setHeader('Content-Encoding', 'gzip') + res.setHeader('Content-Encoding', 'gzip'); } else if (path.indexOf('.br') !== -1) { - res.setHeader('Content-Encoding', 'br') + res.setHeader('Content-Encoding', 'br'); } if (path.indexOf('.pdf') !== -1) { res.setHeader('Content-Type', 'application/pdf'); } else if (path.indexOf('/frames') !== -1) { - res.setHeader('Content-Type', 'multipart/related') + res.setHeader('Content-Type', 'multipart/related'); } else { - res.setHeader('Content-Type', 'application/json') + res.setHeader('Content-Type', 'application/json'); } -} +}; module.exports = (env, argv) => { const baseConfig = webpackBase(env, argv, { SRC_DIR, DIST_DIR }); @@ -55,7 +55,7 @@ module.exports = (env, argv) => { path: DIST_DIR, filename: isProdBuild ? '[name].bundle.[chunkhash].js' : '[name].js', publicPath: PUBLIC_URL, // Used by HtmlWebPackPlugin for asset prefix - devtoolModuleFilenameTemplate: function (info) { + devtoolModuleFilenameTemplate: function(info) { if (isProdBuild) { return `webpack:///${info.resourcePath}`; } else { @@ -146,12 +146,12 @@ module.exports = (env, argv) => { proxy: { '/dicomweb': 'http://localhost:5000', }, - 'static': [ + static: [ { directory: '../../testdata', staticOptions: { extensions: ['gz', 'br'], - index: "index.json.gz", + index: ['index.json.gz', 'index.mht.gz'], redirect: true, setHeaders, }, diff --git a/platform/viewer/.webpack/writePluginImportsFile.js b/platform/viewer/.webpack/writePluginImportsFile.js index 8a75c5160..d3d2667fd 100644 --- a/platform/viewer/.webpack/writePluginImportsFile.js +++ b/platform/viewer/.webpack/writePluginImportsFile.js @@ -17,8 +17,9 @@ function constructLines(input, categoryName) { if (!input) return lines; input.forEach(entry => { - const packageName = entry.packageName; + if (entry.default === false) return; + const packageName = entry.packageName; const defaultImportName = `${categoryName}${pluginCount}`; lines.importLines.push( @@ -66,7 +67,23 @@ function getRuntimeLoadModesExtensions() { ' for(const modeFactory of modesFactory) {\n' + ' const newModes = await modeFactory(modes,extensions);\n' + ' newModes.forEach(newMode => modes.push(newMode));\n' + - '}\n}\n' + '}\n}\n\n\n' + + 'async function loadRuntimeImports(config) {\n' + + ' if (config && config.modes && config.modes.length) {\n' + + ' for (const modeName of config.modes) {\n' + + ' const existingMode = modes.find(mode => mode.id === modeName);\n' + + ' if (!existingMode) {\n' + + ' if (modeName === `@ohif/mode-test`) {\n' + + ' const mode = await import(`@ohif/mode-test`);\n' + + ' window.modes.push(mode.default);\n' + + ' const extension = await import(`@ohif/extension-test`);\n' + + ' window.extensions.push(extension.default);\n' + + ' }\n' + + ' }\n' + + ' };\n' + + ' }\n' + + '}\n' + + 'export { loadRuntimeImports };\n\n' ); } @@ -201,11 +218,12 @@ function writePluginImportsFile(SRC_DIR, DIST_DIR) { 'dist' ); - console.log('copy plugins', [...copyPluginPublicToDistBuild, - ...copyPluginPublicToDistLink, - ...copyPluginDistToDistBuild, - ...copyPluginDistToDistLink, - ]) + console.log('copy plugins', [ + ...copyPluginPublicToDistBuild, + ...copyPluginPublicToDistLink, + ...copyPluginDistToDistBuild, + ...copyPluginDistToDistLink, + ]); return [ ...copyPluginPublicToDistBuild, ...copyPluginPublicToDistLink, diff --git a/platform/viewer/cypress.config.ts b/platform/viewer/cypress.config.ts new file mode 100644 index 000000000..7cf5ff77f --- /dev/null +++ b/platform/viewer/cypress.config.ts @@ -0,0 +1,40 @@ +import { defineConfig } from 'cypress'; + +export default defineConfig({ + chromeWebSecurity: false, + e2e: { + experimentalRunAllSpecs: true, + supportFile: 'cypress/support/index.js', + setupNodeEvents(on, config) { + on('before:browser:launch', (browser, launchOptions) => { + // `args` is an array of all the arguments that will + // be passed to browsers when it launches + + console.log(launchOptions.args); // print all current args + + console.log('***', browser.family, browser.name, '***'); + if (browser.family === 'chromium' && browser.name !== 'electron') { + // auto open devtools + launchOptions.args.push('--enable-features=SharedArrayBuffer'); + } + + // whatever you return here becomes the launchOptions + return launchOptions; + }); + }, + baseUrl: 'http://localhost:3000', + waitForAnimations: true, + chromeWebSecurity: false, + defaultCommandTimeout: 10000, + requestTimeout: 10000, + responseTimeout: 10000, + specPattern: 'cypress/integration/**/*.spec.[jt]s', + projectId: '4oe38f', + video: false, + reporter: 'junit', + reporterOptions: { + mochaFile: 'cypress/results/test-output.xml', + toConsole: true, + }, + }, +}); diff --git a/platform/viewer/cypress.json b/platform/viewer/cypress.json deleted file mode 100644 index ea63757f2..000000000 --- a/platform/viewer/cypress.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "baseUrl": "http://localhost:3000", - "chromeWebSecurity": false, - "waitForAnimations": true, - "defaultCommandTimeout": 10000, - "requestTimeout": 10000, - "responseTimeout": 10000, - "projectId": "4oe38f", - "video": false, - "reporter": "junit", - "reporterOptions": { - "mochaFile": "cypress/results/test-output.xml", - "toConsole": true - } -} diff --git a/platform/viewer/cypress/.eslintrc.js b/platform/viewer/cypress/.eslintrc.js new file mode 100644 index 000000000..beb89a79b --- /dev/null +++ b/platform/viewer/cypress/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: ['cypress'], + env: { + 'cypress/globals': true, + }, +}; diff --git a/platform/viewer/cypress/integration/OHIFPdfDisplay.spec.js b/platform/viewer/cypress/integration/OHIFPdfDisplay.spec.js index 3701e83bc..954dca093 100644 --- a/platform/viewer/cypress/integration/OHIFPdfDisplay.spec.js +++ b/platform/viewer/cypress/integration/OHIFPdfDisplay.spec.js @@ -1,18 +1,13 @@ -describe('OHIF PDF Display', function () { - before(() => { - cy.openStudyInViewer( - '2.25.317377619501274872606137091638706705333' - ); - }); +describe('OHIF PDF Display', function() { + beforeEach(function() { + cy.openStudyInViewer('2.25.317377619501274872606137091638706705333'); - beforeEach(function () { cy.resetViewport().wait(50); }); - it('checks if series thumbnails are being displayed', function () { + it('checks if series thumbnails are being displayed', function() { cy.get('[data-cy="study-browser-thumbnail"]') .its('length') .should('be.gt', 0); }); - }); diff --git a/platform/viewer/cypress/integration/OHIFVideoDisplay.spec.js b/platform/viewer/cypress/integration/OHIFVideoDisplay.spec.js index 5436956fc..b03ec0a42 100644 --- a/platform/viewer/cypress/integration/OHIFVideoDisplay.spec.js +++ b/platform/viewer/cypress/integration/OHIFVideoDisplay.spec.js @@ -1,15 +1,10 @@ -describe('OHIF Video Display', function () { - before(() => { - cy.openStudyInViewer( - '2.25.96975534054447904995905761963464388233' - ); - }); - - beforeEach(function () { +describe('OHIF Video Display', function() { + beforeEach(function() { + cy.openStudyInViewer('2.25.96975534054447904995905761963464388233'); cy.resetViewport().wait(50); }); - it('checks if series thumbnails are being displayed', function () { + it('checks if series thumbnails are being displayed', function() { cy.get('[data-cy="study-browser-thumbnail"]') .its('length') .should('be.gt', 1); diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js index 13468105b..ddee809ca 100644 --- a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js @@ -1,5 +1,5 @@ describe('OHIF Cornerstone Hotkeys', () => { - before(() => { + beforeEach(() => { cy.checkStudyRouteInViewer( '1.2.840.113619.2.5.1762583153.215519.978957063.78' ); @@ -15,12 +15,8 @@ describe('OHIF Cornerstone Hotkeys', () => { }); cy.expectMinimumThumbnails(3); - }); - - beforeEach(() => { cy.initCornerstoneToolsAliases(); cy.initCommonElementsAliases(); - cy.resetViewport(); }); it('checks if hotkeys "R" and "L" can rotate the image', () => { @@ -45,11 +41,11 @@ describe('OHIF Cornerstone Hotkeys', () => { it('checks if hotkeys "V" and "H" can flip the image', () => { // Hotkey H - cy.get('body').type('H'); + cy.get('body').type('h'); cy.get('@viewportInfoMidLeft').should('contains.text', 'L'); cy.get('@viewportInfoMidTop').should('contains.text', 'A'); // Hotkey V - cy.get('body').type('V'); + cy.get('body').type('v'); cy.get('@viewportInfoMidLeft').should('contains.text', 'L'); cy.get('@viewportInfoMidTop').should('contains.text', 'P'); }); @@ -73,26 +69,17 @@ describe('OHIF Cornerstone Hotkeys', () => { // cy.get('@viewportInfoTopLeft').should('contains.text', 'Zoom:1.67x'); // }); - // it('checks if hotkey "SPACEBAR" can reset the image', () => { - // //Click on button and verify if icon is active on toolbar - // cy.get('@zoomBtn') - // .click() - // .then($zoomBtn => { - // cy.wrap($zoomBtn).should('have.class', 'active'); - // }); + it('checks if hotkey "SPACEBAR" can reset the image', () => { + // Press multiples hotkeys + cy.get('body').type('v+++i'); + cy.get('@viewportInfoMidLeft').should('contains.text', 'R'); + cy.get('@viewportInfoMidTop').should('contains.text', 'P'); - // // Press multiples hotkeys - // cy.get('body').type('V+++I'); - // cy.get('@viewportInfoMidLeft').should('contains.text', 'L'); - // cy.get('@viewportInfoMidTop').should('contains.text', 'A'); - // cy.get('@viewportInfoTopLeft').should('contains.text', 'Zoom:2.30x'); - - // // Hotkey SPACEBAR - // cy.get('body').type(' '); - // cy.get('@viewportInfoMidLeft').should('contains.text', 'R'); - // cy.get('@viewportInfoMidTop').should('contains.text', 'A'); - // cy.get('@viewportInfoTopLeft').should('contains.text', 'Zoom:1.67x'); - // }); + // Hotkey SPACEBAR + cy.get('body').type(' '); + cy.get('@viewportInfoMidLeft').should('contains.text', 'R'); + cy.get('@viewportInfoMidTop').should('contains.text', 'A'); + }); /* // TODO: Pretty sure this is not implemented yet diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js index 27d4aa941..7fbe7541e 100644 --- a/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js @@ -1,12 +1,9 @@ describe('OHIF Cornerstone Toolbar', () => { - before(() => { + beforeEach(() => { cy.checkStudyRouteInViewer( '1.2.840.113619.2.5.1762583153.215519.978957063.78' ); cy.expectMinimumThumbnails(3); - }); - - beforeEach(() => { cy.initCornerstoneToolsAliases(); cy.initCommonElementsAliases(); @@ -16,8 +13,6 @@ describe('OHIF Cornerstone Toolbar', () => { //const expectedText = 'Ser: 1'; //cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText); - - cy.resetViewport(); }); it('checks if all primary buttons are being displayed', () => { diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFDownloadSnapshotFile.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFDownloadSnapshotFile.spec.js index 06f27cf16..9c3752e76 100644 --- a/platform/viewer/cypress/integration/measurement-tracking/OHIFDownloadSnapshotFile.spec.js +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFDownloadSnapshotFile.spec.js @@ -1,32 +1,17 @@ describe('OHIF Download Snapshot File', () => { - before(() => { + beforeEach(() => { cy.checkStudyRouteInViewer( '1.2.840.113619.2.5.1762583153.215519.978957063.78' ); cy.expectMinimumThumbnails(3); - }); - - beforeEach(() => { cy.openDownloadImageModal(); }); - /** - afterEach(() => { - // Close modal - - // TODO: Modal.tsx currently uses Icon instead of IconButton, so - // it's not as easy to give it the cypress data attribute. - // We should fix that first - cy.get('[data-cy="close-button"]') - .scrollIntoView() - .click(); - });*/ - - /*it('checks displayed information for Desktop experience', function() { + it('checks displayed information for Desktop experience', function() { // Set Desktop resolution - cy.viewport(1750, 720); + // cy.viewport(1750, 720); // Visual comparison - cy.screenshot('Download Image Modal - Desktop experience'); + // cy.screenshot('Download Image Modal - Desktop experience'); //Check if all elements are displayed // TODO: need to add this attribute to the modal @@ -36,19 +21,19 @@ describe('OHIF Download Snapshot File', () => { // Check input fields // TODO: select2 - cy.get('[data-cy="file-type"]') - .select('png') - .should('have.value', 'png') - .select('jpg') - .should('have.value', 'jpg'); + // cy.get('[data-cy="file-type"]') + // .select('png') + // .should('have.value', 'png') + // .select('jpg') + // .should('have.value', 'jpg'); // Check image preview cy.get('[data-cy="image-preview"]').should('contain.text', 'Image preview'); - TODO: This is a canvas now, not an img with src - cy.get('[data-cy="viewport-preview-img"]') - .should('have.attr', 'src') - .and('include', 'data:image'); + //TODO: This is a canvas now, not an img with src + // cy.get('[data-cy="viewport-preview-img"]') + // .should('have.attr', 'src') + // .and('include', 'data:image'); // Check buttons cy.get('[data-cy="cancel-btn"]') @@ -58,7 +43,6 @@ describe('OHIF Download Snapshot File', () => { .scrollIntoView() .should('be.visible'); }); - */ /*it('cancel changes on download modal', function() { //Change Image Width, Filename and File Type @@ -88,8 +72,7 @@ describe('OHIF Download Snapshot File', () => { // TO-DO once issue is fixed: https://github.com/OHIF/Viewers/issues/1217 // it('checks error messages for empty fields', function() { // //Clear fields Image Width and Filename - // cy.get('[data-cy="image-width"]') - // .clear(); + // cy.get('[data-cy="image-width"]').clear(); // cy.get('[data-cy="file-name"]').clear(); // //Click on Download button diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js new file mode 100644 index 000000000..67c1597d9 --- /dev/null +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js @@ -0,0 +1,98 @@ +describe('OHIF Study Viewer Page', function() { + beforeEach(function() { + cy.checkStudyRouteInViewer( + '1.2.840.113619.2.5.1762583153.215519.978957063.78' + ); + + cy.expectMinimumThumbnails(3); + cy.initCommonElementsAliases(); + cy.initCornerstoneToolsAliases(); + }); + + it('scrolls series stack using scrollbar', function() { + cy.scrollToIndex(13); + + cy.get('@viewportInfoTopRight').should('contains.text', '14'); + }); + + it('performs right click to zoom', function() { + // This is not used to activate the tool, it is used to ensure the + // top left viewport info shows the zoom values (it only shows up + // when the zoom tool is active) + cy.get('@zoomBtn') + .click() + .then($zoomBtn => { + cy.wrap($zoomBtn).should('have.class', 'active'); + }); + + const zoomLevelInitial = cy + .get('@viewportInfoTopLeft') + .then($viewportInfo => { + return $viewportInfo.text().substring(6, 9); + }); + + //Right click on viewport + cy.get('@viewport') + .trigger('mousedown', 'top', { buttons: 2 }) + .trigger('mousemove', 'center', { buttons: 2 }) + .trigger('mouseup'); + + // make sure the new zoom level is less than the initial + cy.get('@viewportInfoTopLeft').then($viewportInfo => { + const zoomLevelFinal = $viewportInfo.text().substring(6, 9); + expect(zoomLevelFinal < zoomLevelInitial).to.eq(true); + }); + }); + + /*it('performs middle click to pan', function() { + //Get image position from cornerstone and check if y axis was modified + let cornerstone; + let currentPan; + + // TO DO: Replace the cornerstone pan check by Percy snapshot comparison + cy.window() + .its('cornerstone') + .then(c => { + cornerstone = c; + currentPan = () => + cornerstone.getEnabledElements()[0].viewport.translation; + }); + + //pan image with middle click + cy.get('@viewport') + .trigger('mousedown', 'center', { buttons: 3 }) + .trigger('mousemove', 'bottom', { buttons: 3 }) + .trigger('mouseup', 'bottom') + .then(() => { + expect(currentPan().y > 0).to.eq(true); + }); + });*/ + + /*it('opens About modal and verify the displayed information', function() { + cy.get('[data-cy="options-dropdown"]') + .first() + .click(); + cy.get('[data-cy="about-modal"]') + .as('aboutOverlay') + .should('be.visible'); + + //check buttons and links + cy.get('[data-cy="about-modal"]') + .should('contains.text', 'Visit the forum') + .and('contains.text', 'Report an issue') + .and('contains.text', 'https://github.com/OHIF/Viewers/'); + + //check version number + cy.get('[data-cy="about-modal"]').then($modal => { + cy.get('[data-cy="header-version-info"]').should($headerVersionNumber => { + $headerVersionNumber = $headerVersionNumber.text().substring(1); + expect($modal).to.contain($headerVersionNumber); + }); + }); + + //close modal + cy.get('[data-cy="close-button"]').click(); + cy.get('@aboutOverlay').should('not.exist'); + }); + */ +}); diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js new file mode 100644 index 000000000..95acd97de --- /dev/null +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js @@ -0,0 +1,213 @@ +describe('OHIF Measurement Panel', function() { + beforeEach(function() { + cy.checkStudyRouteInViewer( + '1.2.840.113619.2.5.1762583153.215519.978957063.78' + ); + + cy.expectMinimumThumbnails(3); + cy.initCommonElementsAliases(); + cy.initCornerstoneToolsAliases(); + cy.resetViewport().wait(50); + }); + + it('checks if Measurements right panel can be hidden/displayed', function() { + cy.get('@measurementsPanel').should('exist'); + cy.get('@measurementsPanel').should('be.visible'); + + cy.get('@RightCollapseBtn').click(); + cy.get('@measurementsPanel').should('not.exist'); + + cy.get('@RightCollapseBtn').click(); + cy.get('@measurementsPanel').should('exist'); + cy.get('@measurementsPanel').should('be.visible'); + }); + + it('checks if measurement item can be Relabeled under Measurements panel', function() { + // Add length measurement + cy.addLengthMeasurement(); + cy.get('[data-cy="measurement-tracking-prompt-begin-tracking"]').should( + 'exist' + ); + cy.get('[data-cy="measurement-tracking-prompt-begin-tracking"]').should( + 'be.visible' + ); + cy.get('[data-cy="prompt-begin-tracking-yes"]').click(); + cy.get('[data-cy="measurement-item"]').click(); + + cy.get('[data-cy="measurement-item"]') + .find('svg') + .click(); + + // enter Bone label + cy.get('[data-cy="input-annotation"]').should('exist'); + cy.get('[data-cy="input-annotation"]').should('be.visible'); + cy.get('[data-cy="input-annotation"]').type('Bone{enter}'); + + // Verify if 'Bone' label was added + cy.get('[data-cy="measurement-item"]').should('contain.text', 'Bone'); + }); + + it('checks if image would jump when clicked on a measurement item', function() { + // Add length measurement + cy.addLengthMeasurement(); + cy.get('[data-cy="prompt-begin-tracking-yes"]').click(); + + cy.scrollToIndex(13); + + cy.addLengthMeasurement([100, 100], [200, 200]); //Adding measurement in the viewport + + cy.get('@viewportInfoTopRight').should('contains.text', '(14/'); + + // Click on first measurement item + cy.get('[data-cy="measurement-item"]').click(); + + cy.get('@viewportInfoTopRight').should('contains.text', '(1/'); + cy.get('@viewportInfoTopRight').should('not.contains.text', '(14/'); + }); + + /* + TODO: Not sure why this is failing + it('checks if Description can be added to measurement item under Measurements panel', () => { + cy.addLengthMeasurement(); //Adding measurement in the viewport + cy.get('@measurementsBtn').click(); + cy.get('.measurementItem').click(); + + // Click "Description" + cy.get('.btnAction') + .contains('Description') + .click(); + + // Enter description text + const descriptionText = 'Adding text for description test'; + cy.get('#description').type(descriptionText); + + // Confirm + cy.get('.btn-confirm').click(); + + //Verify if descriptionText was added + cy.get('.measurementLocation').should('contain.text', descriptionText); + + // Remove the measurement we just added + cy.get('.btnAction') + .last() + .contains('Delete') + .click() + + // Close panel + cy.get('@measurementsBtn').click(); + cy.get('@measurementsPanel').should('not.be.enabled'); + }); + */ + + /*it('checks if measurement item can be deleted through the context menu on the viewport', function() { + cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport + + //Right click on measurement annotation + const [x1, y1] = [150, 100]; + cy.get('@viewport') + .trigger('mousedown', x1, y1, { + which: 3, + }) + .trigger('mouseup', x1, y1, { + which: 3, + }) + .wait(300) + .then(() => { + //Contextmenu is visible + cy.get('.ToolContextMenu').should('be.visible'); + }); + + //Click "Delete measurement" + cy.get('.form-action') + .contains('Delete measurement') + .click(); + + //Open measurements menu + cy.get('@measurementsBtn').click(); + + //Verify measurements was removed from panel + cy.get('.measurementItem') + .should('not.exist') + .log('Annotation successfully removed'); + + //Close panel + cy.get('@measurementsBtn').click(); + cy.get('@measurementsPanel').should('not.exist'); + });*/ + + /*it('adds relabel and description to measurement item through the context menu on the viewport', function() { + cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport + + // Relabel + // Right click on measurement annotation + const [x1, y1] = [150, 100]; + cy.get('@viewport') + .trigger('mousedown', x1, y1, { + which: 3, + }) + .trigger('mouseup', x1, y1, { + which: 3, + }); + + // Contextmenu is visible + cy.get('.ToolContextMenu').should('be.visible'); + + // Click "Relabel" + cy.get('.form-action') + .contains('Relabel') + .click(); + + // Search for "Brain" + cy.get('.searchInput').type('Brain'); + + // Select "Brain" Result + cy.get('.treeInputs > .wrapperLabel') + .contains('Brain') + .click(); + + // Confirm Selection + cy.get('.checkIconWrapper').click(); + + // Description + // Right click on measurement annotation + cy.get('@viewport') + .trigger('mousedown', x1, y1, { + which: 3, + }) + .trigger('mouseup', x1, y1, { + which: 3, + }); + + // Contextmenu is visible + cy.get('.ToolContextMenu').should('be.visible'); + + // Click "Description" + cy.get('.form-action') + .contains('Add Description') + .click(); + + // Enter description text + const descriptionText = 'Adding text for description test'; + cy.get('#description').type(descriptionText); + + // Confirm + cy.get('.btn-confirm').click(); + + //Open measurements menu + cy.get('@measurementsBtn').click(); + + // Verify if label was added + cy.get('.measurementLocation') + .should('contain.text', 'Brain') + .log('Relabel added with success'); + + //Verify if descriptionText was added + cy.get('.measurementLocation') + .should('contain.text', descriptionText) + .log('Description added with success'); + + // Close panel + cy.get('@measurementsBtn').click(); + cy.get('@measurementsPanel').should('not.exist'); + });*/ +}); diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyBrowser.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyBrowser.spec.js new file mode 100644 index 000000000..764413acc --- /dev/null +++ b/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyBrowser.spec.js @@ -0,0 +1,45 @@ +describe('OHIF Study Viewer Page', function() { + beforeEach(function() { + cy.checkStudyRouteInViewer( + '1.2.840.113619.2.5.1762583153.215519.978957063.78' + ); + + cy.expectMinimumThumbnails(3); + cy.initCommonElementsAliases(); + cy.initCornerstoneToolsAliases(); + cy.resetViewport().wait(50); + }); + + it('checks if series thumbnails are being displayed', function() { + cy.get('[data-cy="study-browser-thumbnail"]') + .its('length') + .should('be.gt', 1); + }); + + it('drags and drop a series thumbnail into viewport', function() { + cy.get('[data-cy="study-browser-thumbnail"]:nth-child(2)') //element to be dragged + .drag('.cornerstone-canvas'); //dropzone element + + //const expectedText = + // 'Ser: 2Img: 1 1/13512 x 512Loc: -17.60 mm Thick: 3.00 mm'; + //cy.get('@viewportInfoBottomLeft').should('contain.text', expectedText); + }); + + it('checks if Series left panel can be hidden/displayed', function() { + cy.get('@seriesPanel').should('exist'); + cy.get('@seriesPanel').should('be.visible'); + + cy.get('@seriesBtn').click(); + cy.get('@seriesPanel').should('not.exist'); + + cy.get('@seriesBtn').click(); + cy.get('@seriesPanel').should('exist'); + cy.get('@seriesPanel').should('be.visible'); + }); + + it('performs double-click to load thumbnail in active viewport', () => { + cy.get('[data-cy="study-browser-thumbnail"]:nth-child(2)').dblclick(); + + //cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText); + }); +}); diff --git a/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyViewer.spec.js b/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyViewer.spec.js deleted file mode 100644 index 5f10ff192..000000000 --- a/platform/viewer/cypress/integration/measurement-tracking/OHIFStudyViewer.spec.js +++ /dev/null @@ -1,339 +0,0 @@ -describe('OHIF Study Viewer Page', function() { - before(() => { - cy.checkStudyRouteInViewer( - '1.2.840.113619.2.5.1762583153.215519.978957063.78' - ); - - cy.expectMinimumThumbnails(3); - }); - - beforeEach(function() { - cy.initCommonElementsAliases(); - cy.initCornerstoneToolsAliases(); - cy.resetViewport().wait(50); - }); - - it('checks if series thumbnails are being displayed', function() { - cy.get('[data-cy="study-browser-thumbnail"]') - .its('length') - .should('be.gt', 1); - }); - - it('drags and drop a series thumbnail into viewport', function() { - cy.get('[data-cy="study-browser-thumbnail"]:nth-child(2)') //element to be dragged - .drag('.cornerstone-canvas'); //dropzone element - - //const expectedText = - // 'Ser: 2Img: 1 1/13512 x 512Loc: -17.60 mm Thick: 3.00 mm'; - //cy.get('@viewportInfoBottomLeft').should('contain.text', expectedText); - }); - - it('checks if Series left panel can be hidden/displayed', function() { - cy.get('@seriesPanel').should('exist'); - cy.get('@seriesPanel').should('be.visible'); - - cy.get('@seriesBtn').click(); - cy.get('@seriesPanel').should('not.exist'); - - cy.get('@seriesBtn').click(); - cy.get('@seriesPanel').should('exist'); - cy.get('@seriesPanel').should('be.visible'); - }); - - it('checks if Measurements right panel can be hidden/displayed', function() { - cy.get('@measurementsPanel').should('exist'); - cy.get('@measurementsPanel').should('be.visible'); - - cy.get('@RightCollapseBtn').click(); - cy.get('@measurementsPanel').should('not.exist'); - - cy.get('@RightCollapseBtn').click(); - cy.get('@measurementsPanel').should('exist'); - cy.get('@measurementsPanel').should('be.visible'); - }); - - /*it('checks if measurement item can be Relabeled under Measurements panel', function() { - // Add length measurement - cy.addLengthMeasurement(); - cy.get('[data-cy="measurement-tracking-prompt-begin-tracking"]').should('exist') - cy.get('[data-cy="measurement-tracking-prompt-begin-tracking"]').should('be.visible') - cy.get('[data-cy="prompt-begin-tracking-yes"]').click(); - cy.get('.measurementItem').click(); - - // Click "Relabel" - cy.get('.btnAction', { timeout: 10000 }) - .first() - .contains('Relabel') - .click().should('be.visible'); - - // Search for "Bone" - cy.get('.searchInput').type('Bone'); - - // Select "Bone" Result - cy.get('.treeInputs > .wrapperLabel') - .contains('Bone') - .click(); - - // Confirm Selection - cy.get('.checkIconWrapper').click(); - - // Verify if 'Bone' label was added - cy.get('.measurementLocation').should('contain.text', 'Bone'); - - // Remove the measurement we just added - cy.get('.btnAction') - .last() - .contains('Delete') - .click() - - // Close panel - cy.get('@measurementsBtn').click(); - cy.get('@measurementsPanel').should('not.exist'); - });*/ - - /* - TODO: Not sure why this is failing - it('checks if Description can be added to measurement item under Measurements panel', () => { - cy.addLengthMeasurement(); //Adding measurement in the viewport - cy.get('@measurementsBtn').click(); - cy.get('.measurementItem').click(); - - // Click "Description" - cy.get('.btnAction') - .contains('Description') - .click(); - - // Enter description text - const descriptionText = 'Adding text for description test'; - cy.get('#description').type(descriptionText); - - // Confirm - cy.get('.btn-confirm').click(); - - //Verify if descriptionText was added - cy.get('.measurementLocation').should('contain.text', descriptionText); - - // Remove the measurement we just added - cy.get('.btnAction') - .last() - .contains('Delete') - .click() - - // Close panel - cy.get('@measurementsBtn').click(); - cy.get('@measurementsPanel').should('not.be.enabled'); - }); - */ - - /*it('checks if measurement item can be deleted through the context menu on the viewport', function() { - cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport - - //Right click on measurement annotation - const [x1, y1] = [150, 100]; - cy.get('@viewport') - .trigger('mousedown', x1, y1, { - which: 3, - }) - .trigger('mouseup', x1, y1, { - which: 3, - }) - .wait(300) - .then(() => { - //Contextmenu is visible - cy.get('.ToolContextMenu').should('be.visible'); - }); - - //Click "Delete measurement" - cy.get('.form-action') - .contains('Delete measurement') - .click(); - - //Open measurements menu - cy.get('@measurementsBtn').click(); - - //Verify measurements was removed from panel - cy.get('.measurementItem') - .should('not.exist') - .log('Annotation successfully removed'); - - //Close panel - cy.get('@measurementsBtn').click(); - cy.get('@measurementsPanel').should('not.exist'); - });*/ - - /*it('adds relabel and description to measurement item through the context menu on the viewport', function() { - cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport - - // Relabel - // Right click on measurement annotation - const [x1, y1] = [150, 100]; - cy.get('@viewport') - .trigger('mousedown', x1, y1, { - which: 3, - }) - .trigger('mouseup', x1, y1, { - which: 3, - }); - - // Contextmenu is visible - cy.get('.ToolContextMenu').should('be.visible'); - - // Click "Relabel" - cy.get('.form-action') - .contains('Relabel') - .click(); - - // Search for "Brain" - cy.get('.searchInput').type('Brain'); - - // Select "Brain" Result - cy.get('.treeInputs > .wrapperLabel') - .contains('Brain') - .click(); - - // Confirm Selection - cy.get('.checkIconWrapper').click(); - - // Description - // Right click on measurement annotation - cy.get('@viewport') - .trigger('mousedown', x1, y1, { - which: 3, - }) - .trigger('mouseup', x1, y1, { - which: 3, - }); - - // Contextmenu is visible - cy.get('.ToolContextMenu').should('be.visible'); - - // Click "Description" - cy.get('.form-action') - .contains('Add Description') - .click(); - - // Enter description text - const descriptionText = 'Adding text for description test'; - cy.get('#description').type(descriptionText); - - // Confirm - cy.get('.btn-confirm').click(); - - //Open measurements menu - cy.get('@measurementsBtn').click(); - - // Verify if label was added - cy.get('.measurementLocation') - .should('contain.text', 'Brain') - .log('Relabel added with success'); - - //Verify if descriptionText was added - cy.get('.measurementLocation') - .should('contain.text', descriptionText) - .log('Description added with success'); - - // Close panel - cy.get('@measurementsBtn').click(); - cy.get('@measurementsPanel').should('not.exist'); - });*/ - - it('scrolls series stack using scrollbar', function() { - // Workaround implemented based on Cypress issue: - // https://github.com/cypress-io/cypress/issues/1570#issuecomment-450966053 - const nativeInputValueSetter = Object.getOwnPropertyDescriptor( - window.HTMLInputElement.prototype, - 'value' - ).set; - - cy.get('input.imageSlider[type=range]').then($range => { - // get the DOM node - const range = $range[0]; - // set the value manually - nativeInputValueSetter.call(range, 13); - // now dispatch the event - range.dispatchEvent(new Event('change', { value: 13, bubbles: true })); - }); - - /*const expectedText = - 'Ser: 2Img: 13 13/13512 x 512Loc: 18.40 mm Thick: 3.00 mm'; //'Img: 13 13/13'; - cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText);*/ - }); - - it('performs double-click to load thumbnail in active viewport', () => { - cy.get('[data-cy="study-browser-thumbnail"]:nth-child(2)').dblclick(); - - //const expectedText = 'Ser: 3'; - //cy.get('@viewportInfoBottomLeft').should('contains.text', expectedText); - }); - - // it('performs right click to zoom', function() { - // // This is not used to activate the tool, it is used to ensure the - // // top left viewport info shows the zoom values (it only shows up - // // when the zoom tool is active) - // cy.get('@zoomBtn') - // .click() - // .then($zoomBtn => { - // cy.wrap($zoomBtn).should('have.class', 'active'); - // }); - - // //Right click on viewport - // cy.get('@viewport') - // .trigger('mousedown', 'top', { buttons: 2 }) - // .trigger('mousemove', 'center', { buttons: 2 }) - // .trigger('mouseup'); - - // const expectedText = 'Zoom:6.65x'; - // cy.get('@viewportInfoTopLeft').should('contains.text', expectedText); - // }); - - /*it('performs middle click to pan', function() { - //Get image position from cornerstone and check if y axis was modified - let cornerstone; - let currentPan; - - // TO DO: Replace the cornerstone pan check by Percy snapshot comparison - cy.window() - .its('cornerstone') - .then(c => { - cornerstone = c; - currentPan = () => - cornerstone.getEnabledElements()[0].viewport.translation; - }); - - //pan image with middle click - cy.get('@viewport') - .trigger('mousedown', 'center', { buttons: 3 }) - .trigger('mousemove', 'bottom', { buttons: 3 }) - .trigger('mouseup', 'bottom') - .then(() => { - expect(currentPan().y > 0).to.eq(true); - }); - });*/ - - /*it('opens About modal and verify the displayed information', function() { - cy.get('[data-cy="options-dropdown"]') - .first() - .click(); - cy.get('[data-cy="about-modal"]') - .as('aboutOverlay') - .should('be.visible'); - - //check buttons and links - cy.get('[data-cy="about-modal"]') - .should('contains.text', 'Visit the forum') - .and('contains.text', 'Report an issue') - .and('contains.text', 'https://github.com/OHIF/Viewers/'); - - //check version number - cy.get('[data-cy="about-modal"]').then($modal => { - cy.get('[data-cy="header-version-info"]').should($headerVersionNumber => { - $headerVersionNumber = $headerVersionNumber.text().substring(1); - expect($modal).to.contain($headerVersionNumber); - }); - }); - - //close modal - cy.get('[data-cy="close-button"]').click(); - cy.get('@aboutOverlay').should('not.exist'); - });*/ -}); diff --git a/platform/viewer/cypress/integration/study-list/OHIFStudyList.spec.js b/platform/viewer/cypress/integration/study-list/OHIFStudyList.spec.js index c497bf777..0d07b52a5 100644 --- a/platform/viewer/cypress/integration/study-list/OHIFStudyList.spec.js +++ b/platform/viewer/cypress/integration/study-list/OHIFStudyList.spec.js @@ -1,12 +1,10 @@ //We are keeping the hardcoded results values for the study list tests //this is intended to be running in a controled docker environment with test data. -describe('OHIF Study List', function () { - context('Desktop resolution', function () { - before(function () { +describe('OHIF Study List', function() { + context('Desktop resolution', function() { + beforeEach(function() { cy.openStudyList(); - }); - beforeEach(function () { cy.viewport(1750, 720); cy.initStudyListAliasesOnDesktop(); //Clear all text fields @@ -14,14 +12,9 @@ describe('OHIF Study List', function () { cy.get('@MRN').clear(); cy.get('@AccessionNumber').clear(); cy.get('@StudyDescription').clear(); - - // TODO: Find out how to clear this input - // select-2 / react-select has some specific ways - // to trigger things - //cy.get('@modalities') }); - it('Displays several studies initially', function () { + it('Displays several studies initially', function() { cy.waitStudyList(); cy.get('@searchResult2').should($list => { expect($list.length).to.be.greaterThan(1); @@ -30,7 +23,7 @@ describe('OHIF Study List', function () { }); }); - it('searches Patient Name with exact string', function () { + it('searches Patient Name with exact string', function() { cy.get('@PatientName').type('Juno'); //Wait result list to be displayed cy.waitStudyList(); @@ -40,8 +33,7 @@ describe('OHIF Study List', function () { }); }); - /* TODO - re-enable this once the test server is fixed to allow searching by mrn - it('searches MRN with exact string', function () { + it('searches MRN with exact string', function() { cy.get('@MRN').type('0000003'); //Wait result list to be displayed cy.waitStudyList(); @@ -50,31 +42,17 @@ describe('OHIF Study List', function () { expect($list).to.contain('0000003'); }); }); - */ - it('searches Accession with exact string', function () { - cy.get('@AccessionNumber').type('0000155811'); + it('searches Accession with exact string', function() { + cy.get('@AccessionNumber').type('321'); //Wait result list to be displayed cy.waitStudyList(); cy.get('@searchResult2').should($list => { expect($list.length).to.be.eq(1); - expect($list).to.contain('0000155811'); + expect($list).to.contain('321'); }); }); - // TODO: need to be able to programmatically change react-select - /*it('searches Modality with camel case', function() { - cy.get('@modalities').type('Ct'); - //Wait result list to be displayed - cy.waitStudyList(); - cy.get('@searchResult2').should($list => { - expect($list.length).to.be.greaterThan(1); - expect($list).to.contain('CT'); - }); - });*/ - - /* - TODO: Currently broken in dicomweb-server it('searches Description with exact string', function() { cy.get('@StudyDescription').type('PETCT'); //Wait result list to be displayed @@ -84,10 +62,19 @@ describe('OHIF Study List', function () { expect($list).to.contain('PETCT'); }); }); - */ - // TODO: need to be able to programmatically change react-select - /*it('changes Rows per page and checks the study count', function() { + /* Todo: fix react select + it('searches Modality with camel case', function() { + cy.get('@modalities').type('Ct'); + // Wait result list to be displayed + cy.waitStudyList(); + cy.get('@searchResult2').should($list => { + expect($list.length).to.be.greaterThan(1); + expect($list).to.contain('CT'); + }); + }); + + it('changes Rows per page and checks the study count', function() { //Show Rows per page options const pageRows = [25, 50, 100]; diff --git a/platform/viewer/cypress/integration/volume/MPR.spec.js b/platform/viewer/cypress/integration/volume/MPR.spec.js new file mode 100644 index 000000000..3efed2fad --- /dev/null +++ b/platform/viewer/cypress/integration/volume/MPR.spec.js @@ -0,0 +1,139 @@ +describe('OHIF MPR', () => { + beforeEach(() => { + cy.checkStudyRouteInViewer( + '1.3.6.1.4.1.25403.345050719074.3824.20170125113417.1' + ); + cy.expectMinimumThumbnails(3); + cy.initCornerstoneToolsAliases(); + cy.initCommonElementsAliases(); + }); + + it('should not go MPR for non reconstructible displaySets', () => { + cy.get('[data-cy="MPR"]').click(); + cy.get('.cornerstone-canvas').should('have.length', 1); + }); + + it('should go MPR for reconstructible displaySets and come back', () => { + cy.wait(1000); + cy.get(':nth-child(3) > [data-cy="study-browser-thumbnail"]').dblclick(); + + cy.get('[data-cy="MPR"]').click(); + + cy.get('.cornerstone-canvas').should('have.length', 3); + + cy.get('[data-cy="MPR"]').click(); + + cy.get('.cornerstone-canvas').should('have.length', 1); + }); + + it('should render correctly the MPR', () => { + cy.wait(1000); + + cy.get(':nth-child(3) > [data-cy="study-browser-thumbnail"]').dblclick(); + cy.get('[data-cy="MPR"]').click(); + + cy.get('[data-cy="thumbnail-viewport-labels"]').should('have.length', 3); + + cy.get('.cornerstone-canvas').should('have.length', 3); + + cy.get('[data-cy="thumbnail-viewport-labels"]') + .eq(2) + .find('div') + .should('have.length', 3) + .each(($div, index) => { + const text = $div.text(); + switch (index) { + case 0: + expect(text).to.equal('A'); + break; + case 1: + expect(text).to.equal('B'); + break; + case 2: + expect(text).to.equal('C'); + break; + default: + throw new Error(`Unexpected div found with text: ${text}`); + } + }); + + // check cornerstone to see if each has images + // we can later do visual testing to match the images with a baseline + cy.window() + .its('cornerstone') + .then(cornerstone => { + const viewports = cornerstone.getRenderingEngines()[0].getViewports(); + + const imageData1 = viewports[0].getImageData(); + const imageData2 = viewports[1].getImageData(); + const imageData3 = viewports[2].getImageData(); + + // for some reason map doesn't work here + cy.wrap(imageData1).should('not.be', undefined); + cy.wrap(imageData2).should('not.be', undefined); + cy.wrap(imageData3).should('not.be', undefined); + + cy.wrap(imageData1.dimensions).should( + 'deep.equal', + imageData2.dimensions + ); + + cy.wrap(imageData1.origin).should('deep.equal', imageData2.origin); + }); + + cy.get('[data-cy="MPR"]').click(); + + cy.get('.cornerstone-canvas').should('have.length', 1); + + // should not have any div under it + cy.get('[data-cy="thumbnail-viewport-labels"]') + .eq(2) + .find('div') + .should('have.length', 0); + }); + + it('should correctly render Crosshairs for MPR', () => { + cy.wait(1000); + + cy.get('[data-cy="Crosshairs"]').click(); + cy.window() + .its('cornerstoneTools') + .then(cornerstoneTools => { + const state = cornerstoneTools.annotation.state.getDefaultAnnotationManager(); + + const fORMap = state.annotations; + // it should not have crosshairs yet + expect(Object.keys(fORMap)).to.have.length(0); + }); + + cy.get(':nth-child(3) > [data-cy="study-browser-thumbnail"]').dblclick(); + cy.get('[data-cy="MPR"]').click(); + cy.get('[data-cy="Crosshairs"]').click(); + + cy.wait(1000); + + // check cornerstone to see if each has crosshairs + // we can later do visual testing to match the images with a baseline + cy.window() + .its('cornerstoneTools') + .then(cornerstoneTools => { + const state = cornerstoneTools.annotation.state.getDefaultAnnotationManager(); + + const fORMap = state.annotations; + const fOR = Object.keys(fORMap)[0]; + const fORAnnotation = fORMap[fOR]; + + // it should have crosshairs as the only key + expect(Object.keys(fORAnnotation)).to.have.length(1); + + const crosshairs = fORAnnotation.Crosshairs; + + // it should have three + expect(crosshairs).to.have.length(3); + + expect(crosshairs[0].data.handles.toolCenter).to.deep.equal( + crosshairs[1].data.handles.toolCenter + ); + }); + }); +}); diff --git a/platform/viewer/cypress/support/aliases.js b/platform/viewer/cypress/support/aliases.js index 201b2ff10..52dac3ae5 100644 --- a/platform/viewer/cypress/support/aliases.js +++ b/platform/viewer/cypress/support/aliases.js @@ -18,6 +18,7 @@ export function initCornerstoneToolsAliases() { cy.get('[data-cy="MoreTools-split-button-secondary"]').as('moreBtnSecondary'); cy.get('[data-cy="Layout"]').as('layoutBtn'); cy.get('.cornerstone-viewport-element').as('viewport'); + cy.get('[data-cy="MPR"]').as('mprBtn'); } //Creating aliases for Common page elements @@ -49,9 +50,16 @@ export function initCommonElementsAliases() { //Creating aliases for Routes export function initRouteAliases() { - cy.server(); - cy.route('GET', '**/series**').as('getStudySeries'); - cy.route('GET', '**/studies**').as('getStudies'); + cy.intercept('GET', '**/series**', { statusCode: 200, body: [] }).as( + 'getStudySeries' + ); + + // Todo: for some reason cypress does not redirect to the correct url + // so we intercept the request and redirect it to the correct url + cy.intercept('/studies?limit*', req => { + const url = req.url.replace(/\/studies\?/, '/studies/?limit'); + req.url = url; + }); } //Creating aliases for Study List page elements on Desktop experience diff --git a/platform/viewer/cypress/support/commands.js b/platform/viewer/cypress/support/commands.js index 514841737..eadd001bb 100644 --- a/platform/viewer/cypress/support/commands.js +++ b/platform/viewer/cypress/support/commands.js @@ -5,7 +5,6 @@ import { initCornerstoneToolsAliases, initCommonElementsAliases, initRouteAliases, - initVTKToolsAliases, initStudyListAliasesOnDesktop, initStudyListAliasesOnTablet, initPreferencesModalAliases, @@ -46,7 +45,9 @@ import { Cypress.Commands.add('openStudy', PatientName => { cy.openStudyList(); cy.get('#filter-patientNameOrId').type(PatientName); - cy.wait('@getStudies'); + // cy.get('@getStudies').then(() => { + cy.wait(1000); + cy.get('[data-cy="study-list-results"]', { timeout: 5000 }) .contains(PatientName) .first() @@ -56,15 +57,16 @@ Cypress.Commands.add('openStudy', PatientName => { Cypress.Commands.add('checkStudyRouteInViewer', StudyInstanceUID => { cy.location('pathname').then($url => { cy.log($url); - if ($url == 'blank' || !$url.includes(`/viewer/${StudyInstanceUID}`)) { + if ($url == 'blank' || !$url.includes(`/basic-test/${StudyInstanceUID}`)) { cy.openStudyInViewer(StudyInstanceUID); cy.waitDicomImage(); + cy.wait(2000); } }); }); Cypress.Commands.add('openStudyInViewer', StudyInstanceUID => { - cy.visit(`/viewer?StudyInstanceUIDs=${StudyInstanceUID}`); + cy.visit(`/basic-test?StudyInstanceUIDs=${StudyInstanceUID}`); }); /** @@ -89,16 +91,20 @@ Cypress.Commands.add('openStudyModality', Modality => { /** * Command to wait and check if a new page was loaded * - * @param {string} url - part of the expected url. Default value is /viewer + * @param {string} url - part of the expected url. Default value is /basic-test */ -Cypress.Commands.add('isPageLoaded', (url = '/viewer') => { +Cypress.Commands.add('isPageLoaded', (url = '/basic-test') => { return cy.location('pathname', { timeout: 60000 }).should('include', url); }); Cypress.Commands.add('openStudyList', () => { cy.initRouteAliases(); cy.visit('/'); - cy.wait('@getStudies'); + + // For some reason cypress 12.x does not like to stub the network request + // so we just wait herer for 1 second + // cy.wait('@getStudies'); + cy.wait(1000); }); Cypress.Commands.add('waitStudyList', () => { @@ -450,6 +456,29 @@ Cypress.Commands.add('openPreferences', () => { }); }); +Cypress.Commands.add('scrollToIndex', index => { + // Workaround implemented based on Cypress issue: + // https://github.com/cypress-io/cypress/issues/1570#issuecomment-450966053 + const nativeInputValueSetter = Object.getOwnPropertyDescriptor( + window.HTMLInputElement.prototype, + 'value' + ).set; + + cy.get('input.imageSlider[type=range]').then($range => { + // get the DOM node + const range = $range[0]; + // set the value manually + nativeInputValueSetter.call(range, index); + // now dispatch the event + range.dispatchEvent( + new Event('change', { + value: index, + bubbles: true, + }) + ); + }); +}); + Cypress.Commands.add('closePreferences', () => { cy.log('Close User Preferences Modal'); @@ -596,3 +625,14 @@ Cypress.Commands.add('setLanguage', (language, save = true) => { .click(); }); }); + +// hide noisy logs +// https://github.com/cypress-io/cypress/issues/7362 +// uncomment this if you really need the network logs +const origLog = Cypress.log; +Cypress.log = function(opts, ...other) { + if (opts.displayName === 'script' || opts.name === 'request') { + return; + } + return origLog(opts, ...other); +}; diff --git a/platform/viewer/package.json b/platform/viewer/package.json index a0f1e0f6e..235a838db 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -46,7 +46,7 @@ "README.md" ], "dependencies": { - "@babel/runtime": "7.16.3", + "@babel/runtime": "^7.20.13", "@ohif/core": "^3.0.0", "@ohif/extension-cornerstone": "^3.0.0", "@ohif/extension-cornerstone-dicom-seg": "^3.0.0", @@ -54,8 +54,10 @@ "@ohif/extension-default": "^3.0.0", "@ohif/extension-dicom-pdf": "^3.0.1", "@ohif/extension-dicom-video": "^3.0.1", + "@ohif/extension-test": "0.0.1", "@ohif/i18n": "^1.0.0", "@ohif/mode-basic-dev-mode": "^3.0.0", + "@ohif/mode-test": "^0.0.1", "@ohif/mode-longitudinal": "^3.0.0", "@ohif/ui": "^2.0.0", "@types/react": "^17.0.38", @@ -82,13 +84,13 @@ "react-dropzone": "^10.1.7", "react-i18next": "^10.11.0", "react-resize-detector": "^6.7.6", - "react-router": "^6.3.0", - "react-router-dom": "^6.3.0" + "react-router": "^6.8.1", + "react-router-dom": "^6.8.1" }, "devDependencies": { "@babel/plugin-proposal-private-methods": "^7.18.6", "@percy/cypress": "^3.1.1", - "cypress": "^9.5.4", + "cypress": "^12.6.0", "cypress-file-upload": "^3.5.3", "glob": "^8.0.3", "identity-obj-proxy": "3.0.x", diff --git a/platform/viewer/public/config/aws.js b/platform/viewer/public/config/aws.js index 4697a8f2d..5a8fdaafc 100644 --- a/platform/viewer/public/config/aws.js +++ b/platform/viewer/public/config/aws.js @@ -6,6 +6,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/default.js b/platform/viewer/public/config/default.js index d73f8aed5..c0de3708a 100644 --- a/platform/viewer/public/config/default.js +++ b/platform/viewer/public/config/default.js @@ -12,6 +12,8 @@ window.config = { maxNumberOfWebWorkers: 3, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, maxNumRequests: { interaction: 100, diff --git a/platform/viewer/public/config/demo.js b/platform/viewer/public/config/demo.js index 7bd1fa2e5..e7dccb101 100644 --- a/platform/viewer/public/config/demo.js +++ b/platform/viewer/public/config/demo.js @@ -4,6 +4,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, servers: { dicomWeb: [ { diff --git a/platform/viewer/public/config/dicomweb-server.js b/platform/viewer/public/config/dicomweb-server.js index 8a65846f2..c7639df91 100644 --- a/platform/viewer/public/config/dicomweb-server.js +++ b/platform/viewer/public/config/dicomweb-server.js @@ -6,6 +6,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/dicomweb_relative.js b/platform/viewer/public/config/dicomweb_relative.js index 4720307fe..08fdf81f7 100644 --- a/platform/viewer/public/config/dicomweb_relative.js +++ b/platform/viewer/public/config/dicomweb_relative.js @@ -7,6 +7,8 @@ window.config = { maxNumberOfWebWorkers: 3, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/docker_nginx-orthanc.js b/platform/viewer/public/config/docker_nginx-orthanc.js index c083236f2..3ecf61559 100644 --- a/platform/viewer/public/config/docker_nginx-orthanc.js +++ b/platform/viewer/public/config/docker_nginx-orthanc.js @@ -5,6 +5,8 @@ window.config = { modes: [], // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, dataSources: [ { diff --git a/platform/viewer/public/config/docker_openresty-orthanc-keycloak.js b/platform/viewer/public/config/docker_openresty-orthanc-keycloak.js index 332ea89e5..d455815da 100644 --- a/platform/viewer/public/config/docker_openresty-orthanc-keycloak.js +++ b/platform/viewer/public/config/docker_openresty-orthanc-keycloak.js @@ -3,6 +3,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, servers: { // This is an array, but we'll only use the first entry for now diff --git a/platform/viewer/public/config/docker_openresty-orthanc.js b/platform/viewer/public/config/docker_openresty-orthanc.js index 7f96eff75..986a613cd 100644 --- a/platform/viewer/public/config/docker_openresty-orthanc.js +++ b/platform/viewer/public/config/docker_openresty-orthanc.js @@ -5,6 +5,8 @@ window.config = { modes: [], // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, dataSources: [ { diff --git a/platform/viewer/public/config/e2e.js b/platform/viewer/public/config/e2e.js index 914b5e9ac..0ac558d3a 100644 --- a/platform/viewer/public/config/e2e.js +++ b/platform/viewer/public/config/e2e.js @@ -1,11 +1,12 @@ window.config = { routerBasename: '/', - // whiteLabelling: {}, extensions: [], - modes: [], + modes: ['@ohif/mode-test'], showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: false, + showCPUFallbackMessage: false, // filterQueryParam: false, dataSources: [ { @@ -13,7 +14,9 @@ window.config = { namespace: '@ohif/extension-default.dataSourcesModule.dicomweb', sourceName: 'dicomweb', configuration: { - name: 'DCM4CHEE', + // The most important field to set for static WADO + staticWado: true, + name: 'StaticWADO', wadoUriRoot: '/viewer-testdata', qidoRoot: '/viewer-testdata', wadoRoot: '/viewer-testdata', @@ -24,7 +27,6 @@ window.config = { enableStudyLazyLoad: true, supportsFuzzyMatching: false, supportsWildcard: true, - staticWado: true, singlepart: 'video,thumbnail,pdf', }, }, diff --git a/platform/viewer/public/config/google.js b/platform/viewer/public/config/google.js index 8dfb29113..ef9925997 100644 --- a/platform/viewer/public/config/google.js +++ b/platform/viewer/public/config/google.js @@ -3,6 +3,8 @@ window.config = { enableGoogleCloudAdapter: false, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // This is an array, but we'll only use the first entry for now oidc: [ diff --git a/platform/viewer/public/config/idc.js b/platform/viewer/public/config/idc.js index f44515354..202c31cf2 100644 --- a/platform/viewer/public/config/idc.js +++ b/platform/viewer/public/config/idc.js @@ -3,6 +3,8 @@ window.config = { enableGoogleCloudAdapter: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, servers: { // This is an array, but we'll only use the first entry for now diff --git a/platform/viewer/public/config/local_dcm4chee.js b/platform/viewer/public/config/local_dcm4chee.js index 2e5b393d1..853ef229e 100644 --- a/platform/viewer/public/config/local_dcm4chee.js +++ b/platform/viewer/public/config/local_dcm4chee.js @@ -5,6 +5,8 @@ window.config = { modes: [], // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, dataSources: [ { diff --git a/platform/viewer/public/config/local_orthanc.js b/platform/viewer/public/config/local_orthanc.js index cfead6147..7b31a3123 100644 --- a/platform/viewer/public/config/local_orthanc.js +++ b/platform/viewer/public/config/local_orthanc.js @@ -6,6 +6,8 @@ window.config = { showStudyList: true, maxNumberOfWebWorkers: 3, showLoadingIndicator: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, // filterQueryParam: false, dataSources: [ { diff --git a/platform/viewer/public/config/local_static.js b/platform/viewer/public/config/local_static.js index 7b3a23623..b4383dd24 100644 --- a/platform/viewer/public/config/local_static.js +++ b/platform/viewer/public/config/local_static.js @@ -9,6 +9,8 @@ window.config = { maxNumberOfWebWorkers: 4, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/multiple.js b/platform/viewer/public/config/multiple.js index 3738f4a4a..ee3d413f5 100644 --- a/platform/viewer/public/config/multiple.js +++ b/platform/viewer/public/config/multiple.js @@ -14,6 +14,8 @@ window.config = { maxNumberOfWebWorkers: 4, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/netlify.js b/platform/viewer/public/config/netlify.js index 14eae60fc..a312d5ce8 100644 --- a/platform/viewer/public/config/netlify.js +++ b/platform/viewer/public/config/netlify.js @@ -6,6 +6,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, // filterQueryParam: false, dataSources: [ diff --git a/platform/viewer/public/config/public_dicomweb.js b/platform/viewer/public/config/public_dicomweb.js index 07245d93f..7ceb9afbd 100644 --- a/platform/viewer/public/config/public_dicomweb.js +++ b/platform/viewer/public/config/public_dicomweb.js @@ -3,6 +3,8 @@ window.config = { showStudyList: true, // below flag is for performance reasons, but it might not work for all servers omitQuotationForMultipartRequest: true, + showWarningMessageForCrossOrigin: true, + showCPUFallbackMessage: true, showLoadingIndicator: true, servers: { dicomWeb: [ diff --git a/platform/viewer/src/appInit.js b/platform/viewer/src/appInit.js index 82ed506c1..5990aa594 100644 --- a/platform/viewer/src/appInit.js +++ b/platform/viewer/src/appInit.js @@ -96,6 +96,11 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) { appConfig.modes.push(mode); } + // remove modes that are not objects, or have no id + appConfig.modes = appConfig.modes.filter( + mode => typeof mode === 'object' && mode.id + ); + return { appConfig, commandsManager, diff --git a/platform/viewer/src/hooks/index.js b/platform/viewer/src/hooks/index.js index 8b80a355b..0660f2611 100644 --- a/platform/viewer/src/hooks/index.js +++ b/platform/viewer/src/hooks/index.js @@ -1,4 +1,5 @@ import useDebounce from './useDebounce.js'; import useQuery from './useQuery.js'; +import useSearchParams from './useSearchParams.js'; -export { useDebounce, useQuery }; +export { useDebounce, useQuery, useSearchParams }; diff --git a/platform/viewer/src/hooks/useSearchParams.js b/platform/viewer/src/hooks/useSearchParams.js new file mode 100644 index 000000000..c7cd0aee8 --- /dev/null +++ b/platform/viewer/src/hooks/useSearchParams.js @@ -0,0 +1,17 @@ +import useQuery from './useQuery'; + +/** + * It returns a Map of the query parameters in the URL, where the keys are + * lowercase + * @returns A function that returns a Map of the query parameters. + */ +export default function useSearchParams() { + const query = useQuery(); + // make query params case-insensitive + const searchParams = new Map(); + for (const [key, value] of query) { + searchParams.set(key.toLowerCase(), value); + } + + return searchParams; +} diff --git a/platform/viewer/src/index.js b/platform/viewer/src/index.js index 80cc7eb8d..49f47fa79 100644 --- a/platform/viewer/src/index.js +++ b/platform/viewer/src/index.js @@ -5,7 +5,6 @@ import 'regenerator-runtime/runtime'; import App from './App'; import React from 'react'; import ReactDOM from 'react-dom'; - /** * EXTENSIONS AND MODES * ================= @@ -15,21 +14,23 @@ import ReactDOM from 'react-dom'; * pluginImports.js imports all of the modes and extensions and adds them * to the window for processing. */ -import loadDynamicImports from './pluginImports.js'; +import loadDynamicImports, { loadRuntimeImports } from './pluginImports.js'; loadDynamicImports().then(() => { - /** - * Combine our appConfiguration with installed extensions and modes. - * In the future appConfiguration may contain modes added at runtime. - * */ - const appProps = { - config: window ? window.config : {}, - defaultExtensions: window.extensions, - defaultModes: window.modes, - }; + loadRuntimeImports(window.config).then(() => { + /** + * Combine our appConfiguration with installed extensions and modes. + * In the future appConfiguration may contain modes added at runtime. + * */ + const appProps = { + config: window ? window.config : {}, + defaultExtensions: window.extensions, + defaultModes: window.modes, + }; - /** Create App */ - const app = React.createElement(App, appProps, null); - /** Render */ - ReactDOM.render(app, document.getElementById('root')); + /** Create App */ + const app = React.createElement(App, appProps, null); + /** Render */ + ReactDOM.render(app, document.getElementById('root')); + }); }); diff --git a/platform/viewer/src/routes/Mode/Mode.tsx b/platform/viewer/src/routes/Mode/Mode.tsx index 86839e27c..ad110902c 100644 --- a/platform/viewer/src/routes/Mode/Mode.tsx +++ b/platform/viewer/src/routes/Mode/Mode.tsx @@ -3,9 +3,9 @@ import { useParams, useLocation } from 'react-router'; import PropTypes from 'prop-types'; // TODO: DicomMetadataStore should be injected? -import { DicomMetadataStore } from '@ohif/core'; +import { DicomMetadataStore, ServicesManager } from '@ohif/core'; import { DragAndDropProvider, ImageViewerProvider } from '@ohif/ui'; -import { useQuery } from '@hooks'; +import { useQuery, useSearchParams } from '@hooks'; import ViewportGrid from '@components/ViewportGrid'; import Compose from './Compose'; @@ -20,7 +20,7 @@ import Compose from './Compose'; */ function defaultRouteInit( { servicesManager, studyInstanceUIDs, dataSource, filters }, - hangingProtocol + hangingProtocolId ) { const { displaySetService, @@ -86,7 +86,7 @@ function defaultRouteInit( // hanging protocol in the mode configuration hangingProtocolService.run( { studies, activeStudy, displaySets }, - hangingProtocol + hangingProtocolId ); }); @@ -105,7 +105,9 @@ export default function ModeRoute({ const location = useLocation(); const query = useQuery(); const params = useParams(); + const searchParams = useSearchParams(); + const runTimeHangingProtocolId = searchParams.get('hangingprotocolid'); const [studyInstanceUIDs, setStudyInstanceUIDs] = useState(); const [refresh, setRefresh] = useState(false); @@ -121,7 +123,7 @@ export default function ModeRoute({ const { displaySetService, hangingProtocolService, - } = servicesManager.services; + } = (servicesManager as ServicesManager).services; const { extensions, sopClassHandlers, hotkeys, hangingProtocol } = mode; @@ -249,22 +251,36 @@ export default function ModeRoute({ extensionManager, commandsManager, }); + + // use the URL hangingProtocolId if it exists, otherwise use the one + // defined in the mode configuration + const hangingProtocolIdToUse = hangingProtocolService.getProtocolById( + runTimeHangingProtocolId + ) + ? runTimeHangingProtocolId + : hangingProtocol; + // Sets the active hanging protocols - if hangingProtocol is undefined, // resets to default. Done before the onModeEnter to allow the onModeEnter // to perform custom hanging protocol actions - hangingProtocolService.setActiveProtocols(hangingProtocol); - mode?.onModeEnter({ servicesManager, extensionManager, commandsManager }); + hangingProtocolService.setActiveProtocolIds(hangingProtocolIdToUse); + + mode?.onModeEnter({ + servicesManager, + extensionManager, + commandsManager, + }); const setupRouteInit = async () => { /** * The next line should get all the query parameters provided by the URL - * - except the StudyInstaceUIDs - and create an object called filters + * - except the StudyInstanceUIDs - and create an object called filters * used to filtering the study as the user wants otherwise it will return * a empty object. * * Example: * const filters = { - * seriesInstaceUID: 1.2.276.0.7230010.3.1.3.1791068887.5412.1620253993.114611 + * seriesInstanceUID: 1.2.276.0.7230010.3.1.3.1791068887.5412.1620253993.114611 * } */ const filters = @@ -272,7 +288,10 @@ export default function ModeRoute({ (acc: Record, val: string) => { if (val !== 'StudyInstanceUIDs') { if (['seriesInstanceUID', 'SeriesInstanceUID'].includes(val)) { - return { ...acc, seriesInstanceUID: query.get(val) }; + return { + ...acc, + seriesInstanceUID: query.get(val), + }; } return { ...acc, [val]: query.get(val) }; @@ -291,7 +310,7 @@ export default function ModeRoute({ dataSource, filters, }, - hangingProtocol + hangingProtocolIdToUse ); } @@ -302,7 +321,7 @@ export default function ModeRoute({ dataSource, filters, }, - hangingProtocol + hangingProtocolIdToUse ); }; @@ -316,7 +335,10 @@ export default function ModeRoute({ // information, and must be in a try/catch to ensure subscriptions // are unsubscribed. try { - mode?.onModeExit?.({ servicesManager, extensionManager }); + mode?.onModeExit?.({ + servicesManager, + extensionManager, + }); } catch (e) { console.warn('mode exit failure', e); } diff --git a/platform/viewer/src/routes/WorkList/WorkList.tsx b/platform/viewer/src/routes/WorkList/WorkList.tsx index 9ce0cfdb0..0026e4db2 100644 --- a/platform/viewer/src/routes/WorkList/WorkList.tsx +++ b/platform/viewer/src/routes/WorkList/WorkList.tsx @@ -9,7 +9,7 @@ import { useTranslation } from 'react-i18next'; // import filtersMeta from './filtersMeta.js'; import { useAppConfig } from '@state'; -import { useDebounce, useQuery } from '@hooks'; +import { useDebounce, useSearchParams } from '@hooks'; import { utils, hotkeys } from '@ohif/core'; import { @@ -54,10 +54,10 @@ function WorkList({ // ~ Modes const [appConfig] = useAppConfig(); // ~ Filters - const query = useQuery(); + const searchParams = useSearchParams(); const navigate = useNavigate(); const STUDIES_LIMIT = 101; - const queryFilterValues = _getQueryFilterValues(query); + const queryFilterValues = _getQueryFilterValues(searchParams); const [filterValues, _setFilterValues] = useState({ ...defaultFilterValues, ...queryFilterValues, @@ -503,7 +503,7 @@ const defaultFilterValues = { function _tryParseInt(str, defaultValue) { let retValue = defaultValue; - if (str !== null) { + if (str != null) { if (str.length > 0) { if (!isNaN(str)) { retValue = parseInt(str); @@ -513,24 +513,24 @@ function _tryParseInt(str, defaultValue) { return retValue; } -function _getQueryFilterValues(query) { +function _getQueryFilterValues(params) { const queryFilterValues = { - patientName: query.get('patientName'), - mrn: query.get('mrn'), + patientName: params.get('patientname'), + mrn: params.get('mrn'), studyDate: { - startDate: query.get('startDate'), - endDate: query.get('endDate'), + startDate: params.get('startdate') || null, + endDate: params.get('enddate') || null, }, - description: query.get('description'), - modalities: query.get('modalities') - ? query.get('modalities').split(',') + description: params.get('description'), + modalities: params.get('modalities') + ? params.get('modalities').split(',') : [], - accession: query.get('accession'), - sortBy: query.get('sortBy'), - sortDirection: query.get('sortDirection'), - pageNumber: _tryParseInt(query.get('pageNumber'), undefined), - resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined), - datasources: query.get('datasources'), + accession: params.get('accession'), + sortBy: params.get('sortby'), + sortDirection: params.get('sortdirection'), + pageNumber: _tryParseInt(params.get('pagenumber'), undefined), + resultsPerPage: _tryParseInt(params.get('resultsperpage'), undefined), + datasources: params.get('datasources'), }; // Delete null/undefined keys diff --git a/testdata b/testdata index 1bca96aa2..4d59660c2 160000 --- a/testdata +++ b/testdata @@ -1 +1 @@ -Subproject commit 1bca96aa2aeae7d90b3c8db73845c85dd27b34d5 +Subproject commit 4d59660c2883ed749a680e5fb6d4624ab54c9422 diff --git a/tsconfig.json b/tsconfig.json index 447924561..8b2cb5786 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,8 @@ "baseUrl": "./", "checkJs": true, // Ensure that Babel can safely transpile files in the TypeScript project - "isolatedModules": false, + "isolatedModules": true, + "emitDeclarationOnly": true, "jsx": "react", "resolveJsonModule": true, "esModuleInterop": true, @@ -12,14 +13,16 @@ "moduleResolution": "node", "outDir": "./dist", "paths": { - "@ohif/core": [ - "platform/core/src" - ], + "@ohif/core": ["platform/core/src"], "@ohif/ui": ["platform/ui/src"], "@ohif/i18n": ["platform/i18n/src"], "@ohif/viewer": ["platform/viewer/src"] } }, - "include": ["platform/**/src/**/*", "extensions/**/src/**/*", "modes/**/src/**/*"], + "include": [ + "platform/**/src/**/*", + "extensions/**/src/**/*", + "modes/**/src/**/*" + ], "exclude": ["node_modules", "dist"] } diff --git a/yarn.lock b/yarn.lock index 08aba977d..8f2187364 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,250 +2,146 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.7.1.tgz#025538b8a9564a9f3dd5bcf8a236d6951c76c7d1" - integrity sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg== +"@algolia/autocomplete-core@1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.4.tgz#85ff36b2673654a393c8c505345eaedd6eaa4f70" + integrity sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg== dependencies: - "@algolia/autocomplete-shared" "1.7.1" + "@algolia/autocomplete-shared" "1.7.4" -"@algolia/autocomplete-preset-algolia@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.1.tgz#7dadc5607097766478014ae2e9e1c9c4b3f957c8" - integrity sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg== +"@algolia/autocomplete-preset-algolia@1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.4.tgz#610ee1d887962f230b987cba2fd6556478000bc3" + integrity sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ== dependencies: - "@algolia/autocomplete-shared" "1.7.1" + "@algolia/autocomplete-shared" "1.7.4" -"@algolia/autocomplete-shared@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.1.tgz#95c3a0b4b78858fed730cf9c755b7d1cd0c82c74" - integrity sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg== +"@algolia/autocomplete-shared@1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.4.tgz#78aea1140a50c4d193e1f06a13b7f12c5e2cbeea" + integrity sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg== -"@algolia/cache-browser-local-storage@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.1.tgz#ffacb9230119f77de1a6f163b83680be999110e4" - integrity sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg== +"@algolia/cache-browser-local-storage@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.3.tgz#b9e0da012b2f124f785134a4d468ee0841b2399d" + integrity sha512-hWH1yCxgG3+R/xZIscmUrWAIBnmBFHH5j30fY/+aPkEZWt90wYILfAHIOZ1/Wxhho5SkPfwFmT7ooX2d9JeQBw== dependencies: - "@algolia/cache-common" "4.13.1" + "@algolia/cache-common" "4.14.3" -"@algolia/cache-browser-local-storage@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.14.2.tgz#d5b1b90130ca87c6321de876e167df9ec6524936" - integrity sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA== +"@algolia/cache-common@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.14.3.tgz#a78e9faee3dfec018eab7b0996e918e06b476ac7" + integrity sha512-oZJofOoD9FQOwiGTzyRnmzvh3ZP8WVTNPBLH5xU5JNF7drDbRT0ocVT0h/xB2rPHYzOeXRrLaQQBwRT/CKom0Q== + +"@algolia/cache-in-memory@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.14.3.tgz#96cefb942aeb80e51e6a7e29f25f4f7f3439b736" + integrity sha512-ES0hHQnzWjeioLQf5Nq+x1AWdZJ50znNPSH3puB/Y4Xsg4Av1bvLmTJe7SY2uqONaeMTvL0OaVcoVtQgJVw0vg== dependencies: - "@algolia/cache-common" "4.14.2" + "@algolia/cache-common" "4.14.3" -"@algolia/cache-common@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.1.tgz#c933fdec9f73b4f7c69d5751edc92eee4a63d76b" - integrity sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA== - -"@algolia/cache-common@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.14.2.tgz#b946b6103c922f0c06006fb6929163ed2c67d598" - integrity sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg== - -"@algolia/cache-in-memory@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.1.tgz#c19baa67b4597e1a93e987350613ab3b88768832" - integrity sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ== +"@algolia/client-account@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.14.3.tgz#6d7d032a65c600339ce066505c77013d9a9e4966" + integrity sha512-PBcPb0+f5Xbh5UfLZNx2Ow589OdP8WYjB4CnvupfYBrl9JyC1sdH4jcq/ri8osO/mCZYjZrQsKAPIqW/gQmizQ== dependencies: - "@algolia/cache-common" "4.13.1" + "@algolia/client-common" "4.14.3" + "@algolia/client-search" "4.14.3" + "@algolia/transporter" "4.14.3" -"@algolia/cache-in-memory@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.14.2.tgz#88e4a21474f9ac05331c2fa3ceb929684a395a24" - integrity sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ== +"@algolia/client-analytics@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.14.3.tgz#ca409d00a8fff98fdcc215dc96731039900055dc" + integrity sha512-eAwQq0Hb/aauv9NhCH5Dp3Nm29oFx28sayFN2fdOWemwSeJHIl7TmcsxVlRsO50fsD8CtPcDhtGeD3AIFLNvqw== dependencies: - "@algolia/cache-common" "4.14.2" + "@algolia/client-common" "4.14.3" + "@algolia/client-search" "4.14.3" + "@algolia/requester-common" "4.14.3" + "@algolia/transporter" "4.14.3" -"@algolia/client-account@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.1.tgz#fea591943665477a23922ab31863ad0732e26c66" - integrity sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ== +"@algolia/client-common@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.14.3.tgz#c44e48652b2121a20d7a40cfd68d095ebb4191a8" + integrity sha512-jkPPDZdi63IK64Yg4WccdCsAP4pHxSkr4usplkUZM5C1l1oEpZXsy2c579LQ0rvwCs5JFmwfNG4ahOszidfWPw== dependencies: - "@algolia/client-common" "4.13.1" - "@algolia/client-search" "4.13.1" - "@algolia/transporter" "4.13.1" + "@algolia/requester-common" "4.14.3" + "@algolia/transporter" "4.14.3" -"@algolia/client-account@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.14.2.tgz#b76ac1ba9ea71e8c3f77a1805b48350dc0728a16" - integrity sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w== +"@algolia/client-personalization@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.14.3.tgz#8f71325035aa2a5fa7d1d567575235cf1d6c654f" + integrity sha512-UCX1MtkVNgaOL9f0e22x6tC9e2H3unZQlSUdnVaSKpZ+hdSChXGaRjp2UIT7pxmPqNCyv51F597KEX5WT60jNg== dependencies: - "@algolia/client-common" "4.14.2" - "@algolia/client-search" "4.14.2" - "@algolia/transporter" "4.14.2" + "@algolia/client-common" "4.14.3" + "@algolia/requester-common" "4.14.3" + "@algolia/transporter" "4.14.3" -"@algolia/client-analytics@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.1.tgz#5275956b2d0d16997148f2085f1701b6c39ecc32" - integrity sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA== +"@algolia/client-search@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.14.3.tgz#cf1e77549f5c3e73408ffe6441ede985fde69da0" + integrity sha512-I2U7xBx5OPFdPLA8AXKUPPxGY3HDxZ4r7+mlZ8ZpLbI8/ri6fnu6B4z3wcL7sgHhDYMwnAE8Xr0AB0h3Hnkp4A== dependencies: - "@algolia/client-common" "4.13.1" - "@algolia/client-search" "4.13.1" - "@algolia/requester-common" "4.13.1" - "@algolia/transporter" "4.13.1" - -"@algolia/client-analytics@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.14.2.tgz#ca04dcaf9a78ee5c92c5cb5e9c74cf031eb2f1fb" - integrity sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ== - dependencies: - "@algolia/client-common" "4.14.2" - "@algolia/client-search" "4.14.2" - "@algolia/requester-common" "4.14.2" - "@algolia/transporter" "4.14.2" - -"@algolia/client-common@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.1.tgz#3bf9e3586f20ef85bbb56ccca390f7dbe57c8f4f" - integrity sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg== - dependencies: - "@algolia/requester-common" "4.13.1" - "@algolia/transporter" "4.13.1" - -"@algolia/client-common@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.14.2.tgz#e1324e167ffa8af60f3e8bcd122110fd0bfd1300" - integrity sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q== - dependencies: - "@algolia/requester-common" "4.14.2" - "@algolia/transporter" "4.14.2" - -"@algolia/client-personalization@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.1.tgz#438a1f58576ef19c4ad4addb8417bdacfe2fce2e" - integrity sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w== - dependencies: - "@algolia/client-common" "4.13.1" - "@algolia/requester-common" "4.13.1" - "@algolia/transporter" "4.13.1" - -"@algolia/client-personalization@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.14.2.tgz#656bbb6157a3dd1a4be7de65e457fda136c404ec" - integrity sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw== - dependencies: - "@algolia/client-common" "4.14.2" - "@algolia/requester-common" "4.14.2" - "@algolia/transporter" "4.14.2" - -"@algolia/client-search@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.1.tgz#5501deed01e23c33d4aaa9f9eb96a849f0fce313" - integrity sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A== - dependencies: - "@algolia/client-common" "4.13.1" - "@algolia/requester-common" "4.13.1" - "@algolia/transporter" "4.13.1" - -"@algolia/client-search@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.14.2.tgz#357bdb7e640163f0e33bad231dfcc21f67dc2e92" - integrity sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw== - dependencies: - "@algolia/client-common" "4.14.2" - "@algolia/requester-common" "4.14.2" - "@algolia/transporter" "4.14.2" + "@algolia/client-common" "4.14.3" + "@algolia/requester-common" "4.14.3" + "@algolia/transporter" "4.14.3" "@algolia/events@^4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + resolved "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.1.tgz#4221378e701e3f1eacaa051bcd4ba1f25ddfaf4d" - integrity sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw== +"@algolia/logger-common@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.14.3.tgz#87d4725e7f56ea5a39b605771b7149fff62032a7" + integrity sha512-kUEAZaBt/J3RjYi8MEBT2QEexJR2kAE2mtLmezsmqMQZTV502TkHCxYzTwY2dE7OKcUTxi4OFlMuS4GId9CWPw== -"@algolia/logger-common@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.14.2.tgz#b74b3a92431f92665519d95942c246793ec390ee" - integrity sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA== - -"@algolia/logger-console@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.1.tgz#423d358e4992dd4bceab0d9a4e99d1fd68107043" - integrity sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA== +"@algolia/logger-console@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.14.3.tgz#1f19f8f0a5ef11f01d1f9545290eb6a89b71fb8a" + integrity sha512-ZWqAlUITktiMN2EiFpQIFCJS10N96A++yrexqC2Z+3hgF/JcKrOxOdT4nSCQoEPvU4Ki9QKbpzbebRDemZt/hw== dependencies: - "@algolia/logger-common" "4.13.1" + "@algolia/logger-common" "4.14.3" -"@algolia/logger-console@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.14.2.tgz#ec49cb47408f5811d4792598683923a800abce7b" - integrity sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g== +"@algolia/requester-browser-xhr@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.3.tgz#bcf55cba20f58fd9bc95ee55793b5219f3ce8888" + integrity sha512-AZeg2T08WLUPvDncl2XLX2O67W5wIO8MNaT7z5ii5LgBTuk/rU4CikTjCe2xsUleIZeFl++QrPAi4Bdxws6r/Q== dependencies: - "@algolia/logger-common" "4.14.2" + "@algolia/requester-common" "4.14.3" -"@algolia/requester-browser-xhr@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.1.tgz#f8ea79233cf6f0392feaf31e35a6b40d68c5bc9e" - integrity sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA== +"@algolia/requester-common@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.14.3.tgz#2d02fbe01afb7ae5651ae8dfe62d6c089f103714" + integrity sha512-RrRzqNyKFDP7IkTuV3XvYGF9cDPn9h6qEDl595lXva3YUk9YSS8+MGZnnkOMHvjkrSCKfoLeLbm/T4tmoIeclw== + +"@algolia/requester-node-http@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.14.3.tgz#72389e1c2e5d964702451e75e368eefe85a09d8f" + integrity sha512-O5wnPxtDRPuW2U0EaOz9rMMWdlhwP0J0eSL1Z7TtXF8xnUeeUyNJrdhV5uy2CAp6RbhM1VuC3sOJcIR6Av+vbA== dependencies: - "@algolia/requester-common" "4.13.1" + "@algolia/requester-common" "4.14.3" -"@algolia/requester-browser-xhr@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.14.2.tgz#a2cd4d9d8d90d53109cc7f3682dc6ebf20f798f2" - integrity sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw== +"@algolia/transporter@4.14.3": + version "4.14.3" + resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.14.3.tgz#5593036bd9cf2adfd077fdc3e81d2e6118660a7a" + integrity sha512-2qlKlKsnGJ008exFRb5RTeTOqhLZj0bkMCMVskxoqWejs2Q2QtWmsiH98hDfpw0fmnyhzHEt0Z7lqxBYp8bW2w== dependencies: - "@algolia/requester-common" "4.14.2" - -"@algolia/requester-common@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.1.tgz#daea143d15ab6ed3909c4c45877f1b6c36a16179" - integrity sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w== - -"@algolia/requester-common@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.14.2.tgz#bc4e9e5ee16c953c0ecacbfb334a33c30c28b1a1" - integrity sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg== - -"@algolia/requester-node-http@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.1.tgz#32c63d4c009f22d97e396406de7af9b66fb8e89d" - integrity sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw== - dependencies: - "@algolia/requester-common" "4.13.1" - -"@algolia/requester-node-http@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.14.2.tgz#7c1223a1785decaab1def64c83dade6bea45e115" - integrity sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg== - dependencies: - "@algolia/requester-common" "4.14.2" - -"@algolia/transporter@4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.1.tgz#509e03e9145102843d5be4a031c521f692d4e8d6" - integrity sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw== - dependencies: - "@algolia/cache-common" "4.13.1" - "@algolia/logger-common" "4.13.1" - "@algolia/requester-common" "4.13.1" - -"@algolia/transporter@4.14.2": - version "4.14.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.14.2.tgz#77c069047fb1a4359ee6a51f51829508e44a1e3d" - integrity sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ== - dependencies: - "@algolia/cache-common" "4.14.2" - "@algolia/logger-common" "4.14.2" - "@algolia/requester-common" "4.14.2" + "@algolia/cache-common" "4.14.3" + "@algolia/logger-common" "4.14.3" + "@algolia/requester-common" "4.14.3" "@ampproject/remapping@^2.1.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" "@apideck/better-ajv-errors@^0.3.1": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.4.tgz#f89924dd4efd04a51835db7eb549a7177e0ca727" - integrity sha512-Ic2d8ZT6HJiSikGVQvSklaFyw1OUv4g8sDOxa0PXSlbmN/3gL5IO1WYY9DOwTDqOFmjWoqG1yaaKnPDqYCE9KA== + version "0.3.6" + resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: json-schema "^0.4.0" jsonpointer "^5.0.0" @@ -260,38 +156,26 @@ "@babel/code-frame@7.12.11": version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/code-frame@^7.18.6": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" - integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" - integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.20.14" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" + integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw== "@babel/core@7.12.9": version "7.12.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== dependencies: "@babel/code-frame" "^7.10.4" @@ -311,46 +195,25 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.10", "@babel/core@^7.14.8", "@babel/core@^7.15.5", "@babel/core@^7.17.8", "@babel/core@^7.7.5": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" - integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.0" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.18.6", "@babel/core@^7.5.0": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.10", "@babel/core@^7.14.8", "@babel/core@^7.17.8", "@babel/core@^7.18.6", "@babel/core@^7.19.6", "@babel/core@^7.5.0", "@babel/core@^7.7.5": + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.1" + json5 "^2.2.2" semver "^6.3.0" "@babel/eslint-parser@^7.19.1": @@ -373,119 +236,66 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.2", "@babel/generator@^7.4.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.20.7", "@babel/generator@^7.4.0": + version "7.20.14" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/generator@^7.18.10", "@babel/generator@^7.18.7": - version "7.18.12" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" - integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== - dependencies: - "@babel/types" "^7.18.10" + "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== - dependencies: - "@babel/compat-data" "^7.18.8" + "@babel/compat-data" "^7.20.5" "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" + browserslist "^4.21.3" + lru-cache "^5.1.1" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" - integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.20.7" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" + regexpu-core "^5.2.1" "@babel/helper-define-polyfill-provider@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" @@ -497,24 +307,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -523,26 +319,14 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" @@ -556,21 +340,13 @@ "@babel/template" "7.0.0-beta.44" "@babel/types" "7.0.0-beta.44" -"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" "@babel/helper-get-function-arity@7.0.0-beta.44": version "7.0.0-beta.44" @@ -579,117 +355,61 @@ dependencies: "@babel/types" "7.0.0-beta.44" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== +"@babel/helper-member-expression-to-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.20.7" -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== -"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": +"@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -697,55 +417,31 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/types" "^7.18.2" + "@babel/types" "^7.20.2" -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== - dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@7.0.0-beta.44": version "7.0.0-beta.44" @@ -754,82 +450,46 @@ dependencies: "@babel/types" "7.0.0-beta.44" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - "@babel/helper-wrap-function@^7.18.9": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" - integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.11" - "@babel/types" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.20.7": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" + integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.13" + "@babel/types" "^7.20.7" "@babel/highlight@7.0.0-beta.44": version "7.0.0-beta.44" @@ -840,230 +500,125 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.18.6": +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0", "@babel/parser@^7.4.3": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" - integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== - -"@babel/parser@^7.18.10", "@babel/parser@^7.18.11", "@babel/parser@^7.18.8": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" - integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" - integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.18.8", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3": + version "7.20.15" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" - integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" - integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-class-properties@^7.18.6", "@babel/plugin-proposal-class-properties@^7.5.0": +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.18.6", "@babel/plugin-proposal-class-properties@^7.5.0": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" - integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.12.12": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz#dbe4086d2d42db489399783c3aa9272e9700afd4" - integrity sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ== + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz#b6bea3b18e88443688fa7ed2cc06d2c60da9f4a7" + integrity sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.12" - charcodes "^0.2.0" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.20.12" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-default-from@^7.12.1": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.17.12.tgz#df785e638618d8ffa14e08c78c44d9695d083b73" - integrity sha512-LpsTRw725eBAXXKUOnJJct+SEaOzwR78zahcLuripD2+dKc2Sj+8Q2DzA+GC/jOpOu/KlDXuxrzG214o1zTauQ== + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-export-default-from" "^7.16.7" - -"@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" - integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-default-from" "^7.18.6" "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" - integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" - integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1071,116 +626,62 @@ "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.17.3", "@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" - integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.17.3", "@babel/plugin-proposal-object-rest-spread@^7.20.2", "@babel/plugin-proposal-object-rest-spread@^7.5.5": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.17.12" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9", "@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== +"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" - integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-private-methods@^7.18.6": +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" - integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== +"@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6": +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -1188,892 +689,483 @@ "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz#02e8f678602f0af8222235271efea945cfdb018a" - integrity sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw== +"@babel/plugin-syntax-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz#fa89cf13b60de2c3f79acdc2b52a21174c6de060" - integrity sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA== +"@babel/plugin-syntax-export-default-from@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.17.12.tgz#23d852902acd19f42923fca9d0f196984d124e73" - integrity sha512-B8QIgBvkIG6G2jgsOHQUist7Sm0EBLDCx8sen072IwqNuzMegZNXrYnSv77cYzA8mLDZAfQYqsLIhimiP1s2HQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" - integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-syntax-import-assertions@^7.18.6": +"@babel/plugin-syntax-flow@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@7.12.1": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" - integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" - integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-syntax-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.7", "@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" - integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" - integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" - integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== +"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.15" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz#3e1b2aa9cbbe1eb8d644c823141a9c5c2a22392d" + integrity sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" - integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.20.2": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" - integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" -"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" - integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" - integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-dotall-regex@^7.18.6": +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" - integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-flow-strip-types@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.17.12.tgz#5e070f99a4152194bd9275de140e83a92966cab3" - integrity sha512-g8cSNt+cHCpG/uunPQELdq/TeV3eg1OLJYwxypwHtAWo9+nErH3lQx9CSO2uI9lF74A0mR0t4KoMjs1snSgnTw== +"@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-flow" "^7.17.12" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-flow" "^7.18.6" -"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.1": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" - integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-for-of@^7.18.8": +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== - dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" - integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" - integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz#3d6fd9868c735cce8f38d6ae3a407fb7e61e6d46" - integrity sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg== - dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" - integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" - integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-new-target@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" - integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" - integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.14.5": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.12.tgz#cc580857696b6dd9e5e3d079e673d060a0657f37" - integrity sha512-maEkX2xs2STuv2Px8QuqxqjhV2LsFobT1elCgyU5704fcyTu9DyD/bJXxD/mrRiVyhpHweOQ00OJ5FKhHq9oEw== +"@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.18.12": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz#3f02c784e0b711970d7d8ccc96c4359d64e27ac7" + integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-react-display-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" - integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" - integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-jsx" "^7.17.12" - "@babel/types" "^7.17.12" - -"@babel/plugin-transform-react-jsx@^7.18.6": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz#ea47b2c4197102c196cbd10db9b3bb20daa820f1" - integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== +"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.18.6": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz#f950f0b0c36377503d29a712f16287cedf886cbb" + integrity sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.18.10" - -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz#ef82c8e310913f3522462c9ac967d395092f1954" - integrity sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/types" "^7.20.7" "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.16.7", "@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" - integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== +"@babel/plugin-transform-regenerator@^7.16.7", "@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.4.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.4.5": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" - integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.17.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" - integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - semver "^6.3.0" - -"@babel/plugin-transform-runtime@^7.18.6", "@babel/plugin-transform-runtime@^7.5.0": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" - integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== +"@babel/plugin-transform-runtime@^7.17.0", "@babel/plugin-transform-runtime@^7.18.6", "@babel/plugin-transform-runtime@^7.5.0": + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" - integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" - integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-template-literals@^7.18.9": +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" - integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" - integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== +"@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.18.6": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz#e3581b356b8694f6ff450211fe6774eaff8d25ab" + integrity sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-typescript" "^7.17.12" - -"@babel/plugin-transform-typescript@^7.18.6": - version "7.18.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz#712e9a71b9e00fde9f8c0238e0cceee86ab2f8fd" - integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-typescript" "^7.18.6" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.20.12" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.15.6", "@babel/preset-env@^7.16.11": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" - integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.11", "@babel/preset-env@^7.18.6", "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.5.0": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-async-generator-functions" "^7.17.12" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.18.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.17.12" - "@babel/plugin-proposal-json-strings" "^7.17.12" - "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.18.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-private-methods" "^7.17.12" - "@babel/plugin-proposal-private-property-in-object" "^7.17.12" - "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.17.12" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.17.12" - "@babel/plugin-transform-async-to-generator" "^7.17.12" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.17.12" - "@babel/plugin-transform-classes" "^7.17.12" - "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.18.0" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.17.12" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.18.1" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.17.12" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.18.0" - "@babel/plugin-transform-modules-commonjs" "^7.18.2" - "@babel/plugin-transform-modules-systemjs" "^7.18.0" - "@babel/plugin-transform-modules-umd" "^7.18.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" - "@babel/plugin-transform-new-target" "^7.17.12" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.17.12" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.18.0" - "@babel/plugin-transform-reserved-words" "^7.17.12" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.17.12" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.18.2" - "@babel/plugin-transform-typeof-symbol" "^7.17.12" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.2" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-env@^7.18.6", "@babel/preset-env@^7.5.0": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -2082,7 +1174,7 @@ "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" @@ -2093,7 +1185,7 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-import-assertions" "^7.20.0" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -2106,10 +1198,10 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" @@ -2117,44 +1209,44 @@ "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-parameters" "^7.20.1" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-spread" "^7.19.0" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" "@babel/preset-flow@^7.12.1": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.17.12.tgz#664a5df59190260939eee862800a255bef3bd66f" - integrity sha512-7QDz7k4uiaBdu7N89VKjUn807pJRXmdirQu0KyR9LXnQrr5Jt41eIMKTS7ljej+H29erwmMrwq9Io9mJHLI3Lw== + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-flow-strip-types" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" "@babel/preset-modules@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -2163,9 +1255,9 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.18.6": +"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.7", "@babel/preset-react@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -2175,30 +1267,9 @@ "@babel/plugin-transform-react-jsx-development" "^7.18.6" "@babel/plugin-transform-react-pure-annotations" "^7.18.6" -"@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" - integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.17.12" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" - -"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" - integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.17.12" - -"@babel/preset-typescript@^7.18.6": +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -2206,9 +1277,9 @@ "@babel/plugin-transform-typescript" "^7.18.6" "@babel/register@^7.12.1": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" - integrity sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA== + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -2216,36 +1287,33 @@ pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime-corejs2@^7.17.8": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.18.3.tgz#415671a614d82e9791df7acf67b4853b96346643" - integrity sha512-r9L5eZChdP1DHSL+YwGEd7Rcs8Yk2KDOwSJ4cdB8ZAMolqiW7Qa9I1ir/05lte/i6N979PKYr5288OqoyZkabA== + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.13.tgz#a8f31b768d5b71b48bb288d6bca0b85e518ccf92" + integrity sha512-K2yRNithMJG4epI509n4ljPjogMhmYCB887iSD7rRecxWC9dkbfJZCPGj0BQaqG3d3Qkpb1SotEmyeMmtnvxhw== dependencies: core-js "^2.6.12" - regenerator-runtime "^0.13.4" - -"@babel/runtime-corejs3@^7.10.2": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" - integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" "@babel/runtime-corejs3@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz#7bacecd1cb2dd694eacd32a91fcf7021c20770ae" - integrity sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A== + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.13.tgz#ad012857db412ab0b5ccf184b67be2cfcc2a1dcf" + integrity sha512-p39/6rmY9uvlzRiLZBIB3G9/EBr66LBMcYm7fIDeSBNdRjF2AGD3rFZucUyAgGHC2N+7DdLvVi33uTjSE44FIw== dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.11" -"@babel/runtime@7.13.10", "@babel/runtime@7.16.3", "@babel/runtime@7.17.9", "@babel/runtime@7.7.6", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== +"@babel/runtime@7.17.9", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" "@babel/template@7.0.0-beta.44": version "7.0.0-beta.44" @@ -2257,23 +1325,14 @@ babylon "7.0.0-beta.44" lodash "^4.2.0" -"@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.4.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/template@^7.18.10", "@babel/template@^7.18.6": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== +"@babel/template@^7.12.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.4.0": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@babel/traverse@7.0.0-beta.44": version "7.0.0-beta.44" @@ -2291,35 +1350,19 @@ invariant "^2.2.0" lodash "^4.2.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.4.3": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.8", "@babel/traverse@^7.18.9": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" - integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.8", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.4.3": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" + "@babel/generator" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.11" - "@babel/types" "^7.18.10" + "@babel/parser" "^7.20.13" + "@babel/types" "^7.20.7" debug "^4.1.0" globals "^11.1.0" @@ -2332,36 +1375,28 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== +"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@base2/pretty-print-object@1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" + resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@cnakazawa/watch@^1.0.3": version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: exec-sh "^0.3.2" @@ -2369,12 +1404,12 @@ "@colors/colors@1.5.0": version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cornerstonejs/adapters@0.3.0": version "0.3.0" - resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-0.3.0.tgz#c0a2a904c92ebfae77520eba4fc64c07ebd06db4" + resolved "https://registry.npmjs.org/@cornerstonejs/adapters/-/adapters-0.3.0.tgz#c0a2a904c92ebfae77520eba4fc64c07ebd06db4" integrity sha512-o3GIrccNM0q/QF0//ueVIXeRltUmtTBkTR47qPgIY9gdi+3sYEFHEW6RTXe3OOtDDXOWgM88Jp3mWWUK4ZeXxg== dependencies: "@babel/runtime-corejs2" "^7.17.8" @@ -2388,163 +1423,169 @@ resolved "https://registry.npmjs.org/@cornerstonejs/calculate-suv/-/calculate-suv-1.0.3.tgz#6d99a72032c0f90cebf44dc6f0b12a5f1102e884" integrity sha512-2SwVJKzC1DzyxdxJtCht9dhTND2GFjLwhhkDyyC7vJq5tIgbhxgPk1CSwovO1pxmoybAXzjOxnaubllxLgoT+w== -"@cornerstonejs/codec-charls@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-charls/-/codec-charls-0.1.1.tgz#e55d4aa908732d0cc902888b7f3856c5a996df7f" - integrity sha512-Y250DGVzmownJ7WgpHxNqWvfTnv4/malaKm/tWm0xE1FxhQE8iErMWFpKxpNDk3MdfXO4/98piVsUwmJMiWoDQ== +"@cornerstonejs/codec-charls@^1.2.3": + version "1.2.3" + resolved "https://registry.npmjs.org/@cornerstonejs/codec-charls/-/codec-charls-1.2.3.tgz#6952c420486822ac8404409ae0ed5a559aff6e25" + integrity sha512-qKUe6DN0dnGzhhfZLYhH9UZacMcudjxcaLXCrpxJImT/M/PQvZCT2rllu6VGJbWKJWG+dMVV2zmmleZcdJ7/cA== -"@cornerstonejs/codec-libjpeg-turbo-8bit@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-libjpeg-turbo-8bit/-/codec-libjpeg-turbo-8bit-0.0.7.tgz#2ea9b575eed19e6e7e3701b7a50a4ae0ffbef0c4" - integrity sha512-qgm6BuVAy5mNP8SJ+A6+VbmPnqgj8jPvJrw4HbUoAzndmf9/VHjTYwawn3kmZWya5ErFAsXQ6c0U0noB1LKAiA== +"@cornerstonejs/codec-libjpeg-turbo-8bit@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@cornerstonejs/codec-libjpeg-turbo-8bit/-/codec-libjpeg-turbo-8bit-1.2.2.tgz#ae384b149d6655e3dd6e18b9891fab479ab5e144" + integrity sha512-aAUMK2958YNpOb/7G6e2/aG7hExTiFTASlMt/v90XA0pRHdWiNg5ny4S5SAju0FbIw4zcMnR0qfY+yW3VG2ivg== -"@cornerstonejs/codec-openjpeg@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/codec-openjpeg/-/codec-openjpeg-0.1.1.tgz#5bd1c52a33a425299299e970312731fa0cc2711b" - integrity sha512-HOMMOLV6xy8O/agNGGvrl0a8DwShpBvWxAzEzv2pqq12d3r5z/3MyIgNA3Oj/8bIBVvvVXxh9RX7rMDRHJdowg== +"@cornerstonejs/codec-openjpeg@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjpeg/-/codec-openjpeg-1.2.2.tgz#f0b524235b5551426b46db197a37b06f8ac805d7" + integrity sha512-b1O7lZacKXelgeV9n8XWZ7pTw3i4Bq4qQ26G5ahBjWoOw4QNcCrb5hPxWBxNB/I8AoNbJxAe+lyLtyQGfdrTbw== -"@cornerstonejs/codec-openjph@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-1.0.3.tgz#4c82642e8a6beb0d263f5a263723aec4225e5300" - integrity sha512-PK+9N/JL7ZMGum6OKuReRGGhWXpWjRC9WnltQ6aEzRKEQPMg+3WFiQPZowKCCG1I4whv35DYFRi6wu7RyRaEMQ== +"@cornerstonejs/codec-openjph@^2.4.2": + version "2.4.2" + resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" + integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== -"@cornerstonejs/core@0.30.1": +"@cornerstonejs/core@0.30.1", "@cornerstonejs/core@^0.30.1": version "0.30.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.30.1.tgz#6cb7088260641e7e55de2edb11979b1a0c00c794" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.30.1.tgz#6cb7088260641e7e55de2edb11979b1a0c00c794" integrity sha512-A7t6WtPut17uLGpv3cUfk1gSzEvWiFcCg1K3H0WGySdZsf4tIinb5xA+9oD2eaBPbvTXmIef4HWFIAsN3kAEgg== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/core@^0.27.1": - version "0.27.1" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.27.1.tgz#1c56697cee8071eacfd9b1ee6f59c0fa6071accc" - integrity sha512-RyZicIallTZtr8i1BDkZ3U1JrwPZF7DYj9dj5uwE4WdhoPB+Rp77k5T7BH7gHsNWPyJjPgZwyq+tgV5sdD7zXg== - dependencies: - detect-gpu "^4.0.45" - lodash.clonedeep "4.5.0" - "@cornerstonejs/core@^0.28.0": version "0.28.0" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.28.0.tgz#bc5114dfd332fcc5caf4ab049bcb08f6457e5f97" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.28.0.tgz#bc5114dfd332fcc5caf4ab049bcb08f6457e5f97" integrity sha512-DSAdH2+8h/rRCTR6WbbGkY+vqnAVVZH47+GgGQQHscEwDD/K3ZO62JMl4LgcgkDzI0LIIZAk6CgAtok31yG/3Q== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" "@cornerstonejs/streaming-image-volume-loader@^0.11.2": - version "0.11.2" - resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.11.2.tgz#75a8502a381a402a28ca2022f4bd2733eb90427f" - integrity sha512-cFkAKjcIk6V2p3hZ2gpvTGMBmPNrDlg/Ku6CTCqz7D+U6pEQPvct2e42G1tG+Y4MtnYgGpC+oYAeu9Zt/C6XlQ== + version "0.11.8" + resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.11.8.tgz#79dc9bf7f00a3277d9880f919c324cdeda2c28d6" + integrity sha512-fp+mmCUMWQQFzx9AzzmOJO1ntBStHQmxK3Zbi/sMs9TYcue+Zw14oA+qcuJ/7UZayb+c99unfWjhafjBiHWNeg== dependencies: - "@cornerstonejs/core" "^0.27.1" + "@cornerstonejs/core" "^0.30.1" cornerstone-wado-image-loader "^4.8.0" "@cornerstonejs/tools@0.39.0": version "0.39.0" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.39.0.tgz#7d9bac4c55bc19145c2051f7c7150b34570849e4" + resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.39.0.tgz#7d9bac4c55bc19145c2051f7c7150b34570849e4" integrity sha512-xDR51lOEuNIDaTJltZvxDK+BIdIbznXUsWt+OpYiiygCQYt1Lt2eHufO2wVFVPrMgvm0dryF+WQbRVwtWvx4yA== dependencies: "@cornerstonejs/core" "^0.28.0" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" -"@csstools/postcss-cascade-layers@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.2.tgz#7c48b5f773c4cdcdc6b57d6099fbdc2332e12219" - integrity sha512-n5fSd3N/RTLjwC6TLnHjlVEt5tRg6S6Pu+LpRgXayX0QVJHvlMzE3+R12cd2F0we8WB4OE8o5r5iWgmBPpqUyQ== +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== dependencies: - "@csstools/selector-specificity" "^1.0.0" + "@csstools/selector-specificity" "^2.0.2" postcss-selector-parser "^6.0.10" -"@csstools/postcss-color-function@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz#229966327747f58fbe586de35daa139db3ce1e5d" - integrity sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA== +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-font-format-keywords@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz#7e7df948a83a0dfb7eb150a96e2390ac642356a1" - integrity sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q== - dependencies: - postcss-value-parser "^4.2.0" - -"@csstools/postcss-hwb-function@^1.0.1": +"@csstools/postcss-font-format-keywords@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.1.tgz#5224db711ed09a965f85c80c18144ac1c2702fce" - integrity sha512-AMZwWyHbbNLBsDADWmoXT9A5yl5dsGEBeJSJRUJt8Y9n8Ziu7Wstt4MC8jtPW7xjcLecyfJwtnUTNSmOzcnWeg== + resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-ic-unit@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz#f484db59fc94f35a21b6d680d23b0ec69b286b7f" - integrity sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA== +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-is-pseudo-class@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.4.tgz#6e8b49b96a7d3346d5316bd773dcff9c983b4183" - integrity sha512-T2Tmr5RIxkCEXxHwMVyValqwv3h5FTJPpmU8Mq/HDV+TY6C9srVaNMiMG/sp0QaxUnVQQrnXsuLU+1g2zrLDcQ== +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== dependencies: - "@csstools/selector-specificity" "^1.0.0" + "@csstools/selector-specificity" "^2.0.0" postcss-selector-parser "^6.0.10" -"@csstools/postcss-normalize-display-values@^1.0.0": +"@csstools/postcss-nested-calc@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz#ce698f688c28517447aedf15a9037987e3d2dc97" - integrity sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ== + resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-oklab-function@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz#e9a269487a292e0930760948e923e1d46b638ee6" - integrity sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww== +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" "@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-stepped-value-functions@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.0.tgz#f8ffc05e163ba7bcbefc5fdcaf264ce9fd408c16" - integrity sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw== +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-trigonometric-functions@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.1.tgz#e36e61f445614193dbf6d3a8408709b0cf184a6f" - integrity sha512-G78CY/+GePc6dDCTUbwI6TTFQ5fs3N9POHhI6v0QzteGpf6ylARiJUNz9HrRKi4eVYBNXjae1W2766iUEFxHlw== +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-unset-value@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.1.tgz#2cc020785db5ec82cc9444afe4cdae2a65445f89" - integrity sha512-f1G1WGDXEU/RN1TWAxBPQgQudtLnLQPyiWdtypkPC+mVYNKFKH/HYXSxH4MVNqwF8M0eDsoiU7HumJHCg/L/jg== +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" -"@csstools/selector-specificity@1.0.0", "@csstools/selector-specificity@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-1.0.0.tgz#91c560df2ed8d9700e4c7ed4ac21a3a322c9d975" - integrity sha512-RkYG5KiGNX0fJ5YoI0f4Wfq2Yo74D25Hru4fxTOioYdQvHBxcrrtTTyT5Ozzh2ejcNrhFy7IEts2WyEY7yi5yw== +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.1.1" + resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz#c9c61d9fe5ca5ac664e1153bb0aa0eba1c6d6308" + integrity sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw== "@cypress/request@^2.88.10": - version "2.88.10" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" - integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== + version "2.88.11" + resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" + integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -2559,7 +1600,7 @@ json-stringify-safe "~5.0.1" mime-types "~2.1.19" performance-now "^2.1.0" - qs "~6.5.2" + qs "~6.10.3" safe-buffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" @@ -2567,35 +1608,35 @@ "@cypress/xvfb@^1.2.4": version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" + resolved "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== dependencies: debug "^3.1.0" lodash.once "^4.1.1" -"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/css@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.2.0.tgz#9f0f7ccb315cfe2db4565264569e1cb4b26dc26d" - integrity sha512-jnNrO2JVYYhj2pP2FomlHIy6220n6mrLn2t9v2/qc+rM7M/fbIcKMgk9ky4RN+L/maUEmteckzg6/PIYoAAXJg== +"@docsearch/css@3.3.3": + version "3.3.3" + resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.3.3.tgz#f9346c9e24602218341f51b8ba91eb9109add434" + integrity sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg== "@docsearch/react@^3.1.1": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.2.0.tgz#440c91e57cd48b87ff8e7d7fd446620ada9e677a" - integrity sha512-ATS3w5JBgQGQF0kHn5iOAPfnCCaoLouZQMmI7oENV//QMFrYbjhUZxBU9lIwAT7Rzybud+Jtb4nG5IEjBk3Ixw== + version "3.3.3" + resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.3.3.tgz#907b6936a565f880b4c0892624b4f7a9f132d298" + integrity sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q== dependencies: - "@algolia/autocomplete-core" "1.7.1" - "@algolia/autocomplete-preset-algolia" "1.7.1" - "@docsearch/css" "3.2.0" + "@algolia/autocomplete-core" "1.7.4" + "@algolia/autocomplete-preset-algolia" "1.7.4" + "@docsearch/css" "3.3.3" algoliasearch "^4.0.0" "@docusaurus/core@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.1.tgz#a2b0d653e8f18eacddda4778a46b638dd1f0f45c" + resolved "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.1.tgz#a2b0d653e8f18eacddda4778a46b638dd1f0f45c" integrity sha512-Prd46TtZdiixlTl8a+h9bI5HegkfREjSNkrX2rVEwJZeziSz4ya+l7QDnbnCB2XbxEG8cveFo/F9q5lixolDtQ== dependencies: "@babel/core" "^7.18.6" @@ -2672,7 +1713,7 @@ "@docusaurus/cssnano-preset@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.1.tgz#4d0c49338cf3aa88c5bd7cffbf77654db8e1e3b2" + resolved "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.1.tgz#4d0c49338cf3aa88c5bd7cffbf77654db8e1e3b2" integrity sha512-MCJ6rRmlqLmlCsZIoIxOxDb0rYzIPEm9PYpsBW+CGNnbk+x8xK+11hnrxzvXHqDRNpxrq3Kq2jYUmg/DkqE6vg== dependencies: cssnano-preset-advanced "^5.3.8" @@ -2682,7 +1723,7 @@ "@docusaurus/logger@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.1.tgz#78a940a333d2f654fd9dea24db2c962034d4b1ff" + resolved "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.1.tgz#78a940a333d2f654fd9dea24db2c962034d4b1ff" integrity sha512-wIWseCKko1w/WARcDjO3N/XoJ0q/VE42AthP0eNAfEazDjJ94NXbaI6wuUsuY/bMg6hTKGVIpphjj2LoX3g6dA== dependencies: chalk "^4.1.2" @@ -2690,7 +1731,7 @@ "@docusaurus/lqip-loader@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.1.tgz#805a3b02cb33cf394ca4e814b23518fab607a625" + resolved "https://registry.npmjs.org/@docusaurus/lqip-loader/-/lqip-loader-2.0.1.tgz#805a3b02cb33cf394ca4e814b23518fab607a625" integrity sha512-Rt7xuV8s604lxxDiXCYUJb8/7ML+35yGOW7zb5fUplVpGEIVwSBAY9wgwBtfvVw7IXm49nAt92PDpv690VQ8+A== dependencies: "@docusaurus/logger" "2.0.1" @@ -2701,7 +1742,7 @@ "@docusaurus/mdx-loader@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.1.tgz#cc73690ca5d356687d9e75740560b4159cd5cdb5" + resolved "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.1.tgz#cc73690ca5d356687d9e75740560b4159cd5cdb5" integrity sha512-tdNeljdilXCmhbaEND3SAgsqaw/oh7v9onT5yrIrL26OSk2AFwd+MIi4R8jt8vq33M0R4rz2wpknm0fQIkDdvQ== dependencies: "@babel/parser" "^7.18.8" @@ -2724,7 +1765,7 @@ "@docusaurus/module-type-aliases@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.1.tgz#44d7132297bedae0890695b0e7ebbe14a73e26d1" + resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.1.tgz#44d7132297bedae0890695b0e7ebbe14a73e26d1" integrity sha512-f888ylnxHAM/3T8p1lx08+lTc6/g7AweSRfRuZvrVhHXj3Tz/nTTxaP6gPTGkJK7WLqTagpar/IGP6/74IBbkg== dependencies: "@docusaurus/react-loadable" "5.5.2" @@ -2738,7 +1779,7 @@ "@docusaurus/plugin-client-redirects@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.1.tgz#3b00cd0a816fe85e6c505651f28b59fff723ac67" + resolved "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.1.tgz#3b00cd0a816fe85e6c505651f28b59fff723ac67" integrity sha512-A/giM3MIRRyUmxNzLb/jWvmRf0NtPYX4bV04njAnziAdPo4dqT4dZF2Hvy0uUSaF/SXPGLUjrZWWpzTl5mTJtQ== dependencies: "@docusaurus/core" "2.0.1" @@ -2753,7 +1794,7 @@ "@docusaurus/plugin-content-blog@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.1.tgz#a37065e18ffd26e022ffb16a21ff28199140729e" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.1.tgz#a37065e18ffd26e022ffb16a21ff28199140729e" integrity sha512-/4ua3iFYcpwgpeYgHnhVGROB/ybnauLH2+rICb4vz/+Gn1hjAmGXVYq1fk8g49zGs3uxx5nc0H5bL9P0g977IQ== dependencies: "@docusaurus/core" "2.0.1" @@ -2775,7 +1816,7 @@ "@docusaurus/plugin-content-docs@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.1.tgz#4059591b4bff617e744e856ca680674b27c0b98a" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.1.tgz#4059591b4bff617e744e856ca680674b27c0b98a" integrity sha512-2qeBWRy1EjgnXdwAO6/csDIS1UVNmhmtk/bQ2s9jqjpwM8YVgZ8QVdkxFAMWXgZWDQdwWwdP1rnmoEelE4HknQ== dependencies: "@docusaurus/core" "2.0.1" @@ -2797,7 +1838,7 @@ "@docusaurus/plugin-content-pages@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.1.tgz#013f2e66f80d19b5c95a2d941d67c7cdb67b7191" + resolved "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.1.tgz#013f2e66f80d19b5c95a2d941d67c7cdb67b7191" integrity sha512-6apSVeJENnNecAH5cm5VnRqR103M6qSI6IuiP7tVfD5H4AWrfDNkvJQV2+R2PIq3bGrwmX4fcXl1x4g0oo7iwA== dependencies: "@docusaurus/core" "2.0.1" @@ -2811,7 +1852,7 @@ "@docusaurus/plugin-debug@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.1.tgz#2b2a473f8e01fd356e32236f753665b48209bcd4" + resolved "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.1.tgz#2b2a473f8e01fd356e32236f753665b48209bcd4" integrity sha512-jpZBT5HK7SWx1LRQyv9d14i44vSsKXGZsSPA2ndth5HykHJsiAj9Fwl1AtzmtGYuBmI+iXQyOd4MAMHd4ZZ1tg== dependencies: "@docusaurus/core" "2.0.1" @@ -2823,7 +1864,7 @@ "@docusaurus/plugin-google-analytics@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.1.tgz#e3b84237aad2e94dcd1cf1810c1c9bc3d94f186d" + resolved "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.1.tgz#e3b84237aad2e94dcd1cf1810c1c9bc3d94f186d" integrity sha512-d5qb+ZeQcg1Czoxc+RacETjLdp2sN/TAd7PGN/GrvtijCdgNmvVAtZ9QgajBTG0YbJFVPTeZ39ad2bpoOexX0w== dependencies: "@docusaurus/core" "2.0.1" @@ -2833,7 +1874,7 @@ "@docusaurus/plugin-google-gtag@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.1.tgz#4cbcf9d520f7ec8124679fbe00867f2299a2f6bb" + resolved "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.1.tgz#4cbcf9d520f7ec8124679fbe00867f2299a2f6bb" integrity sha512-qiRufJe2FvIyzICbkjm4VbVCI1hyEju/CebfDKkKh2ZtV4q6DM1WZG7D6VoQSXL8MrMFB895gipOM4BwdM8VsQ== dependencies: "@docusaurus/core" "2.0.1" @@ -2843,7 +1884,7 @@ "@docusaurus/plugin-ideal-image@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.1.tgz#e943cd53bd5edb28c014a200d37cdfa76f6f3ae6" + resolved "https://registry.npmjs.org/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.1.tgz#e943cd53bd5edb28c014a200d37cdfa76f6f3ae6" integrity sha512-SD8kf9VCa3qIYTU3Cdv4Yeqootb73Klzzejr6nWd5t01bNRKSw9b7jOOSh54eDxH47uYqD1Ycok8WkookmMexg== dependencies: "@docusaurus/core" "2.0.1" @@ -2860,7 +1901,7 @@ "@docusaurus/plugin-pwa@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.1.tgz#e49f2a846f0beca58cb09e7a114393c43cd438b8" + resolved "https://registry.npmjs.org/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.1.tgz#e49f2a846f0beca58cb09e7a114393c43cd438b8" integrity sha512-zN+dCx2V1yIK8+U3cey/IA44ynfmZQm/tdVhXy6EsXbkaEW8ZZu0AIpARFxJ2lmR2sPkG1ohkXIoOOCMOld1Xw== dependencies: "@babel/core" "^7.18.6" @@ -2884,7 +1925,7 @@ "@docusaurus/plugin-sitemap@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.1.tgz#6f8edb82b745b040d6b1495e2798396f63e50289" + resolved "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.1.tgz#6f8edb82b745b040d6b1495e2798396f63e50289" integrity sha512-KcYuIUIp2JPzUf+Xa7W2BSsjLgN1/0h+VAz7D/C3RYjAgC5ApPX8wO+TECmGfunl/m7WKGUmLabfOon/as64kQ== dependencies: "@docusaurus/core" "2.0.1" @@ -2899,7 +1940,7 @@ "@docusaurus/preset-classic@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.1.tgz#21a806e16b61026d2a0efa6ca97e17397065d894" + resolved "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.1.tgz#21a806e16b61026d2a0efa6ca97e17397065d894" integrity sha512-nOoniTg46My1qdDlLWeFs55uEmxOJ+9WMF8KKG8KMCu5LAvpemMi7rQd4x8Tw+xiPHZ/sQzH9JmPTMPRE4QGPw== dependencies: "@docusaurus/core" "2.0.1" @@ -2917,7 +1958,7 @@ "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" + resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== dependencies: "@types/react" "*" @@ -2925,7 +1966,7 @@ "@docusaurus/remark-plugin-npm2yarn@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.0.1.tgz#9d49181e1711d8564e0304fc5b3cae21c47fc180" + resolved "https://registry.npmjs.org/@docusaurus/remark-plugin-npm2yarn/-/remark-plugin-npm2yarn-2.0.1.tgz#9d49181e1711d8564e0304fc5b3cae21c47fc180" integrity sha512-qTFTb4UG2gO1WcCmrRkE9ipGqzH+KTKicJbOxTNVNMcLne6qwiBPUiBg6UfqaMEho0aILyn+Vh1FFBONkEnAtg== dependencies: npm-to-yarn "^1.0.1" @@ -2934,14 +1975,14 @@ "@docusaurus/responsive-loader@^1.7.0": version "1.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz#508df2779e04311aa2a38efb67cf743109afd681" + resolved "https://registry.npmjs.org/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz#508df2779e04311aa2a38efb67cf743109afd681" integrity sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw== dependencies: loader-utils "^2.0.0" "@docusaurus/theme-classic@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.1.tgz#043b6fcd2ecb2aecd134419b198c9f519029d5e7" + resolved "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.1.tgz#043b6fcd2ecb2aecd134419b198c9f519029d5e7" integrity sha512-0jfigiqkUwIuKOw7Me5tqUM9BBvoQX7qqeevx7v4tkYQexPhk3VYSZo7aRuoJ9oyW5makCTPX551PMJzmq7+sw== dependencies: "@docusaurus/core" "2.0.1" @@ -2972,7 +2013,7 @@ "@docusaurus/theme-common@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.1.tgz#9594d58fbef11fe480967b5ce4cdbb3cd78d9ca3" + resolved "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.1.tgz#9594d58fbef11fe480967b5ce4cdbb3cd78d9ca3" integrity sha512-I3b6e/ryiTQMsbES40cP0DRGnfr0E2qghVq+XecyMKjBPejISoSFEDn0MsnbW8Q26k1Dh/0qDH8QKDqaZZgLhA== dependencies: "@docusaurus/mdx-loader" "2.0.1" @@ -2992,7 +2033,7 @@ "@docusaurus/theme-live-codeblock@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-2.0.1.tgz#60d18fd10322efc56754d61b3e49033563ffa48e" + resolved "https://registry.npmjs.org/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-2.0.1.tgz#60d18fd10322efc56754d61b3e49033563ffa48e" integrity sha512-H+4Vn1KT6sTXi1mnB5yjBzV5+ubFE2E5P2S4nqg2xBGtkCubSGJ7BCQYY5+gPbvE8HsphjhWAS+H+rtDDgEikQ== dependencies: "@docusaurus/core" "2.0.1" @@ -3007,7 +2048,7 @@ "@docusaurus/theme-search-algolia@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.1.tgz#0aab8407b2163f67eb4c48f1de33944e1695fa74" + resolved "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.1.tgz#0aab8407b2163f67eb4c48f1de33944e1695fa74" integrity sha512-cw3NaOSKbYlsY6uNj4PgO+5mwyQ3aEWre5RlmvjStaz2cbD15Nr69VG8Rd/F6Q5VsCT8BvSdkPDdDG5d/ACexg== dependencies: "@docsearch/react" "^3.1.1" @@ -3029,7 +2070,7 @@ "@docusaurus/theme-translations@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.1.tgz#955a687c974265a811bfc743d98ef3eab0379100" + resolved "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.0.1.tgz#955a687c974265a811bfc743d98ef3eab0379100" integrity sha512-v1MYYlbsdX+rtKnXFcIAn9ar0Z6K0yjqnCYS0p/KLCLrfJwfJ8A3oRJw2HiaIb8jQfk1WMY2h5Qi1p4vHOekQw== dependencies: fs-extra "^10.1.0" @@ -3037,7 +2078,7 @@ "@docusaurus/types@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.1.tgz#8696a70e85c4b9be80b38ac592d520f6fe72618b" + resolved "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.1.tgz#8696a70e85c4b9be80b38ac592d520f6fe72618b" integrity sha512-o+4hAFWkj3sBszVnRTAnNqtAIuIW0bNaYyDwQhQ6bdz3RAPEq9cDKZxMpajsj4z2nRty8XjzhyufAAjxFTyrfg== dependencies: "@types/history" "^4.7.11" @@ -3051,14 +2092,14 @@ "@docusaurus/utils-common@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.1.tgz#b6f2b029547f739e1431ec84abd16974edf495e0" + resolved "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.1.tgz#b6f2b029547f739e1431ec84abd16974edf495e0" integrity sha512-kajCCDCXRd1HFH5EUW31MPaQcsyNlGakpkDoTBtBvpa4EIPvWaSKy7TIqYKHrZjX4tnJ0YbEJvaXfjjgdq5xSg== dependencies: tslib "^2.4.0" "@docusaurus/utils-validation@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.1.tgz#69f7d4944288d71f00fdba6dde10f05008f04308" + resolved "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.1.tgz#69f7d4944288d71f00fdba6dde10f05008f04308" integrity sha512-f14AnwFBy4/1A19zWthK+Ii80YDz+4qt8oPpK3julywXsheSxPBqgsND3LVBBvB2p3rJHvbo2m3HyB9Tco1JRw== dependencies: "@docusaurus/logger" "2.0.1" @@ -3069,7 +2110,7 @@ "@docusaurus/utils@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.1.tgz#37b4b42e29175e5d2d811fcbf9f93bffeca7c353" + resolved "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.1.tgz#37b4b42e29175e5d2d811fcbf9f93bffeca7c353" integrity sha512-u2Vdl/eoVwMfUjDCkg7FjxoiwFs/XhVVtNxQEw8cvB+qaw6QWyT73m96VZzWtUb1fDOefHoZ+bZ0ObFeKk9lMQ== dependencies: "@docusaurus/logger" "2.0.1" @@ -3090,7 +2131,7 @@ "@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": version "10.0.29" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + resolved "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== dependencies: "@emotion/sheet" "0.9.4" @@ -3100,7 +2141,7 @@ "@emotion/core@^10.0.9", "@emotion/core@^10.1.1": version "10.3.1" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" + resolved "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== dependencies: "@babel/runtime" "^7.5.5" @@ -3112,7 +2153,7 @@ "@emotion/css@^10.0.27", "@emotion/css@^10.0.9": version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + resolved "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== dependencies: "@emotion/serialize" "^0.11.15" @@ -3121,24 +2162,24 @@ "@emotion/hash@0.8.0": version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.6": version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== dependencies: "@emotion/memoize" "0.7.4" "@emotion/memoize@0.7.4": version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== "@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": version "0.11.16" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== dependencies: "@emotion/hash" "0.8.0" @@ -3149,12 +2190,12 @@ "@emotion/sheet@0.9.4": version "0.9.4" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== "@emotion/styled-base@^10.3.0": version "10.3.0" - resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.3.0.tgz#9aa2c946100f78b47316e4bc6048321afa6d4e36" + resolved "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz#9aa2c946100f78b47316e4bc6048321afa6d4e36" integrity sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w== dependencies: "@babel/runtime" "^7.5.5" @@ -3164,7 +2205,7 @@ "@emotion/styled@^10.0.27": version "10.3.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.3.0.tgz#8ee959bf75730789abb5f67f7c3ded0c30aec876" + resolved "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz#8ee959bf75730789abb5f67f7c3ded0c30aec876" integrity sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ== dependencies: "@emotion/styled-base" "^10.3.0" @@ -3172,32 +2213,32 @@ "@emotion/stylis@0.8.5": version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + resolved "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== "@emotion/unitless@0.7.5": version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== "@emotion/utils@0.11.3": version "0.11.3" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== "@emotion/weak-memoize@0.2.5": version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== "@endiliey/react-ideal-image@^0.0.11": version "0.0.11" - resolved "https://registry.yarnpkg.com/@endiliey/react-ideal-image/-/react-ideal-image-0.0.11.tgz#dc3803d04e1409cf88efa4bba0f67667807bdf27" + resolved "https://registry.npmjs.org/@endiliey/react-ideal-image/-/react-ideal-image-0.0.11.tgz#dc3803d04e1409cf88efa4bba0f67667807bdf27" integrity sha512-QxMjt/Gvur/gLxSoCy7VIyGGGrGmDN+VHcXkN3R2ApoWX0EYUE+hMgPHSW/PV6VVebZ1Nd4t2UnGRBDihu16JQ== "@eslint/eslintrc@^0.4.3": version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" @@ -3212,7 +2253,7 @@ "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" - resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" + resolved "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== dependencies: "@evocateur/npm-registry-fetch" "^4.0.0" @@ -3223,7 +2264,7 @@ "@evocateur/libnpmpublish@^1.2.2": version "1.2.2" - resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" + resolved "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== dependencies: "@evocateur/npm-registry-fetch" "^4.0.0" @@ -3238,7 +2279,7 @@ "@evocateur/npm-registry-fetch@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" + resolved "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== dependencies: JSONStream "^1.3.4" @@ -3251,7 +2292,7 @@ "@evocateur/pacote@^9.6.3": version "9.6.5" - resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" + resolved "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== dependencies: "@evocateur/npm-registry-fetch" "^4.0.0" @@ -3286,24 +2327,24 @@ "@gar/promisify@^1.0.1": version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@hapi/hoek@^9.0.0": version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== "@hapi/topo@^5.0.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" "@humanwhocodes/config-array@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: "@humanwhocodes/object-schema" "^1.2.0" @@ -3312,7 +2353,7 @@ "@humanwhocodes/object-schema@^1.2.0": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@icons/material@^0.2.4": @@ -3322,7 +2363,7 @@ "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -3333,12 +2374,12 @@ "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^24.7.1", "@jest/console@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== dependencies: "@jest/source-map" "^24.9.0" @@ -3347,7 +2388,7 @@ "@jest/core@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + resolved "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== dependencies: "@jest/console" "^24.7.1" @@ -3381,7 +2422,7 @@ "@jest/environment@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== dependencies: "@jest/fake-timers" "^24.9.0" @@ -3391,7 +2432,7 @@ "@jest/fake-timers@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== dependencies: "@jest/types" "^24.9.0" @@ -3400,7 +2441,7 @@ "@jest/reporters@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== dependencies: "@jest/environment" "^24.9.0" @@ -3425,9 +2466,16 @@ source-map "^0.6.0" string-length "^2.0.0" +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + "@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== dependencies: callsites "^3.0.0" @@ -3436,7 +2484,7 @@ "@jest/test-result@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== dependencies: "@jest/console" "^24.9.0" @@ -3445,7 +2493,7 @@ "@jest/test-sequencer@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== dependencies: "@jest/test-result" "^24.9.0" @@ -3455,7 +2503,7 @@ "@jest/transform@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== dependencies: "@babel/core" "^7.1.0" @@ -3477,7 +2525,7 @@ "@jest/transform@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" @@ -3498,7 +2546,7 @@ "@jest/types@^24.9.0": version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -3507,7 +2555,7 @@ "@jest/types@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -3516,67 +2564,65 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^29.4.3": + version "29.4.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" + integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== - -"@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@jsdevtools/coverage-istanbul-loader@3.0.5": version "3.0.5" @@ -3612,12 +2658,12 @@ "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@lerna/add@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" + resolved "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== dependencies: "@evocateur/pacote" "^9.6.3" @@ -3633,7 +2679,7 @@ "@lerna/bootstrap@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" + resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== dependencies: "@lerna/command" "3.21.0" @@ -3662,7 +2708,7 @@ "@lerna/changed@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" + resolved "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== dependencies: "@lerna/collect-updates" "3.20.0" @@ -3672,7 +2718,7 @@ "@lerna/check-working-tree@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" + resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== dependencies: "@lerna/collect-uncommitted" "3.16.5" @@ -3681,7 +2727,7 @@ "@lerna/child-process@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" + resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== dependencies: chalk "^2.3.1" @@ -3690,7 +2736,7 @@ "@lerna/clean@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" + resolved "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== dependencies: "@lerna/command" "3.21.0" @@ -3704,7 +2750,7 @@ "@lerna/cli@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" + resolved "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== dependencies: "@lerna/global-options" "3.13.0" @@ -3714,7 +2760,7 @@ "@lerna/collect-uncommitted@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" + resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== dependencies: "@lerna/child-process" "3.16.5" @@ -3724,7 +2770,7 @@ "@lerna/collect-updates@3.20.0": version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" + resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== dependencies: "@lerna/child-process" "3.16.5" @@ -3735,7 +2781,7 @@ "@lerna/command@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" + resolved "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== dependencies: "@lerna/child-process" "3.16.5" @@ -3751,7 +2797,7 @@ "@lerna/conventional-commits@3.22.0": version "3.22.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz#2798f4881ee2ef457bdae027ab7d0bf0af6f1e09" + resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz#2798f4881ee2ef457bdae027ab7d0bf0af6f1e09" integrity sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA== dependencies: "@lerna/validation-error" "3.13.0" @@ -3768,7 +2814,7 @@ "@lerna/create-symlink@3.16.2": version "3.16.2" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" + resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== dependencies: "@zkochan/cmd-shim" "^3.1.0" @@ -3777,7 +2823,7 @@ "@lerna/create@3.22.0": version "3.22.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.22.0.tgz#d6bbd037c3dc5b425fe5f6d1b817057c278f7619" + resolved "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz#d6bbd037c3dc5b425fe5f6d1b817057c278f7619" integrity sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw== dependencies: "@evocateur/pacote" "^9.6.3" @@ -3801,7 +2847,7 @@ "@lerna/describe-ref@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" + resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== dependencies: "@lerna/child-process" "3.16.5" @@ -3809,7 +2855,7 @@ "@lerna/diff@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" + resolved "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== dependencies: "@lerna/child-process" "3.16.5" @@ -3819,7 +2865,7 @@ "@lerna/exec@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" + resolved "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== dependencies: "@lerna/child-process" "3.16.5" @@ -3832,7 +2878,7 @@ "@lerna/filter-options@3.20.0": version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" + resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== dependencies: "@lerna/collect-updates" "3.20.0" @@ -3843,7 +2889,7 @@ "@lerna/filter-packages@3.18.0": version "3.18.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" + resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== dependencies: "@lerna/validation-error" "3.13.0" @@ -3852,14 +2898,14 @@ "@lerna/get-npm-exec-opts@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== dependencies: npmlog "^4.1.2" "@lerna/get-packed@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" + resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== dependencies: fs-extra "^8.1.0" @@ -3868,7 +2914,7 @@ "@lerna/github-client@3.22.0": version "3.22.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.22.0.tgz#5d816aa4f76747ed736ae64ff962b8f15c354d95" + resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz#5d816aa4f76747ed736ae64ff962b8f15c354d95" integrity sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg== dependencies: "@lerna/child-process" "3.16.5" @@ -3879,7 +2925,7 @@ "@lerna/gitlab-client@3.15.0": version "3.15.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" + resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== dependencies: node-fetch "^2.5.0" @@ -3888,12 +2934,12 @@ "@lerna/global-options@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== "@lerna/has-npm-version@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" + resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== dependencies: "@lerna/child-process" "3.16.5" @@ -3901,7 +2947,7 @@ "@lerna/import@3.22.0": version "3.22.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.22.0.tgz#1a5f0394f38e23c4f642a123e5e1517e70d068d2" + resolved "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz#1a5f0394f38e23c4f642a123e5e1517e70d068d2" integrity sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg== dependencies: "@lerna/child-process" "3.16.5" @@ -3915,7 +2961,7 @@ "@lerna/info@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" + resolved "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== dependencies: "@lerna/command" "3.21.0" @@ -3924,7 +2970,7 @@ "@lerna/init@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" + resolved "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== dependencies: "@lerna/child-process" "3.16.5" @@ -3935,7 +2981,7 @@ "@lerna/link@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" + resolved "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== dependencies: "@lerna/command" "3.21.0" @@ -3946,7 +2992,7 @@ "@lerna/list@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" + resolved "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== dependencies: "@lerna/command" "3.21.0" @@ -3956,7 +3002,7 @@ "@lerna/listable@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" + resolved "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== dependencies: "@lerna/query-graph" "3.18.5" @@ -3965,7 +3011,7 @@ "@lerna/log-packed@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" + resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== dependencies: byte-size "^5.0.1" @@ -3975,7 +3021,7 @@ "@lerna/npm-conf@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" + resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== dependencies: config-chain "^1.1.11" @@ -3983,7 +3029,7 @@ "@lerna/npm-dist-tag@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" + resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== dependencies: "@evocateur/npm-registry-fetch" "^4.0.0" @@ -3994,7 +3040,7 @@ "@lerna/npm-install@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" + resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== dependencies: "@lerna/child-process" "3.16.5" @@ -4007,7 +3053,7 @@ "@lerna/npm-publish@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" + resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== dependencies: "@evocateur/libnpmpublish" "^1.2.2" @@ -4022,7 +3068,7 @@ "@lerna/npm-run-script@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" + resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== dependencies: "@lerna/child-process" "3.16.5" @@ -4031,7 +3077,7 @@ "@lerna/otplease@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" + resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== dependencies: "@lerna/prompt" "3.18.5" @@ -4039,14 +3085,14 @@ "@lerna/output@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + resolved "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== dependencies: npmlog "^4.1.2" "@lerna/pack-directory@3.16.4": version "3.16.4" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" + resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== dependencies: "@lerna/get-packed" "3.16.0" @@ -4060,7 +3106,7 @@ "@lerna/package-graph@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" + resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== dependencies: "@lerna/prerelease-id-from-version" "3.16.0" @@ -4071,7 +3117,7 @@ "@lerna/package@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" + resolved "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== dependencies: load-json-file "^5.3.0" @@ -4080,14 +3126,14 @@ "@lerna/prerelease-id-from-version@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" + resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== dependencies: semver "^6.2.0" "@lerna/profiler@3.20.0": version "3.20.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" + resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== dependencies: figgy-pudding "^3.5.1" @@ -4097,7 +3143,7 @@ "@lerna/project@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" + resolved "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== dependencies: "@lerna/package" "3.16.0" @@ -4115,7 +3161,7 @@ "@lerna/prompt@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" + resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== dependencies: inquirer "^6.2.0" @@ -4123,7 +3169,7 @@ "@lerna/publish@3.22.1": version "3.22.1" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.22.1.tgz#b4f7ce3fba1e9afb28be4a1f3d88222269ba9519" + resolved "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz#b4f7ce3fba1e9afb28be4a1f3d88222269ba9519" integrity sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw== dependencies: "@evocateur/libnpmaccess" "^3.1.2" @@ -4159,14 +3205,14 @@ "@lerna/pulse-till-done@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== dependencies: npmlog "^4.1.2" "@lerna/query-graph@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" + resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== dependencies: "@lerna/package-graph" "3.18.5" @@ -4174,7 +3220,7 @@ "@lerna/resolve-symlink@3.16.0": version "3.16.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" + resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== dependencies: fs-extra "^8.1.0" @@ -4183,7 +3229,7 @@ "@lerna/rimraf-dir@3.16.5": version "3.16.5" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" + resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== dependencies: "@lerna/child-process" "3.16.5" @@ -4193,7 +3239,7 @@ "@lerna/run-lifecycle@3.16.2": version "3.16.2" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" + resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== dependencies: "@lerna/npm-conf" "3.16.0" @@ -4203,7 +3249,7 @@ "@lerna/run-topologically@3.18.5": version "3.18.5" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" + resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== dependencies: "@lerna/query-graph" "3.18.5" @@ -4212,7 +3258,7 @@ "@lerna/run@3.21.0": version "3.21.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" + resolved "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== dependencies: "@lerna/command" "3.21.0" @@ -4227,7 +3273,7 @@ "@lerna/symlink-binary@3.17.0": version "3.17.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" + resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== dependencies: "@lerna/create-symlink" "3.16.2" @@ -4237,7 +3283,7 @@ "@lerna/symlink-dependencies@3.17.0": version "3.17.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" + resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== dependencies: "@lerna/create-symlink" "3.16.2" @@ -4250,19 +3296,19 @@ "@lerna/timer@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + resolved "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== "@lerna/validation-error@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== dependencies: npmlog "^4.1.2" "@lerna/version@3.22.1": version "3.22.1" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.22.1.tgz#9805a9247a47ee62d6b81bd9fa5fb728b24b59e2" + resolved "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz#9805a9247a47ee62d6b81bd9fa5fb728b24b59e2" integrity sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g== dependencies: "@lerna/check-working-tree" "3.16.5" @@ -4294,7 +3340,7 @@ "@lerna/write-log-file@3.13.0": version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== dependencies: npmlog "^4.1.2" @@ -4302,7 +3348,7 @@ "@mdx-js/mdx@^1.6.22": version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: "@babel/core" "7.12.9" @@ -4327,32 +3373,32 @@ "@mdx-js/react@^1.6.21", "@mdx-js/react@^1.6.22": version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + resolved "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== "@mdx-js/util@1.6.22": version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== -"@microsoft/tsdoc-config@0.16.1": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz#4de11976c1202854c4618f364bf499b4be33e657" - integrity sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ== +"@microsoft/tsdoc-config@0.16.2": + version "0.16.2" + resolved "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf" + integrity sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw== dependencies: - "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc" "0.14.2" ajv "~6.12.6" jju "~1.4.0" resolve "~1.19.0" -"@microsoft/tsdoc@0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" - integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== +"@microsoft/tsdoc@0.14.2": + version "0.14.2" + resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" + integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: call-me-maybe "^1.0.1" @@ -4367,7 +3413,7 @@ "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -4375,17 +3421,17 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.stat@^1.1.2": version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -4393,7 +3439,7 @@ "@npmcli/fs@^1.0.0": version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" @@ -4401,7 +3447,7 @@ "@npmcli/move-file@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" @@ -4409,45 +3455,45 @@ "@octokit/auth-token@^2.4.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" "@octokit/endpoint@^6.0.1": version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: "@octokit/types" "^6.0.3" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^11.2.0": - version "11.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" - integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== "@octokit/plugin-paginate-rest@^1.1.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== dependencies: "@octokit/types" "^2.0.1" "@octokit/plugin-request-log@^1.0.0": version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@2.4.0": version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== dependencies: "@octokit/types" "^2.0.1" @@ -4455,7 +3501,7 @@ "@octokit/request-error@^1.0.2": version "1.2.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== dependencies: "@octokit/types" "^2.0.0" @@ -4464,7 +3510,7 @@ "@octokit/request-error@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== dependencies: "@octokit/types" "^6.0.3" @@ -4473,7 +3519,7 @@ "@octokit/request@^5.2.0": version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" @@ -4485,7 +3531,7 @@ "@octokit/rest@^16.28.4": version "16.43.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== dependencies: "@octokit/auth-token" "^2.4.0" @@ -4507,21 +3553,21 @@ "@octokit/types@^2.0.0", "@octokit/types@^2.0.1": version "2.16.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + resolved "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== dependencies: "@types/node" ">= 8" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.34.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" - integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== + version "6.41.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - "@octokit/openapi-types" "^11.2.0" + "@octokit/openapi-types" "^12.11.0" "@oozcitak/dom@1.15.10": version "1.15.10" - resolved "https://registry.yarnpkg.com/@oozcitak/dom/-/dom-1.15.10.tgz#dca7289f2b292cff2a901ea4fbbcc0a1ab0b05c2" + resolved "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz#dca7289f2b292cff2a901ea4fbbcc0a1ab0b05c2" integrity sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ== dependencies: "@oozcitak/infra" "1.0.8" @@ -4530,14 +3576,14 @@ "@oozcitak/infra@1.0.8": version "1.0.8" - resolved "https://registry.yarnpkg.com/@oozcitak/infra/-/infra-1.0.8.tgz#b0b089421f7d0f6878687608301fbaba837a7d17" + resolved "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz#b0b089421f7d0f6878687608301fbaba837a7d17" integrity sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg== dependencies: "@oozcitak/util" "8.3.8" "@oozcitak/url@1.0.4": version "1.0.4" - resolved "https://registry.yarnpkg.com/@oozcitak/url/-/url-1.0.4.tgz#ca8b1c876319cf5a648dfa1123600a6aa5cda6ba" + resolved "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz#ca8b1c876319cf5a648dfa1123600a6aa5cda6ba" integrity sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw== dependencies: "@oozcitak/infra" "1.0.8" @@ -4545,24 +3591,24 @@ "@oozcitak/util@8.3.8": version "8.3.8" - resolved "https://registry.yarnpkg.com/@oozcitak/util/-/util-8.3.8.tgz#10f65fe1891fd8cde4957360835e78fd1936bfdd" + resolved "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz#10f65fe1891fd8cde4957360835e78fd1936bfdd" integrity sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ== "@percy/cypress@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@percy/cypress/-/cypress-3.1.1.tgz#4e7c5bdeccf1240b2150fc9d608df72c2f213d4b" - integrity sha512-khvWmCOJW7pxwDZPB5ovvbSe11FfNtH8Iyq8PHRYLD9ibAkiAWHZVs07bLK5wju1Q9X8s7zg5uj2yWxIlB1yjA== + version "3.1.2" + resolved "https://registry.npmjs.org/@percy/cypress/-/cypress-3.1.2.tgz#a087d3c59a6b155eab5fdb4c237526b9cfacbc22" + integrity sha512-JXrGDZbqwkzQd2h5T5D7PvqoucNaiMh4ChPp8cLQiEtRuLHta9nf1lEuXH+jnatGL2j+3jJFIHJ0L7XrgVnvQA== dependencies: - "@percy/sdk-utils" "^1.0.0-beta.44" + "@percy/sdk-utils" "^1.3.1" -"@percy/sdk-utils@^1.0.0-beta.44": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@percy/sdk-utils/-/sdk-utils-1.2.1.tgz#fdb29b400ad45c1c4998716587a80475e790e1b9" - integrity sha512-Ey7T4XNJHb1kolMTFyh322tn9hapeLChCUovMy3P9zQ+Fh/LtyspVNo8uhOG+Vmidxqb0bwXkooTQTgGODFckQ== +"@percy/sdk-utils@^1.3.1": + version "1.18.0" + resolved "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.18.0.tgz#3c0c7faaf2668eb679546554418e96a53c81db4a" + integrity sha512-c+Avhw5rNa+xyAFIpuQ4jxksw7/5DWyPGaNncTMY4Dbc1fVxT6nu6V1Mytc9A1zxl0+ficQHTZeSugM4aL81hQ== "@philpl/buble@^0.19.7": version "0.19.7" - resolved "https://registry.yarnpkg.com/@philpl/buble/-/buble-0.19.7.tgz#27231e6391393793b64bc1c982fc7b593198b893" + resolved "https://registry.npmjs.org/@philpl/buble/-/buble-0.19.7.tgz#27231e6391393793b64bc1c982fc7b593198b893" integrity sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA== dependencies: acorn "^6.1.1" @@ -4576,28 +3622,28 @@ regexpu-core "^4.5.4" "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz#58f8217ba70069cc6a73f5d7e05e85b458c150e2" - integrity sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q== + version "0.5.10" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== dependencies: ansi-html-community "^0.0.8" common-path-prefix "^3.0.0" - core-js-pure "^3.8.1" + core-js-pure "^3.23.3" error-stack-parser "^2.0.6" find-up "^5.0.0" html-entities "^2.1.0" - loader-utils "^2.0.0" + loader-utils "^2.0.4" schema-utils "^3.0.0" source-map "^0.7.3" "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== "@reach/router@^1.3.4": version "1.3.4" - resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" + resolved "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== dependencies: create-react-context "0.3.0" @@ -4607,22 +3653,27 @@ "@react-dnd/asap@^4.0.0": version "4.0.1" - resolved "https://registry.yarnpkg.com/@react-dnd/asap/-/asap-4.0.1.tgz#5291850a6b58ce6f2da25352a64f1b0674871aab" + resolved "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz#5291850a6b58ce6f2da25352a64f1b0674871aab" integrity sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg== "@react-dnd/invariant@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-dnd/invariant/-/invariant-2.0.0.tgz#09d2e81cd39e0e767d7da62df9325860f24e517e" + resolved "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz#09d2e81cd39e0e767d7da62df9325860f24e517e" integrity sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw== "@react-dnd/shallowequal@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz#a3031eb54129f2c66b2753f8404266ec7bf67f0a" + resolved "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz#a3031eb54129f2c66b2753f8404266ec7bf67f0a" integrity sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg== +"@remix-run/router@1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz#58cd2bd25df2acc16c628e1b6f6150ea6c7455bc" + integrity sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA== + "@rollup/plugin-babel@^5.2.0": version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -4630,7 +3681,7 @@ "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -4642,7 +3693,7 @@ "@rollup/plugin-replace@^2.4.1": version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -4650,7 +3701,7 @@ "@rollup/pluginutils@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" @@ -4659,54 +3710,59 @@ "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== dependencies: any-observable "^0.3.0" "@sideway/address@^4.1.3": version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" -"@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== +"@sinclair/typebox@^0.25.16": + version "0.25.23" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz#1c15b0d2b872d89cc0f47c7243eacb447df8b8bd" + integrity sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ== + "@sindresorhus/is@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@slorber/static-site-generator-webpack-plugin@^4.0.7": version "4.0.7" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" + resolved "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== dependencies: eval "^0.1.8" p-map "^4.0.0" webpack-sources "^3.2.2" -"@storybook/addon-actions@6.5.6", "@storybook/addon-actions@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.5.6.tgz#0e980a0a6d8d47db8031108ffa1fd51cc627a466" - integrity sha512-AGtzpWOU/B0FxcqFDM7E/KSHQyr6tMbVts77JlAKCIbwqEncD1LIQoz9CyMdbr1jynkep0Ck0JjcDdmp7CXVoQ== +"@storybook/addon-actions@6.5.16", "@storybook/addon-actions@^6.4.9": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.16.tgz#2d7679f64899bef165a338582cb928102a09e364" + integrity sha512-aADjilFmuD6TNGz2CRPSupnyiA/IGkPJHDBTqMpsDXTUr8xnuD122xkIhg6UxmCM2y1c+ncwYXy3WPK2xXK57g== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/theming" "6.5.6" + "@storybook/theming" "6.5.16" core-js "^3.8.2" fast-deep-equal "^3.1.3" global "^4.4.0" @@ -4720,18 +3776,18 @@ util-deprecate "^1.0.2" uuid-browser "^3.1.0" -"@storybook/addon-backgrounds@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.6.tgz#3763acdff1f2260286e165cf35e87d8097245496" - integrity sha512-D2khx57WBvQ2Ta/UMCZa8KQwAzVunk/oKmTJd6vau+1bm88wEx3a2seI9tZtC6nVHgHaBYgoH8os+7XpmlYlVQ== +"@storybook/addon-backgrounds@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.16.tgz#a93ea53955f714b4a4432dda1b88942cc87dd390" + integrity sha512-t7qooZ892BruhilFmzYPbysFwpULt/q4zYXNSmKVbAYta8UVvitjcU4F18p8FpWd9WvhiTr0SDlyhNZuzvDfug== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/theming" "6.5.6" + "@storybook/theming" "6.5.16" core-js "^3.8.2" global "^4.4.0" memoizerific "^1.11.3" @@ -4739,47 +3795,47 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-controls@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.5.6.tgz#bca1e33dd1edb059b6d6b1e1616c60ecdc9eb294" - integrity sha512-pJz2ltdL8d9/2wX1XOMdXeGwMNoBX5hIXkNfBCvBfOCmeVEXOczPOZARvwx4QTqmMSu1KikhFIGT64wwoETmBg== +"@storybook/addon-controls@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.16.tgz#5017805b8ca413edf6e9d87b90a9436e79eb5e59" + integrity sha512-kShSGjq1MjmmyL3l8i+uPz6yddtf82mzys0l82VKtcuyjrr5944wYFJ5NTXMfZxrO/U6FeFsfuFZE/k6ex3EMg== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-common" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-common" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/node-logger" "6.5.6" - "@storybook/store" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/node-logger" "6.5.16" + "@storybook/store" "6.5.16" + "@storybook/theming" "6.5.16" core-js "^3.8.2" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@6.5.6", "@storybook/addon-docs@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.5.6.tgz#39ea88cf5feebc82cc7faf9c0a10f9f3cba420bb" - integrity sha512-18MOB4Cvr10ibRlA58Y2MqaC0EM9NG758iSjweThaU4kZtSBSDn8R2qBLDGQPwEFkww+4+oAFXxR5/J0qO2xEw== +"@storybook/addon-docs@6.5.16", "@storybook/addon-docs@^6.4.9": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.16.tgz#3de912f51fb8e48b9a53b11a5b1cede067acbe70" + integrity sha512-QM9WDZG9P02UvbzLu947a8ZngOrQeAKAT8jCibQFM/+RJ39xBlfm8rm+cQy3dm94wgtjmVkA3mKGOV/yrrsddg== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.12" "@babel/preset-env" "^7.12.11" "@jest/transform" "^26.6.2" "@mdx-js/react" "^1.6.22" - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/docs-tools" "6.5.6" + "@storybook/docs-tools" "6.5.16" "@storybook/mdx1-csf" "^0.0.1" - "@storybook/node-logger" "6.5.6" - "@storybook/postinstall" "6.5.6" - "@storybook/preview-web" "6.5.6" - "@storybook/source-loader" "6.5.6" - "@storybook/store" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/node-logger" "6.5.16" + "@storybook/postinstall" "6.5.16" + "@storybook/preview-web" "6.5.16" + "@storybook/source-loader" "6.5.16" + "@storybook/store" "6.5.16" + "@storybook/theming" "6.5.16" babel-loader "^8.0.0" core-js "^3.8.2" fast-deep-equal "^3.1.3" @@ -4792,29 +3848,29 @@ util-deprecate "^1.0.2" "@storybook/addon-essentials@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.5.6.tgz#502e6152b729696d8de8c792fb44aae76fae934e" - integrity sha512-n+kDN/AI6NDJNJjofYXjGBh618Yg17DuRppFdXROnocwndKufuImF+/tRaQ0YLwXmnULpAiFSGbja6F0pc7fOw== + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.16.tgz#815991366a4a90b60bf0aa4022eb0bb0c2bb536d" + integrity sha512-TeoMr6tEit4Pe91GH6f8g/oar1P4M0JL9S6oMcFxxrhhtOGO7XkWD5EnfyCx272Ok2VYfE58FNBTGPNBVIqYKQ== dependencies: - "@storybook/addon-actions" "6.5.6" - "@storybook/addon-backgrounds" "6.5.6" - "@storybook/addon-controls" "6.5.6" - "@storybook/addon-docs" "6.5.6" - "@storybook/addon-measure" "6.5.6" - "@storybook/addon-outline" "6.5.6" - "@storybook/addon-toolbars" "6.5.6" - "@storybook/addon-viewport" "6.5.6" - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/node-logger" "6.5.6" + "@storybook/addon-actions" "6.5.16" + "@storybook/addon-backgrounds" "6.5.16" + "@storybook/addon-controls" "6.5.16" + "@storybook/addon-docs" "6.5.16" + "@storybook/addon-measure" "6.5.16" + "@storybook/addon-outline" "6.5.16" + "@storybook/addon-toolbars" "6.5.16" + "@storybook/addon-viewport" "6.5.16" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/node-logger" "6.5.16" core-js "^3.8.2" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" "@storybook/addon-google-analytics@^6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-google-analytics/-/addon-google-analytics-6.2.9.tgz#400ca73445eaedeeab58a37dc4f40d012182f5cd" + resolved "https://registry.npmjs.org/@storybook/addon-google-analytics/-/addon-google-analytics-6.2.9.tgz#400ca73445eaedeeab58a37dc4f40d012182f5cd" integrity sha512-L+cSXCWZ6y0QWd2gSeUGBfA6iVCirI/OF2TtlbeJkFshqtKlT2ypwtKaGHK9Euw1e0PbS0+RTUW31m96ofBhDg== dependencies: "@storybook/addons" "6.2.9" @@ -4825,15 +3881,15 @@ regenerator-runtime "^0.13.7" "@storybook/addon-links@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.5.6.tgz#1074d239c3c9c8b7168d20c9cc20b8918e4993a6" - integrity sha512-a4+9HLc6+M9qv5Fvezoc8AJYze8HDfHlsEFvCY1AtQiyVEmxFRNBdAp6w+/teNzihXWY78EKRcGM0jjyt+9mWg== + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.16.tgz#cacb20cd0656f0681a874709d428d3f3577828c3" + integrity sha512-P/mmqK57NGXnR0i3d/T5B0rIt0Lg8Yq+qionRr3LK3AwG/4yGnYt4GNomLEknn/eEwABYq1Q/Z1aOpgIhNdq5A== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/router" "6.5.6" + "@storybook/router" "6.5.16" "@types/qs" "^6.9.5" core-js "^3.8.2" global "^4.4.0" @@ -4842,60 +3898,60 @@ regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" -"@storybook/addon-measure@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-6.5.6.tgz#843de6286861fed1761544adecf3c49d2982136c" - integrity sha512-V+KKoCTMVakExVmNiSu/1AHVsOgxUt62wo/Xm2fJvtRz+y/5LFFCLnENcN7/8qDTya8vgaHY7FR69zHvGiR4SA== +"@storybook/addon-measure@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.16.tgz#7f7bfdc0b624fbf18386b20a5e460027bf87115c" + integrity sha512-DMwnXkmM2L6POTh4KaOWvOAtQ2p9Tr1UUNxz6VXiN5cKFohpCs6x0txdLU5WN8eWIq0VFsO7u5ZX34CGCc6gCg== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" core-js "^3.8.2" global "^4.4.0" -"@storybook/addon-outline@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-6.5.6.tgz#8fedfc7b86faf3dc552b7ca12972909fd022ee5b" - integrity sha512-/Bgo+yQSDwriAZ7pnO0kzaiyMg77bBgieEhrPpjb+AMlWIBU2j9rZYVdmi0egYy075Hle3E/hLwjG4FT4QIo5A== +"@storybook/addon-outline@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.16.tgz#6985b6a0b0122db36561c81dde2aa851604657b7" + integrity sha512-0du96nha4qltexO0Xq1xB7LeRSbqjC9XqtZLflXG7/X3ABoPD2cXgOV97eeaXUodIyb2qYBbHUfftBeA75x0+w== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" core-js "^3.8.2" global "^4.4.0" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.5.6.tgz#f4f311aaf918e1922d21e9c6f15b06e2cb7ac66c" - integrity sha512-9FvnuvLj8QdtSeY7QEuqJieNckwhIkSdmovaFzeToRzJso3eAmqoo6I6pp444QVVnMzrCl5As+2uAxhgaDLEXg== +"@storybook/addon-toolbars@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.16.tgz#9de04f9cc64b68d6cb680aa1c4fbf874e11afa32" + integrity sha512-y3PuUKiwOWrAvqx1YdUvArg0UaAwmboXFeR2bkrowk1xcT+xnRO3rML4npFeUl26OQ1FzwxX/cw6nknREBBLEA== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/theming" "6.5.16" core-js "^3.8.2" regenerator-runtime "^0.13.7" -"@storybook/addon-viewport@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.5.6.tgz#bc6456b1d2f586da104fdc6b91a2d0355530e730" - integrity sha512-zjBjMLfeqflHW7W7iFL5EvxtGbUg+4j+yHjONnKKpZteUjrX4fsBBMOL56mQsC0bAJEQCb3w2SFFskYBa4CzIw== +"@storybook/addon-viewport@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.16.tgz#226aa0ab93df68264269eb31adb104e7e48f6c68" + integrity sha512-1Vyqf1U6Qng6TXlf4SdqUKyizlw1Wn6+qW8YeA2q1lbkJqn3UlnHXIp8Q0t/5q1dK5BFtREox3+jkGwbJrzkmA== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" + "@storybook/theming" "6.5.16" core-js "^3.8.2" global "^4.4.0" memoizerific "^1.11.3" @@ -4904,7 +3960,7 @@ "@storybook/addons@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.2.9.tgz#b7ba2b9f0e15b852c7d6b57d04fb0a493c57477c" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.2.9.tgz#b7ba2b9f0e15b852c7d6b57d04fb0a493c57477c" integrity sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ== dependencies: "@storybook/api" "6.2.9" @@ -4917,18 +3973,18 @@ global "^4.4.0" regenerator-runtime "^0.13.7" -"@storybook/addons@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.5.6.tgz#ed7ab72ac3a4e2d74e2ba4d10b4a0721d66cd1cd" - integrity sha512-Ktv7Pk4iq+8+6yifXu3bOiC1ii9VXD93mmha7XcrdW+wl8jti9Ll5jLKEN0lAhd+Qupz4R0g9+znpRXk5n0pBg== +"@storybook/addons@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.16.tgz#07e8f2205f86fa4c9dada719e3e096cb468e3cdd" + integrity sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ== dependencies: - "@storybook/api" "6.5.6" - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/api" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/router" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/router" "6.5.16" + "@storybook/theming" "6.5.16" "@types/webpack-env" "^1.16.0" core-js "^3.8.2" global "^4.4.0" @@ -4936,7 +3992,7 @@ "@storybook/api@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.2.9.tgz#a9b46569192ad5d8da6435c9d63dc4b0c8463b51" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.2.9.tgz#a9b46569192ad5d8da6435c9d63dc4b0c8463b51" integrity sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ== dependencies: "@reach/router" "^1.3.4" @@ -4960,18 +4016,18 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/api@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.5.6.tgz#7f7c7bc561b3888033eb7074a8c9ecce9f07cb54" - integrity sha512-GHhjb6mji+R+FWytx7MIOKqca49ZXjvnIPpyp5zXAtgdk2Yn2j8C0MRPO1ovh4nHKWVvx6larmhskRxfUjk06g== +"@storybook/api@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.16.tgz#897915b76de05587fd702951d5d836f708043662" + integrity sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA== dependencies: - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/router" "6.5.6" + "@storybook/router" "6.5.16" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.5.6" + "@storybook/theming" "6.5.16" core-js "^3.8.2" fast-deep-equal "^3.1.3" global "^4.4.0" @@ -4983,28 +4039,28 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-webpack4@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.5.6.tgz#49eb7272402ff185ae12ffc679aef4677c48537d" - integrity sha512-/nACQ5SoddCs1geGUKXrrXiYDvYdTVXWXc0L6mXawjYANBeWIkAKFlhRpoXGN/KiFuuExO2+UgNCKlUyD0a51Q== +"@storybook/builder-webpack4@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.16.tgz#ac468d244835a7f3bd01936398fee47244da35c1" + integrity sha512-YqDIrVNsUo8r9xc6AxsYDLxVYtMgl5Bxk+8/h1adsOko+jAFhdg6hOcAVxEmoSI0TMASOOVMFlT2hr23ppN2rQ== dependencies: "@babel/core" "^7.12.10" - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/channel-postmessage" "6.5.6" - "@storybook/channels" "6.5.6" - "@storybook/client-api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/core-events" "6.5.6" - "@storybook/node-logger" "6.5.6" - "@storybook/preview-web" "6.5.6" - "@storybook/router" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/core-events" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/preview-web" "6.5.16" + "@storybook/router" "6.5.16" "@storybook/semver" "^7.3.2" - "@storybook/store" "6.5.6" - "@storybook/theming" "6.5.6" - "@storybook/ui" "6.5.6" + "@storybook/store" "6.5.16" + "@storybook/theming" "6.5.16" + "@storybook/ui" "6.5.16" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" autoprefixer "^9.8.6" @@ -5037,26 +4093,26 @@ webpack-virtual-modules "^0.2.2" "@storybook/builder-webpack5@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-6.5.6.tgz#ec72827b3b6999362102eb6d173465ae29a94a9d" - integrity sha512-inR1xh16barDutfoxv8MCTQTztASLpewDsu6YDs87ifYlYfWuS/NlbY290EWj4D8je1LY53Rpbpkorj/49wCeA== + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.16.tgz#2f260e29fbc87f6f3bb3212459048ce37f3fb54e" + integrity sha512-kh8Sofm1sbijaHDWtm0sXabqACHVFjikU/fIkkW786kpjoPIPIec1a+hrLgDsZxMU3I7XapSOaCFzWt6FjVXjg== dependencies: "@babel/core" "^7.12.10" - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/channel-postmessage" "6.5.6" - "@storybook/channels" "6.5.6" - "@storybook/client-api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/core-events" "6.5.6" - "@storybook/node-logger" "6.5.6" - "@storybook/preview-web" "6.5.6" - "@storybook/router" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/core-events" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/preview-web" "6.5.16" + "@storybook/router" "6.5.16" "@storybook/semver" "^7.3.2" - "@storybook/store" "6.5.6" - "@storybook/theming" "6.5.6" + "@storybook/store" "6.5.16" + "@storybook/theming" "6.5.16" "@types/node" "^14.0.10 || ^16.0.0" babel-loader "^8.0.0" babel-plugin-named-exports-order "^0.0.2" @@ -5080,60 +4136,60 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.4.1" -"@storybook/channel-postmessage@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.5.6.tgz#3cfaef29c9ff62321152924de478058fdfd9d812" - integrity sha512-kyYO84hItSE1SaEI1xpMYqJOM3MJ2Y2WHx1Hxu5prq2T2cIgUGURyNf3+5G0BLTf2XGNEN/7YYv9rHmQ9GUz8g== +"@storybook/channel-postmessage@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.16.tgz#06167c0a66c06b2b5f8ff01d1dd436fff8119a15" + integrity sha512-fZZSN29dsUArWOx7e7lTdMA9+7zijVwCwbvi2Fo4fqhRLh1DsTb/VXfz1FKMCWAjNlcX7QQvV25tnxbqsD6lyw== dependencies: - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" core-js "^3.8.2" global "^4.4.0" qs "^6.10.0" telejson "^6.0.8" -"@storybook/channel-websocket@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-6.5.6.tgz#9d31ef139f6d86b29278452e9977a47fd3cc9706" - integrity sha512-d09LfP4zVYCCeuCBn+R41jINUBzhRt78tKk5e1wEsMklV5p+l8Zoi3oJD/UQ/EgtMcnC1dKi3WfAPyx3U/wdgg== +"@storybook/channel-websocket@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.16.tgz#41f69ca9444a4dfbf72580b4696900c5b1d2b817" + integrity sha512-wJg2lpBjmRC2GJFzmhB9kxlh109VE58r/0WhFtLbwKvPqsvGf82xkBEl6BtBCvIQ4stzYnj/XijjA8qSi2zpOg== dependencies: - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" core-js "^3.8.2" global "^4.4.0" telejson "^6.0.8" "@storybook/channels@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.2.9.tgz#a9fd7f25102cbec15fb56f76abf891b7b214e9de" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.2.9.tgz#a9fd7f25102cbec15fb56f76abf891b7b214e9de" integrity sha512-6dC8Fb2ipNyOQXnUZMDeEUaJGH5DMLzyHlGLhVyDtrO5WR6bO8mQdkzf4+5dSKXgCBNX0BSkssXth4pDjn18rg== dependencies: core-js "^3.8.2" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channels@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.5.6.tgz#a373127f0dd841dabfc31607e5cdac6245444b6c" - integrity sha512-rS0Dk9fSiMBsPvkiMo9CuvDCoXbGmYKiX/juS3F4u+sedhH+XtH4jFf49lJWoNVAE6eJPFyXATU4p1mm8Z85kQ== +"@storybook/channels@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.16.tgz#3fb9a3b5666ecb951a2d0cf8b0699b084ef2d3c6" + integrity sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg== dependencies: core-js "^3.8.2" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-api@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.5.6.tgz#935026e682d41f8f9cd122dccd8a9ae3ebc3b613" - integrity sha512-+PV3eZ0Hr15volHE/ds6pxsoitsHkUuwGMVLUGvX5JuepDlhWOkQzCxPw2BuABJl6x40/w/Pj2DIyTrg37ZThg== +"@storybook/client-api@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.16.tgz#13e5a7c3d1f0f951ec4ef51cfcf2c5aafb560e12" + integrity sha512-i3UwkzzUFw8I+E6fOcgB5sc4oU2fhvaKnqC1mpd9IYGJ9JN9MnGIaVl3Ko28DtFItu/QabC9JsLIJVripFLktQ== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/channel-postmessage" "6.5.6" - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/store" "6.5.6" + "@storybook/store" "6.5.16" "@types/qs" "^6.9.5" "@types/webpack-env" "^1.16.0" core-js "^3.8.2" @@ -5150,50 +4206,49 @@ "@storybook/client-logger@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.2.9.tgz#77c1ea39684ad2a2cf6836051b381fc5b354e132" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.2.9.tgz#77c1ea39684ad2a2cf6836051b381fc5b354e132" integrity sha512-IfOQZuvpjh66qBInQCJOb9S0dTGpzZ/Cxlcvokp+PYt95KztaWN3mPm+HaDQCeRsrWNe0Bpm1zuickcJ6dBOXg== dependencies: core-js "^3.8.2" global "^4.4.0" -"@storybook/client-logger@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.5.6.tgz#6ce56c687dcd7772247ffa3915b44737a62f729c" - integrity sha512-hJzhn5EO0S4fUAZkKzBGNACJfupV9n+7TSIaU4mpVP+/ImS9uPdorAAtyqp5HC6R6vA67POoSgX0+qPgZnWvaw== +"@storybook/client-logger@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.16.tgz#955cc46b389e7151c9eb1585a75e6a0605af61a1" + integrity sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q== dependencies: core-js "^3.8.2" global "^4.4.0" -"@storybook/components@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.5.6.tgz#83f03967bdd1c509e5d18111b924a8cb0789718a" - integrity sha512-Qh40wMkqWD3ZbGqxqa0pi5JFWazIbcZWbqUakH9zARgLk+LBrpJvPuu7GmQrDUtJTA33H4tD/4ujt6AibnaQwQ== +"@storybook/components@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/components/-/components-6.5.16.tgz#f8dc51213bc08fe32154be964e1e8b0e2f670ed6" + integrity sha512-LzBOFJKITLtDcbW9jXl0/PaG+4xAz25PK8JxPZpIALbmOpYWOAPcO6V9C2heX6e6NgWFMUxjplkULEk9RCQMNA== dependencies: - "@storybook/client-logger" "6.5.6" + "@storybook/client-logger" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/theming" "6.5.6" - "@types/react-syntax-highlighter" "11.0.5" + "@storybook/theming" "6.5.16" core-js "^3.8.2" + memoizerific "^1.11.3" qs "^6.10.0" - react-syntax-highlighter "^15.4.5" regenerator-runtime "^0.13.7" util-deprecate "^1.0.2" -"@storybook/core-client@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.5.6.tgz#d09d144745c6d8a24dd002ae60ffa9b0c500ae54" - integrity sha512-Xmjt95GYYVRp7ra49Y955BLH/FYlOmuLC4aFTGurjmCay7zUqvExxFk9AUKOkyBb1/S/8iQCG59D0ES6YWoMRw== +"@storybook/core-client@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.16.tgz#ed2328fd38c6111fe887f6a91b28d9dc2b17092a" + integrity sha512-14IRaDrVtKrQ+gNWC0wPwkCNfkZOKghYV/swCUnQX3rP99defsZK8Hc7xHIYoAiOP5+sc3sweRAxgmFiJeQ1Ig== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/channel-postmessage" "6.5.6" - "@storybook/channel-websocket" "6.5.6" - "@storybook/client-api" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/channel-websocket" "6.5.16" + "@storybook/client-api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/preview-web" "6.5.6" - "@storybook/store" "6.5.6" - "@storybook/ui" "6.5.6" + "@storybook/preview-web" "6.5.16" + "@storybook/store" "6.5.16" + "@storybook/ui" "6.5.16" airbnb-js-shims "^2.2.1" ansi-to-html "^0.6.11" core-js "^3.8.2" @@ -5205,10 +4260,10 @@ unfetch "^4.2.0" util-deprecate "^1.0.2" -"@storybook/core-common@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.5.6.tgz#12c717f2fb9cad77b38e122fb89c15566130798a" - integrity sha512-+k+D9CzyFHNAy59jt2sfKnb/KU/nXO1hvBVaJAhdocjrDMvHtwYuXWWQrWYX3/VGp9wCa9TC0JG1kz+DWSYXaQ== +"@storybook/core-common@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.16.tgz#db80aa6f220a576a83db821f720e103190a914ae" + integrity sha512-2qtnKP3TTOzt2cp6LXKRTh7XrI9z5VanMnMTgeoFcA5ebnndD4V6BExQUdYPClE/QooLx6blUWNgS9dFEpjSqQ== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-proposal-class-properties" "^7.12.1" @@ -5232,7 +4287,7 @@ "@babel/preset-react" "^7.12.10" "@babel/preset-typescript" "^7.12.7" "@babel/register" "^7.12.1" - "@storybook/node-logger" "6.5.6" + "@storybook/node-logger" "6.5.16" "@storybook/semver" "^7.3.2" "@types/node" "^14.0.10 || ^16.0.0" "@types/pretty-hrtime" "^1.0.0" @@ -5249,7 +4304,7 @@ glob "^7.1.6" handlebars "^4.7.7" interpret "^2.2.0" - json5 "^2.1.3" + json5 "^2.2.3" lazy-universal-dotenv "^3.0.1" picomatch "^2.3.0" pkg-dir "^5.0.0" @@ -5263,35 +4318,35 @@ "@storybook/core-events@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.2.9.tgz#4f12947cd15d1eb3c4109923657c012feef521cd" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.2.9.tgz#4f12947cd15d1eb3c4109923657c012feef521cd" integrity sha512-xQmbX/oYQK1QsAGN8hriXX5SUKOoTUe3L4dVaVHxJqy7MReRWJpprJmCpbAPJzWS6WCbDFfCM5kVEexHLOzJlQ== dependencies: core-js "^3.8.2" -"@storybook/core-events@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.5.6.tgz#b4e9150216810621ba00d8d1eb3f9414493d6e61" - integrity sha512-bzktgM1i0QPrayH1ANbKb7nYpehSpi5QHWps2vVQbvtpI/pGlTtpde1e87vfAt74Bvsvd3/9IpQkQKteDODAkA== +"@storybook/core-events@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz#b1c265dac755007dae172d9d4b72656c9e5d7bb3" + integrity sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g== dependencies: core-js "^3.8.2" -"@storybook/core-server@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.5.6.tgz#4fe464847297117089900d5f9cc9acc08d638723" - integrity sha512-65kwbSXsKPl/0BKjGr9RTihv6jYGGIG/prfLscZPtm3u4/Z8ZxCX94rznztxcUatjLlUfKJ8iimizhUOIa0FJA== +"@storybook/core-server@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.16.tgz#f40de3413de49388129d29c74e5e48321af03f12" + integrity sha512-/3NPfmNyply395Dm0zaVZ8P9aruwO+tPx4D6/jpw8aqrRSwvAMndPMpoMCm0NXcpSm5rdX+Je4S3JW6JcggFkA== dependencies: "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-webpack4" "6.5.6" - "@storybook/core-client" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/builder-webpack4" "6.5.16" + "@storybook/core-client" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/csf-tools" "6.5.6" - "@storybook/manager-webpack4" "6.5.6" - "@storybook/node-logger" "6.5.6" + "@storybook/csf-tools" "6.5.16" + "@storybook/manager-webpack4" "6.5.16" + "@storybook/node-logger" "6.5.16" "@storybook/semver" "^7.3.2" - "@storybook/store" "6.5.6" - "@storybook/telemetry" "6.5.6" + "@storybook/store" "6.5.16" + "@storybook/telemetry" "6.5.16" "@types/node" "^14.0.10 || ^16.0.0" "@types/node-fetch" "^2.5.7" "@types/pretty-hrtime" "^1.0.0" @@ -5326,18 +4381,18 @@ ws "^8.2.3" x-default-browser "^0.4.0" -"@storybook/core@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.5.6.tgz#bc1792154ea010500950f0d43c78ae554ea4f9ec" - integrity sha512-DS6Q8SrEXBDoDS2K865NoWggSXEg8L9p+jx8sILLkLrr2QXJT0x6YIFSwEh6rGwkahxDV5ikON/rW39Wlxzk1w== +"@storybook/core@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/core/-/core-6.5.16.tgz#ae994f01327fe81b6e652963c35bac7a74f0da06" + integrity sha512-CEF3QFTsm/VMnMKtRNr4rRdLeIkIG0g1t26WcmxTdSThNPBd8CsWzQJ7Jqu7CKiut+MU4A1LMOwbwCE5F2gmyA== dependencies: - "@storybook/core-client" "6.5.6" - "@storybook/core-server" "6.5.6" + "@storybook/core-client" "6.5.16" + "@storybook/core-server" "6.5.16" -"@storybook/csf-tools@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-6.5.6.tgz#147ced43313ee217c41b00d5fe32a80cb29b03bd" - integrity sha512-Gfah+5mEUoVG7v+E23svRjKAh546KCPIcwAvGU3m26j3hNbpvKq8edKDr+CCMfehG8VEGSZWfZPsgX04c/ItcA== +"@storybook/csf-tools@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.16.tgz#367889a3ddb33c93261129104ec2958215ec5459" + integrity sha512-+WD4sH/OwAfXZX3IN6/LOZ9D9iGEFcN+Vvgv9wOsLRgsAZ10DG/NK6c1unXKDM/ogJtJYccNI8Hd+qNE/GFV6A== dependencies: "@babel/core" "^7.12.10" "@babel/generator" "^7.12.11" @@ -5356,45 +4411,45 @@ "@storybook/csf@0.0.1": version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== dependencies: lodash "^4.17.15" "@storybook/csf@0.0.2--canary.4566f4d.1": version "0.0.2--canary.4566f4d.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz#dac52a21c40ef198554e71fe4d20d61e17f65327" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz#dac52a21c40ef198554e71fe4d20d61e17f65327" integrity sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ== dependencies: lodash "^4.17.15" -"@storybook/docs-tools@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-6.5.6.tgz#cf27e06ce25c55327048662f833628d2e329a140" - integrity sha512-QwOFWVzce4m5fQaC39rSUBVzNplpcSfGyIN3rBBen4wHllj43y7i30A69jSW24M15CKdcJmfDaLwN00s7y3ZHQ== +"@storybook/docs-tools@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.16.tgz#1ec5433eeab63a214d37ffc4660cdaec9704ac39" + integrity sha512-o+rAWPRGifjBF5xZzTKOqnHN3XQWkl0QFJYVDIiJYJrVll7ExCkpEq/PahOGzIBBV+tpMstJgmKM3lr/lu/jmg== dependencies: "@babel/core" "^7.12.10" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/store" "6.5.6" + "@storybook/store" "6.5.16" core-js "^3.8.2" doctrine "^3.0.0" lodash "^4.17.21" regenerator-runtime "^0.13.7" -"@storybook/manager-webpack4@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/manager-webpack4/-/manager-webpack4-6.5.6.tgz#3a356ee52cb972533a98e4da426bc6cc3b8abaf3" - integrity sha512-GaUT1bNmGebq8Ci52M07XF0Zn9Ak7L8ZaKn8rdBJ4VSPhg0vEAeo7trD3aur3+h/3gLQmK64LhiNSOfvZfQDAw== +"@storybook/manager-webpack4@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.16.tgz#7033228d38f048ceff3d403ba918d7f206b926a5" + integrity sha512-5VJZwmQU6AgdsBPsYdu886UKBHQ9SJEnFMaeUxKEclXk+iRsmbzlL4GHKyVd6oGX/ZaecZtcHPR6xrzmA4Ziew== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" "@babel/preset-react" "^7.12.10" - "@storybook/addons" "6.5.6" - "@storybook/core-client" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/node-logger" "6.5.6" - "@storybook/theming" "6.5.6" - "@storybook/ui" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/core-client" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/theming" "6.5.16" + "@storybook/ui" "6.5.16" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" babel-loader "^8.0.0" @@ -5423,19 +4478,19 @@ webpack-virtual-modules "^0.2.2" "@storybook/manager-webpack5@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/manager-webpack5/-/manager-webpack5-6.5.6.tgz#7357d97f91e60810ea866f099aa1b82b5afc0f73" - integrity sha512-U5OIMs1PNjZZRjOvV2Bo05+1dzvV30o4Lw5sgeyH9Qr08p79nHT4iFSaVF2W01zGja6XlneqFB9hBqBHoocJWQ== + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.16.tgz#48b223557d9633614ff8c6e3227c01a57ab4eb55" + integrity sha512-OtxXv8JCe0r/0rE5HxaFicsNsXA+fqZxzokxquFFgrYf/1Jg4d7QX6/pG5wINF+5qInJfVkRG6xhPzv1s5bk9Q== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" "@babel/preset-react" "^7.12.10" - "@storybook/addons" "6.5.6" - "@storybook/core-client" "6.5.6" - "@storybook/core-common" "6.5.6" - "@storybook/node-logger" "6.5.6" - "@storybook/theming" "6.5.6" - "@storybook/ui" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/core-client" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/theming" "6.5.16" + "@storybook/ui" "6.5.16" "@types/node" "^14.0.10 || ^16.0.0" babel-loader "^8.0.0" case-sensitive-paths-webpack-plugin "^2.3.0" @@ -5462,7 +4517,7 @@ "@storybook/mdx1-csf@^0.0.1": version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz#d4184e3f6486fade9f7a6bfaf934d9bc07718d5b" + resolved "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz#d4184e3f6486fade9f7a6bfaf934d9bc07718d5b" integrity sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg== dependencies: "@babel/generator" "^7.12.11" @@ -5477,10 +4532,10 @@ prettier ">=2.2.1 <=2.3.0" ts-dedent "^2.0.0" -"@storybook/node-logger@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.5.6.tgz#24422886f894978b10c2e23feb6bf0657f5e514f" - integrity sha512-bT0R0skDWW9iJS8AIG9zfSF8XzTffdc8hRlpXUF9+VQKds+8H9FyoV4tl8ySCuNNunt8Ic9GvW3Fakq49FUcgw== +"@storybook/node-logger@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.16.tgz#d57fd6204c2abfbc297551d98ad5475dd73207cc" + integrity sha512-YjhBKrclQtjhqFNSO+BZK+RXOx6EQypAELJKoLFaawg331e8VUfvUuRCNB3fcEWp8G9oH13PQQte0OTjLyyOYg== dependencies: "@types/npmlog" "^4.1.2" chalk "^4.1.0" @@ -5488,24 +4543,24 @@ npmlog "^5.0.1" pretty-hrtime "^1.0.3" -"@storybook/postinstall@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.5.6.tgz#df0bab91b0d1f576a9d4d63842ad56238e26c9d6" - integrity sha512-MPrlmVOXbfAiSaGzG1jgUM4l2zXOI9h3pvrh+0dQLJYP3tjO+5RNmJKMjH8c1PkTcAeoHkp1gUYZ0KKy2imRRQ== +"@storybook/postinstall@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.16.tgz#20aa02fd4513fa0b60ed838b413c46f351f64f60" + integrity sha512-08K2q+qN6pqyPW7PHLCZ5G5Xa6Wosd6t0F16PQ4abX2ItlJLabVoJN5mZ0gm/aeLTjD8QYr8IDvacu4eXh0SVA== dependencies: core-js "^3.8.2" -"@storybook/preview-web@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/preview-web/-/preview-web-6.5.6.tgz#d4cf4a90a27819aa3315b48b21df6a515bb49b7a" - integrity sha512-fjWfe1ZqtMMS3UFiL6XDYVR0T5QVhXIp/Ax19tuW2VJ/NL/zl4+c9v9lx5jSY5iD5tKwYYRrbH8VS2Pm/CNAzA== +"@storybook/preview-web@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.16.tgz#1d32a72be25776f9597e33ffc1914f3430fae689" + integrity sha512-IJnvfe2sKCfk7apN9Fu9U8qibbarrPX5JB55ZzK1amSHVmSDuYk5MIMc/U3NnSQNnvd1DO5v/zMcGgj563hrtg== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/channel-postmessage" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/store" "6.5.6" + "@storybook/store" "6.5.16" ansi-to-html "^0.6.11" core-js "^3.8.2" global "^4.4.0" @@ -5519,7 +4574,7 @@ "@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": version "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" - resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz#3103532ff494fb7dc3cf835f10740ecf6a26c0f9" + resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz#3103532ff494fb7dc3cf835f10740ecf6a26c0f9" integrity sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w== dependencies: debug "^4.1.1" @@ -5531,23 +4586,23 @@ tslib "^2.0.0" "@storybook/react@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.5.6.tgz#9b7ddc678790a8af100c26b8d47c332bc6f4fc84" - integrity sha512-lU2ggvZe9PbKWK4cbwHI6eDT7tlRAqdx489kLrfKhGTUVE8zhc/uosVEMpxbxS/zf1YYnXumr2DH1Uw2S3JeqA== + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/react/-/react-6.5.16.tgz#f7b82ba87f5bb73b4e4e83cce298a98710a88398" + integrity sha512-cBtNlOzf/MySpNLBK22lJ8wFU22HnfTB2xJyBk7W7Zi71Lm7Uxkhv1Pz8HdiQndJ0SlsAAQOWjQYsSZsGkZIaA== dependencies: "@babel/preset-flow" "^7.12.1" "@babel/preset-react" "^7.12.10" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" - "@storybook/addons" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core" "6.5.6" - "@storybook/core-common" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core" "6.5.16" + "@storybook/core-common" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/docs-tools" "6.5.6" - "@storybook/node-logger" "6.5.6" + "@storybook/docs-tools" "6.5.16" + "@storybook/node-logger" "6.5.16" "@storybook/react-docgen-typescript-plugin" "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" "@storybook/semver" "^7.3.2" - "@storybook/store" "6.5.6" + "@storybook/store" "6.5.16" "@types/estree" "^0.0.51" "@types/node" "^14.14.20 || ^16.0.0" "@types/webpack-env" "^1.16.0" @@ -5573,7 +4628,7 @@ "@storybook/router@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.2.9.tgz#547543031dd8330870bb6b473dcf7e51982e841c" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.2.9.tgz#547543031dd8330870bb6b473dcf7e51982e841c" integrity sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg== dependencies: "@reach/router" "^1.3.4" @@ -5587,47 +4642,49 @@ qs "^6.10.0" ts-dedent "^2.0.0" -"@storybook/router@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.5.6.tgz#83b442635c5a32a0eb0b4cd3f2da8b7cbecc32e7" - integrity sha512-SL9X/+bkJxafH5V9r65liMgs+EvGddMCQ/4JP/p3GIu6+2G3pW613Ww5sqCBCB1R4zoYcsMT7F1q/D5NWByVHg== +"@storybook/router@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.16.tgz#28fb4d34e8219351a40bee1fc94dcacda6e1bd8b" + integrity sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ== dependencies: - "@storybook/client-logger" "6.5.6" + "@storybook/client-logger" "6.5.16" core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" regenerator-runtime "^0.13.7" "@storybook/semver@^7.3.2": version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" + resolved "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== dependencies: core-js "^3.6.5" find-up "^4.1.0" -"@storybook/source-loader@6.5.6", "@storybook/source-loader@^6.4.9": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.5.6.tgz#e20c6a827c2021bbbab05d0bb2c1e6fb66e133a9" - integrity sha512-KsV9DU3JucYjWHq55f1bOu52mprgSpTIRUnvK2BojQdjY+kqN2ow0pP/I9FZzNpEKKsGFWdnREfYM5dYHZyvLw== +"@storybook/source-loader@6.5.16", "@storybook/source-loader@^6.4.9": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.16.tgz#b691a024e6ff36bbd1144ecb4a65986f0e149741" + integrity sha512-fyVl4jrM/5JLrb48aqXPu7sTsmySQaVGFp1zfeqvPPlJRFMastDrePm5XGPN7Qjv1wsKmpuBvuweFKOT1pru3g== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/client-logger" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/client-logger" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" core-js "^3.8.2" estraverse "^5.2.0" global "^4.4.0" - loader-utils "^2.0.0" + loader-utils "^2.0.4" lodash "^4.17.21" prettier ">=2.2.1 <=2.3.0" regenerator-runtime "^0.13.7" -"@storybook/store@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/store/-/store-6.5.6.tgz#0250d92f10d9590f4df2f7e6e11a07103055c350" - integrity sha512-ftU40jN5IV26Mj4QjqgsooWFYXDNtcwByH9JrbIlZv7L8HySqVHqeOMrk2Bbt2EkM3urhc5yd0Bbr8EuKlbZVQ== +"@storybook/store@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/store/-/store-6.5.16.tgz#b308701293a3a11bfcc766770584495874fd17da" + integrity sha512-g+bVL5hmMq/9cM51K04e37OviUPHT0rHHrRm5wj/hrf18Kd9120b3sxdQ5Dc+HZ292yuME0n+cyrQPTYx9Epmw== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/core-events" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/core-events" "6.5.16" "@storybook/csf" "0.0.2--canary.4566f4d.1" core-js "^3.8.2" fast-deep-equal "^3.1.3" @@ -5641,13 +4698,13 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/telemetry@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-6.5.6.tgz#a7da1fa0019b307ceac24e65ff1e14ee0f36a8a5" - integrity sha512-l0vbStCgVA9u0ITvowZ1LNxmf32vAAdnPqSmB9DdA3ZO2wCpttW9rPyg1O4OV8c5uq7QJZ7mrKZ04p9SLo8wrw== +"@storybook/telemetry@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.16.tgz#b13c8133e02c28e37b7716c987e7414b1ddc5363" + integrity sha512-CWr5Uko1l9jJW88yTXsZTj/3GTabPvw0o7pDPOXPp8JRZiJTxv1JFaFCafhK9UzYbgcRuGfCC8kEWPZims7iKA== dependencies: - "@storybook/client-logger" "6.5.6" - "@storybook/core-common" "6.5.6" + "@storybook/client-logger" "6.5.16" + "@storybook/core-common" "6.5.16" chalk "^4.1.0" core-js "^3.8.2" detect-package-manager "^2.0.1" @@ -5661,7 +4718,7 @@ "@storybook/theming@6.2.9": version "6.2.9" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.2.9.tgz#16bf40180861f222c7ed1d80abd5d1e3cb315660" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.2.9.tgz#16bf40180861f222c7ed1d80abd5d1e3cb315660" integrity sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA== dependencies: "@emotion/core" "^10.1.1" @@ -5677,36 +4734,39 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/theming@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.5.6.tgz#519e1675a7ff5c780f5a41b05b4b679c37b62fe8" - integrity sha512-JEKl9gdVD2Ef9xSwRtaq6EpjJD5xe7X2OP/4e61ucrp/rSOk7SOpYUZYQh6PhYLGhnGbgQkedVVc9CUhK8bs6Q== +"@storybook/theming@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz#b999bdb98945b605b93b9dfdf7408535b701e2aa" + integrity sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ== dependencies: - "@storybook/client-logger" "6.5.6" + "@storybook/client-logger" "6.5.16" core-js "^3.8.2" + memoizerific "^1.11.3" regenerator-runtime "^0.13.7" -"@storybook/ui@6.5.6": - version "6.5.6" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.5.6.tgz#3b312728c11d1bdba9cac41d18d91b6806496028" - integrity sha512-EU/YGczcA/v7jHlXIJ7CytK+FH2X9tlsjQbcQW8niPkwtk/gvG7vTfNhanbDlWMKnDLuFWhyHJ33nrW2mIyqkw== +"@storybook/ui@6.5.16": + version "6.5.16" + resolved "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.16.tgz#c73bf456e672ecf2370b4365070088487fc0ce57" + integrity sha512-rHn/n12WM8BaXtZ3IApNZCiS+C4Oc5+Lkl4MoctX8V7QSml0SxZBB5hsJ/AiWkgbRxjQpa/L/Nt7/Qw0FjTH/A== dependencies: - "@storybook/addons" "6.5.6" - "@storybook/api" "6.5.6" - "@storybook/channels" "6.5.6" - "@storybook/client-logger" "6.5.6" - "@storybook/components" "6.5.6" - "@storybook/core-events" "6.5.6" - "@storybook/router" "6.5.6" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-events" "6.5.16" + "@storybook/router" "6.5.16" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.5.6" + "@storybook/theming" "6.5.16" core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" regenerator-runtime "^0.13.7" resolve-from "^5.0.0" "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: ejs "^3.1.6" @@ -5716,87 +4776,87 @@ "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== -"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" - integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + +"@svgr/babel-plugin-remove-jsx-attribute@*": + version "6.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e" + integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA== "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== -"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" - integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + version "6.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8" + integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw== "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== -"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" - integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== - "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" - integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== "@svgr/babel-plugin-svg-dynamic-title@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== -"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" - integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== "@svgr/babel-plugin-svg-em-dimensions@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== -"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" - integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== "@svgr/babel-plugin-transform-react-native-svg@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== -"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" - integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== "@svgr/babel-plugin-transform-svg-component@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== -"@svgr/babel-plugin-transform-svg-component@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" - integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== "@svgr/babel-preset@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" @@ -5808,56 +4868,58 @@ "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" "@svgr/babel-plugin-transform-svg-component" "^5.5.0" -"@svgr/babel-preset@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" - integrity sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ== +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" - "@svgr/babel-plugin-transform-svg-component" "^6.2.0" + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" "@svgr/core@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: "@svgr/plugin-jsx" "^5.5.0" camelcase "^6.2.0" cosmiconfig "^7.0.0" -"@svgr/core@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" - integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== +"@svgr/core@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== dependencies: - "@svgr/plugin-jsx" "^6.2.1" + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" camelcase "^6.2.0" cosmiconfig "^7.0.1" "@svgr/hast-util-to-babel-ast@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: "@babel/types" "^7.12.6" -"@svgr/hast-util-to-babel-ast@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" - integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== dependencies: - "@babel/types" "^7.15.6" - entities "^3.0.1" + "@babel/types" "^7.20.0" + entities "^4.4.0" "@svgr/plugin-jsx@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== dependencies: "@babel/core" "^7.12.3" @@ -5865,37 +4927,37 @@ "@svgr/hast-util-to-babel-ast" "^5.5.0" svg-parser "^2.0.2" -"@svgr/plugin-jsx@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" - integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.2.1" - svg-parser "^2.0.2" + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" "@svgr/plugin-svgo@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: cosmiconfig "^7.0.0" deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/plugin-svgo@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" - integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== +"@svgr/plugin-svgo@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" + integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== dependencies: cosmiconfig "^7.0.1" deepmerge "^4.2.2" - svgo "^2.5.0" + svgo "^2.8.0" "@svgr/webpack@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== dependencies: "@babel/core" "^7.12.3" @@ -5908,67 +4970,67 @@ loader-utils "^2.0.0" "@svgr/webpack@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" - integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== + version "6.5.1" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" + integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== dependencies: - "@babel/core" "^7.15.5" - "@babel/plugin-transform-react-constant-elements" "^7.14.5" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.14.5" - "@babel/preset-typescript" "^7.15.0" - "@svgr/core" "^6.2.1" - "@svgr/plugin-jsx" "^6.2.1" - "@svgr/plugin-svgo" "^6.2.0" + "@babel/core" "^7.19.6" + "@babel/plugin-transform-react-constant-elements" "^7.18.12" + "@babel/preset-env" "^7.19.4" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@svgr/core" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + "@svgr/plugin-svgo" "^6.5.1" "@szmarczak/http-timer@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/babel__core@^7.1.0": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + version "7.20.0" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" - integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + version "7.18.3" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -5976,21 +5038,21 @@ "@types/bonjour@^3.5.9": version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" "@types/child-process-promise@^2.2.1": version "2.2.2" - resolved "https://registry.yarnpkg.com/@types/child-process-promise/-/child-process-promise-2.2.2.tgz#ac7d640a6289f7caa6102d92d83a0123a07a4937" + resolved "https://registry.npmjs.org/@types/child-process-promise/-/child-process-promise-2.2.2.tgz#ac7d640a6289f7caa6102d92d83a0123a07a4937" integrity sha512-4eGTIhKW0jb9DlS81Fgo/UyZ12DMhDhz3Ec8tdHW53l4ubteynNIuy7Z1HNnyHn1jTzXa/o9iX0WoAdiSoDs+Q== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== dependencies: "@types/express-serve-static-core" "*" @@ -5998,135 +5060,148 @@ "@types/connect@*": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" - integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== + version "8.21.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" + integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/eslint@^7.28.2": +"@types/eslint@^7.29.0": version "7.29.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/estree@*": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/execa@^0.9.0": version "0.9.0" - resolved "https://registry.yarnpkg.com/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93" + resolved "https://registry.npmjs.org/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93" integrity sha512-mgfd93RhzjYBUHHV532turHC2j4l/qxsF/PbfDmprHDEUHmNZGlDn1CEsulGK3AfsPdhkWzZQT/S/k0UGhLGsA== dependencies: "@types/node" "*" -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + version "4.17.17" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" + "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@*", "@types/glob@^7.1.1": +"@types/glob@*": + version "8.0.1" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.1.tgz#6e3041640148b7764adf21ce5c7138ad454725b0" + integrity sha512-8bVUjXZvJacUFkJXHdyZ9iH1Eaj5V7I8c4NdH5sQJsdXkqT4CA5Dhb4yb4VE/3asyx4L9ayZr1NIhTsWHczmMw== + dependencies: + "@types/minimatch" "^5.1.2" + "@types/node" "*" + +"@types/glob@^7.1.1": version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.6" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" "@types/hast@^2.0.0": version "2.3.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== dependencies: "@types/unist" "*" "@types/history@^4.7.11": version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/html-minifier-terser@^5.0.0": version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== "@types/html-minifier-terser@^6.0.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.8": version "1.17.9" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/is-function@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.1.tgz#2d024eace950c836d9e3335a66b97960ae41d022" + resolved "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz#2d024eace950c836d9e3335a66b97960ae41d022" integrity sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== dependencies: "@types/istanbul-lib-coverage" "*" @@ -6134,144 +5209,144 @@ "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^27.5.0": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.1.tgz#2c8b6dc6ff85c33bcd07d0b62cb3d19ddfdb3ab9" - integrity sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ== + version "27.5.2" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" + integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== dependencies: jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.167": - version "4.14.182" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" - integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + version "4.14.191" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== "@types/mdast@^3.0.0": version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" "@types/mime@*": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/minimatch@*", "@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/minimist@^1.2.0": version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node-fetch@^2.5.7": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== + version "2.6.2" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8", "@types/node@^17.0.5": - version "17.0.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.38.tgz#f8bb07c371ccb1903f3752872c89f44006132947" - integrity sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g== +"@types/node@*", "@types/node@>= 8": + version "18.13.0" + resolved "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" + integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== "@types/node@^11.9.4": version "11.15.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.54.tgz#59ed60e7b0d56905a654292e8d73275034eb6283" + resolved "https://registry.npmjs.org/@types/node/-/node-11.15.54.tgz#59ed60e7b0d56905a654292e8d73275034eb6283" integrity sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g== "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0": - version "16.11.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.38.tgz#be0edd097b23eace6c471c525a74b3f98803017f" - integrity sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg== + version "16.18.12" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz#e3bfea80e31523fde4292a6118f19ffa24fd6f65" + integrity sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw== "@types/node@^14.14.31": - version "14.18.20" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.20.tgz#268f028b36eaf51181c3300252f605488c4f0650" - integrity sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA== + version "14.18.36" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz#c414052cb9d43fab67d679d5f3c641be911f5835" + integrity sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ== + +"@types/node@^17.0.5": + version "17.0.45" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== "@types/normalize-package-data@^2.4.0": version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npmlog@^4.1.2": version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" + resolved "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/parse5@^5.0.0": version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + resolved "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/pretty-hrtime@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" + resolved "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== "@types/prop-types@*": version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*", "@types/qs@^6.9.5": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/reach__router@^1.3.7": - version "1.3.10" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.10.tgz#141d500213a452d9d9d71d5ad96c4104094f55a3" - integrity sha512-iHAFGaVOrWi00/q7oBybggGsz5TOmwOW4M1H9sT7i9lly4qFC8XOgsdf6jUsoaOz2sknFHALEtZqCoDbokdJ2Q== + version "1.3.11" + resolved "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.11.tgz#528af5d73f76b42cf7de5664cdd1b728dee78e31" + integrity sha512-j23ChnIEiW8aAP4KT8OVyTXOFr+Ri65BDnwzmfHFO9WHypXYevHFjeil1Cj7YH3emfCE924BwAmgW4hOv7Wg3g== dependencies: "@types/react" "*" "@types/react-router-config@*", "@types/react-router-config@^5.0.6": version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" + resolved "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451" integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg== dependencies: "@types/history" "^4.7.11" @@ -6280,7 +5355,7 @@ "@types/react-router-dom@*": version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== dependencies: "@types/history" "^4.7.11" @@ -6288,24 +5363,17 @@ "@types/react-router" "*" "@types/react-router@*": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" - integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== + version "5.1.20" + resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== dependencies: "@types/history" "^4.7.11" "@types/react" "*" -"@types/react-syntax-highlighter@11.0.5": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz#0d546261b4021e1f9d85b50401c0a42acb106087" - integrity sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== - dependencies: - "@types/react" "*" - "@types/react@*": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.10.tgz#5692944d4a45e204fb7a981eb1388afe919cf4d0" - integrity sha512-dIugadZuIPrRzvIEevIu7A1smqOAjkSMv8qOfwPt9Ve6i6JT/FQcCHyk2qIAxwsQNKZt5/oGR0T4z9h2dXRAkg== + version "18.0.28" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065" + integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -6313,7 +5381,7 @@ "@types/react@^17.0.38": version "17.0.53" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab" + resolved "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab" integrity sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw== dependencies: "@types/prop-types" "*" @@ -6322,51 +5390,43 @@ "@types/resize-observer-browser@^0.1.6": version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" + resolved "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" integrity sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg== "@types/resolve@1.17.1": version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" "@types/retry@0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/sax@^1.2.1": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e" + resolved "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e" integrity sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw== dependencies: "@types/node" "*" "@types/scheduler@*": version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/serve-index@^1.9.1": version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== dependencies: "@types/express" "*" -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@^1.13.10": +"@types/serve-static@*", "@types/serve-static@^1.13.10": version "1.15.0" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: "@types/mime" "*" @@ -6374,61 +5434,61 @@ "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== "@types/sockjs@^0.3.33": version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/source-list-map@*": version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/stack-utils@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/tapable@^1", "@types/tapable@^1.0.5": version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/trusted-types@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" - integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== + version "2.0.3" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" + integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== "@types/uglify-js@*": - version "3.13.2" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.2.tgz#1044c1713fb81cb1ceef29ad8a9ee1ce08d690ef" - integrity sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q== + version "3.17.1" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: source-map "^0.6.1" "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/webpack-env@^1.16.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.17.0.tgz#f99ce359f1bfd87da90cc4a57cab0a18f34a48d0" - integrity sha512-eHSaNYEyxRA5IAG0Ym/yCyf86niZUIF/TpWKofQI/CVfh5HsMEUyfE2kwFxha4ow0s5g0LfISQxpDKjbRDrizw== + version "1.18.0" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz#ed6ecaa8e5ed5dfe8b2b3d00181702c9925f13fb" + integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== "@types/webpack-sources@*": version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== dependencies: "@types/node" "*" @@ -6436,9 +5496,9 @@ source-map "^0.7.3" "@types/webpack@^4.4.31", "@types/webpack@^4.41.26", "@types/webpack@^4.41.8": - version "4.41.32" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" - integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== + version "4.41.33" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== dependencies: "@types/node" "*" "@types/tapable" "^1" @@ -6448,41 +5508,48 @@ source-map "^0.6.0" "@types/ws@^8.2.2", "@types/ws@^8.5.1": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== + version "8.5.4" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^13.0.0": version "13.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + version "15.0.15" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158" + integrity sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.22" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" + integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== dependencies: "@types/node" "*" "@typescript-eslint/eslint-plugin@^4.19.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== dependencies: "@typescript-eslint/experimental-utils" "4.33.0" @@ -6496,7 +5563,7 @@ "@typescript-eslint/experimental-utils@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== dependencies: "@types/json-schema" "^7.0.7" @@ -6508,7 +5575,7 @@ "@typescript-eslint/parser@^4.19.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== dependencies: "@typescript-eslint/scope-manager" "4.33.0" @@ -6518,7 +5585,7 @@ "@typescript-eslint/scope-manager@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== dependencies: "@typescript-eslint/types" "4.33.0" @@ -6526,12 +5593,12 @@ "@typescript-eslint/types@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: "@typescript-eslint/types" "4.33.0" @@ -6544,7 +5611,7 @@ "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: "@typescript-eslint/types" "4.33.0" @@ -6552,7 +5619,7 @@ "@webassemblyjs/ast@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: "@webassemblyjs/helper-numbers" "1.11.1" @@ -6560,7 +5627,7 @@ "@webassemblyjs/ast@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" @@ -6569,56 +5636,56 @@ "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" @@ -6627,17 +5694,17 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6647,7 +5714,7 @@ "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6657,45 +5724,45 @@ "@webassemblyjs/ieee754@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/leb128@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/utf8@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6709,7 +5776,7 @@ "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6723,7 +5790,7 @@ "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6734,7 +5801,7 @@ "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6745,7 +5812,7 @@ "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6755,7 +5822,7 @@ "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6765,7 +5832,7 @@ "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6777,7 +5844,7 @@ "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6789,7 +5856,7 @@ "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -6801,7 +5868,7 @@ "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -6809,53 +5876,53 @@ "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" - integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== -"@webpack-cli/info@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" - integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" - integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== "@xstate/react@^0.8.1": version "0.8.1" - resolved "https://registry.yarnpkg.com/@xstate/react/-/react-0.8.1.tgz#df200547cca24c909572b7aef1ddab8bca3a0603" + resolved "https://registry.npmjs.org/@xstate/react/-/react-0.8.1.tgz#df200547cca24c909572b7aef1ddab8bca3a0603" integrity sha512-8voZm4GX3x70lNQVvoGedoObPYapkQIbgMhE+xOQEsm8Ait4Zto6R01SZ6WJD4qvLl8JPV6uq96OcFRdEsVESg== "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== "@zeit/schemas@2.6.0": version "2.6.0" - resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" + resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== "@zkochan/cmd-shim@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" + resolved "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== dependencies: is-windows "^1.0.0" @@ -6864,7 +5931,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" @@ -6872,17 +5939,17 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: abab@^2.0.0: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -6890,17 +5957,17 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: acorn-class-fields@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz#748058bceeb0ef25164bbc671993984083f5a085" + resolved "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz#748058bceeb0ef25164bbc671993984083f5a085" integrity sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ== acorn-dynamic-import@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== acorn-globals@^4.1.0: version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" @@ -6908,17 +5975,17 @@ acorn-globals@^4.1.0: acorn-import-assertions@^1.7.6: version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.0.0, acorn-jsx@^5.0.1, acorn-jsx@^5.3.1: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-node@^1.8.2: version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== dependencies: acorn "^7.0.0" @@ -6927,73 +5994,68 @@ acorn-node@^1.8.2: acorn-walk@^6.0.1: version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn-walk@^7.0.0, acorn-walk@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.0.0: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^5.5.3: version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + resolved "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.4.1: version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.0.0, acorn@^7.4.0, acorn@^7.4.1: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - -acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: + version "8.8.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== address@^1.0.1, address@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" - integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== agent-base@4, agent-base@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== dependencies: es6-promisify "^5.0.0" agent-base@~4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" agentkeepalive@^3.4.1: version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: humanize-ms "^1.2.1" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -7001,7 +6063,7 @@ aggregate-error@^3.0.0: airbnb-js-shims@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz#db481102d682b98ed1daa4c5baa697a05ce5c040" + resolved "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz#db481102d682b98ed1daa4c5baa697a05ce5c040" integrity sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ== dependencies: array-includes "^3.0.3" @@ -7024,7 +6086,7 @@ airbnb-js-shims@^2.2.1: airbnb-prop-types@^2.14.0, airbnb-prop-types@^2.15.0, airbnb-prop-types@^2.16.0: version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + resolved "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: array.prototype.find "^2.1.1" @@ -7039,31 +6101,31 @@ airbnb-prop-types@^2.14.0, airbnb-prop-types@^2.15.0, airbnb-prop-types@^2.16.0: ajv-errors@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" ajv@6.5.3: version "6.5.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== dependencies: fast-deep-equal "^2.0.1" @@ -7073,7 +6135,7 @@ ajv@6.5.3: ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv@~6.12.6: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -7082,9 +6144,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -7092,208 +6154,188 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.8.0: uri-js "^4.2.2" algoliasearch-helper@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.11.0.tgz#c4355056d97748a92f6ff0d4fce153b96b561ddb" - integrity sha512-TLl/MSjtQ98mgkd8hngWkzSjE+dAWldZ1NpJtv2mT+ZoFJ2P2zDE85oF9WafJOXWN9FbVRmyxpO5H+qXcNaFng== + version "3.11.3" + resolved "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.11.3.tgz#6e7af8afe6f9a9e55186abffb7b6cf7ca8de3301" + integrity sha512-TbaEvLwiuGygHQIB8y+OsJKQQ40+JKUua5B91X66tMUHyyhbNHvqyr0lqd3wCoyKx7WybyQrC0WJvzoIeh24Aw== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0: - version "4.13.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.1.tgz#54195c41c9e4bd13ed64982248cf49d4576974fe" - integrity sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA== +algoliasearch@^4.0.0, algoliasearch@^4.13.1: + version "4.14.3" + resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.14.3.tgz#f02a77a4db17de2f676018938847494b692035e7" + integrity sha512-GZTEuxzfWbP/vr7ZJfGzIl8fOsoxN916Z6FY2Egc9q2TmZ6hvq5KfAxY89pPW01oW/2HDEKA8d30f9iAH9eXYg== dependencies: - "@algolia/cache-browser-local-storage" "4.13.1" - "@algolia/cache-common" "4.13.1" - "@algolia/cache-in-memory" "4.13.1" - "@algolia/client-account" "4.13.1" - "@algolia/client-analytics" "4.13.1" - "@algolia/client-common" "4.13.1" - "@algolia/client-personalization" "4.13.1" - "@algolia/client-search" "4.13.1" - "@algolia/logger-common" "4.13.1" - "@algolia/logger-console" "4.13.1" - "@algolia/requester-browser-xhr" "4.13.1" - "@algolia/requester-common" "4.13.1" - "@algolia/requester-node-http" "4.13.1" - "@algolia/transporter" "4.13.1" - -algoliasearch@^4.13.1: - version "4.14.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.14.2.tgz#63f142583bfc3a9bd3cd4a1b098bf6fe58e56f6c" - integrity sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg== - dependencies: - "@algolia/cache-browser-local-storage" "4.14.2" - "@algolia/cache-common" "4.14.2" - "@algolia/cache-in-memory" "4.14.2" - "@algolia/client-account" "4.14.2" - "@algolia/client-analytics" "4.14.2" - "@algolia/client-common" "4.14.2" - "@algolia/client-personalization" "4.14.2" - "@algolia/client-search" "4.14.2" - "@algolia/logger-common" "4.14.2" - "@algolia/logger-console" "4.14.2" - "@algolia/requester-browser-xhr" "4.14.2" - "@algolia/requester-common" "4.14.2" - "@algolia/requester-node-http" "4.14.2" - "@algolia/transporter" "4.14.2" + "@algolia/cache-browser-local-storage" "4.14.3" + "@algolia/cache-common" "4.14.3" + "@algolia/cache-in-memory" "4.14.3" + "@algolia/client-account" "4.14.3" + "@algolia/client-analytics" "4.14.3" + "@algolia/client-common" "4.14.3" + "@algolia/client-personalization" "4.14.3" + "@algolia/client-search" "4.14.3" + "@algolia/logger-common" "4.14.3" + "@algolia/logger-console" "4.14.3" + "@algolia/requester-browser-xhr" "4.14.3" + "@algolia/requester-common" "4.14.3" + "@algolia/requester-node-http" "4.14.3" + "@algolia/transporter" "4.14.3" alphanum-sort@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== ansi-align@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" integrity sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA== dependencies: string-width "^2.0.0" ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: string-width "^4.1.0" ansi-colors@^3.0.0: version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-html-community@0.0.8, ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ansi-styles@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ansi-to-html@^0.6.11: version "0.6.15" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7" + resolved "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7" integrity sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ== dependencies: entities "^2.0.0" any-observable@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== any-promise@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" app-root-dir@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" + resolved "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== arch@^2.1.0, arch@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== are-we-there-yet@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" @@ -7301,7 +6343,7 @@ are-we-there-yet@^2.0.0: are-we-there-yet@~1.1.2: version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" @@ -7309,105 +6351,99 @@ are-we-there-yet@~1.1.2: arg@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" + resolved "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== -arg@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" - integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA== - -arg@^5.0.2: +arg@^5.0.0, arg@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== +aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" + deep-equal "^2.0.5" arr-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-differ@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== array-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + resolved "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== array-find-index@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@^2.1.0, array-flatten@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.0.3, array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== +array-includes@^3.0.3, array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" is-string "^1.0.7" array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: array-uniq "^1.0.1" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-union@^3.0.1: @@ -7417,84 +6453,95 @@ array-union@^3.0.1: array-uniq@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== array-unique@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.find@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.0.tgz#153b8a28ad8965cd86d3117b07e6596af6f2880d" - integrity sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ== + version "2.2.1" + resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.1.tgz#769b8182a0b535c3d76ac025abab98ba1e12467b" + integrity sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.4" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== +array.prototype.flat@^1.2.1, array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.map@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.4.tgz#0d97b640cfdd036c1b41cfe706a5e699aa0711f2" - integrity sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA== +array.prototype.map@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz#6e43c2fee6c0fb5e4806da2dc92eb00970809e55" + integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== arrify@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asap@^2.0.0, asap@~2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1.js@^5.2.0: version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" @@ -7504,19 +6551,19 @@ asn1.js@^5.2.0: asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^1.1.1: version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: object-assign "^4.1.1" @@ -7524,81 +6571,81 @@ assert@^1.1.1: assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== ast-types-flow@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== ast-types@^0.14.2: version "0.14.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== dependencies: tslib "^2.0.1" astral-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + version "1.0.6" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== async-limiter@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^2.6.2: +async@^2.6.4: version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" async@^3.2.0, async@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob-lite@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + resolved "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" integrity sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw== atob@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== attr-accept@^2.0.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" + resolved "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== autoprefixer@10.4.4: version "10.4.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" integrity sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA== dependencies: browserslist "^4.20.2" @@ -7610,7 +6657,7 @@ autoprefixer@10.4.4: autoprefixer@9.7.4: version "9.7.4" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: browserslist "^4.8.3" @@ -7621,13 +6668,13 @@ autoprefixer@9.7.4: postcss "^7.0.26" postcss-value-parser "^4.0.2" -autoprefixer@^10.3.7, autoprefixer@^10.4.7: - version "10.4.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" - integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== +autoprefixer@^10.4.12, autoprefixer@^10.4.13, autoprefixer@^10.4.7: + version "10.4.13" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== dependencies: - browserslist "^4.20.3" - caniuse-lite "^1.0.30001335" + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" @@ -7635,7 +6682,7 @@ autoprefixer@^10.3.7, autoprefixer@^10.4.7: autoprefixer@^9.8.6: version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== dependencies: browserslist "^4.12.0" @@ -7648,53 +6695,56 @@ autoprefixer@^9.8.6: available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + version "1.12.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axe-core@^4.3.5: - version "4.4.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== - -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" +axe-core@^4.6.2: + version "4.6.3" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== axios@^0.25.0: version "0.25.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== dependencies: follow-redirects "^1.14.7" axios@^0.26.1: version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + resolved "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== dependencies: follow-redirects "^1.14.8" -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" babel-eslint@9.x: version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== dependencies: "@babel/code-frame" "^7.0.0" @@ -7718,7 +6768,7 @@ babel-eslint@^8.0.3: babel-jest@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== dependencies: "@jest/transform" "^24.9.0" @@ -7730,9 +6780,9 @@ babel-jest@^24.9.0: slash "^2.0.0" babel-loader@^8.0.0, babel-loader@^8.0.0-beta.4, babel-loader@^8.2.2, babel-loader@^8.2.4, babel-loader@^8.2.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" - integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== + version "8.3.0" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: find-cache-dir "^3.3.1" loader-utils "^2.0.0" @@ -7741,12 +6791,12 @@ babel-loader@^8.0.0, babel-loader@^8.0.0-beta.4, babel-loader@^8.2.2, babel-load babel-plugin-add-react-displayname@^0.0.5: version "0.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" + resolved "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== babel-plugin-apply-mdx-type-prop@1.6.22: version "1.6.22" - resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + resolved "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" @@ -7754,14 +6804,14 @@ babel-plugin-apply-mdx-type-prop@1.6.22: babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" babel-plugin-emotion@^10.0.27: version "10.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" + resolved "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" integrity sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -7777,14 +6827,14 @@ babel-plugin-emotion@^10.0.27: babel-plugin-extract-import-names@1.6.22: version "1.6.22" - resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + resolved "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" babel-plugin-inline-react-svg@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-1.1.0.tgz#b39519c78249b3fcf895b541c38b485a2b11b0be" + resolved "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-1.1.0.tgz#b39519c78249b3fcf895b541c38b485a2b11b0be" integrity sha512-Y/tBMi7Jh7Jh+DGcSNsY9/RW33nvcR067HFK0Dp+03jpidil1sJAffBdajK72xn3tbwMsgFLJubxW5xpQLJytA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -7806,7 +6856,7 @@ babel-plugin-inline-react-svg@^2.0.1: babel-plugin-istanbul@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -7816,7 +6866,7 @@ babel-plugin-istanbul@^5.1.0: babel-plugin-istanbul@^6.0.0: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -7827,14 +6877,14 @@ babel-plugin-istanbul@^6.0.0: babel-plugin-jest-hoist@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== dependencies: "@types/babel__traverse" "^7.0.6" babel-plugin-macros@^2.0.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" @@ -7843,7 +6893,7 @@ babel-plugin-macros@^2.0.0: babel-plugin-macros@^3.0.1: version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: "@babel/runtime" "^7.12.5" @@ -7852,7 +6902,7 @@ babel-plugin-macros@^3.0.1: babel-plugin-module-resolver@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + resolved "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" integrity sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA== dependencies: find-babel-config "^1.1.0" @@ -7863,68 +6913,44 @@ babel-plugin-module-resolver@^3.2.0: babel-plugin-named-exports-order@^0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" + resolved "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.1.0: version "0.1.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== dependencies: "@babel/helper-define-polyfill-provider" "^0.1.5" core-js-compat "^3.8.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" + "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-react-docgen@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" + resolved "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== dependencies: ast-types "^0.14.2" @@ -7933,12 +6959,12 @@ babel-plugin-react-docgen@^4.2.1: babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== babel-preset-jest@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" @@ -7951,17 +6977,17 @@ babylon@7.0.0-beta.44: bail@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base16@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== base64-arraybuffer@^1.0.2: @@ -7971,12 +6997,12 @@ base64-arraybuffer@^1.0.2: base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -7989,58 +7015,58 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" before-after-hook@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== better-opn@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + resolved "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== dependencies: open "^7.0.3" big-integer@^1.6.7: version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== big.js@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^1.0.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -8049,28 +7075,28 @@ bl@^4.0.3, bl@^4.1.0: blob-util@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + resolved "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== bluebird@3.7.2, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.0.0, bn.js@^5.1.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -8080,24 +7106,24 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" bonjour-service@^1.0.11: - version "1.0.12" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" - integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== + version "1.1.0" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz#424170268d68af26ff83a5c640b95def01803a13" + integrity sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q== dependencies: array-flatten "^2.1.2" dns-equal "^1.0.0" fast-deep-equal "^3.1.3" - multicast-dns "^7.2.4" + multicast-dns "^7.2.5" bonjour@^3.5.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== dependencies: array-flatten "^2.1.0" @@ -8109,12 +7135,12 @@ bonjour@^3.5.0: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== boxen@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" @@ -8127,7 +7153,7 @@ boxen@1.3.0: boxen@^5.0.0, boxen@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" @@ -8141,7 +7167,7 @@ boxen@^5.0.0, boxen@^5.1.2: boxen@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + resolved "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== dependencies: ansi-align "^3.0.1" @@ -8155,14 +7181,14 @@ boxen@^6.2.1: bplist-parser@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" integrity sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q== dependencies: big-integer "^1.6.7" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -8170,14 +7196,14 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -8193,48 +7219,48 @@ braces@^2.3.1, braces@^2.3.2: braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brcast@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef" + resolved "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef" integrity sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg== brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-assert@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" + resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== browser-detect@^0.2.28: version "0.2.28" - resolved "https://registry.yarnpkg.com/browser-detect/-/browser-detect-0.2.28.tgz#5688fc22f638390614ebea4646483403fb20ebfb" + resolved "https://registry.npmjs.org/browser-detect/-/browser-detect-0.2.28.tgz#5688fc22f638390614ebea4646483403fb20ebfb" integrity sha512-KeWGHqYQmHDkCFG2dIiX/2wFUgqevbw/rd6wNi9N6rZbaSJFtG5kel0HtprRwCGp8sqpQP79LzDJXf/WCx4WAw== dependencies: core-js "^2.5.7" browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browser-resolve@^1.11.3: version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -8246,7 +7272,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" @@ -8255,7 +7281,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" @@ -8265,7 +7291,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: bn.js "^5.0.0" @@ -8273,7 +7299,7 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: browserify-sign@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" @@ -8288,37 +7314,36 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.8.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.8.3: + version "4.21.5" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" btoa-lite@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + resolved "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== buble@0.19.6: version "0.19.6" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3" + resolved "https://registry.npmjs.org/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3" integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg== dependencies: chalk "^2.4.1" @@ -8330,27 +7355,27 @@ buble@0.19.6: buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer@^4.3.0: version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" @@ -8359,7 +7384,7 @@ buffer@^4.3.0: buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" @@ -8367,43 +7392,43 @@ buffer@^5.5.0, buffer@^5.6.0: builtin-modules@^3.1.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== builtin-status-codes@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== builtins@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== byline@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q== byte-size@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== c8@^7.6.0: - version "7.11.3" - resolved "https://registry.yarnpkg.com/c8/-/c8-7.11.3.tgz#88c8459c1952ed4f701b619493c9ae732b057163" - integrity sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA== + version "7.13.0" + resolved "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz#a2a70a851278709df5a9247d62d7f3d4bcb5f2e4" + integrity sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@istanbuljs/schema" "^0.1.3" @@ -8420,7 +7445,7 @@ c8@^7.6.0: cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" @@ -8441,7 +7466,7 @@ cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: cacache@^15.0.5: version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" @@ -8465,7 +7490,7 @@ cacache@^15.0.5: cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -8480,7 +7505,7 @@ cache-base@^1.0.1: cacheable-request@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" @@ -8493,49 +7518,49 @@ cacheable-request@^6.0.0: cachedir@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" get-intrinsic "^1.0.2" call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + version "1.0.2" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== caller-callsite@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" callsites@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.1, camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -8543,12 +7568,12 @@ camel-case@^4.1.1, camel-case@^4.1.2: camelcase-css@2.0.1, camelcase-css@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== camelcase-keys@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== dependencies: camelcase "^2.0.0" @@ -8556,7 +7581,7 @@ camelcase-keys@^2.0.0: camelcase-keys@^4.0.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" integrity sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q== dependencies: camelcase "^4.1.0" @@ -8565,7 +7590,7 @@ camelcase-keys@^4.0.0: camelcase-keys@^6.2.2: version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" @@ -8574,27 +7599,27 @@ camelcase-keys@^6.2.2: camelcase@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: browserslist "^4.0.0" @@ -8602,36 +7627,36 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: - version "1.0.30001344" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" - integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: + version "1.0.30001455" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001455.tgz#3a2c24bcbbb5ff73e3f347e11d71a22d023798cc" + integrity sha512-h5n7WkDmyHlvHhVFDMC1OFUuWKoht7xuom/kL8b8uJzfMmB068adJgj3B0/n5PtnrK6rEqY8FE/D9m38aRdWhw== capture-exit@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: rsvp "^4.8.4" case-sensitive-paths-webpack-plugin@^2.3.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== ccount@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== chalk@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" @@ -8640,7 +7665,7 @@ chalk@2.4.1: chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" @@ -8651,7 +7676,7 @@ chalk@^1.0.0, chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -8660,50 +7685,45 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4 chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chalk@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" - integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== + version "5.2.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== character-entities-legacy@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== character-entities@^1.0.0: version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-reference-invalid@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -charcodes@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" - integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== - chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== check-more-types@2.24.0, check-more-types@^2.24.0: version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== cheerio-select@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: boolbase "^1.0.0" @@ -8715,7 +7735,7 @@ cheerio-select@^2.1.0: cheerio@^1.0.0-rc.12: version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: cheerio-select "^2.1.0" @@ -8728,7 +7748,7 @@ cheerio@^1.0.0-rc.12: child-process-promise@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/child-process-promise/-/child-process-promise-2.2.1.tgz#4730a11ef610fad450b8f223c79d31d7bdad8074" + resolved "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz#4730a11ef610fad450b8f223c79d31d7bdad8074" integrity sha512-Fi4aNdqBsr0mv+jgWxcZ/7rAIC2mgihrptyVI4foh/rrjY/3BNjfP9+oaiFx/fzim+1ZyCNBae0DlyfQhSugog== dependencies: cross-spawn "^4.0.2" @@ -8737,7 +7757,7 @@ child-process-promise@^2.2.1: chokidar@^2.1.8: version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" @@ -8756,7 +7776,7 @@ chokidar@^2.1.8: chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -8771,32 +7791,32 @@ chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" - integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -8804,14 +7824,14 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: clap@^1.0.9: version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + resolved "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== dependencies: chalk "^1.1.3" class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -8819,38 +7839,33 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - -classnames@^2.3.2: +classnames@^2.2.5, classnames@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== clean-css@^4.2.3: version "4.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: source-map "~0.6.0" clean-css@^5.2.2, clean-css@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" - integrity sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ== + version "5.3.2" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== dependencies: source-map "~0.6.0" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== clean-webpack-plugin@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" + resolved "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== dependencies: "@types/webpack" "^4.4.31" @@ -8865,42 +7880,42 @@ clean-webpack-plugin@^4.0.0: cli-boxes@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg== cli-boxes@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-boxes@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + version "2.7.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== cli-table3@^0.6.1, cli-table3@^0.6.2, cli-table3@~0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: string-width "^4.2.0" optionalDependencies: @@ -8908,7 +7923,7 @@ cli-table3@^0.6.1, cli-table3@^0.6.2, cli-table3@~0.6.1: cli-truncate@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" integrity sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== dependencies: slice-ansi "0.0.4" @@ -8916,7 +7931,7 @@ cli-truncate@^0.2.1: cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" @@ -8924,17 +7939,17 @@ cli-truncate@^2.1.0: cli-width@^2.0.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== clipboardy@1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" + resolved "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== dependencies: arch "^2.1.0" @@ -8942,7 +7957,7 @@ clipboardy@1.2.3: cliui@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: string-width "^3.1.0" @@ -8951,7 +7966,7 @@ cliui@^5.0.0: cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -8960,7 +7975,7 @@ cliui@^7.0.2: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -8968,35 +7983,30 @@ clone-deep@^4.0.1: shallow-clone "^3.0.0" clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + version "1.0.3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -clsx@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== - -clsx@^1.2.1: +clsx@^1.1.1, clsx@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== coa@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" @@ -9005,24 +8015,24 @@ coa@^2.0.2: coa@~1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + resolved "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" integrity sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ== dependencies: q "^1.1.2" code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== collapse-white-space@^1.0.2: version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== collection-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" @@ -9030,31 +8040,31 @@ collection-visit@^1.0.0: color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.6.0, color-string@^1.9.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" @@ -9062,12 +8072,12 @@ color-string@^1.6.0, color-string@^1.9.0: color-support@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== color@^3.0.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: color-convert "^1.9.3" @@ -9075,35 +8085,35 @@ color@^3.0.0: color@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== dependencies: color-convert "^2.0.1" color-string "^1.9.0" colord@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^1.2.2: version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.19" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== colors@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w== columnify@^1.5.4: version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: strip-ansi "^6.0.1" @@ -9111,74 +8121,74 @@ columnify@^1.5.4: combine-promises@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" + resolved "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71" integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg== combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" comma-separated-tokens@^1.0.0: version "1.0.8" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== commander@9.2.0: version "9.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" + resolved "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== commander@^2.19.0, commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commander@^7.0.0, commander@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== common-path-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== common-tags@^1.8.0: version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-func@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: array-ify "^1.0.0" @@ -9186,29 +8196,29 @@ compare-func@^2.0.0: component-emitter@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== component-props@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" + resolved "https://registry.npmjs.org/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" integrity sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q== component-xor@0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa" + resolved "https://registry.npmjs.org/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa" integrity sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA== compressible@~2.0.14, compressible@~2.0.16: version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== dependencies: accepts "~1.3.5" @@ -9221,7 +8231,7 @@ compression@1.7.3: compression@^1.7.4: version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -9234,12 +8244,12 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.0: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -9249,7 +8259,7 @@ concat-stream@^1.5.0: concat-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" @@ -9259,23 +8269,23 @@ concat-stream@^2.0.0: config-chain@^1.1.11: version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" config-point@^0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/config-point/-/config-point-0.4.8.tgz#51864ef9e9e3d7ab2b42c410dd15b2fcb58fd905" - integrity sha512-h2nUOYFQE1CLJeb44TZN0msSH4419I5nvZRiKedsGAq8NZc0uGOrd/jhDfSEmqLsfg3QReerIKPKghsysOz5cQ== + version "0.4.9" + resolved "https://registry.npmjs.org/config-point/-/config-point-0.4.9.tgz#ec4594d04235438d5852e5ab33bde60aeffd18db" + integrity sha512-2QyqD2eb2iURURZNW6MAcNcT2e1Pr1VXwCaMgEQM0f/i+WaUCLZOdPjFtqF7oIT1rzPXNoMfl3KK2hbNcy5dXw== dependencies: "@babel/runtime" "^7.14.6" json5 "^2.2.0" configstore@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: dot-prop "^5.2.0" @@ -9287,64 +8297,64 @@ configstore@^5.0.1: confusing-browser-globals@^1.0.10: version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== connect-history-api-fallback@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== consola@^2.15.3: version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== console-browserify@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== "consolidated-events@^1.1.0 || ^2.0.0", "consolidated-events@^1.1.1 || ^2.0.0": version "2.0.2" - resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" + resolved "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== constants-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== content-disposition@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== conventional-changelog-angular@^5.0.3: version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" @@ -9352,7 +8362,7 @@ conventional-changelog-angular@^5.0.3: conventional-changelog-core@^3.1.6: version "3.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== dependencies: conventional-changelog-writer "^4.0.6" @@ -9371,12 +8381,12 @@ conventional-changelog-core@^3.1.6: conventional-changelog-preset-loader@^2.1.1: version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^4.0.6: version "4.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== dependencies: compare-func "^2.0.0" @@ -9392,7 +8402,7 @@ conventional-changelog-writer@^4.0.6: conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== dependencies: lodash.ismatch "^4.4.0" @@ -9400,7 +8410,7 @@ conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: conventional-commits-parser@^3.0.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" @@ -9412,7 +8422,7 @@ conventional-commits-parser@^3.0.3: conventional-recommended-bump@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== dependencies: concat-stream "^2.0.0" @@ -9425,25 +8435,23 @@ conventional-recommended-bump@^5.0.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-concurrently@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" @@ -9455,12 +8463,12 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== copy-text-to-clipboard@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" + resolved "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== copy-webpack-plugin@^10.2.0: @@ -9477,7 +8485,7 @@ copy-webpack-plugin@^10.2.0: copy-webpack-plugin@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: fast-glob "^3.2.11" @@ -9489,7 +8497,7 @@ copy-webpack-plugin@^11.0.0: copy-webpack-plugin@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b" integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA== dependencies: fast-glob "^3.2.7" @@ -9499,70 +8507,53 @@ copy-webpack-plugin@^9.0.1: schema-utils "^3.1.1" serialize-javascript "^6.0.0" -core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.1: - version "3.22.7" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.7.tgz#8359eb66ecbf726dd0cfced8e48d5e73f3224239" - integrity sha512-uI9DAQKKiiE/mclIC5g4AjRpio27g+VMRhe6rQoz+q4Wm4L6A/fJhiLtBw+sfOpDG9wZ3O0pxIw7GbfOlBgjOA== +core-js-compat@^3.25.1, core-js-compat@^3.8.1: + version "3.28.0" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz#c08456d854608a7264530a2afa281fadf20ecee6" + integrity sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg== dependencies: - browserslist "^4.20.3" - semver "7.0.0" + browserslist "^4.21.5" -core-js-pure@^3.20.2, core-js-pure@^3.8.1: - version "3.22.7" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.7.tgz#f58489d9b309fa7b26486a0f70d4ec19a418084e" - integrity sha512-wTriFxiZI+C8msGeh7fJcbC/a0V8fdInN1oS2eK79DMBGs8iIJiXhtFJCiT3rBa8w6zroHWW3p8ArlujZ/Mz+w== +core-js-pure@^3.23.3, core-js-pure@^3.25.1: + version "3.28.0" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.28.0.tgz#4ef2888475b6c856ef6f5aeef8b4f618b76ad048" + integrity sha512-DSOVleA9/v3LNj/vFxAPfUHttKTzrB2RXhAPvR5TPXn4vrra3Z2ssytvRyt8eruJwAfwAiFADEbrjcRdcvPLQQ== core-js@^2.4.1, core-js@^2.5.7, core-js@^2.6.12: version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.0.4, core-js@^3.16.1, core-js@^3.2.1, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: - version "3.22.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.7.tgz#8d6c37f630f6139b8732d10f2c114c3f1d00024f" - integrity sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg== - -core-js@^3.23.3: - version "3.24.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f" - integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg== +core-js@^3.0.4, core-js@^3.16.1, core-js@^3.2.1, core-js@^3.23.3, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.8.3: + version "3.28.0" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" + integrity sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw== core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cornerstone-math@^0.1.9: - version "0.1.9" - resolved "https://registry.yarnpkg.com/cornerstone-math/-/cornerstone-math-0.1.9.tgz#7ce5509e8b9f465b01f7c548470725e7569859fc" - integrity sha512-NxdooV73asEQgav1S+0e+a4K+W3CXJdLXyFkVN24qqCtmIpzZzwtw3F9KWPCekzSAJmbhtQ3HicOQj3d4vRtuw== + version "0.1.10" + resolved "https://registry.npmjs.org/cornerstone-math/-/cornerstone-math-0.1.10.tgz#a3f99db64d73c5adee61ae0d570128eca1682d07" + integrity sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ== -cornerstone-wado-image-loader@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.2.1.tgz#ee37797fe8970dcb7e438a6d87b710e817066100" - integrity sha512-nRu+6GfHFERpZLytH/SCfymODCz1SC1NKRv/xn02pr3PEkzU6fvKI76sSxSFOozxDsYljupTRNi/qGMprfdBHA== - dependencies: - "@cornerstonejs/codec-charls" "^0.1.1" - "@cornerstonejs/codec-libjpeg-turbo-8bit" "^0.0.7" - "@cornerstonejs/codec-openjpeg" "^0.1.0" - dicom-parser "^1.8.9" - pako "^2.0.4" - -cornerstone-wado-image-loader@^4.8.0: - version "4.8.0" - resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.8.0.tgz#64237a807227815bd117af839db4c05ab028d5f0" - integrity sha512-pvAAeH9tzL9PZydYOQqRSmIVoWiaxGDdgp0l/U8KafC0UNTiRyB6Sk0pTXTQqvGK2ZnwM4evjSDS9zyD3PxCmg== +cornerstone-wado-image-loader@^4.2.1, cornerstone-wado-image-loader@^4.8.0: + version "4.9.1" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.9.1.tgz#442eeca78ff0bcf9f9cbde04e8c429f35b31c55a" + integrity sha512-l0HRxGAupfufnHjT9uFpwAtafvuGMKKB9SCL8dHUwCK+7jwNeVigy8s6+Oki2nycaJUzy2TRQaauO78mIf3grg== dependencies: "@babel/eslint-parser" "^7.19.1" - "@cornerstonejs/codec-charls" "^0.1.1" - "@cornerstonejs/codec-libjpeg-turbo-8bit" "^0.0.7" - "@cornerstonejs/codec-openjpeg" "^0.1.0" - "@cornerstonejs/codec-openjph" "^1.0.3" + "@cornerstonejs/codec-charls" "^1.2.3" + "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" + "@cornerstonejs/codec-openjpeg" "^1.2.2" + "@cornerstonejs/codec-openjph" "^2.4.2" coverage-istanbul-loader "^3.0.5" date-format "^4.0.14" dicom-parser "^1.8.9" @@ -9571,7 +8562,7 @@ cornerstone-wado-image-loader@^4.8.0: cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: import-fresh "^2.0.0" @@ -9581,7 +8572,7 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: cosmiconfig@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" @@ -9591,9 +8582,9 @@ cosmiconfig@^6.0.0: yaml "^1.7.2" cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -9610,7 +8601,7 @@ coverage-istanbul-loader@^3.0.5: cp-file@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + resolved "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== dependencies: graceful-fs "^4.1.2" @@ -9620,7 +8611,7 @@ cp-file@^7.0.0: cpy@^8.1.2: version "8.1.2" - resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" + resolved "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== dependencies: arrify "^2.0.1" @@ -9635,7 +8626,7 @@ cpy@^8.1.2: create-ecdh@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" @@ -9643,7 +8634,7 @@ create-ecdh@^4.0.0: create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -9654,7 +8645,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -9666,7 +8657,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: create-react-context@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" + resolved "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== dependencies: gud "^1.0.0" @@ -9674,7 +8665,7 @@ create-react-context@0.3.0: cross-env@^5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d" integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ== dependencies: cross-spawn "^6.0.5" @@ -9688,14 +8679,14 @@ cross-env@^7.0.3: cross-fetch@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: node-fetch "2.6.7" cross-spawn@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== dependencies: lru-cache "^4.0.1" @@ -9703,7 +8694,7 @@ cross-spawn@^4.0.2: cross-spawn@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== dependencies: lru-cache "^4.0.1" @@ -9712,7 +8703,7 @@ cross-spawn@^5.0.1: cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -9723,7 +8714,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -9732,7 +8723,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypto-browserify@^3.11.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" @@ -9749,42 +8740,42 @@ crypto-browserify@^3.11.0: crypto-js@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== crypto-random-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-blank-pseudo@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: postcss-selector-parser "^6.0.9" css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== css-declaration-sorter@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== dependencies: postcss "^7.0.1" timsort "^0.3.0" -css-declaration-sorter@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" - integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== +css-declaration-sorter@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec" + integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== css-has-pseudo@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: postcss-selector-parser "^6.0.9" @@ -9798,7 +8789,7 @@ css-line-break@^2.1.0: css-loader@^3.2.0, css-loader@^3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== dependencies: camelcase "^5.3.1" @@ -9817,7 +8808,7 @@ css-loader@^3.2.0, css-loader@^3.6.0: css-loader@^5.0.1: version "5.2.7" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== dependencies: icss-utils "^5.1.0" @@ -9832,44 +8823,44 @@ css-loader@^5.0.1: semver "^7.3.5" css-loader@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + version "6.7.3" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" + integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ== dependencies: icss-utils "^5.1.0" - postcss "^8.4.7" + postcss "^8.4.19" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" - semver "^7.3.5" + semver "^7.3.8" css-minimizer-webpack-plugin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.0.0.tgz#e11800388c19c2b7442c39cc78ac8ae3675c9605" - integrity sha512-7ZXXRzRHvofv3Uac5Y+RkWRNo0ZMlcg8e9/OtrqUYmwDWJo+qs67GvdeFrXLsFb7czKNwjQhPkM0avlIYl+1nA== + version "4.2.2" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" + integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== dependencies: cssnano "^5.1.8" - jest-worker "^27.5.1" - postcss "^8.4.13" + jest-worker "^29.1.2" + postcss "^8.4.17" schema-utils "^4.0.0" serialize-javascript "^6.0.0" source-map "^0.6.1" css-prefers-color-scheme@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== css-select-base-adapter@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== css-select@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" @@ -9879,7 +8870,7 @@ css-select@^2.0.0: css-select@^4.1.3: version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -9890,7 +8881,7 @@ css-select@^4.1.3: css-select@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" @@ -9901,7 +8892,7 @@ css-select@^5.1.0: css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: mdn-data "2.0.4" @@ -9909,7 +8900,7 @@ css-tree@1.0.0-alpha.37: css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" @@ -9917,36 +8908,36 @@ css-tree@^1.1.2, css-tree@^1.1.3: css-what@^3.2.1: version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -cssdb@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.6.2.tgz#6c1c1777483c909a8fc64f296a51546136b35f45" - integrity sha512-w08LaP+DRoPlw4g4LSUp+EWRrWTPlrzWREcU7/6IeMfL7tPR2P9oeQ1G+pxyfMmLWBNDwqHWa6kxiuGMLb71EA== +cssdb@^7.1.0: + version "7.4.1" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.4.1.tgz#61d55c0173126689922a219e15e131e4b5caf422" + integrity sha512-0Q8NOMpXJ3iTDDbUv9grcmQAfdDx4qz+fN/+Md2FGbevT+6+bJNQ2LjB2YIUlLbpBTM32idU1Sb+tb/uGt6/XQ== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssfontparser@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" + resolved "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" integrity sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg== cssnano-preset-advanced@^5.3.8: - version "5.3.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.8.tgz#027b1d05ef896d908178c483f0ec4190cb50ef9a" - integrity sha512-xUlLLnEB1LjpEik+zgRNlk8Y/koBPPtONZjp7JKbXigeAmCrFvq9H0pXW5jJV45bQWAlmJ0sKy+IMr0XxLYQZg== + version "5.3.10" + resolved "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" + integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== dependencies: - autoprefixer "^10.3.7" - cssnano-preset-default "^5.2.12" + autoprefixer "^10.4.12" + cssnano-preset-default "^5.2.14" postcss-discard-unused "^5.1.0" postcss-merge-idents "^5.1.1" postcss-reduce-idents "^5.2.0" @@ -9954,7 +8945,7 @@ cssnano-preset-advanced@^5.3.8: cssnano-preset-default@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== dependencies: css-declaration-sorter "^4.0.1" @@ -9988,25 +8979,25 @@ cssnano-preset-default@^4.0.8: postcss-svgo "^4.0.3" postcss-unique-selectors "^4.0.1" -cssnano-preset-default@^5.2.12: - version "5.2.12" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" - integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== dependencies: - css-declaration-sorter "^6.3.0" + css-declaration-sorter "^6.3.1" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.2" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" postcss-discard-comments "^5.1.2" postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.6" - postcss-merge-rules "^5.1.2" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.3" + postcss-minify-params "^5.1.4" postcss-minify-selectors "^5.2.1" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" @@ -10014,45 +9005,45 @@ cssnano-preset-default@^5.2.12: postcss-normalize-repeat-style "^5.1.1" postcss-normalize-string "^5.1.0" postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" + postcss-normalize-unicode "^5.1.1" postcss-normalize-url "^5.1.0" postcss-normalize-whitespace "^5.1.1" postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.0" + postcss-reduce-initial "^5.1.2" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" postcss-unique-selectors "^5.1.1" cssnano-util-get-arguments@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== cssnano-util-get-match@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== cssnano-util-raw-cache@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== dependencies: postcss "^7.0.0" cssnano-util-same-parent@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== cssnano-utils@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^4.1.10: version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: cosmiconfig "^5.0.0" @@ -10061,24 +9052,24 @@ cssnano@^4.1.10: postcss "^7.0.0" cssnano@^5.1.12, cssnano@^5.1.8: - version "5.1.12" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" - integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== + version "5.1.15" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== dependencies: - cssnano-preset-default "^5.2.12" + cssnano-preset-default "^5.2.14" lilconfig "^2.0.3" yaml "^1.10.2" csso@^4.0.2, csso@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" csso@~2.3.1: version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + resolved "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" integrity sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w== dependencies: clap "^1.0.9" @@ -10086,47 +9077,47 @@ csso@~2.3.1: cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: cssom "0.3.x" csstype@^2.5.7: - version "2.6.20" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" - integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + version "2.6.21" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== csstype@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" - integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + version "3.1.1" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== currently-unhandled@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== dependencies: array-find-index "^1.0.1" cyclist@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== cypress-file-upload@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-3.5.3.tgz#cd706485de3fb2cbd4a8c2dd90fe96d537bb4311" + resolved "https://registry.npmjs.org/cypress-file-upload/-/cypress-file-upload-3.5.3.tgz#cd706485de3fb2cbd4a8c2dd90fe96d537bb4311" integrity sha512-S/czzqAj1BYz6Xxnfpx2aSc6hXsj76fd8/iuycJ2RxoxCcQMliw8eQV0ugzVlkzr1GD5dKGviNFGYqv3nRJ+Tg== -cypress@^9.5.4: - version "9.7.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" - integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== +cypress@^12.6.0: + version "12.6.0" + resolved "https://registry.npmjs.org/cypress/-/cypress-12.6.0.tgz#d71a82639756173c0682b3d467eb9f0523460e91" + integrity sha512-WdHSVaS1lumSd5XpVTslZd8ui9GIGphrzvXq9+3DtVhqjRZC5M70gu5SW/Y/SLPq3D1wiXGZoHC6HJ7ESVE2lw== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -10145,9 +9136,9 @@ cypress@^9.5.4: commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" - debug "^4.3.2" + debug "^4.3.4" enquirer "^2.3.6" - eventemitter2 "^6.4.3" + eventemitter2 "6.4.7" execa "4.1.0" executable "^4.1.1" extract-zip "2.0.1" @@ -10172,32 +9163,32 @@ cypress@^9.5.4: yauzl "^2.10.0" "d3-array@2 - 3", "d3-array@2.10.0 - 3": - version "3.1.6" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.1.6.tgz#0342c835925826f49b4d16eb7027aec334ffc97d" - integrity sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA== + version "3.2.2" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.2.tgz#f8ac4705c5b06914a7e0025bbf8d5f1513f6a86e" + integrity sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ== dependencies: internmap "1 - 2" "d3-color@1 - 3": version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== "d3-format@1 - 3": version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== "d3-interpolate@1.2.0 - 3": version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" d3-scale@4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== dependencies: d3-array "2.10.0 - 3" @@ -10208,45 +9199,45 @@ d3-scale@4.0.2: "d3-time-format@2 - 4": version "4.1.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== dependencies: d3-time "1 - 3" "d3-time@1 - 3", "d3-time@2.1.1 - 3": - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.0.0.tgz#65972cb98ae2d4954ef5c932e8704061335d4975" - integrity sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ== + version "3.1.0" + resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -damerau-levenshtein@^1.0.7: +damerau-levenshtein@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dargs@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + resolved "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" integrity sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw== dependencies: number-is-nan "^1.0.0" dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== + version "4.0.1" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== data-urls@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" @@ -10255,7 +9246,7 @@ data-urls@^1.0.0: date-fns@^1.27.2: version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-format@^4.0.14: @@ -10265,22 +9256,17 @@ date-format@^4.0.14: dateformat@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@^1.10.4: - version "1.11.2" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.2.tgz#fa0f5223ef0d6724b3d8327134890cfe3d72fbe5" - integrity sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw== - -dayjs@^1.11.6: +dayjs@^1.10.4, dayjs@^1.11.6: version "1.11.7" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== dcmjs@0.29.4, dcmjs@^0.29.4: version "0.29.4" - resolved "https://registry.yarnpkg.com/dcmjs/-/dcmjs-0.29.4.tgz#3fb13945611979f756bc91b3f199fd87b4eabdb4" + resolved "https://registry.npmjs.org/dcmjs/-/dcmjs-0.29.4.tgz#3fb13945611979f756bc91b3f199fd87b4eabdb4" integrity sha512-PzD6C4oB7v/AVTIPbkS6D6hjgVcSW7+T+DsxFpkD1xcEgU4qjGM16WGEHH3ZAPDBF0Xgm2d9FXUu/lXZIyfmow== dependencies: "@babel/runtime-corejs2" "^7.17.8" @@ -10292,89 +9278,82 @@ dcmjs@0.29.4, dcmjs@^0.29.4: debug-log@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + resolved "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" integrity sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^3.0.0, debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + version "1.1.1" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== decompress-response@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-equal@^1.0.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" @@ -10384,34 +9363,57 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + deep-extend@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deep-object-diff@^1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.7.tgz#348b3246f426427dd633eaa50e1ed1fc2eafc7e4" - integrity sha512-QkgBca0mL08P6HiOjoqvmm6xOAl2W6CT2+34Ljhg0OeFan8cwlcdq8jrLKsBBuUFAZLsN5b6y491KdKEoSo9lg== + version "1.1.9" + resolved "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" + integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== deepmerge@^1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + version "4.3.0" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" + integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== default-browser-id@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-1.0.4.tgz#e59d09a5d157b828b876c26816e61c3d2a2c203a" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz#e59d09a5d157b828b876c26816e61c3d2a2c203a" integrity sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw== dependencies: bplist-parser "^0.1.0" @@ -10420,66 +9422,66 @@ default-browser-id@^1.0.4: default-gateway@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" defer-to-connect@^1.0.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + version "1.2.0" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + version "1.0.1" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== deglob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/deglob/-/deglob-3.1.0.tgz#1868193193d3432a5326e8fb2052b439a43a454e" + resolved "https://registry.npmjs.org/deglob/-/deglob-3.1.0.tgz#1868193193d3432a5326e8fb2052b439a43a454e" integrity sha512-al10l5QAYaM/PeuXkAr1Y9AQz0LCtWsnJG23pIgh44hDxHFOj36l6qvhfjnIWBYwZOqM1fXUFV9tkjL7JPdGvw== dependencies: find-root "^1.0.0" @@ -10491,7 +9493,7 @@ deglob@^3.1.0: del@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: "@types/glob" "^7.1.1" @@ -10504,7 +9506,7 @@ del@^4.1.1: del@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + resolved "https://registry.npmjs.org/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== dependencies: globby "^10.0.1" @@ -10518,7 +9520,7 @@ del@^5.0.0: del@^6.0.0, del@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== dependencies: globby "^11.0.1" @@ -10532,32 +9534,32 @@ del@^6.0.0, del@^6.1.1: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== depd@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== des.js@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" @@ -10565,72 +9567,65 @@ des.js@^1.0.0: destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detab@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + resolved "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: repeat-string "^1.5.4" -detect-gpu@^4.0.16: - version "4.0.24" - resolved "https://registry.yarnpkg.com/detect-gpu/-/detect-gpu-4.0.24.tgz#3b8e4e56a5ed0b764884a10c537efd033ce31b9b" - integrity sha512-lSL8+a+aCvjsqoHKAHF1rcMOkczYk2lUVimgndZqxL/lf1zMtjcGX8ArF8cJqn5OW4Ga2xi5wY2CV/zLYFYl9Q== - dependencies: - webgl-constants "^1.1.1" - -detect-gpu@^4.0.45: - version "4.0.47" - resolved "https://registry.npmjs.org/detect-gpu/-/detect-gpu-4.0.47.tgz#4096f93cec16dbc069d0811e34852790e267a60d" - integrity sha512-Vmr9sgssuot4YBPmU6Lfm8p7OiksbLITu8uhx5lnxfx/GYmUD4Mbwtws9yxL6vlmoKqMWSkeAvr9IL+U/lP1ug== +detect-gpu@^4.0.16, detect-gpu@^4.0.45: + version "4.0.50" + resolved "https://registry.npmjs.org/detect-gpu/-/detect-gpu-4.0.50.tgz#ba9df7e6b8416b1160303811015102bbad283aa0" + integrity sha512-T67HE5+ONONN8rPXCBJPupyCg2QT8+l2NUUMuPxAppsMJBDPG/Jg0URLs6GyDzLm2niUE+oncIHSuy3VinoPeQ== dependencies: webgl-constants "^1.1.1" detect-indent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== detect-libc@^2.0.0, detect-libc@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== detect-newline@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-package-manager@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== dependencies: execa "^5.1.1" detect-port-alt@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: address "^1.0.1" debug "^2.6.0" detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + version "1.5.1" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: address "^1.0.1" - debug "^2.6.0" + debug "4" detective@^5.2.1: version "5.2.1" @@ -10643,20 +9638,20 @@ detective@^5.2.1: dezalgo@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" dicom-parser@^1.8.9: - version "1.8.13" - resolved "https://registry.yarnpkg.com/dicom-parser/-/dicom-parser-1.8.13.tgz#ce1122bf4363f21b09450e5a47e85ad323926daa" - integrity sha512-8M53FPHS4zM3zvu5fdIWdatqrjpiG2+2M6RJ0IxwqLF4gvCYRsqUIusxYaOiNU0sWaptUpnXeZiXunP0LOIcQw== + version "1.8.20" + resolved "https://registry.npmjs.org/dicom-parser/-/dicom-parser-1.8.20.tgz#e5ef817d80d2fbc093ffd8c2a73a1cb5b47f50bd" + integrity sha512-R8NXEcaqXu7Qe5exY662aXiJCbiE6fEF8+QpSkVcXTTecFzfIaW8KJ2tSwYvt0UMHP0AUBW13VxQSXfKv/0FUA== dicomweb-client@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/dicomweb-client/-/dicomweb-client-0.6.0.tgz#5e35ada52fe0155af1cc1f0e84f9c7f76477f92d" + resolved "https://registry.npmjs.org/dicomweb-client/-/dicomweb-client-0.6.0.tgz#5e35ada52fe0155af1cc1f0e84f9c7f76477f92d" integrity sha512-VAkBg4W6odIo2XsFxqjN/rptd7bQ8oHpRuKH5d46E9BUIPzRschazE8Dx1xg7/l3N3f1M70jB7yJ339arAXiDQ== didyoumean@^1.2.2: @@ -10666,17 +9661,17 @@ didyoumean@^1.2.2: diff-sequences@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diffie-hellman@^5.0.0: version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" @@ -10685,31 +9680,31 @@ diffie-hellman@^5.0.0: dir-glob@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: path-type "^3.0.0" dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" direction@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" + resolved "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== dlv@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== dnd-core@14.0.0: version "14.0.0" - resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-14.0.0.tgz#973ab3470d0a9ac5a0fa9021c4feba93ad12347d" + resolved "https://registry.npmjs.org/dnd-core/-/dnd-core-14.0.0.tgz#973ab3470d0a9ac5a0fa9021c4feba93ad12347d" integrity sha512-wTDYKyjSqWuYw3ZG0GJ7k+UIfzxTNoZLjDrut37PbcPGNfwhlKYlPUqjAKUjOOv80izshUiqusaKgJPItXSevA== dependencies: "@react-dnd/asap" "^4.0.0" @@ -10718,69 +9713,69 @@ dnd-core@14.0.0: dns-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^1.3.1: version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" dns-packet@^5.2.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" - integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== + version "5.4.0" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" + integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" dns-txt@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== dependencies: buffer-indexof "^1.0.0" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" document.contains@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/document.contains/-/document.contains-1.0.2.tgz#4260abad67a6ae9e135c1be83d68da0db169d5f0" + resolved "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz#4260abad67a6ae9e135c1be83d68da0db169d5f0" integrity sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q== dependencies: define-properties "^1.1.3" dom-converter@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: utila "~0.4" dom-helpers@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== dependencies: "@babel/runtime" "^7.1.2" dom-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad" + resolved "https://registry.npmjs.org/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad" integrity sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig== dependencies: component-props "1.1.1" @@ -10788,7 +9783,7 @@ dom-iterator@^1.0.0: dom-serializer@0: version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: domelementtype "^2.0.1" @@ -10796,7 +9791,7 @@ dom-serializer@0: dom-serializer@^1.0.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -10805,7 +9800,7 @@ dom-serializer@^1.0.1: dom-serializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: domelementtype "^2.3.0" @@ -10814,55 +9809,55 @@ dom-serializer@^2.0.0: dom-walk@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== dom7@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/dom7/-/dom7-4.0.4.tgz#8b68c5d8e5e2ed0fddb1cb93e433bc9060c8f3fb" - integrity sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw== + version "4.0.6" + resolved "https://registry.npmjs.org/dom7/-/dom7-4.0.6.tgz#091a51621d7a19ce0fb86045cafb3c10035e97ed" + integrity sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA== dependencies: ssr-window "^4.0.0" domain-browser@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1: version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + resolved "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: domelementtype "^2.3.0" domutils@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" @@ -10870,7 +9865,7 @@ domutils@^1.7.0: domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -10879,7 +9874,7 @@ domutils@^2.5.2, domutils@^2.8.0: domutils@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: dom-serializer "^2.0.0" @@ -10888,7 +9883,7 @@ domutils@^3.0.1: dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -10896,47 +9891,47 @@ dot-case@^3.0.4: dot-prop@^4.2.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== dependencies: is-obj "^1.0.0" dot-prop@^5.1.0, dot-prop@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" dotenv-defaults@^1.0.2: version "1.1.1" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" + resolved "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== dependencies: dotenv "^6.2.0" dotenv-defaults@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz#6b3ec2e4319aafb70940abda72d3856770ee77ac" + resolved "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz#6b3ec2e4319aafb70940abda72d3856770ee77ac" integrity sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg== dependencies: dotenv "^8.2.0" dotenv-expand@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== dotenv-webpack@6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-6.0.4.tgz#4874045d408598e45a95519d3cc71017c91c9104" + resolved "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-6.0.4.tgz#4874045d408598e45a95519d3cc71017c91c9104" integrity sha512-WiTPNLanDNJ1O8AvgkBpsbarw78a4PMYG2EfJcQoxTHFWy+ji213HR+3f4PhWB1RBumiD9cbiuC3SNxJXbBp9g== dependencies: dotenv-defaults "^2.0.1" dotenv-webpack@^1.7.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" + resolved "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" integrity sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg== dependencies: dotenv-defaults "^1.0.2" @@ -10948,27 +9943,27 @@ dotenv@^14.1.0: dotenv@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== dotenv@^8.0.0, dotenv@^8.1.0, dotenv@^8.2.0: version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" @@ -10978,12 +9973,12 @@ duplexify@^3.4.2, duplexify@^3.6.0: eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" @@ -10991,29 +9986,29 @@ ecc-jsbn@~0.1.1: ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.6: version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.118: - version "1.4.143" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.143.tgz#10f1bb595ad6cd893c05097039c685dcf5c8e30c" - integrity sha512-2hIgvu0+pDfXIqmVmV5X6iwMjQ2KxDsWKwM+oI1fABEOy/Dqmll0QJRmIQ3rm+XaoUa/qKrmy5h7LSTFQ6Ldzg== +electron-to-chromium@^1.4.284: + version "1.4.301" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz#175d9fa1509a5b062752c6db321051e610fe2eae" + integrity sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA== elegant-spinner@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== elliptic@^6.5.3: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -11026,32 +10021,32 @@ elliptic@^6.5.3: emoji-regex@^7.0.1: version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== emoticon@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" + resolved "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== emotion-theming@^10.0.27: version "10.3.0" - resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.3.0.tgz#7f84d7099581d7ffe808aab5cd870e30843db72a" + resolved "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz#7f84d7099581d7ffe808aab5cd870e30843db72a" integrity sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA== dependencies: "@babel/runtime" "^7.5.5" @@ -11060,26 +10055,26 @@ emotion-theming@^10.0.27: encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding@^0.1.11: version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" endent@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" + resolved "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== dependencies: dedent "^0.7.0" @@ -11088,7 +10083,7 @@ endent@^2.0.1: enhanced-resolve@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" @@ -11096,150 +10091,157 @@ enhanced-resolve@^4.5.0: tapable "^1.0.0" enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== + version "5.12.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" entities@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.2.0, entities@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656" - integrity sha512-/iP1rZrSEJ0DTlPiX+jbzlA3eVkY/e8L8SozroF395fIqE3TYF/Nz7YOMAawta+vLmyJ/hkGNNPcSbMADCCXbg== +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.3.1, envinfo@^7.7.3: version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== enzyme-shallow-equal@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" - integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== + version "1.0.5" + resolved "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" + integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== dependencies: has "^1.0.3" - object-is "^1.1.2" + object-is "^1.1.5" err-code@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + resolved "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA== errno@^0.1.3, errno@~0.1.7: version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: - stackframe "^1.1.1" + stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.4, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== dependencies: + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" + get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.0" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.2" + object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" es-array-method-boxes-properly@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-get-iterator@^1.0.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== +es-get-iterator@^1.0.2, es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" is-map "^2.0.2" is-set "^2.0.2" - is-string "^1.0.5" + is-string "^1.0.7" isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" es-module-lexer@^0.9.0: version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -11248,59 +10250,59 @@ es-to-primitive@^1.2.1: es5-shim@^4.5.13: version "4.6.7" - resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" + resolved "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== es6-promise@^4.0.3: version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" es6-shim@^0.35.5: - version "0.35.6" - resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.6.tgz#d10578301a83af2de58b9eadb7c2c9945f7388a0" - integrity sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA== + version "0.35.7" + resolved "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.7.tgz#db00f1cbb7d4de70b50dcafa45b157e9ba28f5d2" + integrity sha512-baZkUfTDSx7X69+NA8imbvGrsPfqH0MX7ADdIDjqwsI8lkTgLIiD2QWrUCSGsUQ0YMnSCA/4pNgSyXdnLHWf3A== escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-goat@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^1.9.1: version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" @@ -11312,7 +10314,7 @@ escodegen@^1.9.1: escodegen@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" @@ -11324,23 +10326,24 @@ escodegen@^2.0.0: eslint-config-prettier@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== eslint-config-react-app@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== dependencies: confusing-browser-globals "^1.0.10" -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== dependencies: debug "^3.2.7" - resolve "^1.20.0" + is-core-module "^2.11.0" + resolve "^1.22.1" eslint-loader@^2.0.0: version "2.2.1" @@ -11353,13 +10356,12 @@ eslint-loader@^2.0.0: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" - find-up "^2.1.0" eslint-plugin-cypress@^2.12.1: version "2.12.1" @@ -11370,7 +10372,7 @@ eslint-plugin-cypress@^2.12.1: eslint-plugin-es@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== dependencies: eslint-utils "^2.0.0" @@ -11378,52 +10380,58 @@ eslint-plugin-es@^3.0.0: eslint-plugin-flowtype@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-7.0.0.tgz#da07684b5f0caf7c42ed013c2d0c04dbaf2960f4" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-7.0.0.tgz#da07684b5f0caf7c42ed013c2d0c04dbaf2960f4" integrity sha512-kW3eipG2Vth6e0apYqmFs05IHhFklJJNokYNiNEO5AIjm7H29oTDybYNB2bMULUYcf7iX7Wf3GdRhfBORKcT1g== dependencies: lodash "^4.17.21" string-natural-compare "^3.0.1" eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + version "2.27.5" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" has "^1.0.3" - is-core-module "^2.8.1" + is-core-module "^2.11.0" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" tsconfig-paths "^3.14.1" eslint-plugin-jsx-a11y@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + version "6.7.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" eslint-plugin-node@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== dependencies: eslint-plugin-es "^3.0.0" @@ -11434,53 +10442,54 @@ eslint-plugin-node@^11.1.0: semver "^6.1.0" eslint-plugin-prettier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-promise@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== eslint-plugin-react-hooks@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" - integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== + version "4.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.29.4: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" - integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== + version "7.32.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" prop-types "^15.8.1" - resolve "^2.0.0-next.3" + resolve "^2.0.0-next.4" semver "^6.3.0" - string.prototype.matchall "^4.0.7" + string.prototype.matchall "^4.0.8" eslint-plugin-tsdoc@^0.2.11: - version "0.2.16" - resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.16.tgz#a3d31fb9c7955faa3c66a43dd43da7635f1c5e0d" - integrity sha512-F/RWMnyDQuGlg82vQEFHQtGyWi7++XJKdYNn0ulIbyMOFqYIjoJOUdE6olORxgwgLkpJxsCJpJbTHgxJ/ggfXw== + version "0.2.17" + resolved "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz#27789495bbd8778abbf92db1707fec2ed3dfe281" + integrity sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA== dependencies: - "@microsoft/tsdoc" "0.14.1" - "@microsoft/tsdoc-config" "0.16.1" + "@microsoft/tsdoc" "0.14.2" + "@microsoft/tsdoc-config" "0.16.2" eslint-scope@3.7.1: version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" integrity sha512-ivpbtpUgg9SJS4TLjK7KdcDhqc/E3CGItsvQbBNLkNGUeMhd5qnJcryba/brESS+dg3vrLqPuc/UcS7jRJdN5A== dependencies: esrecurse "^4.1.0" @@ -11488,7 +10497,7 @@ eslint-scope@3.7.1: eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -11496,7 +10505,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" @@ -11511,37 +10520,37 @@ eslint-utils@^1.3.1: eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-webpack-plugin@^2.5.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" - integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== + version "2.7.0" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz#0525793a4f8c652c1c6d863995ce1e0f2dcbd143" + integrity sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA== dependencies: - "@types/eslint" "^7.28.2" + "@types/eslint" "^7.29.0" arrify "^2.0.1" - jest-worker "^27.3.1" - micromatch "^4.0.4" + jest-worker "^27.5.1" + micromatch "^4.0.5" normalize-path "^3.0.0" schema-utils "^3.1.1" @@ -11589,7 +10598,7 @@ eslint@^5.0.1: eslint@^7.32.0: version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: "@babel/code-frame" "7.12.11" @@ -11644,7 +10653,7 @@ espree@^5.0.1: espree@^7.3.0, espree@^7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" @@ -11653,41 +10662,41 @@ espree@^7.3.0, espree@^7.3.1: esprima@^2.6.0: version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + resolved "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + version "1.4.2" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" + integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== dependencies: estraverse "^5.1.0" esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-to-babel@^3.1.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + resolved "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== dependencies: "@babel/traverse" "^7.1.6" @@ -11696,27 +10705,27 @@ estree-to-babel@^3.1.0: estree-walker@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== eta@^1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/eta/-/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1" - integrity sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg== + version "1.14.2" + resolved "https://registry.npmjs.org/eta/-/eta-1.14.2.tgz#5e6181a26ec13d8444c559ce51f7b3090cebbdd1" + integrity sha512-wZmJAV7EFUG5W8XNXSazIdichnWEhGB1OWg4tnXWPj0CPNUcFdgorGNO6N9p6WBUgoUe4P0OziJYn1+6zxP2aQ== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eval@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + resolved "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== dependencies: "@types/node" "*" @@ -11724,7 +10733,7 @@ eval@^0.1.8: event-stream@=3.3.4: version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== dependencies: duplexer "~0.1.1" @@ -11735,29 +10744,29 @@ event-stream@=3.3.4: stream-combiner "~0.0.4" through "~2.3.1" -eventemitter2@^6.4.3: - version "6.4.9" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" - integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== +eventemitter2@6.4.7: + version "6.4.7" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" + integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== eventemitter3@^3.1.0: version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.0.0, events@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" @@ -11765,12 +10774,12 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: exec-sh@^0.3.2: version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" @@ -11785,7 +10794,7 @@ execa@4.1.0: execa@5.1.1, execa@^5.0.0, execa@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -11800,7 +10809,7 @@ execa@5.1.1, execa@^5.0.0, execa@^5.1.1: execa@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== dependencies: cross-spawn "^5.0.1" @@ -11813,7 +10822,7 @@ execa@^0.7.0: execa@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + resolved "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA== dependencies: cross-spawn "^5.0.1" @@ -11826,7 +10835,7 @@ execa@^0.8.0: execa@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" @@ -11839,7 +10848,7 @@ execa@^1.0.0: execa@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + resolved "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== dependencies: cross-spawn "^7.0.0" @@ -11854,7 +10863,7 @@ execa@^2.0.3: execa@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + resolved "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== dependencies: cross-spawn "^7.0.3" @@ -11869,24 +10878,24 @@ execa@^6.0.0: executable@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + resolved "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== dependencies: pify "^2.2.0" exenv@^1.2.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + resolved "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" @@ -11899,12 +10908,12 @@ expand-brackets@^2.1.4: expand-template@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== expect@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + resolved "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: "@jest/types" "^24.9.0" @@ -11915,13 +10924,13 @@ expect@^24.9.0: jest-regex-util "^24.9.0" express@^4.17.1, express@^4.17.3: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -11940,7 +10949,7 @@ express@^4.17.1, express@^4.17.3: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -11953,14 +10962,14 @@ express@^4.17.1, express@^4.17.3: extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" @@ -11968,12 +10977,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -11982,7 +10991,7 @@ external-editor@^3.0.3: extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -11996,7 +11005,7 @@ extglob@^2.0.4: extract-css-chunks-webpack-plugin@^4.5.4: version "4.9.0" - resolved "https://registry.yarnpkg.com/extract-css-chunks-webpack-plugin/-/extract-css-chunks-webpack-plugin-4.9.0.tgz#da5e6b1d8b39a398c817ffc98550f4ccb6d795e1" + resolved "https://registry.npmjs.org/extract-css-chunks-webpack-plugin/-/extract-css-chunks-webpack-plugin-4.9.0.tgz#da5e6b1d8b39a398c817ffc98550f4ccb6d795e1" integrity sha512-HNuNPCXRMqJDQ1OHAUehoY+0JVCnw9Y/H22FQzYVwo8Ulgew98AGDu0grnY5c7xwiXHjQa6yJ/1dxLCI/xqTyQ== dependencies: loader-utils "^2.0.0" @@ -12006,7 +11015,7 @@ extract-css-chunks-webpack-plugin@^4.5.4: extract-zip@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" @@ -12017,32 +11026,32 @@ extract-zip@2.0.1: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^2.2.6: version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" @@ -12052,18 +11061,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-glob@^3.2.12: +fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -12076,74 +11074,67 @@ fast-glob@^3.2.12: fast-json-parse@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + resolved "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-url-parser@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== dependencies: punycode "^1.3.2" fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + version "1.0.16" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" fbemitter@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + resolved "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== dependencies: fbjs "^3.0.0" fbjs-css-vars@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0, fbjs@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== dependencies: cross-fetch "^3.1.5" @@ -12156,30 +11147,30 @@ fbjs@^3.0.0, fbjs@^3.0.1: fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: pend "~1.2.0" feed@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" + resolved "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== dependencies: xml-js "^1.6.11" fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.5.tgz#0077bf5f3fcdbd9d75a0b5362f77dbb743489863" - integrity sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg== + version "3.2.0" + resolved "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== dependencies: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" fetch-retry@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.2.tgz#4c55663a7c056cb45f182394e479464f0ff8f3e3" - integrity sha512-57Hmu+1kc6pKFUGVIobT7qw3NeAzY/uNN26bSevERLVvf6VGFR/ooDCOFBHMNDgAxBiU2YJq1D0vFzc6U1DcPw== + version "5.0.3" + resolved "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz#edfa3641892995f9afee94f25b168827aa97fe3d" + integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw== fflate@0.7.3: version "0.7.3" @@ -12188,12 +11179,12 @@ fflate@0.7.3: figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== figures@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== dependencies: escape-string-regexp "^1.0.5" @@ -12201,14 +11192,14 @@ figures@^1.7.0: figures@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" figures@^3.0.0, figures@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -12222,14 +11213,14 @@ file-entry-cache@^5.0.1: file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-loader@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" @@ -12237,14 +11228,14 @@ file-loader@^6.2.0: file-selector@^0.1.12: version "0.1.19" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.1.19.tgz#8ecc9d069a6f544f2e4a096b64a8052e70ec8abf" + resolved "https://registry.npmjs.org/file-selector/-/file-selector-0.1.19.tgz#8ecc9d069a6f544f2e4a096b64a8052e70ec8abf" integrity sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ== dependencies: tslib "^2.0.1" file-system-cache@^1.0.5: version "1.1.0" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-1.1.0.tgz#984de17b976b75a77a27e08d6828137c1aa80fa1" + resolved "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz#984de17b976b75a77a27e08d6828137c1aa80fa1" integrity sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw== dependencies: fs-extra "^10.1.0" @@ -12252,24 +11243,24 @@ file-system-cache@^1.0.5: file-uri-to-path@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== filelist@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" filesize@^8.0.6: version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" @@ -12279,19 +11270,19 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" filter-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -12304,7 +11295,7 @@ finalhandler@1.2.0: find-babel-config@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + resolved "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== dependencies: json5 "^0.5.1" @@ -12321,7 +11312,7 @@ find-cache-dir@^0.1.1: find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" @@ -12330,7 +11321,7 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: find-cache-dir@^3.3.1: version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" @@ -12339,12 +11330,12 @@ find-cache-dir@^3.3.1: find-root@^1.0.0, find-root@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: path-exists "^2.0.0" @@ -12352,21 +11343,21 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -12374,7 +11365,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -12391,7 +11382,7 @@ flat-cache@^2.0.1: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -12403,13 +11394,13 @@ flatted@^2.0.0: integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== flush-write-stream@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: inherits "^2.0.3" @@ -12417,32 +11408,32 @@ flush-write-stream@^1.0.0: flux@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" + resolved "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" integrity sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw== dependencies: fbemitter "^3.0.0" fbjs "^3.0.1" -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7, follow-redirects@^1.14.8: - version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== +follow-redirects@^1.0.0, follow-redirects@^1.14.7, follow-redirects@^1.14.8, follow-redirects@^1.14.9: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== foreground-child@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: cross-spawn "^7.0.0" @@ -12450,12 +11441,12 @@ foreground-child@^2.0.0: forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== fork-ts-checker-webpack-plugin@^4.1.6: version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== dependencies: "@babel/code-frame" "^7.5.5" @@ -12468,7 +11459,7 @@ fork-ts-checker-webpack-plugin@^4.1.6: fork-ts-checker-webpack-plugin@^6.0.4, fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.2" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" @@ -12487,59 +11478,63 @@ fork-ts-checker-webpack-plugin@^6.0.4, fork-ts-checker-webpack-plugin@^6.5.0: form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" mime-types "^2.1.12" -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - formdata-polyfill@^4.0.10: version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + resolved "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== dependencies: fetch-blob "^3.1.2" forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fraction.js@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== from2@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: inherits "^2.0.1" @@ -12547,17 +11542,17 @@ from2@^2.1.0: from@~0: version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + resolved "https://registry.npmjs.org/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -12566,7 +11561,7 @@ fs-extra@^10.1.0: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -12575,7 +11570,7 @@ fs-extra@^8.1.0: fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -12585,26 +11580,26 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: fs-minipass@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: minipass "^2.6.0" fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" -fs-monkey@1.0.3: +fs-monkey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs-write-stream-atomic@^1.0.8: version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: graceful-fs "^4.1.2" @@ -12614,12 +11609,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.7: version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" @@ -12627,17 +11622,17 @@ fsevents@^1.2.7: fsevents@^2.1.2, fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.0, function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -12647,17 +11642,17 @@ function.prototype.name@^1.1.0, function.prototype.name@^1.1.2, function.prototy functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== functions-have-names@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gauge@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -12672,7 +11667,7 @@ gauge@^3.0.0: gauge@~2.7.3: version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" @@ -12686,41 +11681,41 @@ gauge@~2.7.3: genfun@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + resolved "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-pkg-repo@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" integrity sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg== dependencies: hosted-git-info "^2.1.4" @@ -12731,46 +11726,46 @@ get-pkg-repo@^1.0.0: get-port@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + resolved "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== get-stdin@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== get-stdin@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== get-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -12778,26 +11773,26 @@ get-symbol-description@^1.0.0: get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getos@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + resolved "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== dependencies: async "^3.2.0" getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" git-raw-commits@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== dependencies: dargs "^4.0.1" @@ -12808,7 +11803,7 @@ git-raw-commits@2.0.0: git-remote-origin-url@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== dependencies: gitconfiglocal "^1.0.0" @@ -12816,7 +11811,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== dependencies: meow "^4.0.0" @@ -12824,7 +11819,7 @@ git-semver-tags@^2.0.3: git-up@^4.0.0: version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== dependencies: is-ssh "^1.3.0" @@ -12832,41 +11827,41 @@ git-up@^4.0.0: git-url-parse@^11.1.2: version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== dependencies: git-up "^4.0.0" gitconfiglocal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== dependencies: ini "^1.3.2" github-from-package@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== github-slugger@^1.0.0, github-slugger@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" - integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== + version "1.5.0" + resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== gitignore@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/gitignore/-/gitignore-0.7.0.tgz#062173df62344a572dfd76d98b59c45108562739" + resolved "https://registry.npmjs.org/gitignore/-/gitignore-0.7.0.tgz#062173df62344a572dfd76d98b59c45108562739" integrity sha512-6iE891OyeYQYVvdoWI/hcxDWJ0sOngSpIRadxLoYbsnZdqWIUsEfx+IrOpW3d/zWBA/eKYvs6ZZx6ogz2wEGoQ== gl-matrix@3.4.3, gl-matrix@^3.1.0, gl-matrix@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + resolved "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: is-glob "^3.1.0" @@ -12874,38 +11869,38 @@ glob-parent@^3.1.0: glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-promise@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" + resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== dependencies: "@types/glob" "*" glob-to-regexp@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -12916,9 +11911,9 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, gl path-is-absolute "^1.0.0" glob@^8.0.3: - version "8.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -12928,29 +11923,29 @@ glob@^8.0.3: global-cache@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/global-cache/-/global-cache-1.2.1.tgz#39ca020d3dd7b3f0934c52b75363f8d53312c16d" + resolved "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz#39ca020d3dd7b3f0934c52b75363f8d53312c16d" integrity sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA== dependencies: define-properties "^1.1.2" is-symbol "^1.0.1" global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: ini "2.0.0" global-modules@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: global-prefix "^3.0.0" global-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: ini "^1.3.5" @@ -12959,7 +11954,7 @@ global-prefix@^3.0.0: global@^4.3.0, global@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" @@ -12967,26 +11962,26 @@ global@^4.3.0, global@^4.4.0: globals@^11.1.0, globals@^11.12.0, globals@^11.7.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" - integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + version "13.20.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" -globalthis@1.0.3, globalthis@^1.0.0: +globalthis@1.0.3, globalthis@^1.0.0, globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" globby@^10.0.1: version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + resolved "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== dependencies: "@types/glob" "^7.1.1" @@ -13000,7 +11995,7 @@ globby@^10.0.1: globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -13023,9 +12018,9 @@ globby@^12.0.2: slash "^4.0.0" globby@^13.1.1: - version "13.1.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" - integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== + version "13.1.3" + resolved "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" + integrity sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw== dependencies: dir-glob "^3.0.1" fast-glob "^3.2.11" @@ -13035,7 +12030,7 @@ globby@^13.1.1: globby@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== dependencies: array-union "^1.0.1" @@ -13046,7 +12041,7 @@ globby@^6.1.0: globby@^9.2.0: version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + resolved "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== dependencies: "@types/glob" "^7.1.1" @@ -13058,9 +12053,16 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" @@ -13077,12 +12079,12 @@ got@^9.6.0: graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== gray-matter@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== dependencies: js-yaml "^3.13.1" @@ -13092,34 +12094,34 @@ gray-matter@^4.0.3: growly@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== gud@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + resolved "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" hammerjs@^2.0.8: version "2.0.8" - resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + resolved "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" @@ -13131,12 +12133,12 @@ handlebars@^4.7.6, handlebars@^4.7.7: har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" @@ -13144,70 +12146,75 @@ har-validator@~5.1.3: hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-glob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + resolved "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" integrity sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g== dependencies: is-glob "^3.0.0" has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has-value@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" @@ -13216,7 +12223,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" @@ -13225,12 +12232,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" @@ -13238,19 +12245,19 @@ has-values@^1.0.0: has-yarn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== has@^1.0.0, has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" @@ -13259,7 +12266,7 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -13267,7 +12274,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: hast-to-hyperscript@^9.0.0: version "9.0.1" - resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + resolved "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: "@types/unist" "^2.0.3" @@ -13280,7 +12287,7 @@ hast-to-hyperscript@^9.0.0: hast-util-from-parse5@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: "@types/parse5" "^5.0.0" @@ -13292,12 +12299,12 @@ hast-util-from-parse5@^6.0.0: hast-util-parse-selector@^2.0.0: version "2.2.5" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-raw@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== dependencies: "@types/hast" "^2.0.0" @@ -13313,7 +12320,7 @@ hast-util-raw@6.0.1: hast-util-to-parse5@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: hast-to-hyperscript "^9.0.0" @@ -13324,7 +12331,7 @@ hast-util-to-parse5@^6.0.0: hastscript@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: "@types/hast" "^2.0.0" @@ -13335,22 +12342,17 @@ hastscript@^6.0.0: he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hex-color-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -highlight.js@^10.4.1, highlight.js@~10.7.0: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - history@^4.9.0: version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" @@ -13360,16 +12362,16 @@ history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" -history@^5.2.0, history@^5.3.0: +history@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + resolved "https://registry.npmjs.org/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== dependencies: "@babel/runtime" "^7.7.6" hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" @@ -13378,26 +12380,26 @@ hmac-drbg@^1.0.1: hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.2.1, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^4.0.1: version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -13407,34 +12409,34 @@ hpack.js@^2.1.6: hsl-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== hsla-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== html-encoding-sniffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: whatwg-encoding "^1.0.1" html-entities@^2.1.0, html-entities@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^5.0.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: camel-case "^4.1.1" @@ -13447,7 +12449,7 @@ html-minifier-terser@^5.0.1: html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: camel-case "^4.1.2" @@ -13460,24 +12462,24 @@ html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: html-parse-stringify2@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" + resolved "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" integrity sha512-wMKQ3aJ/dwXzDHPpA7XgsRXXCkEhHkAF6Ioh7D51lgZO7Qy0LmcFddC9TI/qNQJvSM1KL8KbcR3FtuybsrzFlQ== dependencies: void-elements "^2.0.1" html-tags@^3.1.0, html-tags@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== html-void-elements@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== html-webpack-plugin@^4.0.0: version "4.5.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== dependencies: "@types/html-minifier-terser" "^5.0.0" @@ -13492,7 +12494,7 @@ html-webpack-plugin@^4.0.0: html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.3.2, html-webpack-plugin@^5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: "@types/html-minifier-terser" "^6.0.0" @@ -13511,7 +12513,7 @@ html2canvas@^1.4.1: htmlparser2@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: domelementtype "^2.0.1" @@ -13521,7 +12523,7 @@ htmlparser2@^6.1.0: htmlparser2@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: domelementtype "^2.3.0" @@ -13531,22 +12533,22 @@ htmlparser2@^8.0.1: http-cache-semantics@^3.8.1: version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -13557,7 +12559,7 @@ http-errors@2.0.0: http-errors@~1.6.2: version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" @@ -13566,13 +12568,13 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" - integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-agent@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== dependencies: agent-base "4" @@ -13580,7 +12582,7 @@ http-proxy-agent@^2.1.0: http-proxy-middleware@^2.0.0, http-proxy-middleware@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" @@ -13591,7 +12593,7 @@ http-proxy-middleware@^2.0.0, http-proxy-middleware@^2.0.3: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -13600,7 +12602,7 @@ http-proxy@^1.18.1: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" @@ -13609,7 +12611,7 @@ http-signature@~1.2.0: http-signature@~1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== dependencies: assert-plus "^1.0.0" @@ -13618,12 +12620,12 @@ http-signature@~1.3.6: https-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== https-proxy-agent@^2.2.3: version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: agent-base "^4.3.0" @@ -13631,29 +12633,29 @@ https-proxy-agent@^2.2.3: human-signals@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== human-signals@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== humanize-ms@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" husky@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + resolved "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== dependencies: chalk "^2.4.2" @@ -13670,103 +12672,103 @@ husky@^3.0.0: i18next-browser-languagedetector@^3.0.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.1.1.tgz#1a0c236d4339476cc3632da60ff947bbc2e3ba3c" + resolved "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.1.1.tgz#1a0c236d4339476cc3632da60ff947bbc2e3ba3c" integrity sha512-JBgFWijjI1t6as4WgGvDdX4GLJPZwC/SMHzLQQ3ef7XaJsEkomlXFqXifKvOVJg09Hj2BVWe6strDdIF4J/0ng== i18next-locize-backend@^2.0.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/i18next-locize-backend/-/i18next-locize-backend-2.2.2.tgz#19c476ba08159a05334c6371d0dd1fe7fb7c5890" + resolved "https://registry.npmjs.org/i18next-locize-backend/-/i18next-locize-backend-2.2.2.tgz#19c476ba08159a05334c6371d0dd1fe7fb7c5890" integrity sha512-YUHyrCr/8V85fh4WKE8rvzcQdS47lRbHOrDu69bBfMSiycCW26wYwcw2UQjtMY8GcoKgDYbYGbSfzunpnLATvQ== dependencies: "@babel/runtime" "^7.7.4" i18next@^17.0.3: version "17.3.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.3.1.tgz#5fe75e054aae39a6f38f1a79f7ab49184c6dc7a1" + resolved "https://registry.npmjs.org/i18next/-/i18next-17.3.1.tgz#5fe75e054aae39a6f38f1a79f7ab49184c6dc7a1" integrity sha512-4nY+yaENaoZKmpbiDXPzucVHCN3hN9Z9Zk7LyQXVOKVIpnYOJ3L/yxHJlBPtJDq3PGgjFwA0QBFm/26Z0iDT5A== dependencies: "@babel/runtime" "^7.3.1" iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: postcss "^7.0.14" icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@^6.1.4: - version "6.1.5" - resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" - integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== identity-obj-proxy@3.0.x: version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== ignore-walk@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.0.0, ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== image-size@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.1.tgz#86d6cfc2b1d19eab5d2b368d4b9194d9e48541c5" - integrity sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ== + version "1.0.2" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" + integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== dependencies: queue "6.0.2" immer@^9.0.7: - version "9.0.14" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.14.tgz#e05b83b63999d26382bb71676c9d827831248a48" - integrity sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw== + version "9.0.19" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.19.tgz#67fb97310555690b5f9cd8380d38fc0aabb6b38b" + integrity sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ== import-fresh@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: caller-path "^2.0.0" @@ -13774,7 +12776,7 @@ import-fresh@^2.0.0: import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -13782,12 +12784,12 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3 import-lazy@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== import-local@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" @@ -13795,7 +12797,7 @@ import-local@^2.0.0: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -13803,44 +12805,44 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== dependencies: repeating "^2.0.0" indent-string@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== indexes-of@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== infima@0.2.0-alpha.42: version "0.2.0-alpha.42" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.42.tgz#f6e86a655ad40877c6b4d11b2ede681eb5470aa5" + resolved "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.42.tgz#f6e86a655ad40877c6b4d11b2ede681eb5470aa5" integrity sha512-ift8OXNbQQwtbIt6z16KnSWP7uJ/SysSMFI4F87MNRTicypfl4Pv3E2OGVv6N3nSZFJvA8imYulCBS64iyHYww== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -13848,32 +12850,32 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^1.10.3: version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== dependencies: glob "^7.1.1" @@ -13887,12 +12889,12 @@ init-package-json@^1.10.3: inline-style-parser@0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== inquirer@^6.2.0, inquirer@^6.2.2: version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: ansi-escapes "^3.2.0" @@ -13910,9 +12912,9 @@ inquirer@^6.2.0, inquirer@^6.2.2: through "^2.3.6" inquirer@^8.2.0: - version "8.2.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" - integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + version "8.2.5" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -13930,146 +12932,155 @@ inquirer@^8.2.0: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +internal-slot@^1.0.3, internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.0" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" "internmap@1 - 2": version "2.0.3" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== interpret@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== interpret@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.0, invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" iota-array@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" + resolved "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" integrity sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA== ip@1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA== ip@^1.1.0: version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== is-absolute-url@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== is-absolute-url@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== is-alphanumerical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4, is-arguments@^1.1.0: +is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-arrayish@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: binary-extensions "^1.0.0" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -14077,36 +13088,36 @@ is-boolean-object@^1.1.0: is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" is-ci@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: ci-info "^3.2.0" is-color-stop@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== dependencies: css-color-names "^0.0.4" @@ -14116,49 +13127,42 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== +is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-decimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -14167,7 +13171,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" @@ -14176,17 +13180,17 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-dom@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" + resolved "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== dependencies: is-object "^1.0.1" @@ -14194,82 +13198,82 @@ is-dom@^1.0.0: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finite@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-function@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" is-glob@^3.0.0, is-glob@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: is-extglob "^2.1.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hexadecimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: global-dirs "^3.0.0" @@ -14277,129 +13281,129 @@ is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-map@^2.0.2: +is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-npm@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-observable@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + resolved "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== dependencies: symbol-observable "^1.1.0" is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== is-path-in-cwd@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: is-path-inside "^2.1.0" is-path-inside@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: path-is-inside "^1.0.2" is-path-inside@^3.0.1, is-path-inside@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-plain-obj@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-plain-object@5.0.0, is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-promise@^2.1.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.2, is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -14407,194 +13411,207 @@ is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.2, is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-resolvable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== is-root@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.2: +is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== + version "1.4.0" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.1, is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: text-extensions "^1.0.0" is-touch-device@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-touch-device/-/is-touch-device-1.0.1.tgz#9a2fd59f689e9a9bf6ae9a86924c4ba805a42eab" + resolved "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz#9a2fd59f689e9a9bf6ae9a86924c4ba805a42eab" integrity sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw== -is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" - integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.20.0" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-utf8@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-whitespace-character@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + resolved "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== is-window@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + resolved "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" integrity sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg== is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-word-character@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + resolved "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== is-wsl@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" is-yarn-global@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isobject@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== isomorphic-base64@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" + resolved "https://registry.npmjs.org/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" integrity sha512-pQFyLwShVPA1Qr0dE1ZPguJkbOsFGDfSq6Wzz6XaO33v74X6/iQjgYPozwkeKGQxOI1/H3Fz7+ROtnV1veyKEg== isomorphic-unfetch@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== dependencies: node-fetch "^2.6.1" @@ -14602,22 +13619,22 @@ isomorphic-unfetch@^3.1.0: isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: "@babel/generator" "^7.4.0" @@ -14639,9 +13656,9 @@ istanbul-lib-instrument@^4.0.3: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -14651,7 +13668,7 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-report@^2.0.4: version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== dependencies: istanbul-lib-coverage "^2.0.5" @@ -14660,7 +13677,7 @@ istanbul-lib-report@^2.0.4: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -14669,7 +13686,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^3.0.1: version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: debug "^4.1.1" @@ -14680,27 +13697,27 @@ istanbul-lib-source-maps@^3.0.1: istanbul-reports@^2.2.6: version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: html-escaper "^2.0.0" istanbul-reports@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + version "3.1.5" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" iterate-iterator@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" + resolved "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== iterate-value@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" + resolved "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== dependencies: es-get-iterator "^1.0.2" @@ -14708,7 +13725,7 @@ iterate-value@^1.0.2: jake@^10.8.5: version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: async "^3.2.3" @@ -14718,7 +13735,7 @@ jake@^10.8.5: jest-canvas-mock@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341" + resolved "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341" integrity sha512-mmMpZzpmLzn5vepIaHk5HoH3Ka4WykbSoLuG/EKoJd0x0ID/t+INo1l8ByfcUJuDM+RIsL4QDg/gDnBbrj2/IQ== dependencies: cssfontparser "^1.2.1" @@ -14726,7 +13743,7 @@ jest-canvas-mock@^2.1.0: jest-changed-files@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: "@jest/types" "^24.9.0" @@ -14735,7 +13752,7 @@ jest-changed-files@^24.9.0: jest-cli@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: "@jest/core" "^24.9.0" @@ -14754,7 +13771,7 @@ jest-cli@^24.9.0: jest-config@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== dependencies: "@babel/core" "^7.1.0" @@ -14777,7 +13794,7 @@ jest-config@^24.9.0: jest-diff@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" @@ -14787,7 +13804,7 @@ jest-diff@^24.9.0: jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -14797,14 +13814,14 @@ jest-diff@^27.5.1: jest-docblock@^24.3.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== dependencies: detect-newline "^2.1.0" jest-each@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: "@jest/types" "^24.9.0" @@ -14815,7 +13832,7 @@ jest-each@^24.9.0: jest-environment-jsdom@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== dependencies: "@jest/environment" "^24.9.0" @@ -14827,7 +13844,7 @@ jest-environment-jsdom@^24.9.0: jest-environment-node@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: "@jest/environment" "^24.9.0" @@ -14838,17 +13855,17 @@ jest-environment-node@^24.9.0: jest-get-type@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-haste-map@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: "@jest/types" "^24.9.0" @@ -14867,7 +13884,7 @@ jest-haste-map@^24.9.0: jest-haste-map@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: "@jest/types" "^26.6.2" @@ -14888,7 +13905,7 @@ jest-haste-map@^26.6.2: jest-jasmine2@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== dependencies: "@babel/traverse" "^7.1.0" @@ -14910,7 +13927,7 @@ jest-jasmine2@^24.9.0: jest-junit@^6.4.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" + resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== dependencies: jest-validate "^24.0.0" @@ -14920,7 +13937,7 @@ jest-junit@^6.4.0: jest-leak-detector@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== dependencies: jest-get-type "^24.9.0" @@ -14928,7 +13945,7 @@ jest-leak-detector@^24.9.0: jest-matcher-utils@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" @@ -14938,7 +13955,7 @@ jest-matcher-utils@^24.9.0: jest-matcher-utils@^27.0.0: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -14948,7 +13965,7 @@ jest-matcher-utils@^27.0.0: jest-message-util@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" @@ -14962,29 +13979,29 @@ jest-message-util@^24.9.0: jest-mock@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== dependencies: "@jest/types" "^24.9.0" jest-pnp-resolver@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== jest-regex-util@^26.0.0: version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== jest-resolve-dependencies@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: "@jest/types" "^24.9.0" @@ -14993,7 +14010,7 @@ jest-resolve-dependencies@^24.9.0: jest-resolve@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: "@jest/types" "^24.9.0" @@ -15004,7 +14021,7 @@ jest-resolve@^24.9.0: jest-runner@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== dependencies: "@jest/console" "^24.7.1" @@ -15029,7 +14046,7 @@ jest-runner@^24.9.0: jest-runtime@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== dependencies: "@jest/console" "^24.7.1" @@ -15058,12 +14075,12 @@ jest-runtime@^24.9.0: jest-serializer@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== jest-serializer@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" @@ -15071,7 +14088,7 @@ jest-serializer@^26.6.2: jest-snapshot@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== dependencies: "@babel/types" "^7.0.0" @@ -15090,7 +14107,7 @@ jest-snapshot@^24.9.0: jest-util@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== dependencies: "@jest/console" "^24.9.0" @@ -15108,7 +14125,7 @@ jest-util@^24.9.0: jest-util@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: "@jest/types" "^26.6.2" @@ -15118,9 +14135,21 @@ jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" +jest-util@^29.4.3: + version "29.4.3" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" + integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q== + dependencies: + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^24.0.0, jest-validate@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: "@jest/types" "^24.9.0" @@ -15132,7 +14161,7 @@ jest-validate@^24.0.0, jest-validate@^24.9.0: jest-watcher@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== dependencies: "@jest/test-result" "^24.9.0" @@ -15145,7 +14174,7 @@ jest-watcher@^24.9.0: jest-worker@^24.6.0, jest-worker@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: merge-stream "^2.0.0" @@ -15153,25 +14182,35 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: jest-worker@^26.2.1, jest-worker@^26.5.0, jest-worker@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.3.1, jest-worker@^27.4.5, jest-worker@^27.5.1: +jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.1.2: + version "29.4.3" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz#9a4023e1ea1d306034237c7133d7da4240e8934e" + integrity sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA== + dependencies: + "@types/node" "*" + jest-util "^29.4.3" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^24.8.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + resolved "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: import-local "^2.0.0" @@ -15179,23 +14218,23 @@ jest@^24.8.0: jju@~1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== -joi@^17.4.0, joi@^17.6.0: - version "17.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== +joi@^17.6.0, joi@^17.7.0: + version "17.7.1" + resolved "https://registry.npmjs.org/joi/-/joi-17.7.1.tgz#854fc85c7fa3cfc47c91124d30bffdbb58e06cec" + integrity sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.0" + "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" js-string-escape@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + resolved "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== js-tokens@^3.0.0: @@ -15205,12 +14244,12 @@ js-tokens@^3.0.0: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@3.14.0: version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" @@ -15218,7 +14257,7 @@ js-yaml@3.14.0: js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -15226,14 +14265,14 @@ js-yaml@^3.13.0, js-yaml@^3.13.1: js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js-yaml@~3.7.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" integrity sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ== dependencies: argparse "^1.0.7" @@ -15241,12 +14280,12 @@ js-yaml@~3.7.0: jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdom@^11.5.1: version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== dependencies: abab "^2.0.0" @@ -15278,81 +14317,81 @@ jsdom@^11.5.1: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@0.4.0, json-schema@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^0.5.1: version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -15361,17 +14400,17 @@ jsonfile@^6.0.1: jsonparse@^1.2.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsonpointer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072" - integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg== + version "5.0.1" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" @@ -15381,7 +14420,7 @@ jsprim@^1.2.2: jsprim@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== dependencies: assert-plus "1.0.0" @@ -15389,75 +14428,75 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" - integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - array-includes "^3.1.4" - object.assign "^4.1.2" + array-includes "^3.1.5" + object.assign "^4.1.3" junk@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + resolved "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== keyv@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== klona@^2.0.4, klona@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + version "2.0.6" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + version "0.3.22" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@^1.0.5: +language-tags@=1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: language-subtag-registry "~0.3.2" last-call-webpack-plugin@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== dependencies: lodash "^4.17.5" @@ -15465,19 +14504,19 @@ last-call-webpack-plugin@^3.0.0: latest-version@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: package-json "^6.3.0" lazy-ass@1.6.0, lazy-ass@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== lazy-universal-dotenv@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" + resolved "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== dependencies: "@babel/runtime" "^7.5.0" @@ -15488,12 +14527,12 @@ lazy-universal-dotenv@^3.0.1: left-pad@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + resolved "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== lerna@^3.15.0: version "3.22.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" + resolved "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" integrity sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg== dependencies: "@lerna/add" "3.21.0" @@ -15517,12 +14556,12 @@ lerna@^3.15.0: leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.3.0, levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" @@ -15530,30 +14569,25 @@ levn@^0.3.0, levn@~0.3.0: levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" type-check "~0.4.0" -lilconfig@^2.0.3, lilconfig@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== - -lilconfig@^2.0.6: +lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@^9.0.2: version "9.5.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA== dependencies: chalk "^2.4.2" @@ -15573,12 +14607,12 @@ lint-staged@^9.0.2: listr-silent-renderer@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + resolved "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" integrity sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== listr-update-renderer@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + resolved "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== dependencies: chalk "^1.1.3" @@ -15592,7 +14626,7 @@ listr-update-renderer@^0.5.0: listr-verbose-renderer@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + resolved "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== dependencies: chalk "^2.4.1" @@ -15602,7 +14636,7 @@ listr-verbose-renderer@^0.5.0: listr2@^3.8.3: version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: cli-truncate "^2.1.0" @@ -15616,7 +14650,7 @@ listr2@^3.8.3: listr@^0.14.3: version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + resolved "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== dependencies: "@samverschueren/stream-to-observable" "^0.3.0" @@ -15631,7 +14665,7 @@ listr@^0.14.3: load-json-file@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: graceful-fs "^4.1.2" @@ -15642,7 +14676,7 @@ load-json-file@^1.0.0: load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" @@ -15652,7 +14686,7 @@ load-json-file@^4.0.0: load-json-file@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== dependencies: graceful-fs "^4.1.15" @@ -15671,40 +14705,40 @@ loader-fs-cache@^1.0.0: loader-runner@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== +loader-utils@^2.0.0, loader-utils@^2.0.3, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" loader-utils@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" - integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== + version "3.2.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" @@ -15712,7 +14746,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -15720,28 +14754,28 @@ locate-path@^3.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" locize-editor@^2.0.0: version "2.2.2" - resolved "https://registry.yarnpkg.com/locize-editor/-/locize-editor-2.2.2.tgz#f3529382535b3a680b7be51eaa86adb6a2e76651" + resolved "https://registry.npmjs.org/locize-editor/-/locize-editor-2.2.2.tgz#f3529382535b3a680b7be51eaa86adb6a2e76651" integrity sha512-geVXaA89vhfGTqzysA/EeLWRJEWBtdL/OoksiWmBFX2rUCmVrRN0Yb2sQhTvM84ZmQzxpGWTJvf1gzV3IpSGEg== dependencies: "@babel/runtime" "^7.4.5" locize-lastused@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/locize-lastused/-/locize-lastused-1.1.1.tgz#ca83a7386dcd74ee0cae07c8ef579cb24f345b9b" + resolved "https://registry.npmjs.org/locize-lastused/-/locize-lastused-1.1.1.tgz#ca83a7386dcd74ee0cae07c8ef579cb24f345b9b" integrity sha512-zq310En1BWRRjWaYdTScUwCWUcvLJuOUqFpN5LBQoCccWg9CQB5gDg/D+b8YjR2GkofRGy08C+4LGpqcGqfkHA== lodash-es@^4.17.15: @@ -15751,77 +14785,77 @@ lodash-es@^4.17.15: lodash._reinterpolate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== lodash.clonedeep@4.5.0, lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== lodash.curry@^4.0.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + resolved "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== lodash.debounce@4.0.8, lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.flow@^3.3.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + resolved "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== lodash.get@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.isequal@4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.ismatch@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.1, lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.once@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.set@^4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.template@^4.0.2, lodash.template@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: lodash._reinterpolate "^3.0.0" @@ -15829,43 +14863,43 @@ lodash.template@^4.0.2, lodash.template@^4.5.0: lodash.templatesettings@^4.0.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: lodash._reinterpolate "^3.0.0" lodash.truncate@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" integrity sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== dependencies: chalk "^1.0.0" log-symbols@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: chalk "^2.4.2" log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -15873,7 +14907,7 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: log-update@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + resolved "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== dependencies: ansi-escapes "^3.0.0" @@ -15882,7 +14916,7 @@ log-update@^2.3.0: log-update@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -15892,19 +14926,19 @@ log-update@^4.0.0: loglevelnext@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04" + resolved "https://registry.npmjs.org/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04" integrity sha512-JpjaJhIN1reaSb26SIxDGtE0uc67gPl19OMVHrr+Ggt6b/Vy60jmCtKgQBrygAH0bhRA2nkxgDvM+8QvR8r0YA== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== dependencies: currently-unhandled "^0.4.1" @@ -15912,32 +14946,24 @@ loud-rejection@^1.0.0: lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lowlight@^1.17.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" - integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== - dependencies: - fault "^1.0.0" - highlight.js "~10.7.0" - lru-cache@^4.0.1: version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" @@ -15945,40 +14971,40 @@ lru-cache@^4.0.1: lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" macos-release@^2.2.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" + resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== magic-string@^0.25.0, magic-string@^0.25.1, magic-string@^0.25.2, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" make-dir@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" @@ -15986,14 +15012,14 @@ make-dir@^2.0.0, make-dir@^2.1.0: make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" make-fetch-happen@^5.0.0: version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: agentkeepalive "^3.4.1" @@ -16010,58 +15036,58 @@ make-fetch-happen@^5.0.0: makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" map-age-cleaner@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" integrity sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ== map-obj@^4.0.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-or-similar@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== map-stream@~0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" markdown-escapes@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== material-colors@^1.2.1: @@ -16071,7 +15097,7 @@ material-colors@^1.2.1: md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -16080,21 +15106,21 @@ md5.js@^1.3.4: mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + resolved "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== dependencies: unist-util-remove "^2.0.0" mdast-util-definitions@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: unist-util-visit "^2.0.0" mdast-util-to-hast@10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== dependencies: "@types/mdast" "^3.0.0" @@ -16108,69 +15134,69 @@ mdast-util-to-hast@10.0.1: mdast-util-to-string@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== mdast-util-to-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== mdn-data@2.0.14: version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== mdn-data@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== mdurl@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== medium-zoom@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" - integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== + version "1.0.8" + resolved "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.8.tgz#2bd1fbcf2961fa7b0e318fe284462aa9b8608ed2" + integrity sha512-CjFVuFq/IfrdqesAXfg+hzlDKu6A2n80ZIq0Kl9kWjoHh9j1N9Uvk5X0/MmN0hOfm5F9YBswlClhcwnmtwz7gA== mem@^8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + resolved "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== dependencies: map-age-cleaner "^0.1.3" mimic-fn "^3.1.0" memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.3: - version "3.4.4" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.4.tgz#e8973cd8060548916adcca58a248e7805c715e89" - integrity sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA== + version "3.4.13" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345" + integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg== dependencies: - fs-monkey "1.0.3" + fs-monkey "^1.0.3" memoize-one@^5.0.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== memoizerific@^1.11.3: version "1.11.3" - resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + resolved "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== dependencies: map-or-similar "^1.5.0" memory-fs@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== dependencies: errno "^0.1.3" @@ -16178,7 +15204,7 @@ memory-fs@^0.4.1: memory-fs@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: errno "^0.1.3" @@ -16186,7 +15212,7 @@ memory-fs@^0.5.0: meow@^3.1.0, meow@^3.3.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== dependencies: camelcase-keys "^2.0.0" @@ -16202,7 +15228,7 @@ meow@^3.1.0, meow@^3.3.0: meow@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + resolved "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== dependencies: camelcase-keys "^4.0.0" @@ -16217,7 +15243,7 @@ meow@^4.0.0: meow@^8.0.0: version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== dependencies: "@types/minimist" "^1.2.0" @@ -16234,7 +15260,7 @@ meow@^8.0.0: merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-source-map@^1.1.0: @@ -16246,27 +15272,27 @@ merge-source-map@^1.1.0: merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== microevent.ts@~0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -16285,7 +15311,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -16293,7 +15319,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: miller-rabin@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" @@ -16301,136 +15327,121 @@ miller-rabin@^4.0.0: mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.33.0: version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== mime-types@2.1.18: version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-fn@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== mimic-fn@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== min-document@^2.19.0: version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - -mini-css-extract-plugin@^2.1.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" - integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== - dependencies: - schema-utils "^4.0.0" - -mini-css-extract-plugin@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" - integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== +mini-css-extract-plugin@^2.1.0, mini-css-extract-plugin@^2.6.1: + version "2.7.2" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz#e049d3ea7d3e4e773aad585c6cb329ce0c7b72d7" + integrity sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw== dependencies: schema-utils "^4.0.0" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== minimatch@3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" minimist-options@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" @@ -16439,63 +15450,68 @@ minimist-options@4.1.0: minimist-options@^3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-flush@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-pipeline@^1.2.2: version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minipass@^3.0.0, minipass@^3.1.1: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" +minipass@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz#00bfbaf1e16e35e804f4aa31a7c1f6b8d9f0ee72" + integrity sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw== + minizlib@^1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -16503,7 +15519,7 @@ minizlib@^2.1.1: mississippi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" @@ -16519,7 +15535,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" @@ -16527,58 +15543,63 @@ mixin-deep@^1.2.0: mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp-promise@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== dependencies: mkdirp "*" -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@*: + version "2.1.3" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz#b083ff37be046fd3d6552468c1f0ff44c1545d1f" + integrity sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw== -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@^0.5.6, mkdirp@~0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment@2.24.0: version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + resolved "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== moment@>=1.6.0, moment@^2.24.0: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== + version "2.29.4" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== moo-color@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/moo-color/-/moo-color-1.0.3.tgz#d56435f8359c8284d83ac58016df7427febece74" + resolved "https://registry.npmjs.org/moo-color/-/moo-color-1.0.3.tgz#d56435f8359c8284d83ac58016df7427febece74" integrity sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ== dependencies: color-name "^1.1.4" mousetrap@^1.6.5: version "1.6.5" - resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.5.tgz#8a766d8c272b08393d5f56074e0b5ec183485bf9" + resolved "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz#8a766d8c272b08393d5f56074e0b5ec183485bf9" integrity sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA== move-concurrently@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: aproba "^1.1.1" @@ -16589,46 +15610,46 @@ move-concurrently@^1.0.1: run-queue "^1.0.3" mrmime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b" - integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ== + version "1.0.1" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns-service-types@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== multicast-dns@^6.0.1: version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== dependencies: dns-packet "^1.3.1" thunky "^1.0.2" -multicast-dns@^7.2.4: +multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" @@ -16636,7 +15657,7 @@ multicast-dns@^7.2.4: multimatch@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== dependencies: array-differ "^2.0.3" @@ -16646,22 +15667,22 @@ multimatch@^3.0.0: mustache@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + resolved "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== mute-stream@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mz@^2.5.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" @@ -16669,18 +15690,18 @@ mz@^2.5.0: thenify-all "^1.0.0" nan@^2.12.1: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" - integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanoid@^3.3.1, nanoid@^3.3.4: version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== nanomatch@^1.2.9: version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -16697,22 +15718,22 @@ nanomatch@^1.2.9: napi-build-utils@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ncp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + resolved "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== ndarray@^1.0.19: version "1.0.19" - resolved "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" + resolved "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" integrity sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ== dependencies: iota-array "^1.0.0" @@ -16720,83 +15741,90 @@ ndarray@^1.0.19: negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" + resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== no-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" tslib "^2.0.3" node-abi@^3.3.0: - version "3.22.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.22.0.tgz#00b8250e86a0816576258227edbce7bbe0039362" - integrity sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w== + version "3.33.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f" + integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog== dependencies: semver "^7.3.5" node-addon-api@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501" - integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA== + version "5.1.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== node-dir@^0.1.10: version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== dependencies: minimatch "^3.0.2" node-domexception@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== node-emoji@^1.10.0: version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: lodash "^4.17.21" node-fetch-npm@^2.0.2: version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + resolved "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.6.7, node-fetch@^2.5.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7: version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^2.5.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.4.tgz#3fbca2d8838111048232de54cb532bd3cf134947" - integrity sha512-WvYJRN7mMyOLurFR2YpysQGuwYrJN+qrrpHjJDuKMcSPdfFccRUla/kng2mz6HWSBxJcqPbvatS6Gb4RhOzCJw== + version "3.3.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz#37e71db4ecc257057af828d523a7243d651d91e4" + integrity sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA== dependencies: data-uri-to-buffer "^4.0.0" fetch-blob "^3.1.4" @@ -16804,12 +15832,12 @@ node-fetch@^3.1.1: node-forge@^1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp@^5.0.2: version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== dependencies: env-paths "^2.2.0" @@ -16826,12 +15854,12 @@ node-gyp@^5.0.2: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-libs-browser@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" @@ -16860,7 +15888,7 @@ node-libs-browser@^2.2.1: node-notifier@^5.4.2: version "5.4.5" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" + resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== dependencies: growly "^1.3.0" @@ -16869,19 +15897,19 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-releases@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== node-version@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d" + resolved "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d" integrity sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ== nopt@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== dependencies: abbrev "1" @@ -16889,7 +15917,7 @@ nopt@^4.0.1: normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -16899,7 +15927,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- normalize-package-data@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" @@ -16909,24 +15937,24 @@ normalize-package-data@^3.0.0: normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== dependencies: object-assign "^4.0.1" @@ -16936,29 +15964,29 @@ normalize-url@1.9.1: normalize-url@^3.0.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== normalize-url@^4.1.0: version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.0.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" npm-lifecycle@^3.1.2: version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + resolved "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== dependencies: byline "^5.0.0" @@ -16972,12 +16000,12 @@ npm-lifecycle@^3.1.2: npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: hosted-git-info "^2.7.1" @@ -16987,7 +16015,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: npm-packlist@^1.4.4: version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" @@ -16996,7 +16024,7 @@ npm-packlist@^1.4.4: npm-pick-manifest@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: figgy-pudding "^3.5.1" @@ -17005,40 +16033,40 @@ npm-pick-manifest@^3.0.0: npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" npm-run-path@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== dependencies: path-key "^3.0.0" npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" npm-run-path@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== dependencies: path-key "^4.0.0" npm-to-yarn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-to-yarn/-/npm-to-yarn-1.0.1.tgz#6cdb95114c4ff0be50a7a2381d4d16131a5f52df" - integrity sha512-bp8T8oNMfLW+N/fE0itFfSu7RReytwhqNd9skbkfHfzGYC+5CCdzS2HnaXz6JiG4AlK2eA0qlT6NJN1SoFvcWQ== + version "1.3.0" + resolved "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-1.3.0.tgz#d8eebae5aaef44a26f451838ab78917a1ea5ee3a" + integrity sha512-07nTERZViiQvQJpVxhUyJgV5zLaMrAxW+nfSv/ELHe3Fv9bSSxRS1lTw9MplkuLtynQru3fvEm9r4a5+IE7j2A== npmlog@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" @@ -17048,7 +16076,7 @@ npmlog@^4.1.2: npmlog@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: are-we-there-yet "^2.0.0" @@ -17058,51 +16086,51 @@ npmlog@^5.0.1: nprogress@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== nth-check@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nwsapi@^2.0.7: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + version "2.2.2" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" @@ -17111,7 +16139,7 @@ object-copy@^0.1.0: object-hash@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== object-hash@^1.1.4: @@ -17124,14 +16152,14 @@ object-hash@^3.0.0: resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-is@^1.0.1, object-is@^1.1.2: +object-is@^1.0.1, object-is@^1.1.2, object-is@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: call-bind "^1.0.2" @@ -17139,96 +16167,96 @@ object-is@^1.0.1, object-is@^1.1.2: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== +object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1, object.getownpropertydescriptors@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + version "2.1.5" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: - array.prototype.reduce "^1.0.4" + array.prototype.reduce "^1.0.5" call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.20.1" + es-abstract "^1.20.4" -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +object.values@^1.1.0, object.values@^1.1.5, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" objectorarray@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" + resolved "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== octokit-pagination-methods@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + resolved "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== oidc-client@1.11.5: version "1.11.5" - resolved "https://registry.yarnpkg.com/oidc-client/-/oidc-client-1.11.5.tgz#020aa193d68a3e1f87a24fcbf50073b738de92bb" + resolved "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz#020aa193d68a3e1f87a24fcbf50073b738de92bb" integrity sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg== dependencies: acorn "^7.4.1" @@ -17239,56 +16267,56 @@ oidc-client@1.11.5: on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.1, on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" onetime@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: mimic-fn "^4.0.0" open@^7.0.3: version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" open@^8.0.9, open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + version "8.4.1" + resolved "https://registry.npmjs.org/open/-/open-8.4.1.tgz#2ab3754c07f5d1f99a7a8d6a82737c95e3101cff" + integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -17296,17 +16324,17 @@ open@^8.0.9, open@^8.4.0: opencollective-postinstall@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== opener@^1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optimize-css-assets-webpack-plugin@^5.0.3: version "5.0.8" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz#cbccdcf5a6ef61d4f8cc78cf083a67446e5f402a" integrity sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q== dependencies: cssnano "^4.1.10" @@ -17314,7 +16342,7 @@ optimize-css-assets-webpack-plugin@^5.0.3: optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -17326,7 +16354,7 @@ optionator@^0.8.1, optionator@^0.8.2: optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -17338,7 +16366,7 @@ optionator@^0.9.1: ora@^5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -17353,17 +16381,17 @@ ora@^5.4.1: os-browserify@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-name@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== dependencies: macos-release "^2.2.0" @@ -17371,12 +16399,12 @@ os-name@^3.1.0: os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" @@ -17384,152 +16412,152 @@ osenv@^0.1.4, osenv@^0.1.5: ospath@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + resolved "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== p-all@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + resolved "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== dependencies: p-map "^2.0.0" p-cancelable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-defer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-each-series@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" integrity sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA== dependencies: p-reduce "^1.0.0" p-event@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + resolved "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== dependencies: p-timeout "^3.1.0" p-filter@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: p-map "^2.0.0" p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-finally@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map-series@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" integrity sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg== dependencies: p-reduce "^1.0.0" p-map@^2.0.0, p-map@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-map@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== dependencies: aggregate-error "^3.0.0" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-pipe@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" integrity sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw== p-queue@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== dependencies: eventemitter3 "^3.1.0" p-reduce@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== p-retry@^4.5.0: version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" @@ -17537,31 +16565,31 @@ p-retry@^4.5.0: p-timeout@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== p-waterfall@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" integrity sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg== dependencies: p-reduce "^1.0.0" package-json@^6.3.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: got "^9.6.0" @@ -17570,18 +16598,18 @@ package-json@^6.3.0: semver "^6.2.0" pako@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" - integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + version "2.1.0" + resolved "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== pako@~1.0.5: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: cyclist "^1.0.1" @@ -17590,7 +16618,7 @@ parallel-transform@^1.1.0: param-case@^3.0.3, param-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -17598,14 +16626,14 @@ param-case@^3.0.3, param-case@^3.0.4: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: asn1.js "^5.2.0" @@ -17616,7 +16644,7 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: parse-entities@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" @@ -17628,19 +16656,19 @@ parse-entities@^2.0.0: parse-github-repo-url@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + resolved "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" integrity sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg== parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" @@ -17648,7 +16676,7 @@ parse-json@^4.0.0: parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -17658,13 +16686,13 @@ parse-json@^5.0.0: parse-numeric-range@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + resolved "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== + version "4.0.4" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" @@ -17672,9 +16700,9 @@ parse-path@^4.0.0: query-string "^6.13.8" parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== + version "6.0.5" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz#4acab8982cef1846a0f8675fa686cef24b2f6f9b" + integrity sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA== dependencies: is-ssh "^1.3.0" normalize-url "^6.1.0" @@ -17683,7 +16711,7 @@ parse-url@^6.0.0: parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: domhandler "^5.0.2" @@ -17691,29 +16719,29 @@ parse5-htmlparser2-tree-adapter@^7.0.0: parse5@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + resolved "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== parse5@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parse5@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" - integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - entities "^4.3.0" + entities "^4.4.0" parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -17721,91 +16749,91 @@ pascal-case@^3.1.2: pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== path-browserify@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-browserify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-dirname@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== path-exists@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@1.0.2, path-is-inside@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-key@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-to-regexp@2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== path-to-regexp@^1.7.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: isarray "0.0.1" path-type@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: graceful-fs "^4.1.2" @@ -17814,26 +16842,26 @@ path-type@^1.0.0: path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pause-stream@0.0.11: version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== dependencies: through "~2.3" pbkdf2@^3.0.3: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -17844,65 +16872,65 @@ pbkdf2@^3.0.3: pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== pirates@^4.0.1, pirates@^4.0.5: version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-config@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" - integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= + resolved "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + integrity sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw== dependencies: debug-log "^1.0.0" find-root "^1.0.0" @@ -17917,28 +16945,28 @@ pkg-dir@^1.0.0: pkg-dir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pkg-dir@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== dependencies: find-up "^5.0.0" pkg-install@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-install/-/pkg-install-1.0.0.tgz#a0c2e64e14d1733d670571489c303605527063fe" + resolved "https://registry.npmjs.org/pkg-install/-/pkg-install-1.0.0.tgz#a0c2e64e14d1733d670571489c303605527063fe" integrity sha512-UGI8bfhrDb1KN01RZ7Bq08GRQc8rmVjxQ2up0g4mUHPCYDTK1FzQ0PMmLOBCHg3yaIijZ2U3Fn9ofLa4N392Ug== dependencies: "@types/execa" "^0.9.0" @@ -17947,74 +16975,74 @@ pkg-install@^1.0.0: pkg-up@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg== dependencies: find-up "^2.1.0" pkg-up@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" plugin-image-zoom@ataft/plugin-image-zoom: version "0.0.0" - resolved "https://codeload.github.com/ataft/plugin-image-zoom/tar.gz/86f6f0b4f927ded94dcfdc18c0a9ee702ffd8d06" + resolved "https://codeload.github.com/ataft/plugin-image-zoom/tar.gz/6edf8e287dc64c8a4e1010fd36478316ac25ffeb" dependencies: medium-zoom "^1.0.4" pn@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== pnp-webpack-plugin@1.6.4: version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: ts-pnp "^1.1.6" polished@^4.0.5, polished@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + resolved "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== dependencies: "@babel/runtime" "^7.17.8" portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + version "1.0.32" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" posix-character-classes@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -postcss-attribute-case-insensitive@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" - integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.10" postcss-calc@^7.0.1: version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== dependencies: postcss "^7.0.27" @@ -18023,7 +17051,7 @@ postcss-calc@^7.0.1: postcss-calc@^8.2.3: version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: postcss-selector-parser "^6.0.9" @@ -18031,35 +17059,35 @@ postcss-calc@^8.2.3: postcss-clamp@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== dependencies: postcss-value-parser "^4.2.0" -postcss-color-functional-notation@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz#23c9d73c76113b75473edcf66f443c6f1872bd0f" - integrity sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw== +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: postcss-value-parser "^4.2.0" -postcss-color-hex-alpha@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz#61a0fd151d28b128aa6a8a21a2dad24eebb34d52" - integrity sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw== +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: postcss-value-parser "^4.2.0" -postcss-color-rebeccapurple@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" - integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: postcss-value-parser "^4.2.0" postcss-colormin@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: browserslist "^4.0.0" @@ -18068,169 +17096,171 @@ postcss-colormin@^4.0.3: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" caniuse-api "^3.0.0" colord "^2.9.1" postcss-value-parser "^4.2.0" postcss-convert-values@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== dependencies: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-convert-values@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" - integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: - browserslist "^4.20.3" + browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-custom-media@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" - integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== - -postcss-custom-properties@^12.1.7: - version "12.1.7" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.7.tgz#ca470fd4bbac5a87fd868636dafc084bc2a78b41" - integrity sha512-N/hYP5gSoFhaqxi2DPCmvto/ZcRDVjE3T1LiAMzc/bg53hvhcHOLpXOHb526LzBBp5ZlAUhkuot/bfpmpgStJg== +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== dependencies: postcss-value-parser "^4.2.0" -postcss-custom-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" - integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: postcss-selector-parser "^6.0.4" -postcss-dir-pseudo-class@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" - integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.10" postcss-discard-comments@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: postcss "^7.0.0" postcss-discard-comments@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== postcss-discard-duplicates@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== dependencies: postcss "^7.0.0" postcss-discard-duplicates@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== postcss-discard-empty@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: postcss "^7.0.0" postcss-discard-empty@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== dependencies: postcss "^7.0.0" postcss-discard-overridden@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== postcss-discard-unused@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" + resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== dependencies: postcss-selector-parser "^6.0.5" -postcss-double-position-gradients@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz#a12cfdb7d11fa1a99ccecc747f0c19718fb37152" - integrity sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ== +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" postcss-env-function@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: postcss-value-parser "^4.2.0" postcss-flexbugs-fixes@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== dependencies: postcss "^7.0.26" postcss-focus-visible@^6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: postcss-selector-parser "^6.0.9" postcss-focus-within@^5.0.4: version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: postcss-selector-parser "^6.0.9" postcss-font-variant@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== -postcss-gap-properties@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" - integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== -postcss-image-set-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" - integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: postcss-value-parser "^4.2.0" postcss-import@^14.0.2, postcss-import@^14.1.0: version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== dependencies: postcss-value-parser "^4.0.0" @@ -18239,20 +17269,20 @@ postcss-import@^14.0.2, postcss-import@^14.1.0: postcss-initial@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== postcss-js@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" - integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" -postcss-lab-function@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz#e054e662c6480202f5760887ec1ae0d153357123" - integrity sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w== +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" @@ -18267,7 +17297,7 @@ postcss-load-config@^3.1.4: postcss-loader@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.3.0.tgz#2c4de9657cd4f07af5ab42bd60a673004da1b8cc" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz#2c4de9657cd4f07af5ab42bd60a673004da1b8cc" integrity sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== dependencies: cosmiconfig "^7.0.0" @@ -18278,7 +17308,7 @@ postcss-loader@^4.2.0: postcss-loader@^6.1.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" @@ -18286,27 +17316,27 @@ postcss-loader@^6.1.1: semver "^7.3.5" postcss-loader@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" - integrity sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ== + version "7.0.2" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz#b53ff44a26fba3688eee92a048c7f2d4802e23bb" + integrity sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg== dependencies: cosmiconfig "^7.0.0" klona "^2.0.5" - semver "^7.3.7" + semver "^7.3.8" postcss-logical@^5.0.4: version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== postcss-media-minmax@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== postcss-merge-idents@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + resolved "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: cssnano-utils "^3.1.0" @@ -18314,7 +17344,7 @@ postcss-merge-idents@^5.1.1: postcss-merge-longhand@^4.0.11: version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: css-color-names "0.0.4" @@ -18322,17 +17352,17 @@ postcss-merge-longhand@^4.0.11: postcss-value-parser "^3.0.0" stylehacks "^4.0.0" -postcss-merge-longhand@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" - integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" + stylehacks "^5.1.1" postcss-merge-rules@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: browserslist "^4.0.0" @@ -18342,19 +17372,19 @@ postcss-merge-rules@^4.0.3: postcss-selector-parser "^3.0.0" vendors "^1.0.0" -postcss-merge-rules@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" - integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" caniuse-api "^3.0.0" cssnano-utils "^3.1.0" postcss-selector-parser "^6.0.5" postcss-minify-font-values@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== dependencies: postcss "^7.0.0" @@ -18362,14 +17392,14 @@ postcss-minify-font-values@^4.0.2: postcss-minify-font-values@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: postcss-value-parser "^4.2.0" postcss-minify-gradients@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: cssnano-util-get-arguments "^4.0.0" @@ -18379,7 +17409,7 @@ postcss-minify-gradients@^4.0.2: postcss-minify-gradients@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" @@ -18388,7 +17418,7 @@ postcss-minify-gradients@^5.1.1: postcss-minify-params@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: alphanum-sort "^1.0.0" @@ -18398,18 +17428,18 @@ postcss-minify-params@^4.0.2: postcss-value-parser "^3.0.0" uniqs "^2.0.0" -postcss-minify-params@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" - integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" postcss-minify-selectors@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: alphanum-sort "^1.0.0" @@ -18419,26 +17449,26 @@ postcss-minify-selectors@^4.0.2: postcss-minify-selectors@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: postcss "^7.0.5" postcss-modules-extract-imports@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: icss-utils "^4.1.1" @@ -18448,7 +17478,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-modules-local-by-default@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: icss-utils "^5.0.0" @@ -18457,7 +17487,7 @@ postcss-modules-local-by-default@^4.0.0: postcss-modules-scope@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" @@ -18465,14 +17495,14 @@ postcss-modules-scope@^2.2.0: postcss-modules-scope@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: postcss-selector-parser "^6.0.4" postcss-modules-values@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: icss-utils "^4.0.0" @@ -18480,7 +17510,7 @@ postcss-modules-values@^3.0.0: postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" @@ -18492,29 +17522,29 @@ postcss-nested@6.0.0: dependencies: postcss-selector-parser "^6.0.10" -postcss-nesting@^10.1.7: - version "10.1.7" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.7.tgz#0101bd6c7d386e7ad8e2e86ebcc0e0109833b86e" - integrity sha512-Btho5XzDTpl117SmB3tvUHP8txg5n7Ayv7vQ5m4b1zXkfs1Y52C67uZjZ746h7QvOJ+rLRg50OlhhjFW+IQY6A== +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: - "@csstools/selector-specificity" "1.0.0" + "@csstools/selector-specificity" "^2.0.0" postcss-selector-parser "^6.0.10" postcss-normalize-charset@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== dependencies: postcss "^7.0.0" postcss-normalize-charset@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== postcss-normalize-display-values@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: cssnano-util-get-match "^4.0.0" @@ -18523,14 +17553,14 @@ postcss-normalize-display-values@^4.0.2: postcss-normalize-display-values@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-positions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== dependencies: cssnano-util-get-arguments "^4.0.0" @@ -18540,14 +17570,14 @@ postcss-normalize-positions@^4.0.2: postcss-normalize-positions@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-repeat-style@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== dependencies: cssnano-util-get-arguments "^4.0.0" @@ -18557,14 +17587,14 @@ postcss-normalize-repeat-style@^4.0.2: postcss-normalize-repeat-style@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-string@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== dependencies: has "^1.0.0" @@ -18573,14 +17603,14 @@ postcss-normalize-string@^4.0.2: postcss-normalize-string@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-timing-functions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== dependencies: cssnano-util-get-match "^4.0.0" @@ -18589,31 +17619,31 @@ postcss-normalize-timing-functions@^4.0.2: postcss-normalize-timing-functions@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-unicode@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== dependencies: browserslist "^4.0.0" postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize-unicode@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" - integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" postcss-value-parser "^4.2.0" postcss-normalize-url@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: is-absolute-url "^2.0.0" @@ -18623,7 +17653,7 @@ postcss-normalize-url@^4.0.1: postcss-normalize-url@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: normalize-url "^6.0.1" @@ -18631,7 +17661,7 @@ postcss-normalize-url@^5.1.0: postcss-normalize-whitespace@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: postcss "^7.0.0" @@ -18639,19 +17669,19 @@ postcss-normalize-whitespace@^4.0.2: postcss-normalize-whitespace@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" postcss-opacity-percentage@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" - integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== + version "1.1.3" + resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== postcss-ordered-values@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: cssnano-util-get-arguments "^4.0.0" @@ -18660,99 +17690,103 @@ postcss-ordered-values@^4.1.2: postcss-ordered-values@^5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-overflow-shorthand@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" - integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" postcss-page-break@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== -postcss-place@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" - integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== dependencies: postcss-value-parser "^4.2.0" postcss-preset-env@^7.4.3: - version "7.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.7.0.tgz#bcc9be9725a85d34e72a8fa69dc5e1130abee301" - integrity sha512-2Q9YARQju+j2BVgAyDnW1pIWIMlaHZqbaGISPMmalznNlWcNFIZFQsJfRLXS+WHmHJDCmV7wIWpVf9JNKR4Elw== + version "7.8.3" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== dependencies: - "@csstools/postcss-cascade-layers" "^1.0.2" - "@csstools/postcss-color-function" "^1.1.0" - "@csstools/postcss-font-format-keywords" "^1.0.0" - "@csstools/postcss-hwb-function" "^1.0.1" - "@csstools/postcss-ic-unit" "^1.0.0" - "@csstools/postcss-is-pseudo-class" "^2.0.4" - "@csstools/postcss-normalize-display-values" "^1.0.0" - "@csstools/postcss-oklab-function" "^1.1.0" + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" "@csstools/postcss-progressive-custom-properties" "^1.3.0" - "@csstools/postcss-stepped-value-functions" "^1.0.0" - "@csstools/postcss-trigonometric-functions" "^1.0.0" - "@csstools/postcss-unset-value" "^1.0.1" - autoprefixer "^10.4.7" - browserslist "^4.20.3" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" css-blank-pseudo "^3.0.3" css-has-pseudo "^3.0.4" css-prefers-color-scheme "^6.0.3" - cssdb "^6.6.2" - postcss-attribute-case-insensitive "^5.0.0" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.3" - postcss-color-hex-alpha "^8.0.3" - postcss-color-rebeccapurple "^7.0.2" - postcss-custom-media "^8.0.0" - postcss-custom-properties "^12.1.7" - postcss-custom-selectors "^6.0.0" - postcss-dir-pseudo-class "^6.0.4" - postcss-double-position-gradients "^3.1.1" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" postcss-env-function "^4.0.6" postcss-focus-visible "^6.0.4" postcss-focus-within "^5.0.4" postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.3" - postcss-image-set-function "^4.0.6" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" postcss-initial "^4.0.1" - postcss-lab-function "^4.2.0" + postcss-lab-function "^4.2.1" postcss-logical "^5.0.4" postcss-media-minmax "^5.0.0" - postcss-nesting "^10.1.7" + postcss-nesting "^10.2.0" postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.3" + postcss-overflow-shorthand "^3.0.4" postcss-page-break "^3.0.4" - postcss-place "^7.0.4" - postcss-pseudo-class-any-link "^7.1.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^5.0.0" + postcss-selector-not "^6.0.1" postcss-value-parser "^4.2.0" -postcss-pseudo-class-any-link@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.4.tgz#ac72aac4fe11fc4a0a368691f8fd5fe89e95aba4" - integrity sha512-JxRcLXm96u14N3RzFavPIE9cRPuOqLDuzKeBsqi4oRk4vt8n0A7I0plFs/VXTg7U2n7g/XkQi0OwqTO3VWBfEg== +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== dependencies: postcss-selector-parser "^6.0.10" postcss-reduce-idents@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== dependencies: postcss-value-parser "^4.2.0" postcss-reduce-initial@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== dependencies: browserslist "^4.0.0" @@ -18760,17 +17794,17 @@ postcss-reduce-initial@^4.0.3: has "^1.0.0" postcss "^7.0.0" -postcss-reduce-initial@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" - integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" caniuse-api "^3.0.0" postcss-reduce-transforms@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: cssnano-util-get-match "^4.0.0" @@ -18780,26 +17814,26 @@ postcss-reduce-transforms@^4.0.2: postcss-reduce-transforms@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: postcss-value-parser "^4.2.0" postcss-replace-overflow-wrap@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== -postcss-selector-not@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz#ac5fc506f7565dd872f82f5314c0f81a05630dc7" - integrity sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ== +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: - balanced-match "^1.0.0" + postcss-selector-parser "^6.0.10" postcss-selector-parser@^3.0.0: version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: dot-prop "^5.2.0" @@ -18807,23 +17841,23 @@ postcss-selector-parser@^3.0.0: uniq "^1.0.1" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + version "6.0.11" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" postcss-sort-media-queries@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz#a99bae69ef1098ee3b64a5fa94d258ec240d0355" - integrity sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ== + version "4.3.0" + resolved "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.3.0.tgz#f48a77d6ce379e86676fc3f140cf1b10a06f6051" + integrity sha512-jAl8gJM2DvuIJiI9sL1CuiHtKM4s5aEIomkU8G3LFvbP+p8i7Sz8VV63uieTgoewGqKbi+hxBTiOKJlB35upCg== dependencies: - sort-css-media-queries "2.0.4" + sort-css-media-queries "2.1.0" postcss-svgo@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: postcss "^7.0.0" @@ -18832,7 +17866,7 @@ postcss-svgo@^4.0.3: postcss-svgo@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: postcss-value-parser "^4.2.0" @@ -18840,7 +17874,7 @@ postcss-svgo@^5.1.0: postcss-unique-selectors@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: alphanum-sort "^1.0.0" @@ -18849,56 +17883,38 @@ postcss-unique-selectors@^4.0.1: postcss-unique-selectors@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" postcss-value-parser@^3.0.0: version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss-zindex@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" + resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.13, postcss@^8.4.7: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.14: - version "8.4.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" - integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.18: - version "8.4.19" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" - integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== +postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.18, postcss@^8.4.19: + version "8.4.21" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" @@ -18906,7 +17922,7 @@ postcss@^8.4.18: prebuild-install@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== dependencies: detect-libc "^2.0.0" @@ -18924,49 +17940,49 @@ prebuild-install@^7.1.1: prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prepend-http@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== prepend-http@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" "prettier@>=2.2.1 <=2.3.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== prettier@^1.18.2: version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + resolved "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-error@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: lodash "^4.17.20" @@ -18974,7 +17990,7 @@ pretty-error@^2.1.1: pretty-error@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" @@ -18982,7 +17998,7 @@ pretty-error@^4.0.0: pretty-format@^24.9.0: version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: "@jest/types" "^24.9.0" @@ -18992,7 +18008,7 @@ pretty-format@^24.9.0: pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -19001,98 +18017,88 @@ pretty-format@^27.0.0, pretty-format@^27.5.1: pretty-hrtime@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== pretty-time@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + resolved "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.0.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.3.tgz#9b5a4211a6756eee3c96fee9a05733abc0b0805c" - integrity sha512-Viur/7tBTCH2HmYzwCHmt2rEFn+rdIWNIINXyg0StiISbDiIhHKhrFuEK8eMkKgvsIYSjgGqy/hNyucHp6FpoQ== - -prism-react-renderer@^1.3.5: +prism-react-renderer@^1.0.1, prism-react-renderer@^1.3.5: version "1.3.5" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" + resolved "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== -prismjs@^1.27.0, prismjs@^1.28.0: - version "1.28.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" - integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== - -prismjs@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" - integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +prismjs@^1.28.0: + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-polyfill@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" - integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc= + resolved "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + integrity sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ== promise-retry@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw== dependencies: err-code "^1.0.0" retry "^0.10.0" promise.allsettled@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" - integrity sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ== + version "1.0.6" + resolved "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz#8dc8ba8edf429feb60f8e81335b920e109c94b6e" + integrity sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg== dependencies: - array.prototype.map "^1.0.4" + array.prototype.map "^1.0.5" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" iterate-value "^1.0.2" promise.prototype.finally@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.3.tgz#d3186e58fcf4df1682a150f934ccc27b7893389c" - integrity sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ== + version "3.1.4" + resolved "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz#4e756a154e4db27fae24c6b18703495c31da3927" + integrity sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" promise@^7.1.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -19100,14 +18106,14 @@ prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.2: promzard@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== dependencies: read "1" prop-types-exact@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + resolved "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: has "^1.0.3" @@ -19116,7 +18122,7 @@ prop-types-exact@^1.2.0: prop-types@15.7.2: version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== dependencies: loose-envify "^1.4.0" @@ -19125,7 +18131,7 @@ prop-types@15.7.2: prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -19134,31 +18140,36 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -protocols@^1.1.0, protocols@^1.4.0: +protocols@^1.4.0: version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + protoduck@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + resolved "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: genfun "^5.0.0" proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -19166,34 +18177,34 @@ proxy-addr@~2.0.7: proxy-from-env@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== prr@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== ps-tree@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" + resolved "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== dependencies: event-stream "=3.3.4" pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" @@ -19205,7 +18216,7 @@ public-encrypt@^4.0.0: pump@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" @@ -19213,7 +18224,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -19221,7 +18232,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" @@ -19230,59 +18241,66 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^1.2.4, punycode@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== pupa@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: escape-goat "^2.0.0" pure-color@^1.2.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" - integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= + resolved "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== q@^1.1.2, q@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.10.3, qs@^6.10.0, qs@^6.9.4: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.11.0, qs@^6.10.0, qs@^6.9.4: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.10.3: + version "6.10.5" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== dependencies: side-channel "^1.0.4" qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^4.1.0: version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== dependencies: object-assign "^4.1.0" strict-uri-encode "^1.0.0" query-string@^6.12.1, query-string@^6.13.8, query-string@^6.14.0: version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== dependencies: decode-uri-component "^0.2.0" @@ -19292,68 +18310,63 @@ query-string@^6.12.1, query-string@^6.13.8, query-string@^6.14.0: querystring-es3@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== querystring@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== queue@6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== dependencies: inherits "~2.0.3" quick-lru@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA== quick-lru@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf@^3.4.1: version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: performance-now "^2.1.0" ramda@^0.28.0: version "0.28.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" @@ -19361,17 +18374,17 @@ randomfill@^1.0.3: range-parser@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -19381,15 +18394,15 @@ raw-body@2.5.1: raw-loader@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" @@ -19399,8 +18412,8 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: react-base16-styling@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" - integrity sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw= + resolved "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== dependencies: base16 "^1.0.0" lodash.curry "^4.0.1" @@ -19422,7 +18435,7 @@ react-color@^2.19.3: react-dates@^21.8.0: version "21.8.0" - resolved "https://registry.yarnpkg.com/react-dates/-/react-dates-21.8.0.tgz#355c3c7a243a7c29568fe00aca96231e171a5e94" + resolved "https://registry.npmjs.org/react-dates/-/react-dates-21.8.0.tgz#355c3c7a243a7c29568fe00aca96231e171a5e94" integrity sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw== dependencies: airbnb-prop-types "^2.15.0" @@ -19443,7 +18456,7 @@ react-dates@^21.8.0: react-dev-utils@^12.0.1: version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" @@ -19473,14 +18486,14 @@ react-dev-utils@^12.0.1: react-dnd-html5-backend@14.0.0: version "14.0.0" - resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-14.0.0.tgz#28d660a2ad1e07447c34a65cd25f7de8f1657194" + resolved "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-14.0.0.tgz#28d660a2ad1e07447c34a65cd25f7de8f1657194" integrity sha512-2wAQqRFC1hbRGmk6+dKhOXsyQQOn3cN8PSZyOUeOun9J8t3tjZ7PS2+aFu7CVu2ujMDwTJR3VTwZh8pj2kCv7g== dependencies: dnd-core "14.0.0" react-dnd@14.0.2: version "14.0.2" - resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-14.0.2.tgz#57266baec92b887301f81fa3b77f87168d159733" + resolved "https://registry.npmjs.org/react-dnd/-/react-dnd-14.0.2.tgz#57266baec92b887301f81fa3b77f87168d159733" integrity sha512-JoEL78sBCg8SzjOKMlkR70GWaPORudhWuTNqJ56lb2P8Vq0eM2+er3ZrMGiSDhOmzaRPuA9SNBz46nHCrjn11A== dependencies: "@react-dnd/invariant" "^2.0.0" @@ -19491,13 +18504,13 @@ react-dnd@14.0.2: react-docgen-typescript@^2.1.1: version "2.2.2" - resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" + resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== react-docgen@^5.0.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.1.tgz#867168accce39e25095a23a922eaa90722e9d182" - integrity sha512-TZqD1aApirw86NV6tHrmDoxUn8wlinkVyutFarzbdwuhEurAzDN0y5sSj64o+BrHLPqjwpH9tunpfwgy+3Uyww== + version "5.4.3" + resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz#7d297f73b977d0c7611402e5fc2a168acf332b26" + integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== dependencies: "@babel/core" "^7.7.5" "@babel/generator" "^7.12.11" @@ -19512,7 +18525,7 @@ react-docgen@^5.0.0: react-dom@^17.0.2: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== dependencies: loose-envify "^1.1.0" @@ -19521,7 +18534,7 @@ react-dom@^17.0.2: react-draggable@4.4.3: version "4.4.3" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" + resolved "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" integrity sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w== dependencies: classnames "^2.2.5" @@ -19529,7 +18542,7 @@ react-draggable@4.4.3: react-dropzone@^10.1.7: version "10.2.2" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-10.2.2.tgz#67b4db7459589a42c3b891a82eaf9ade7650b815" + resolved "https://registry.npmjs.org/react-dropzone/-/react-dropzone-10.2.2.tgz#67b4db7459589a42c3b891a82eaf9ade7650b815" integrity sha512-U5EKckXVt6IrEyhMMsgmHQiWTGLudhajPPG77KFSvgsMqNEHSyGpqWvOMc5+DhEah/vH4E1n+J5weBNLd5VtyA== dependencies: attr-accept "^2.0.0" @@ -19538,7 +18551,7 @@ react-dropzone@^10.1.7: react-element-to-jsx-string@^14.3.4: version "14.3.4" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz#709125bc72f06800b68f9f4db485f2c7d31218a8" + resolved "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz#709125bc72f06800b68f9f4db485f2c7d31218a8" integrity sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg== dependencies: "@base2/pretty-print-object" "1.0.1" @@ -19547,29 +18560,29 @@ react-element-to-jsx-string@^14.3.4: react-error-boundary@^3.1.3: version "3.1.4" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== dependencies: "@babel/runtime" "^7.12.5" react-error-overlay@^6.0.11: version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-fast-compare@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== react-ga@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/react-ga/-/react-ga-2.7.0.tgz#24328f157f31e8cffbf4de74a3396536679d8d7c" + resolved "https://registry.npmjs.org/react-ga/-/react-ga-2.7.0.tgz#24328f157f31e8cffbf4de74a3396536679d8d7c" integrity sha512-AjC7UOZMvygrWTc2hKxTDvlMXEtbmA0IgJjmkhgmQQ3RkXrWR11xEagLGFGaNyaPnmg24oaIiaNPnEoftUhfXA== react-helmet-async@*, react-helmet-async@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" + resolved "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== dependencies: "@babel/runtime" "^7.12.5" @@ -19579,14 +18592,14 @@ react-helmet-async@*, react-helmet-async@^1.3.0: shallowequal "^1.1.0" react-hot-loader@^4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" - integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== + version "4.13.1" + resolved "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.1.tgz#979fd7598e27338b3faffae6ed01c65374dace5e" + integrity sha512-ZlqCfVRqDJmMXTulUGic4lN7Ic1SXgHAFw7y/Jb7t25GBgTR0fYAJ8uY4mrpxjRyWGWmqw77qJQGnYbzCvBU7g== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" hoist-non-react-statics "^3.3.0" - loader-utils "^1.1.0" + loader-utils "^2.0.3" prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" @@ -19594,7 +18607,7 @@ react-hot-loader@^4.13.0: react-i18next@^10.11.0: version "10.13.2" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-10.13.2.tgz#2943705fa751d366fc95b3755520ebe6eeed2408" + resolved "https://registry.npmjs.org/react-i18next/-/react-i18next-10.13.2.tgz#2943705fa751d366fc95b3755520ebe6eeed2408" integrity sha512-DGoauWUdPEv/+PLa03nN+wlW31XrGmQJz+zIyOA+tRTIwlRaNgeM62nGP1WG3g7fJrphMZUwPcAQqNv6XBYM4w== dependencies: "@babel/runtime" "^7.3.1" @@ -19602,14 +18615,14 @@ react-i18next@^10.11.0: react-input-autosize@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" + resolved "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== dependencies: prop-types "^15.5.8" react-inspector@^5.1.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.1.1.tgz#58476c78fde05d5055646ed8ec02030af42953c8" + resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz#58476c78fde05d5055646ed8ec02030af42953c8" integrity sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg== dependencies: "@babel/runtime" "^7.0.0" @@ -19618,22 +18631,22 @@ react-inspector@^5.1.0: react-is@17.0.2, react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== "react-is@^17.0.1 || ^18.0.0": version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== react-json-view@^1.21.3: version "1.21.3" - resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" + resolved "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== dependencies: flux "^4.0.1" @@ -19643,12 +18656,12 @@ react-json-view@^1.21.3: react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== react-live@2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.2.3.tgz#260f99194213799f0005e473e7a4154c699d6a7c" + resolved "https://registry.npmjs.org/react-live/-/react-live-2.2.3.tgz#260f99194213799f0005e473e7a4154c699d6a7c" integrity sha512-tpKruvfytNETuzO3o1mrQUj180GVrq35IE8F5gH1NJVPt4szYCx83/dOSCOyjgRhhc3gQvl0pQ3k/CjOjwJkKQ== dependencies: buble "0.19.6" @@ -19661,14 +18674,14 @@ react-live@2.2.3: react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" + resolved "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== dependencies: "@babel/runtime" "^7.10.3" react-modal@3.11.2: version "3.11.2" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.11.2.tgz#bad911976d4add31aa30dba8a41d11e21c4ac8a4" + resolved "https://registry.npmjs.org/react-modal/-/react-modal-3.11.2.tgz#bad911976d4add31aa30dba8a41d11e21c4ac8a4" integrity sha512-o8gvvCOFaG1T7W6JUvsYjRjMVToLZgLIsi5kdhFIQCtHxDkA47LznX62j+l6YQkpXDbvQegsDyxe/+JJsFQN7w== dependencies: exenv "^1.2.0" @@ -19678,14 +18691,14 @@ react-modal@3.11.2: react-moment-proptypes@^1.6.0: version "1.8.1" - resolved "https://registry.yarnpkg.com/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz#7ba4076147f6b5998f0d4f51d302d6d8c62049fd" + resolved "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz#7ba4076147f6b5998f0d4f51d302d6d8c62049fd" integrity sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ== dependencies: moment ">=1.6.0" react-outside-click-handler@^1.2.4, react-outside-click-handler@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz#3831d541ac059deecd38ec5423f81e80ad60e115" + resolved "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz#3831d541ac059deecd38ec5423f81e80ad60e115" integrity sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ== dependencies: airbnb-prop-types "^2.15.0" @@ -19696,19 +18709,19 @@ react-outside-click-handler@^1.2.4, react-outside-click-handler@^1.3.0: react-portal@^4.2.0: version "4.2.2" - resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-4.2.2.tgz#bff1e024147d6041ba8c530ffc99d4c8248f49fa" + resolved "https://registry.npmjs.org/react-portal/-/react-portal-4.2.2.tgz#bff1e024147d6041ba8c530ffc99d4c8248f49fa" integrity sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q== dependencies: prop-types "^15.5.8" react-refresh@^0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-resize-detector@^6.7.6: version "6.7.8" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-6.7.8.tgz#318c85d1335e50f99d4fb8eb9ec34e066db597d0" + resolved "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-6.7.8.tgz#318c85d1335e50f99d4fb8eb9ec34e066db597d0" integrity sha512-0FaEcUBAbn+pq3PT5a9hHRebUfuS1SRLGLpIw8LydU7zX429I6XJgKerKAMPsJH0qWAl6o5bVKNqFJqr6tGPYw== dependencies: "@types/resize-observer-browser" "^0.1.6" @@ -19717,58 +18730,57 @@ react-resize-detector@^6.7.6: react-router-config@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" + resolved "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== dependencies: "@babel/runtime" "^7.1.2" react-router-dom@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.3.tgz#8779fc28e6691d07afcaf98406d3812fe6f11199" - integrity sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng== + version "5.3.4" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.3.3" + react-router "5.3.4" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router-dom@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" - integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== +react-router-dom@^6.8.1: + version "6.8.1" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz#7e136b67d9866f55999e9a8482c7008e3c575ac9" + integrity sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ== dependencies: - history "^5.2.0" - react-router "6.3.0" + "@remix-run/router" "1.3.2" + react-router "6.8.1" -react-router@5.3.3, react-router@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.3.tgz#8e3841f4089e728cf82a429d92cdcaa5e4a3a288" - integrity sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w== +react-router@5.3.4, react-router@^5.3.3: + version "5.3.4" + resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@6.3.0, react-router@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" - integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== +react-router@6.8.1, react-router@^6.8.1: + version "6.8.1" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz#e362caf93958a747c649be1b47cd505cf28ca63e" + integrity sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg== dependencies: - history "^5.2.0" + "@remix-run/router" "1.3.2" react-select@3.0.8: version "3.0.8" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.0.8.tgz#06ff764e29db843bcec439ef13e196865242e0c1" + resolved "https://registry.npmjs.org/react-select/-/react-select-3.0.8.tgz#06ff764e29db843bcec439ef13e196865242e0c1" integrity sha512-v9LpOhckLlRmXN5A6/mGGEft4FMrfaBFTGAnuPHcUgVId7Je42kTq9y0Z+Ye5z8/j0XDT3zUqza8gaRaI1PZIg== dependencies: "@babel/runtime" "^7.4.4" @@ -19782,24 +18794,13 @@ react-select@3.0.8: react-simple-code-editor@^0.10.0: version "0.10.0" - resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" + resolved "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== -react-syntax-highlighter@^15.4.5: - version "15.5.0" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" - integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "^10.4.1" - lowlight "^1.17.0" - prismjs "^1.27.0" - refractor "^3.6.0" - react-textarea-autosize@^8.3.2: - version "8.3.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" - integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== + version "8.4.0" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz#4d0244d6a50caa897806b8c44abc0540a69bfc8c" + integrity sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.3.0" @@ -19807,7 +18808,7 @@ react-textarea-autosize@^8.3.2: react-transition-group@^2.2.1: version "2.9.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== dependencies: dom-helpers "^3.4.0" @@ -19817,7 +18818,7 @@ react-transition-group@^2.2.1: react-waypoint@^10.3.0: version "10.3.0" - resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d" + resolved "https://registry.npmjs.org/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d" integrity sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ== dependencies: "@babel/runtime" "^7.12.5" @@ -19827,7 +18828,7 @@ react-waypoint@^10.3.0: react-with-direction@^1.3.1: version "1.4.0" - resolved "https://registry.yarnpkg.com/react-with-direction/-/react-with-direction-1.4.0.tgz#ebdf64d685d0650ce966e872e6431ad5a2485444" + resolved "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz#ebdf64d685d0650ce966e872e6431ad5a2485444" integrity sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg== dependencies: airbnb-prop-types "^2.16.0" @@ -19841,7 +18842,7 @@ react-with-direction@^1.3.1: react-with-styles-interface-css@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz#b53da7fa8359d452cb934cface8738acaef7b5fe" + resolved "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz#b53da7fa8359d452cb934cface8738acaef7b5fe" integrity sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA== dependencies: array.prototype.flat "^1.2.1" @@ -19849,7 +18850,7 @@ react-with-styles-interface-css@^6.0.0: react-with-styles@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/react-with-styles/-/react-with-styles-4.2.0.tgz#0b8a8e5d94d082518b9f564f6fcf6103e28096c5" + resolved "https://registry.npmjs.org/react-with-styles/-/react-with-styles-4.2.0.tgz#0b8a8e5d94d082518b9f564f6fcf6103e28096c5" integrity sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA== dependencies: airbnb-prop-types "^2.14.0" @@ -19860,7 +18861,7 @@ react-with-styles@^4.1.0: react@^17.0.2: version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: loose-envify "^1.1.0" @@ -19875,21 +18876,21 @@ reactcss@^1.2.0: read-cache@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" read-cmd-shim@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== dependencies: graceful-fs "^4.1.2" "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== dependencies: glob "^7.1.1" @@ -19899,7 +18900,7 @@ read-cmd-shim@^1.0.1: read-package-tree@^5.1.6: version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + resolved "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== dependencies: read-package-json "^2.0.0" @@ -19908,23 +18909,23 @@ read-package-tree@^5.1.6: read-pkg-up@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: find-up "^1.0.0" read-pkg "^1.0.0" read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: find-up "^2.0.0" read-pkg "^3.0.0" read-pkg-up@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: find-up "^3.0.0" @@ -19932,7 +18933,7 @@ read-pkg-up@^4.0.0: read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -19941,8 +18942,8 @@ read-pkg-up@^7.0.1: read-pkg@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -19950,8 +18951,8 @@ read-pkg@^1.0.0: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -19959,7 +18960,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -19969,14 +18970,14 @@ read-pkg@^5.2.0: read@1, read@~1.0.1: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -19989,7 +18990,7 @@ read@1, read@~1.0.1: "readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" @@ -19998,7 +18999,7 @@ read@1, read@~1.0.1: readdir-scoped-modules@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== dependencies: debuglog "^1.0.1" @@ -20008,7 +19009,7 @@ readdir-scoped-modules@^1.0.0: readdirp@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" @@ -20017,131 +19018,122 @@ readdirp@^2.2.1: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" reading-time@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" + resolved "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== realpath-native@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + resolved "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: util.promisify "^1.0.0" rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" rechoir@^0.7.0: version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: resolve "^1.9.0" recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + version "2.2.3" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: - minimatch "3.0.4" + minimatch "^3.0.5" redent@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" redent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + resolved "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw== dependencies: indent-string "^3.0.0" strip-indent "^2.0.0" redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" strip-indent "^3.0.0" redux@^4.0.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" - integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== + version "4.2.1" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" + integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== dependencies: "@babel/runtime" "^7.9.2" reflect.ownkeys@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + resolved "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== -refractor@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" - integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== - dependencies: - hastscript "^6.0.0" - parse-entities "^2.0.0" - prismjs "~1.27.0" - -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" regenerate-unicode-properties@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" @@ -20155,12 +19147,12 @@ regexpp@^2.0.1: regexpp@^3.0.0, regexpp@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== regexpu-core@^4.2.0, regexpu-core@^4.5.4: version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== dependencies: regenerate "^1.4.2" @@ -20170,98 +19162,81 @@ regexpu-core@^4.2.0, regexpu-core@^4.5.4: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.2.1: + version "5.3.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" + integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== dependencies: + "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" registry-auth-token@3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + version "4.2.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: - rc "^1.2.8" + rc "1.2.8" registry-url@3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA== dependencies: rc "^1.0.1" registry-url@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: rc "^1.2.8" registry-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.0.tgz#fa74e05576071a4613416c15ea13afe443ec176c" - integrity sha512-3dTUe7E2Uj4xiQf5OhNeF2vnqbtzX1s0xYfU0mDMzkwgvaTUGOWLw7ieXu20ht9w+dURqr5Yg8PRAON9ppGmvA== + version "6.0.1" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== dependencies: - rc "^1.2.8" + rc "1.2.8" regjsgen@^0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - regjsparser@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== dependencies: jsesc "~0.5.0" -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" relateurl@^0.2.7: version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== remark-emoji@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" + resolved "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7" integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w== dependencies: emoticon "^3.2.0" @@ -20270,7 +19245,7 @@ remark-emoji@^2.2.0: remark-external-links@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" + resolved "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== dependencies: extend "^3.0.0" @@ -20281,12 +19256,12 @@ remark-external-links@^8.0.0: remark-footnotes@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" + resolved "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== remark-mdx@1.6.22: version "1.6.22" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: "@babel/core" "7.12.9" @@ -20300,7 +19275,7 @@ remark-mdx@1.6.22: remark-parse@8.0.3: version "8.0.3" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== dependencies: ccount "^1.0.0" @@ -20322,7 +19297,7 @@ remark-parse@8.0.3: remark-slug@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" + resolved "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== dependencies: github-slugger "^1.0.0" @@ -20331,19 +19306,19 @@ remark-slug@^6.0.0: remark-squeeze-paragraphs@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" + resolved "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== dependencies: mdast-squeeze-paragraphs "^4.0.0" remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== renderkid@^2.0.4: version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== dependencies: css-select "^4.1.3" @@ -20354,7 +19329,7 @@ renderkid@^2.0.4: renderkid@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: css-select "^4.1.3" @@ -20365,38 +19340,38 @@ renderkid@^3.0.0: repeat-element@^1.1.2: version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== repeating@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== dependencies: is-finite "^1.0.0" request-progress@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= + resolved "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" + integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== dependencies: throttleit "^1.0.0" request-promise-core@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: lodash "^4.17.19" request-promise-native@^1.0.5: version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: request-promise-core "1.1.4" @@ -20405,7 +19380,7 @@ request-promise-native@^1.0.5: request@^2.87.0, request@^2.88.0: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -20431,93 +19406,84 @@ request@^2.87.0, request@^2.88.0: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== "require-like@>= 0.1.1": version "0.1.2" - resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" - integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o= + resolved "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" + integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== reselect@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + resolved "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA== resize-observer-polyfill@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-cwd@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== dependencies: resolve-from "^3.0.0" resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-pathname@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve@1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.1: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -20526,17 +19492,18 @@ resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" resolve@~1.19.0: version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: is-core-module "^2.1.0" @@ -20544,22 +19511,22 @@ resolve@~1.19.0: responselike@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" signal-exit "^3.0.2" restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -20567,38 +19534,38 @@ restore-cursor@^3.1.0: ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry@^0.10.0: version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + resolved "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ== retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== rgb-regex@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== rgba-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== rimraf@2.6.3: version "2.6.3" @@ -20609,21 +19576,21 @@ rimraf@2.6.3: rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" @@ -20631,7 +19598,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rollup-plugin-terser@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" @@ -20640,25 +19607,25 @@ rollup-plugin-terser@^7.0.0: terser "^5.0.0" rollup@^2.43.1: - version "2.75.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.5.tgz#7985c1962483235dd07966f09fdad5c5f89f16d0" - integrity sha512-JzNlJZDison3o2mOxVmb44Oz7t74EfSd1SQrplQk0wSaXV7uLQXtVdHbxlcT3w+8tZ1TL4r/eLfc7nAbz38BBA== + version "2.79.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" rsvp@^4.8.4: version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rtl-detect@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" + resolved "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ== rtlcss@^3.5.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" + resolved "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz#c9eb91269827a102bac7ae3115dd5d049de636c3" integrity sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A== dependencies: find-up "^5.0.0" @@ -20668,72 +19635,81 @@ rtlcss@^3.5.0: run-async@^2.2.0, run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + resolved "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== run-parallel@^1.1.2, run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: aproba "^1.1.1" rxjs@^6.3.3, rxjs@^6.4.0: version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -rxjs@^7.1.0, rxjs@^7.5.1, rxjs@^7.5.4, rxjs@^7.5.5: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== +rxjs@^7.5.1, rxjs@^7.5.4, rxjs@^7.5.5, rxjs@^7.8.0: + version "7.8.0" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: tslib "^2.1.0" safe-buffer@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^4.0.3: version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" @@ -20748,12 +19724,12 @@ sane@^4.0.3: sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scheduler@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== dependencies: loose-envify "^1.1.0" @@ -20761,7 +19737,7 @@ scheduler@^0.20.2: schema-utils@2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: "@types/json-schema" "^7.0.4" @@ -20770,7 +19746,7 @@ schema-utils@2.7.0: schema-utils@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" @@ -20779,7 +19755,7 @@ schema-utils@^1.0.0: schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" @@ -20788,7 +19764,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: "@types/json-schema" "^7.0.8" @@ -20797,7 +19773,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: schema-utils@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== dependencies: "@types/json-schema" "^7.0.9" @@ -20807,7 +19783,7 @@ schema-utils@^4.0.0: section-matter@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== dependencies: extend-shallow "^2.0.1" @@ -20815,58 +19791,53 @@ section-matter@^1.0.0: seedrandom@3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.0.0, selfsigned@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" - integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== +selfsigned@^2.0.0, selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== semver-diff@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: semver "^6.3.0" "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -20885,29 +19856,29 @@ send@0.18.0: serialize-javascript@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" serialize-javascript@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" serve-favicon@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" - integrity sha1-k10kDN/g9YBTB/3+ln2IlCosvPA= + resolved "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" + integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== dependencies: etag "~1.8.1" fresh "0.5.2" @@ -20915,9 +19886,9 @@ serve-favicon@^2.5.0: parseurl "~1.3.2" safe-buffer "5.1.1" -serve-handler@6.1.3, serve-handler@^6.1.3: +serve-handler@6.1.3: version "6.1.3" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8" + resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8" integrity sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w== dependencies: bytes "3.0.0" @@ -20929,10 +19900,24 @@ serve-handler@6.1.3, serve-handler@^6.1.3: path-to-regexp "2.2.1" range-parser "1.2.0" +serve-handler@^6.1.3: + version "6.1.5" + resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" + integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + fast-url-parser "1.1.3" + mime-types "2.1.18" + minimatch "3.1.2" + path-is-inside "1.0.2" + path-to-regexp "2.2.1" + range-parser "1.2.0" + serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" batch "0.6.1" @@ -20944,7 +19929,7 @@ serve-index@^1.9.1: serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -20954,7 +19939,7 @@ serve-static@1.15.0: serve@^11.1.0: version "11.3.2" - resolved "https://registry.yarnpkg.com/serve/-/serve-11.3.2.tgz#b905e980616feecd170e51c8f979a7b2374098f5" + resolved "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz#b905e980616feecd170e51c8f979a7b2374098f5" integrity sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w== dependencies: "@zeit/schemas" "2.6.0" @@ -20969,12 +19954,12 @@ serve@^11.1.0: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" @@ -20984,22 +19969,22 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -21007,26 +19992,26 @@ sha.js@^2.4.0, sha.js@^2.4.8: shader-loader@1.3.1, shader-loader@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/shader-loader/-/shader-loader-1.3.1.tgz#2d87808c088bdd172ce577490b41db4e6f01535f" + resolved "https://registry.npmjs.org/shader-loader/-/shader-loader-1.3.1.tgz#2d87808c088bdd172ce577490b41db4e6f01535f" integrity sha512-dt8F9K0x4rjmaFyHh7rNDfpt4LUiR64zhNIEwp2WbE99B3z4ALuvvmhftkElg93dUD6sTmv/aXa/z9SJiEddcA== dependencies: loader-utils "^1.1.0" shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" shallowequal@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== sharp@^0.30.7: version "0.30.7" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.7.tgz#7862bda98804fdd1f0d5659c85e3324b90d94c7c" + resolved "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz#7862bda98804fdd1f0d5659c85e3324b90d94c7c" integrity sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig== dependencies: color "^4.2.3" @@ -21040,36 +20025,36 @@ sharp@^0.30.7: shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.8.0" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== shelljs@0.8.5, shelljs@^0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" @@ -21078,12 +20063,12 @@ shelljs@0.8.5, shelljs@^0.8.5: shellwords@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -21092,17 +20077,17 @@ side-channel@^1.0.4: signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-concat@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^4.0.0, simple-get@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== dependencies: decompress-response "^6.0.0" @@ -21111,14 +20096,14 @@ simple-get@^4.0.0, simple-get@^4.0.1: simple-swizzle@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: is-arrayish "^0.3.1" sirv@^1.0.7: version "1.0.19" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + resolved "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: "@polka/url" "^1.0.0-next.20" @@ -21127,12 +20112,12 @@ sirv@^1.0.7: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== sitemap@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" + resolved "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== dependencies: "@types/node" "^17.0.5" @@ -21142,23 +20127,23 @@ sitemap@^7.1.1: slash@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== slice-ansi@0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== slice-ansi@^2.1.0: version "2.1.0" @@ -21171,7 +20156,7 @@ slice-ansi@^2.1.0: slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -21180,7 +20165,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -21189,17 +20174,17 @@ slice-ansi@^4.0.0: slide@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== smart-buffer@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -21208,14 +20193,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -21229,7 +20214,7 @@ snapdragon@^0.8.1: sockjs@^0.3.21, sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -21238,7 +20223,7 @@ sockjs@^0.3.21, sockjs@^0.3.24: socks-proxy-agent@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== dependencies: agent-base "~4.2.1" @@ -21246,44 +20231,44 @@ socks-proxy-agent@^4.0.0: socks@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + resolved "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== dependencies: ip "1.1.5" smart-buffer "^4.1.0" -sort-css-media-queries@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908" - integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw== +sort-css-media-queries@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" + integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== sort-keys@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== dependencies: is-plain-obj "^1.0.0" sort-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== dependencies: is-plain-obj "^1.0.0" source-list-map@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-resolve@^0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" @@ -21294,7 +20279,7 @@ source-map-resolve@^0.5.0: source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -21302,39 +20287,39 @@ source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.1 source-map-url@^0.4.0: version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== source-map@^0.8.0-beta.0: version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: whatwg-url "^7.0.0" sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== space-separated-tokens@^1.0.0: version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spark-md5@3.0.2: @@ -21344,7 +20329,7 @@ spark-md5@3.0.2: spdx-correct@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" @@ -21352,30 +20337,30 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.12" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== spdx-license-list@^6.4.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/spdx-license-list/-/spdx-license-list-6.5.0.tgz#1624b9cd6c517ff8d697610e6c22d7f5b7c63d28" - integrity sha512-28O9GgFrMg2Wp8tVML0Zk+fnXaECy7UbB6pxo+93whHay/nqPyEdM07Cx6B4+j2pniUZTYr57OaIOyNTxsTwtw== + version "6.6.0" + resolved "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.6.0.tgz#403e1807fd87ef2b4781677bc91896d23eaed4ea" + integrity sha512-vLwdf9AWgdJQmG8cai2HKfkInFsliKaCCOwXmdVonClIhdURTX61KdDOoXC1qcQ7gDaZj+CUTcrMJeAdnCtrKA== spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -21387,7 +20372,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -21398,52 +20383,52 @@ spdy@^4.0.2: split-on-first@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split2@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + resolved "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== dependencies: through2 "^2.0.2" split2@^3.0.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" split@0.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== dependencies: through "2" split@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.14.1, sshpk@^1.7.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" @@ -21463,89 +20448,97 @@ ssr-window@^4.0.0, ssr-window@^4.0.2: ssri@^6.0.0, ssri@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" ssri@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" stable@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-utils@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== start-server-and-test@^1.10.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.14.0.tgz#c57f04f73eac15dd51733b551d775b40837fdde3" - integrity sha512-on5ELuxO2K0t8EmNj9MtVlFqwBMxfWOhu4U7uZD1xccVpFlOQKR93CSe0u98iQzfNxRyaNTb/CdadbNllplTsw== + version "1.15.4" + resolved "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.15.4.tgz#8dd7c695c2c1f7e6e024843ca2224ee7d58d9a02" + integrity sha512-ucQtp5+UCr0m4aHlY+aEV2JSYNTiMZKdSKK/bsIr6AlmwAWDYDnV7uGlWWEtWa7T4XvRI5cPYcPcQgeLqpz+Tg== dependencies: + arg "^5.0.2" bluebird "3.7.2" check-more-types "2.24.0" - debug "4.3.2" + debug "4.3.4" execa "5.1.1" lazy-ass "1.6.0" ps-tree "1.2.0" - wait-on "6.0.0" + wait-on "7.0.1" state-toggle@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== std-env@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.1.1.tgz#1f19c4d3f6278c52efd08a94574a2a8d32b7d092" - integrity sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw== + version "3.3.2" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz#af27343b001616015534292178327b202b9ee955" + integrity sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA== stealthy-require@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" store2@^2.12.0: - version "2.13.2" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.13.2.tgz#01ad8802ca5b445b9c316b55e72645c13a3cd7e3" - integrity sha512-CMtO2Uneg3SAz/d6fZ/6qbqqQHi2ynq6/KzMD/26gTkiEShCcpqFfTHgOxsE0egAq6SX3FmN4CeSqn8BzXQkJg== + version "2.14.2" + resolved "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz#56138d200f9fe5f582ad63bc2704dbc0e4a45068" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== stream-browserify@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== dependencies: inherits "~2.0.4" @@ -21553,7 +20546,7 @@ stream-browserify@3.0.0: stream-browserify@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" @@ -21561,14 +20554,14 @@ stream-browserify@^2.0.1: stream-combiner@~0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== dependencies: duplexer "~0.1.1" stream-each@^1.1.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" @@ -21576,7 +20569,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" @@ -21587,41 +20580,41 @@ stream-http@^2.7.2: stream-shift@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== strict-uri-encode@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== strict-uri-encode@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== string-argv@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== string-length@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + resolved "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ== dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" string-natural-compare@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -21629,7 +20622,7 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -21638,7 +20631,7 @@ string-width@^1.0.1: string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" @@ -21646,7 +20639,7 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: emoji-regex "^7.0.1" @@ -21655,80 +20648,80 @@ string-width@^3.0.0, string-width@^3.1.0: string-width@^5.0.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" emoji-regex "^9.2.2" strip-ansi "^7.0.1" -"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" string.prototype.padstart@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz#4551d0117d9501692ec6000b15056ac3f816cfa5" - integrity sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz#4842d58a09df2addac23cf0b325ce9f087978e90" + integrity sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -21737,108 +20730,108 @@ stringify-object@^3.3.0: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.0, strip-ansi@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: ansi-regex "^6.0.1" strip-bom-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== strip-bom@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: is-utf8 "^0.2.0" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-comments@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-final-newline@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== strip-indent@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== dependencies: get-stdin "^4.0.1" strip-indent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strong-log-transformer@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: duplexer "^0.1.1" @@ -21847,7 +20840,7 @@ strong-log-transformer@^2.0.0: style-loader@^1.0.0, style-loader@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== dependencies: loader-utils "^2.0.0" @@ -21855,7 +20848,7 @@ style-loader@^1.0.0, style-loader@^1.3.0: style-loader@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: loader-utils "^2.0.0" @@ -21863,75 +20856,75 @@ style-loader@^2.0.0: style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== dependencies: inline-style-parser "0.1.1" stylehacks@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: browserslist "^4.0.0" postcss "^7.0.0" postcss-selector-parser "^3.0.0" -stylehacks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" - integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: - browserslist "^4.16.6" + browserslist "^4.21.4" postcss-selector-parser "^6.0.4" supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: +svg-parser@^2.0.2, svg-parser@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^0.7.2: version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= + resolved "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + integrity sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA== dependencies: coa "~1.0.1" colors "~1.1.2" @@ -21943,7 +20936,7 @@ svgo@^0.7.2: svgo@^1.0.0, svgo@^1.2.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: chalk "^2.4.1" @@ -21960,9 +20953,9 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -svgo@^2.0.3, svgo@^2.5.0, svgo@^2.7.0: +svgo@^2.0.3, svgo@^2.7.0, svgo@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" @@ -21974,26 +20967,26 @@ svgo@^2.0.3, svgo@^2.5.0, svgo@^2.7.0: stable "^0.1.8" swiper@^8.4.2: - version "8.4.2" - resolved "https://registry.npmjs.org/swiper/-/swiper-8.4.2.tgz#a52e091a92a52b230bd076fb3ef19ae73baed2a2" - integrity sha512-nMD/RHVYxJxrLqjWQX2n0B94ANwpnuUv/3PUDT8Aaf+mSteFvZGFng4ypAYq70zW4svryyV+8TRlbRZ+6cgv9A== + version "8.4.7" + resolved "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz#0301d385c3efc8efe8b66a64187edcb30e3067ee" + integrity sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g== dependencies: dom7 "^4.0.4" ssr-window "^4.0.2" symbol-observable@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== symbol.prototype.description@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz#d30e01263b6020fbbd2d2884a6276ce4d49ab568" + resolved "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz#d30e01263b6020fbbd2d2884a6276ce4d49ab568" integrity sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ== dependencies: call-bind "^1.0.2" @@ -22002,9 +20995,9 @@ symbol.prototype.description@^1.0.0: object.getownpropertydescriptors "^2.1.2" synchronous-promise@^2.0.15: - version "2.0.15" - resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" - integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== + version "2.0.17" + resolved "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== table@^5.2.3: version "5.4.6" @@ -22017,9 +21010,9 @@ table@^5.2.3: string-width "^3.0.0" table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + version "6.8.1" + resolved "https://registry.npmjs.org/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -22058,17 +21051,17 @@ tailwindcss@3.2.4: tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" @@ -22078,7 +21071,7 @@ tar-fs@^2.0.0, tar-fs@^2.1.1: tar-stream@^2.1.4: version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" @@ -22089,7 +21082,7 @@ tar-stream@^2.1.4: tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== dependencies: chownr "^1.1.4" @@ -22101,20 +21094,20 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: yallist "^3.1.1" tar@^6.0.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + version "6.1.13" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^4.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" telejson@^5.1.0: version "5.3.3" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.3.3.tgz#fa8ca84543e336576d8734123876a9f02bf41d2e" + resolved "https://registry.npmjs.org/telejson/-/telejson-5.3.3.tgz#fa8ca84543e336576d8734123876a9f02bf41d2e" integrity sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA== dependencies: "@types/is-function" "^1.0.0" @@ -22128,7 +21121,7 @@ telejson@^5.1.0: telejson@^6.0.8: version "6.0.8" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" + resolved "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" integrity sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg== dependencies: "@types/is-function" "^1.0.0" @@ -22142,18 +21135,18 @@ telejson@^6.0.8: temp-dir@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== temp-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== temp-write@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" - integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= + resolved "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q== dependencies: graceful-fs "^4.1.2" is-stream "^1.1.0" @@ -22164,7 +21157,7 @@ temp-write@^3.4.0: tempy@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: is-stream "^2.0.0" @@ -22174,14 +21167,14 @@ tempy@^0.6.0: term-size@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ== dependencies: execa "^0.7.0" terser-webpack-plugin@^1.4.3: version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" @@ -22196,7 +21189,7 @@ terser-webpack-plugin@^1.4.3: terser-webpack-plugin@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== dependencies: cacache "^15.0.5" @@ -22209,41 +21202,30 @@ terser-webpack-plugin@^4.2.3: terser "^5.3.4" webpack-sources "^1.4.3" -terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.1.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" - integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== +terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.1.4, terser-webpack-plugin@^5.3.3: + version "5.3.6" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== dependencies: + "@jridgewell/trace-mapping" "^0.3.14" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - source-map "^0.6.1" - terser "^5.7.2" - -terser-webpack-plugin@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" - integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.7" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.7.2" + terser "^5.14.1" terser@^4.1.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0, terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: - version "5.14.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.0.tgz#eefeec9af5153f55798180ee2617f390bdd285e2" - integrity sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g== +terser@^5.0.0, terser@^5.10.0, terser@^5.14.1, terser@^5.3.4: + version "5.16.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz#3266017a9b682edfe019b8ecddd2abaae7b39c6b" + integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -22252,7 +21234,7 @@ terser@^5.0.0, terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: test-exclude@^5.2.3: version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: glob "^7.1.3" @@ -22262,7 +21244,7 @@ test-exclude@^5.2.3: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -22271,7 +21253,7 @@ test-exclude@^6.0.0: text-extensions@^1.0.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== text-segmentation@^1.0.3: @@ -22283,36 +21265,36 @@ text-segmentation@^1.0.3: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thenify-all@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" throat@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + resolved "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA== throttleit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= + resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== through2@^2.0.0, through2@^2.0.2: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" @@ -22320,7 +21302,7 @@ through2@^2.0.0, through2@^2.0.2: through2@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + resolved "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== dependencies: inherits "^2.0.4" @@ -22328,107 +21310,107 @@ through2@^3.0.0: through2@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== dependencies: readable-stream "3" through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.1: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== thunky@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== timers-browserify@^2.0.4: version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" timsort@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== tiny-invariant@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + version "1.3.1" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tiny-warning@^1.0.0, tiny-warning@^1.0.3: +tiny-warning@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== + version "1.6.0" + resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmp@~0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: rimraf "^3.0.0" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-arraybuffer@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" to-readable-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -22438,17 +21420,17 @@ to-regex@^3.0.1, to-regex@^3.0.2: toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== totalist@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + resolved "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" @@ -22456,29 +21438,29 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: tr46@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== trim-newlines@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== trim-newlines@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA== trim-newlines@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== trim-right@^1.0.1: @@ -22488,32 +21470,32 @@ trim-right@^1.0.1: trim-trailing-lines@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== trim@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== trough@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== ts-dedent@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== ts-pnp@^1.1.6: version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== tsconfig-paths@^3.14.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" @@ -22523,140 +21505,149 @@ tsconfig-paths@^3.14.1: tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + version "2.5.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tty-browserify@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" type-fest@^0.16.0: version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== type-fest@^0.18.0: version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.3.0: version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-fest@^2.5.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.13.0.tgz#d1ecee38af29eb2e863b22299a3d68ef30d2abfb" - integrity sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw== + version "2.19.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.2.3: - version "4.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" - integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== +typescript@4.6.4: + version "4.6.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + version "0.7.33" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" + integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== uglify-js@^3.1.4: - version "3.15.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3" - integrity sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ== + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== uid-number@0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + resolved "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w== umask@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -22666,19 +21657,19 @@ unbox-primitive@^1.0.2: unescape@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" + resolved "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== dependencies: extend-shallow "^2.0.1" unfetch@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + resolved "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== unherit@^1.0.4: version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== dependencies: inherits "^2.0.0" @@ -22686,30 +21677,30 @@ unherit@^1.0.4: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.0.0, unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== unified@9.2.0: version "9.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: bail "^1.0.0" @@ -22721,7 +21712,7 @@ unified@9.2.0: unified@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== dependencies: bail "^1.0.0" @@ -22733,7 +21724,7 @@ unified@^9.2.2: union-value@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" @@ -22743,79 +21734,79 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== uniqs@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== unique-filename@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" unique-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: crypto-random-string "^2.0.0" unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== unist-util-generated@^1.0.0: version "1.1.6" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== unist-util-is@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== unist-util-position@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== unist-util-remove-position@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" + resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== dependencies: unist-util-visit "^2.0.0" unist-util-remove@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" + resolved "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== dependencies: unist-util-is "^4.0.0" unist-util-stringify-position@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" unist-util-visit-parents@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" @@ -22823,7 +21814,7 @@ unist-util-visit-parents@^3.0.0: unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== dependencies: "@types/unist" "^2.0.0" @@ -22832,59 +21823,59 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: universal-user-agent@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== dependencies: os-name "^3.1.0" universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unquote@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" untildify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" - integrity sha1-F+soB5h/dpUunASF/DEdBqgmouA= + resolved "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" + integrity sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig== dependencies: os-homedir "^1.0.0" untildify@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== unused-webpack-plugin@2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/unused-webpack-plugin/-/unused-webpack-plugin-2.4.0.tgz#c81acf882822e0b6298c4d33e2b0225bc8fcac1a" + resolved "https://registry.npmjs.org/unused-webpack-plugin/-/unused-webpack-plugin-2.4.0.tgz#c81acf882822e0b6298c4d33e2b0225bc8fcac1a" integrity sha512-v/9lL+ICYVJodolusinh7j+Lj51Quj6erA5YiBl5W0L19BAZ29H+88l9GCdWl3bZEb6BowGX2Ig8CMvxKzqhwQ== dependencies: chalk "^2.1.0" @@ -22892,12 +21883,20 @@ unused-webpack-plugin@2.4.0: upath@^1.1.1, upath@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-check@1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.2.tgz#2fe09f725c543440b3d7dabe8971f2d5caaedc28" + resolved "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz#2fe09f725c543440b3d7dabe8971f2d5caaedc28" integrity sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ== dependencies: registry-auth-token "3.3.2" @@ -22905,7 +21904,7 @@ update-check@1.5.2: update-notifier@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: boxen "^5.0.0" @@ -22925,19 +21924,19 @@ update-notifier@^5.1.0: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== url-loader@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: loader-utils "^2.0.0" @@ -22946,56 +21945,56 @@ url-loader@^4.1.1: url-parse-lax@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" url@^0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: punycode "1.3.2" querystring "0.2.0" use-composed-ref@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: use-isomorphic-layout-effect "^1.1.1" use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util-promisify@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + resolved "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA== dependencies: object.getownpropertydescriptors "^2.0.3" util.promisify@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" @@ -23003,7 +22002,7 @@ util.promisify@1.0.0: util.promisify@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== dependencies: call-bind "^1.0.0" @@ -23014,7 +22013,7 @@ util.promisify@^1.0.0: util.promisify@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: define-properties "^1.1.3" @@ -23024,44 +22023,43 @@ util.promisify@~1.0.0: util@0.10.3: version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== dependencies: inherits "2.0.1" util@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" util@^0.12.4: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + version "0.12.5" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" is-generator-function "^1.0.7" is-typed-array "^1.1.3" - safe-buffer "^5.1.2" which-typed-array "^1.1.2" utila@~0.4: version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== utility-types@^3.10.0: version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== utrie@^1.0.2: version "1.0.2" @@ -23072,17 +22070,17 @@ utrie@^1.0.2: uuid-browser@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" - integrity sha1-DwWkCu90+eWVHiDvv0SxGHHlZBA= + resolved "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== uuid@^9.0.0: @@ -23092,21 +22090,21 @@ uuid@^9.0.0: v8-compile-cache@^2.0.3: version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" - integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== + version "9.1.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -23114,35 +22112,35 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: validate-npm-package-name@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" validate.js@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.12.0.tgz#17f989e37c192ea2f826bbf19bf4e97e6e4be68f" + resolved "https://registry.npmjs.org/validate.js/-/validate.js-0.12.0.tgz#17f989e37c192ea2f826bbf19bf4e97e6e4be68f" integrity sha512-/x2RJSvbqEyxKj0RPN4xaRquK+EggjeVXiDDEyrJzsJogjtiZ9ov7lj/svVb4DM5Q5braQF4cooAryQbUwOxlA== value-equal@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vendors@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -23150,12 +22148,12 @@ verror@1.10.0: vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== vfile-message@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== dependencies: "@types/unist" "^2.0.0" @@ -23163,7 +22161,7 @@ vfile-message@^2.0.0: vfile@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + resolved "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" @@ -23173,40 +22171,40 @@ vfile@^4.0.0: vlq@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + resolved "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== vm-browserify@^1.0.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== void-elements@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + resolved "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== w3c-hr-time@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -wait-on@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.0.tgz#7e9bf8e3d7fe2daecbb7a570ac8ca41e9311c7e7" - integrity sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw== +wait-on@7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/wait-on/-/wait-on-7.0.1.tgz#5cff9f8427e94f4deacbc2762e6b0a489b19eae9" + integrity sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog== dependencies: - axios "^0.21.1" - joi "^17.4.0" + axios "^0.27.2" + joi "^17.7.0" lodash "^4.17.21" - minimist "^1.2.5" - rxjs "^7.1.0" + minimist "^1.2.7" + rxjs "^7.8.0" wait-on@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + resolved "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== dependencies: axios "^0.25.0" @@ -23217,28 +22215,28 @@ wait-on@^6.0.1: walker@^1.0.7, walker@~1.0.5: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" warning@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== dependencies: loose-envify "^1.0.0" watchpack-chokidar2@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" watchpack@^1.7.4: version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" @@ -23247,17 +22245,9 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" -watchpack@^2.2.0, watchpack@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" - integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -watchpack@^2.4.0: +watchpack@^2.2.0, watchpack@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" @@ -23265,48 +22255,49 @@ watchpack@^2.4.0: wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" web-namespaces@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== web-streams-polyfill@^3.0.3: version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== webgl-constants@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/webgl-constants/-/webgl-constants-1.1.1.tgz#f9633ee87fea56647a60b9ce735cbdfb891c6855" + resolved "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz#f9633ee87fea56647a60b9ce735cbdfb891c6855" integrity sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg== webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-bundle-analyzer@^4.4.2, webpack-bundle-analyzer@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" - integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== + version "4.8.0" + resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz#951b8aaf491f665d2ae325d8b84da229157b1d04" + integrity sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg== dependencies: + "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" acorn-walk "^8.0.0" chalk "^4.1.0" @@ -23318,17 +22309,17 @@ webpack-bundle-analyzer@^4.4.2, webpack-bundle-analyzer@^4.5.0: ws "^7.3.1" webpack-cli@^4.7.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" - integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== + version "4.10.0" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.1.1" - "@webpack-cli/info" "^1.4.1" - "@webpack-cli/serve" "^1.6.1" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" colorette "^2.0.14" commander "^7.0.0" - execa "^5.0.0" + cross-spawn "^7.0.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" interpret "^2.2.0" @@ -23337,7 +22328,7 @@ webpack-cli@^4.7.2: webpack-dev-middleware@^3.7.3: version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: memory-fs "^0.4.1" @@ -23348,7 +22339,7 @@ webpack-dev-middleware@^3.7.3: webpack-dev-middleware@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e" integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== dependencies: colorette "^1.2.2" @@ -23360,7 +22351,7 @@ webpack-dev-middleware@^4.1.0: webpack-dev-middleware@^5.3.0, webpack-dev-middleware@^5.3.1: version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" @@ -23371,7 +22362,7 @@ webpack-dev-middleware@^5.3.0, webpack-dev-middleware@^5.3.1: webpack-dev-server@4.7.3: version "4.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== dependencies: "@types/bonjour" "^3.5.9" @@ -23405,9 +22396,9 @@ webpack-dev-server@4.7.3: ws "^8.1.0" webpack-dev-server@^4.9.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz#2360a5d6d532acb5410a668417ad549ee3b8a3c9" - integrity sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw== + version "4.11.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5" + integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -23432,7 +22423,7 @@ webpack-dev-server@^4.9.3: p-retry "^4.5.0" rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.1" + selfsigned "^2.1.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" @@ -23441,22 +22432,21 @@ webpack-dev-server@^4.9.3: webpack-filter-warnings-plugin@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" + resolved "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== webpack-hot-middleware@^2.25.0, webpack-hot-middleware@^2.25.1: - version "2.25.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz#581f59edf0781743f4ca4c200fd32c9266c6cf7c" - integrity sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw== + version "2.25.3" + resolved "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#be343ce2848022cfd854dd82820cd730998c6794" + integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== dependencies: ansi-html-community "0.0.8" html-entities "^2.1.0" - querystring "^0.2.0" strip-ansi "^6.0.0" webpack-log@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" @@ -23464,7 +22454,7 @@ webpack-log@^2.0.0: webpack-merge@5.7.3: version "5.7.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: clone-deep "^4.0.1" @@ -23472,7 +22462,7 @@ webpack-merge@5.7.3: webpack-merge@^5.7.3, webpack-merge@^5.8.0: version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: clone-deep "^4.0.1" @@ -23480,7 +22470,7 @@ webpack-merge@^5.7.3, webpack-merge@^5.8.0: webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" @@ -23488,24 +22478,24 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- webpack-sources@^3.2.2, webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack-virtual-modules@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== dependencies: debug "^3.0.0" webpack-virtual-modules@^0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" - integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== + version "0.4.6" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== webpack@4: version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" @@ -23532,40 +22522,10 @@ webpack@4: watchpack "^1.7.4" webpack-sources "^1.4.1" -"webpack@>=4.43.0 <6.0.0", webpack@^5.50.0, webpack@^5.9.0: - version "5.72.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.1.tgz#3500fc834b4e9ba573b9f430b2c0a61e1bb57d13" - integrity sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - -webpack@^5.73.0: - version "5.74.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" - integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== +"webpack@>=4.43.0 <6.0.0", webpack@^5.50.0, webpack@^5.73.0, webpack@^5.9.0: + version "5.75.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -23594,7 +22554,7 @@ webpack@^5.73.0: webpackbar@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" + resolved "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== dependencies: chalk "^4.1.0" @@ -23604,7 +22564,7 @@ webpackbar@^5.0.2: websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -23613,37 +22573,37 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== webworker-promise@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/webworker-promise/-/webworker-promise-0.5.0.tgz#eb1aa89f26ca6a49765f332668644d74c2c8e320" + resolved "https://registry.npmjs.org/webworker-promise/-/webworker-promise-0.5.0.tgz#eb1aa89f26ca6a49765f332668644d74c2c8e320" integrity sha512-14iR79jHAV7ozwvbfif+3wCaApT3I1g8Lo0rJZrwAu6wxZGx/08Y8KXz6as6ZLNUEEufeiEBBYrqyDBClXOsEw== whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" whatwg-url@^6.4.1: version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" @@ -23652,7 +22612,7 @@ whatwg-url@^6.4.1: whatwg-url@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" @@ -23661,12 +22621,12 @@ whatwg-url@^7.0.0: whet.extend@~0.9.9: version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= + resolved "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + integrity sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA== which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -23675,106 +22635,116 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== -which-typed-array@^1.1.2: - version "1.1.8" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" - integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== +which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.20.0" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.9" + is-typed-array "^1.1.10" which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@^1.1.0, wide-align@^1.1.2: version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" widest-line@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" widest-line@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: string-width "^4.0.0" widest-line@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== dependencies: string-width "^5.0.1" wildcard@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== windows-release@^3.1.0: version "3.3.3" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" + resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== dependencies: execa "^1.0.0" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -workbox-background-sync@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" - integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: - idb "^6.1.4" - workbox-core "6.5.3" + idb "^7.0.1" + workbox-core "6.5.4" -workbox-broadcast-update@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" - integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-build@6.5.3, workbox-build@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" - integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== +workbox-build@6.5.4, workbox-build@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -23798,143 +22768,143 @@ workbox-build@6.5.3, workbox-build@^6.5.3: strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "6.5.3" - workbox-broadcast-update "6.5.3" - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-google-analytics "6.5.3" - workbox-navigation-preload "6.5.3" - workbox-precaching "6.5.3" - workbox-range-requests "6.5.3" - workbox-recipes "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" - workbox-streams "6.5.3" - workbox-sw "6.5.3" - workbox-window "6.5.3" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" -workbox-cacheable-response@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" - integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-core@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" - integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== -workbox-expiration@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" - integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== dependencies: - idb "^6.1.4" - workbox-core "6.5.3" + idb "^7.0.1" + workbox-core "6.5.4" -workbox-google-analytics@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" - integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: - workbox-background-sync "6.5.3" - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -workbox-navigation-preload@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" - integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-precaching@6.5.3, workbox-precaching@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" - integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== +workbox-precaching@6.5.4, workbox-precaching@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -workbox-range-requests@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" - integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-recipes@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" - integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: - workbox-cacheable-response "6.5.3" - workbox-core "6.5.3" - workbox-expiration "6.5.3" - workbox-precaching "6.5.3" - workbox-routing "6.5.3" - workbox-strategies "6.5.3" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -workbox-routing@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" - integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-strategies@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" - integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: - workbox-core "6.5.3" + workbox-core "6.5.4" -workbox-streams@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" - integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== dependencies: - workbox-core "6.5.3" - workbox-routing "6.5.3" + workbox-core "6.5.4" + workbox-routing "6.5.4" -workbox-sw@6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" - integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== workbox-webpack-plugin@^6.1.5: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" - integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: fast-json-stable-stringify "^2.1.0" pretty-bytes "^5.4.1" upath "^1.2.0" webpack-sources "^1.4.3" - workbox-build "6.5.3" + workbox-build "6.5.4" -workbox-window@6.5.3, workbox-window@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" - integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== +workbox-window@6.5.4, workbox-window@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "6.5.3" + workbox-core "6.5.4" worker-farm@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" worker-loader@3.0.8, worker-loader@^3.0.8: version "3.0.8" - resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37" + resolved "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37" integrity sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g== dependencies: loader-utils "^2.0.0" @@ -23942,22 +22912,22 @@ worker-loader@3.0.8, worker-loader@^3.0.8: worker-rpc@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== dependencies: microevent.ts "~0.1.1" wrap-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" wrap-ansi@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: ansi-styles "^3.2.0" @@ -23966,7 +22936,7 @@ wrap-ansi@^5.1.0: wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -23975,7 +22945,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -23983,9 +22953,9 @@ wrap-ansi@^7.0.0: strip-ansi "^6.0.0" wrap-ansi@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" - integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" string-width "^5.0.1" @@ -23993,12 +22963,12 @@ wrap-ansi@^8.0.1: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== dependencies: graceful-fs "^4.1.11" @@ -24007,7 +22977,7 @@ write-file-atomic@2.4.1: write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" @@ -24016,7 +22986,7 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -24026,8 +22996,8 @@ write-file-atomic@^3.0.0: write-json-file@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" - integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ== dependencies: detect-indent "^5.0.0" graceful-fs "^4.1.2" @@ -24038,7 +23008,7 @@ write-json-file@^2.2.0: write-json-file@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== dependencies: detect-indent "^5.0.0" @@ -24050,7 +23020,7 @@ write-json-file@^3.2.0: write-pkg@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== dependencies: sort-keys "^2.0.0" @@ -24065,53 +23035,53 @@ write@1.0.3: ws@^5.2.0: version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + resolved "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" ws@^7.3.1: - version "7.5.8" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" - integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.1.0, ws@^8.2.3, ws@^8.4.2: - version "8.7.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957" - integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== + version "8.12.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" + integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== x-default-browser@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481" - integrity sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE= + resolved "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481" + integrity sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw== optionalDependencies: default-browser-id "^1.0.4" xdg-basedir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== xml-js@^1.6.11: version "1.6.11" - resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== dependencies: sax "^1.2.4" xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== xmlbuilder2@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz#fc499688b35a916f269e7b459c2fa02bb5c0822a" + resolved "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz#fc499688b35a916f269e7b459c2fa02bb5c0822a" integrity sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw== dependencies: "@oozcitak/dom" "1.15.10" @@ -24121,48 +23091,48 @@ xmlbuilder2@3.0.2: js-yaml "3.14.0" xstate@^4.10.0: - version "4.32.1" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.32.1.tgz#1a09c808a66072938861a3b4acc5b38460244b70" - integrity sha512-QYUd+3GkXZ8i6qdixnOn28bL3EvA++LONYL/EMWwKlFSh/hiLndJ8YTnz77FDs+JUXcwU7NZJg7qoezoRHc4GQ== + version "4.36.0" + resolved "https://registry.npmjs.org/xstate/-/xstate-4.36.0.tgz#8bc633e4670be37c4e1adb28b4649b0a951ef7f1" + integrity sha512-AUI+KPgyy3g4PDpZWzUy/5ubd8VymbqikNmrJx5AQfqh+AQnemkBiabGROno+am1wUl2yeuT3UDrzUTSidfa6g== xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^13.1.2: version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" @@ -24170,7 +23140,7 @@ yargs-parser@^13.1.2: yargs-parser@^15.0.1: version "15.0.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115" integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA== dependencies: camelcase "^5.0.0" @@ -24178,12 +23148,12 @@ yargs-parser@^15.0.1: yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@^13.3.0: version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" @@ -24199,7 +23169,7 @@ yargs@^13.3.0: yargs@^14.2.2: version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: cliui "^5.0.0" @@ -24216,7 +23186,7 @@ yargs@^14.2.2: yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -24229,7 +23199,7 @@ yargs@^16.2.0: yarn-programmatic@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/yarn-programmatic/-/yarn-programmatic-0.1.2.tgz#6d656c59d16816deec701b7cb32f25558c1070f7" + resolved "https://registry.npmjs.org/yarn-programmatic/-/yarn-programmatic-0.1.2.tgz#6d656c59d16816deec701b7cb32f25558c1070f7" integrity sha512-pnunUzmOpsZR+G8GbqX+FBNaKsu+lXrtcPGC8UOn1tw8NgPVx1GHHlosQCu1dlGNppjb6MF7WzBPONiAaEvp4Q== dependencies: "@types/child-process-promise" "^2.2.1" @@ -24237,18 +23207,18 @@ yarn-programmatic@^0.1.2: yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zwitch@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From 67fc3f733dd394a0b329a825a07a69d73edd861c Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 17 Feb 2023 16:44:21 -0500 Subject: [PATCH 33/47] feat(SR): Measurement adapter mappings and save to same series (#3140) * feat: Add adapter mappings for RectangleROI and Angle and save same PR comments * fix: Rehydrate check on non core measurement adapters --- extensions/cornerstone-dicom-sr/package.json | 7 +- .../src/commandsModule.js | 8 +- ...rModule.js => getSopClassHandlerModule.ts} | 42 ++-- extensions/cornerstone-dicom-sr/src/init.js | 29 --- extensions/cornerstone-dicom-sr/src/init.ts | 49 ++++ .../src/tools/toolNames.ts | 16 +- .../src/tools/tools/SRArrowAnnotate.ts | 16 -- .../src/tools/tools/SRBidirectional.ts | 16 -- .../src/tools/tools/SREllipticalROI.ts | 16 -- .../src/tools/tools/SRLength.ts | 16 -- .../src/utils/addToolInstance.ts | 12 + .../src/utils/isRehydratable.js | 12 +- .../viewports/OHIFCornerstoneSRViewport.tsx | 2 +- extensions/cornerstone/package.json | 10 +- extensions/cornerstone/src/index.tsx | 7 +- .../cornerstone/src/initCornerstoneTools.js | 6 + .../cornerstone/src/initMeasurementService.js | 38 ++- .../utils/measurementServiceMappings/Angle.ts | 210 ++++++++++++++++ .../measurementServiceMappings/CobbAngle.ts | 210 ++++++++++++++++ .../PlanarFreehandROI.ts | 148 ++++++++++++ .../RectangleROI.ts | 228 ++++++++++++++++++ .../constants/supportedTools.js | 12 +- .../utils/measurementServiceMappings/index.ts | 3 + ...s => measurementServiceMappingsFactory.ts} | 99 +++++++- .../measurementServiceMappings/utils/index.ts | 17 ++ .../utils/selection.ts | 44 ++++ extensions/default/package.json | 4 +- .../src/Panels/PanelMeasurementTable.tsx | 35 ++- .../utils/findSRWithSameSeriesDescription.ts | 49 ++++ extensions/dicom-pdf/package.json | 2 +- extensions/dicom-video/package.json | 2 +- extensions/measurement-tracking/package.json | 6 +- extensions/tmtv/package.json | 2 +- modes/longitudinal/src/initToolGroups.js | 4 + modes/longitudinal/src/toolbarButtons.js | 32 +++ modes/tmtv/src/initToolGroups.js | 2 + platform/core/package.json | 4 +- .../core/src/measurements/tools/polygonRoi.js | 2 +- .../MeasurementService/MeasurementService.ts | 11 +- platform/viewer/package.json | 3 +- testdata | 2 +- yarn.lock | 62 ++--- 42 files changed, 1277 insertions(+), 218 deletions(-) rename extensions/cornerstone-dicom-sr/src/{getSopClassHandlerModule.js => getSopClassHandlerModule.ts} (93%) delete mode 100644 extensions/cornerstone-dicom-sr/src/init.js create mode 100644 extensions/cornerstone-dicom-sr/src/init.ts delete mode 100644 extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts delete mode 100644 extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts delete mode 100644 extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts delete mode 100644 extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts create mode 100644 extensions/cornerstone-dicom-sr/src/utils/addToolInstance.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/Angle.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/CobbAngle.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/PlanarFreehandROI.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/RectangleROI.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/index.ts rename extensions/cornerstone/src/utils/measurementServiceMappings/{measurementServiceMappingsFactory.js => measurementServiceMappingsFactory.ts} (52%) create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/utils/index.ts create mode 100644 extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts create mode 100644 extensions/default/src/utils/findSRWithSameSeriesDescription.ts diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 20a810b59..8759b1114 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -36,7 +36,7 @@ "@ohif/extension-cornerstone": "^3.0.0", "@ohif/extension-measurement-tracking": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", @@ -45,7 +45,8 @@ "dependencies": { "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", - "@cornerstonejs/core": "0.30.1", - "@cornerstonejs/tools": "0.39.0" + "@cornerstonejs/adapters": "^0.3.1", + "@cornerstonejs/core": "^0.30.1", + "@cornerstonejs/tools": "^0.44.0" } } diff --git a/extensions/cornerstone-dicom-sr/src/commandsModule.js b/extensions/cornerstone-dicom-sr/src/commandsModule.js index 00431a3c8..7b685ed44 100644 --- a/extensions/cornerstone-dicom-sr/src/commandsModule.js +++ b/extensions/cornerstone-dicom-sr/src/commandsModule.js @@ -30,14 +30,12 @@ const _generateReport = ( const report = MeasurementReport.generateReport( filteredToolState, metaData, - utilities.worldToImageCoords + utilities.worldToImageCoords, + options ); const { dataset } = report; - // Add in top level series options - Object.assign(dataset, options); - // Set the default character set as UTF-8 // https://dicom.innolitics.com/ciods/nm-image/sop-common/00080005 if (typeof dataset.SpecificCharacterSet === 'undefined') { @@ -89,7 +87,7 @@ const commandsModule = ({}) => { additionalFindingTypes, options = {}, }) => { - // TODO -> Eventually use the measurements directly and not the dcmjs adapter, + // Use the @cornerstonejs adapter for converting to/from DICOM // But it is good enough for now whilst we only have cornerstone as a datasource. log.info('[DICOMSR] storeMeasurements'); diff --git a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts similarity index 93% rename from extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js rename to extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts index 7bc1e1fdf..54a810a8d 100644 --- a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.js +++ b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts @@ -51,13 +51,17 @@ const RELATIONSHIP_TYPE = { const CORNERSTONE_FREETEXT_CODE_VALUE = 'CORNERSTONEFREETEXT'; /** - * Basic SOPClassHandler: - * - For all Image types that are stackable, create - * a displaySet with a stack of images + * DICOM SR SOP Class Handler + * For all referenced images in the TID 1500/300 sections, add an image to the + * display (this is TODO - it is not the actual behaviour below unfortunately) * - * @param {Array} sopClassHandlerModules List of SOP Class Modules - * @param {SeriesMetadata} series The series metadata object from which the display sets will be created - * @returns {Array} The list of display sets created for the given series object + * This will only display and rehydrate the latest DICOM SR in the given series + * It would be possible to add the ability to view older series rehydrations + * in the future. + * + * @param instances is a set of instances all from the same series + * @param servicesManager is the services that can be used for creating + * @returns The list of display sets created for the given instances object */ function _getDisplaySetsFromSeries( instances, @@ -69,7 +73,8 @@ function _getDisplaySetsFromSeries( throw new Error('No instances were provided'); } - const instance = instances[0]; + utils.sortStudyInstances(instances); + const instance = instances[instances.length - 1]; const { StudyInstanceUID, @@ -85,10 +90,10 @@ function _getDisplaySetsFromSeries( if ( !ConceptNameCodeSequence || ConceptNameCodeSequence.CodeValue !== - CodeNameCodeSequenceValues.ImagingMeasurementReport + CodeNameCodeSequenceValues.ImagingMeasurementReport ) { - console.warn( - 'Only support Imaging Measurement Report SRs (TID1500) for now' + console.log( + 'Only support Imaging Measurement Report SRs (TID1500) for this renderer.' ); return []; } @@ -105,6 +110,9 @@ function _getDisplaySetsFromSeries( StudyInstanceUID, SOPClassHandlerId, SOPClassUID, + instances, + // Others is a historical value used for instances which is deprecated and will be removed + others: instances, referencedImages: null, measurements: null, isDerivedDisplaySet: true, @@ -313,13 +321,13 @@ function _getMeasurements(ImagingMeasurementReportContentSequence) { MeasurementGroups ); - let measurements = []; + const measurements = []; Object.keys(mergedContentSequencesByTrackingUniqueIdentifiers).forEach( trackingUniqueIdentifier => { const mergedContentSequence = mergedContentSequencesByTrackingUniqueIdentifiers[ - trackingUniqueIdentifier + trackingUniqueIdentifier ]; const measurement = _processMeasurement(mergedContentSequence); @@ -359,7 +367,7 @@ function _getMergedContentSequencesByTrackingUniqueIdentifiers( if ( mergedContentSequencesByTrackingUniqueIdentifiers[ - trackingUniqueIdentifier + trackingUniqueIdentifier ] === undefined ) { // Add the full ContentSequence @@ -474,9 +482,9 @@ function _processNonGeometricallyDefinedMeasurement(mergedContentSequence) { const FindingSites = mergedContentSequence.filter( item => item.ConceptNameCodeSequence.CodingSchemeDesignator === - CodingSchemeDesignators.SRT && + CodingSchemeDesignators.SRT && item.ConceptNameCodeSequence.CodeValue === - CodeNameCodeSequenceValues.FindingSite + CodeNameCodeSequenceValues.FindingSite ); const measurement = { @@ -493,7 +501,7 @@ function _processNonGeometricallyDefinedMeasurement(mergedContentSequence) { Finding.ConceptCodeSequence.CodingSchemeDesignator ) && Finding.ConceptCodeSequence.CodeValue === - CodeNameCodeSequenceValues.CornerstoneFreeText + CodeNameCodeSequenceValues.CornerstoneFreeText ) { measurement.labels.push({ label: CORNERSTONE_FREETEXT_CODE_VALUE, @@ -509,7 +517,7 @@ function _processNonGeometricallyDefinedMeasurement(mergedContentSequence) { FindingSite.ConceptCodeSequence.CodingSchemeDesignator ) && FindingSite.ConceptCodeSequence.CodeValue === - CodeNameCodeSequenceValues.CornerstoneFreeText + CodeNameCodeSequenceValues.CornerstoneFreeText ); if (cornerstoneFreeTextFindingSite) { diff --git a/extensions/cornerstone-dicom-sr/src/init.js b/extensions/cornerstone-dicom-sr/src/init.js deleted file mode 100644 index 92a907ff8..000000000 --- a/extensions/cornerstone-dicom-sr/src/init.js +++ /dev/null @@ -1,29 +0,0 @@ -import { addTool, annotation } from '@cornerstonejs/tools'; -import DICOMSRDisplayTool from './tools/DICOMSRDisplayTool'; -import SRLengthTool from './tools/tools/SRLength'; -import SRBidirectionalTool from './tools/tools/SRBidirectional'; -import SREllipticalROITool from './tools/tools/SREllipticalROI'; -import SRArrowAnnotateTool from './tools/tools/SRArrowAnnotate'; - -/** - * @param {object} configuration - */ -export default function init({ configuration = {} }) { - addTool(DICOMSRDisplayTool); - addTool(SRLengthTool); - addTool(SRBidirectionalTool); - addTool(SREllipticalROITool); - addTool(SRArrowAnnotateTool); - - // Modify annotation tools to use dashed lines on SR - const dashedLine = { - lineDash: '4,4', - }; - annotation.config.style.setToolGroupToolStyles('SRToolGroup', { - [SRLengthTool.toolName]: dashedLine, - [SRBidirectionalTool.toolName]: dashedLine, - [SREllipticalROITool.toolName]: dashedLine, - [SRArrowAnnotateTool.toolName]: dashedLine, - global: {}, - }); -} diff --git a/extensions/cornerstone-dicom-sr/src/init.ts b/extensions/cornerstone-dicom-sr/src/init.ts new file mode 100644 index 000000000..ec24b5c48 --- /dev/null +++ b/extensions/cornerstone-dicom-sr/src/init.ts @@ -0,0 +1,49 @@ +import { + addTool, + AngleTool, + annotation, + ArrowAnnotateTool, + BidirectionalTool, + CobbAngleTool, + EllipticalROITool, + LengthTool, + PlanarFreehandROITool, +} from '@cornerstonejs/tools'; +import DICOMSRDisplayTool from './tools/DICOMSRDisplayTool'; +import addToolInstance from './utils/addToolInstance'; +import { Types } from '@ohif/core'; +import toolNames from './tools/toolNames'; + +/** + * @param {object} configuration + */ +export default function init({ + configuration = {}, +}: Types.Extensions.ExtensionParams): void { + addTool(DICOMSRDisplayTool); + addToolInstance(toolNames.SRLength, LengthTool, {}); + addToolInstance(toolNames.SRBidirectional, BidirectionalTool); + addToolInstance(toolNames.SREllipticalROI, EllipticalROITool); + addToolInstance(toolNames.SRArrowAnnotate, ArrowAnnotateTool); + addToolInstance(toolNames.SRAngle, AngleTool); + // TODO - fix the SR display of Cobb Angle, as it joins the two lines + addToolInstance(toolNames.SRCobbAngle, CobbAngleTool); + // TODO - fix the rehydration of Freehand, as it throws an exception + // on a missing polyline. The fix is probably in CS3D + addToolInstance(toolNames.SRPlanarFreehandROI, PlanarFreehandROITool); + + // Modify annotation tools to use dashed lines on SR + const dashedLine = { + lineDash: '4,4', + }; + annotation.config.style.setToolGroupToolStyles('SRToolGroup', { + SRLength: dashedLine, + SRBidirectional: dashedLine, + SREllipticalROI: dashedLine, + SRArrowAnnotate: dashedLine, + SRCobbAngle: dashedLine, + SRAngle: dashedLine, + SRPlanarFreehandROI: dashedLine, + global: {}, + }); +} diff --git a/extensions/cornerstone-dicom-sr/src/tools/toolNames.ts b/extensions/cornerstone-dicom-sr/src/tools/toolNames.ts index 5e714f831..48375f4cb 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/toolNames.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/toolNames.ts @@ -1,15 +1,15 @@ import DICOMSRDisplayTool from './DICOMSRDisplayTool'; -import SRLengthTool from './tools/SRLength'; -import SRBidirectional from './tools/SRBidirectional'; -import SREllipticalROI from './tools/SREllipticalROI'; -import SRArrowAnnotate from './tools/SRArrowAnnotate'; const toolNames = { DICOMSRDisplay: DICOMSRDisplayTool.toolName, - SRLength: SRLengthTool.toolName, - SRBidirectional: SRBidirectional.toolName, - SREllipticalROI: SREllipticalROI.toolName, - SRArrowAnnotate: SRArrowAnnotate.toolName, + SRLength: 'SRLength', + SRBidirectional: 'SRBidirectional', + SREllipticalROI: 'SREllipticalROI', + SRArrowAnnotate: 'SRArrowAnnotate', + SRAngle: 'SRAngle', + SRCobbAngle: 'SRCobbAngle', + SRRectangleROI: 'SRRectangleROI', + SRPlanarFreehandROI: 'SRPlanarFreehandROI', }; export default toolNames; diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts deleted file mode 100644 index 2500a2dc0..000000000 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRArrowAnnotate.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ArrowAnnotateTool } from '@cornerstonejs/tools'; - -/** - * The reason we are extending ArrowAnnotateTool is to create a new tool for SR - * viewport which basically has a different name. This is done since Cornerstone - * has shifted from creating tool instances for each annotation, and we have ArrowAnnotate - * mappers at the measurementService, so if we didn't do this, we would be mapping - * the SR annotation to the measurementService (since there is a ArrowAnnotateTool mapper), - * but with extending and renaming it, there is not mapper for SRArrowAnnotateTool; hence - * no mapping; hence no new measurement, just temporary ones for the SR viewport. - */ -class SRArrowAnnotateTool extends ArrowAnnotateTool { - static toolName = 'SRArrowAnnotate'; -} - -export default SRArrowAnnotateTool; diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts deleted file mode 100644 index 2b121d0d0..000000000 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRBidirectional.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { BidirectionalTool } from '@cornerstonejs/tools'; - -/** - * The reason we are extending BidirectionalTool is to create a new tool for SR - * viewport which basically has a different name. This is done since Cornerstone - * has shifted from creating tool instances for each annotation, and we have Bidirectional - * mappers at the measurementService, so if we didn't do this, we would be mapping - * the SR annotation to the measurementService (since there is a BidirectionalTool mapper), - * but with extending and renaming it, there is not mapper for SRBidirectionalTool; hence - * no mapping; hence no new measurement, just temporary ones for the SR viewport. - */ -class SRBidirectional extends BidirectionalTool { - static toolName = 'SRBidirectional'; -} - -export default SRBidirectional; diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts deleted file mode 100644 index 66d97da94..000000000 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SREllipticalROI.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { EllipticalROITool } from '@cornerstonejs/tools'; - -/** - * The reason we are extending EllipticalROITool is to create a new tool for SR - * viewport which basically has a different name. This is done since Cornerstone - * has shifted from creating tool instances for each annotation, and we have EllipticalROI - * mappers at the measurementService, so if we didn't do this, we would be mapping - * the SR annotation to the measurementService (since there is a EllipticalROITool mapper), - * but with extending and renaming it, there is not mapper for SREllipticalROITool; hence - * no mapping; hence no new measurement, just temporary ones for the SR viewport. - */ -class SREllipticalROI extends EllipticalROITool { - static toolName = 'SREllipticalROI'; -} - -export default SREllipticalROI; diff --git a/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts b/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts deleted file mode 100644 index cc3c44de9..000000000 --- a/extensions/cornerstone-dicom-sr/src/tools/tools/SRLength.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { LengthTool } from '@cornerstonejs/tools'; - -/** - * The reason we are extending LengthTool is to create a new tool for SR - * viewport which basically has a different name. This is done since Cornerstone - * has shifted from creating tool instances for each annotation, and we have Length - * mappers at the measurementService, so if we didn't do this, we would be mapping - * the SR annotation to the measurementService (since there is a LengthTool mapper), - * but with extending and renaming it, there is not mapper for SRLengthTool; hence - * no mapping; hence no new measurement, just temporary ones for the SR viewport. - */ -class SRLengthTool extends LengthTool { - static toolName = 'SRLength'; -} - -export default SRLengthTool; diff --git a/extensions/cornerstone-dicom-sr/src/utils/addToolInstance.ts b/extensions/cornerstone-dicom-sr/src/utils/addToolInstance.ts new file mode 100644 index 000000000..889926d81 --- /dev/null +++ b/extensions/cornerstone-dicom-sr/src/utils/addToolInstance.ts @@ -0,0 +1,12 @@ +import { addTool } from '@cornerstonejs/tools'; + +export default function addToolInstance( + name: string, + toolClass, + configuration? +): void { + class InstanceClass extends toolClass { + static toolName = name; + } + addTool(InstanceClass); +} diff --git a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js index 3474e3b11..41602dd25 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js +++ b/extensions/cornerstone-dicom-sr/src/utils/isRehydratable.js @@ -1,6 +1,8 @@ import { adaptersSR } from '@cornerstonejs/adapters'; -const cornerstoneAdapters = adaptersSR.Cornerstone3D; +const cornerstoneAdapters = + adaptersSR.Cornerstone3D.MeasurementReport + .CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE; const supportedLegacyCornerstoneTags = ['cornerstoneTools@^4.0.0']; const CORNERSTONE_3D_TAG = cornerstoneAdapters.CORNERSTONE_3D_TAG; @@ -37,7 +39,7 @@ export default function isRehydratable(displaySet, mappings) { }); for (let i = 0; i < measurements.length; i++) { - const TrackingIdentifier = measurements[i].TrackingIdentifier; + const { TrackingIdentifier } = measurements[i] || {}; const hydratable = adapters.some(adapter => { let [cornerstoneTag, toolName] = TrackingIdentifier.split(':'); if (supportedLegacyCornerstoneTags.includes(cornerstoneTag)) { @@ -54,7 +56,13 @@ export default function isRehydratable(displaySet, mappings) { if (hydratable) { return true; } + console.log( + 'Measurement is not rehydratable', + TrackingIdentifier, + measurements[i] + ); } + console.log('No measurements found which were rehydratable'); return false; } diff --git a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx index 8c788e5b9..cb13803d7 100644 --- a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx @@ -284,7 +284,7 @@ function OHIFCornerstoneSRViewport(props) { * isHydratable check, the outcome for the isHydrated state here is always FALSE * since we don't do the hydration here. Todo: can't we just set it as false? why * we are changing the state here? isHydrated is always false at this stage, and - * if it is hydrated we don't event use the SR viewport. + * if it is hydrated we don't even use the SR viewport. */ useEffect(() => { if (!srDisplaySet.isLoaded) { diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 0518ba474..7049b4cde 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -30,7 +30,7 @@ "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", "cornerstone-wado-image-loader": "^4.2.1", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", @@ -43,10 +43,10 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "0.3.0", - "@cornerstonejs/core": "0.30.1", - "@cornerstonejs/streaming-image-volume-loader": "^0.11.2", - "@cornerstonejs/tools": "0.39.0", + "@cornerstonejs/adapters": "^0.3.1", + "@cornerstonejs/core": "^0.30.1", + "@cornerstonejs/streaming-image-volume-loader": "^0.8.2", + "@cornerstonejs/tools": "^0.44.0", "@kitware/vtk.js": "26.4.0", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx index a3ebc57c2..5259b267c 100644 --- a/extensions/cornerstone/src/index.tsx +++ b/extensions/cornerstone/src/index.tsx @@ -25,6 +25,7 @@ import { registerColormap } from './utils/colormap/transferFunctionHelpers'; import { id } from './id'; import * as csWADOImageLoader from './initWADOImageLoader.js'; +import { measurementMappingUtils } from './utils/measurementServiceMappings'; const Component = React.lazy(() => { return import( @@ -62,10 +63,9 @@ const cornerstoneExtension: Types.Extensions.Extension = { }, /** + * Register the Cornerstone 3D services and set them up for use. * - * - * @param {object} [configuration={}] - * @param {object|array} [configuration.csToolsConfig] - Passed directly to `initCornerstoneTools` + * @param configuration.csToolsConfig - Passed directly to `initCornerstoneTools` */ async preRegistration({ servicesManager, @@ -151,3 +151,4 @@ const cornerstoneExtension: Types.Extensions.Extension = { }; export default cornerstoneExtension; +export { measurementMappingUtils }; diff --git a/extensions/cornerstone/src/initCornerstoneTools.js b/extensions/cornerstone/src/initCornerstoneTools.js index 635b7b77e..80dc0678b 100644 --- a/extensions/cornerstone/src/initCornerstoneTools.js +++ b/extensions/cornerstone/src/initCornerstoneTools.js @@ -14,6 +14,8 @@ import { DragProbeTool, ProbeTool, AngleTool, + CobbAngleTool, + PlanarFreehandROITool, MagnifyTool, CrosshairsTool, SegmentationDisplayTool, @@ -40,6 +42,8 @@ export default function initCornerstoneTools(configuration = {}) { addTool(ArrowAnnotateTool); addTool(DragProbeTool); addTool(AngleTool); + addTool(CobbAngleTool); + addTool(PlanarFreehandROITool); addTool(MagnifyTool); addTool(CrosshairsTool); addTool(SegmentationDisplayTool); @@ -76,6 +80,8 @@ const toolNames = { EllipticalROI: EllipticalROITool.toolName, Bidirectional: BidirectionalTool.toolName, Angle: AngleTool.toolName, + CobbAngle: CobbAngleTool.toolName, + PlanarFreehandROI: PlanarFreehandROITool.toolName, Magnify: MagnifyTool.toolName, Crosshairs: CrosshairsTool.toolName, SegmentationDisplay: SegmentationDisplayTool.toolName, diff --git a/extensions/cornerstone/src/initMeasurementService.js b/extensions/cornerstone/src/initMeasurementService.js index 8a0d492bc..9ce6fc5c7 100644 --- a/extensions/cornerstone/src/initMeasurementService.js +++ b/extensions/cornerstone/src/initMeasurementService.js @@ -1,6 +1,6 @@ import { eventTarget } from '@cornerstonejs/core'; import { Enums, annotation } from '@cornerstonejs/tools'; -import { DicomMetadataStore } from '@ohif/core'; +import { DicomMetadataStore, MeasurementService } from '@ohif/core'; import measurementServiceMappingsFactory from './utils/measurementServiceMappings/measurementServiceMappingsFactory'; import getSOPInstanceAttributes from './utils/measurementServiceMappings/utils/getSOPInstanceAttributes'; @@ -23,6 +23,10 @@ const initMeasurementService = ( Bidirectional, EllipticalROI, ArrowAnnotate, + Angle, + CobbAngle, + RectangleROI, + PlanarFreehandROI, } = measurementServiceMappingsFactory( measurementService, displaySetService, @@ -66,6 +70,38 @@ const initMeasurementService = ( ArrowAnnotate.toMeasurement ); + measurementService.addMapping( + csTools3DVer1MeasurementSource, + 'CobbAngle', + CobbAngle.matchingCriteria, + CobbAngle.toAnnotation, + CobbAngle.toMeasurement + ); + + measurementService.addMapping( + csTools3DVer1MeasurementSource, + 'Angle', + Angle.matchingCriteria, + Angle.toAnnotation, + Angle.toMeasurement + ); + + measurementService.addMapping( + csTools3DVer1MeasurementSource, + 'RectangleROI', + RectangleROI.matchingCriteria, + RectangleROI.toAnnotation, + RectangleROI.toMeasurement + ); + + measurementService.addMapping( + csTools3DVer1MeasurementSource, + 'PlanarFreehandROI', + PlanarFreehandROI.matchingCriteria, + PlanarFreehandROI.toAnnotation, + PlanarFreehandROI.toMeasurement + ); + return csTools3DVer1MeasurementSource; }; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/Angle.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/Angle.ts new file mode 100644 index 000000000..dfbe9aa62 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/Angle.ts @@ -0,0 +1,210 @@ +import SUPPORTED_TOOLS from './constants/supportedTools'; +import getSOPInstanceAttributes from './utils/getSOPInstanceAttributes'; +import { utils } from '@ohif/core'; + +const Angle = { + toAnnotation: measurement => { }, + + /** + * Maps cornerstone annotation event data to measurement service format. + * + * @param {Object} cornerstone Cornerstone event data + * @return {Measurement} Measurement instance + */ + toMeasurement: ( + csToolsEventDetail, + displaySetService, + CornerstoneViewportService, + getValueTypeFromToolType + ) => { + const { annotation, viewportId } = csToolsEventDetail; + const { metadata, data, annotationUID } = annotation; + + if (!metadata || !data) { + console.warn('Length tool: Missing metadata or data'); + return null; + } + + const { toolName, referencedImageId, FrameOfReferenceUID } = metadata; + const validToolType = SUPPORTED_TOOLS.includes(toolName); + + if (!validToolType) { + throw new Error('Tool not supported'); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + StudyInstanceUID, + } = getSOPInstanceAttributes( + referencedImageId, + CornerstoneViewportService, + viewportId + ); + + let displaySet; + + if (SOPInstanceUID) { + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID + ); + } else { + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + } + + const { points } = data.handles; + + const mappedAnnotations = getMappedAnnotations( + annotation, + displaySetService + ); + + const displayText = getDisplayText(mappedAnnotations, displaySet); + const getReport = () => + _getReport(mappedAnnotations, points, FrameOfReferenceUID); + + return { + uid: annotationUID, + SOPInstanceUID, + FrameOfReferenceUID, + points, + metadata, + referenceSeriesUID: SeriesInstanceUID, + referenceStudyUID: StudyInstanceUID, + frameNumber: mappedAnnotations?.[0]?.frameNumber || 1, + toolName: metadata.toolName, + displaySetInstanceUID: displaySet.displaySetInstanceUID, + label: data.label, + displayText: displayText, + data: data.cachedStats, + type: getValueTypeFromToolType(toolName), + getReport, + }; + }, +}; + +function getMappedAnnotations(annotation, DisplaySetService) { + const { metadata, data } = annotation; + const { cachedStats } = data; + const { referencedImageId } = metadata; + const targets = Object.keys(cachedStats); + + if (!targets.length) { + return; + } + + const annotations = []; + Object.keys(cachedStats).forEach(targetId => { + const targetStats = cachedStats[targetId]; + + if (!referencedImageId) { + throw new Error( + 'Non-acquisition plane measurement mapping not supported' + ); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + frameNumber, + } = getSOPInstanceAttributes(referencedImageId); + + const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID, + frameNumber + ); + + const { SeriesNumber } = displaySet; + const { angle } = targetStats; + const unit = '\u00B0'; + + annotations.push({ + SeriesInstanceUID, + SOPInstanceUID, + SeriesNumber, + frameNumber, + unit, + angle, + }); + }); + + return annotations; +} + +/* +This function is used to convert the measurement data to a format that is +suitable for the report generation (e.g. for the csv report). The report +returns a list of columns and corresponding values. +*/ +function _getReport(mappedAnnotations, points, FrameOfReferenceUID) { + const columns = []; + const values = []; + + // Add Type + columns.push('AnnotationType'); + values.push('Cornerstone:Angle'); + + mappedAnnotations.forEach(annotation => { + const { angle, unit } = annotation; + columns.push(`Angle (${unit})`); + values.push(angle); + }); + + if (FrameOfReferenceUID) { + columns.push('FrameOfReferenceUID'); + values.push(FrameOfReferenceUID); + } + + if (points) { + columns.push('points'); + // points has the form of [[x1, y1, z1], [x2, y2, z2], ...] + // convert it to string of [[x1 y1 z1];[x2 y2 z2];...] + // so that it can be used in the csv report + values.push(points.map(p => p.join(' ')).join(';')); + } + + return { + columns, + values, + }; +} + +function getDisplayText(mappedAnnotations, displaySet) { + if (!mappedAnnotations || !mappedAnnotations.length) { + return ''; + } + + const displayText = []; + + // Area is the same for all series + const { + angle, + unit, + SeriesNumber, + SOPInstanceUID, + frameNumber, + } = mappedAnnotations[0]; + + const instance = displaySet.images.find( + image => image.SOPInstanceUID === SOPInstanceUID + ); + + let InstanceNumber; + if (instance) { + InstanceNumber = instance.InstanceNumber; + } + + const instanceText = InstanceNumber ? ` I: ${InstanceNumber}` : ''; + const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : ''; + if (angle === undefined) return displayText; + const roundedAngle = utils.roundNumber(angle, 2); + displayText.push( + `${roundedAngle} ${unit} (S: ${SeriesNumber}${instanceText}${frameText})` + ); + + return displayText; +} + +export default Angle; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/CobbAngle.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/CobbAngle.ts new file mode 100644 index 000000000..53dace2b4 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/CobbAngle.ts @@ -0,0 +1,210 @@ +import SUPPORTED_TOOLS from './constants/supportedTools'; +import getSOPInstanceAttributes from './utils/getSOPInstanceAttributes'; +import { utils } from '@ohif/core'; + +const CobbAngle = { + toAnnotation: measurement => { }, + + /** + * Maps cornerstone annotation event data to measurement service format. + * + * @param {Object} cornerstone Cornerstone event data + * @return {Measurement} Measurement instance + */ + toMeasurement: ( + csToolsEventDetail, + displaySetService, + CornerstoneViewportService, + getValueTypeFromToolType + ) => { + const { annotation, viewportId } = csToolsEventDetail; + const { metadata, data, annotationUID } = annotation; + + if (!metadata || !data) { + console.warn('Cobb Angle tool: Missing metadata or data'); + return null; + } + + const { toolName, referencedImageId, FrameOfReferenceUID } = metadata; + const validToolType = SUPPORTED_TOOLS.includes(toolName); + + if (!validToolType) { + throw new Error('Tool not supported'); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + StudyInstanceUID, + } = getSOPInstanceAttributes( + referencedImageId, + CornerstoneViewportService, + viewportId + ); + + let displaySet; + + if (SOPInstanceUID) { + displaySet = displaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID + ); + } else { + displaySet = displaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + } + + const { points } = data.handles; + + const mappedAnnotations = getMappedAnnotations( + annotation, + displaySetService + ); + + const displayText = getDisplayText(mappedAnnotations, displaySet); + const getReport = () => + _getReport(mappedAnnotations, points, FrameOfReferenceUID); + + return { + uid: annotationUID, + SOPInstanceUID, + FrameOfReferenceUID, + points, + metadata, + referenceSeriesUID: SeriesInstanceUID, + referenceStudyUID: StudyInstanceUID, + frameNumber: mappedAnnotations?.[0]?.frameNumber || 1, + toolName: metadata.toolName, + displaySetInstanceUID: displaySet.displaySetInstanceUID, + label: data.label, + displayText: displayText, + data: data.cachedStats, + type: getValueTypeFromToolType(toolName), + getReport, + }; + }, +}; + +function getMappedAnnotations(annotation, DisplaySetService) { + const { metadata, data } = annotation; + const { cachedStats } = data; + const { referencedImageId } = metadata; + const targets = Object.keys(cachedStats); + + if (!targets.length) { + return; + } + + const annotations = []; + Object.keys(cachedStats).forEach(targetId => { + const targetStats = cachedStats[targetId]; + + if (!referencedImageId) { + throw new Error( + 'Non-acquisition plane measurement mapping not supported' + ); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + frameNumber, + } = getSOPInstanceAttributes(referencedImageId); + + const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID, + frameNumber + ); + + const { SeriesNumber } = displaySet; + const { angle } = targetStats; + const unit = '\u00B0'; + + annotations.push({ + SeriesInstanceUID, + SOPInstanceUID, + SeriesNumber, + frameNumber, + unit, + angle, + }); + }); + + return annotations; +} + +/* +This function is used to convert the measurement data to a format that is +suitable for the report generation (e.g. for the csv report). The report +returns a list of columns and corresponding values. +*/ +function _getReport(mappedAnnotations, points, FrameOfReferenceUID) { + const columns = []; + const values = []; + + // Add Type + columns.push('AnnotationType'); + values.push('Cornerstone:CobbAngle'); + + mappedAnnotations.forEach(annotation => { + const { angle, unit } = annotation; + columns.push(`Angle (${unit})`); + values.push(angle); + }); + + if (FrameOfReferenceUID) { + columns.push('FrameOfReferenceUID'); + values.push(FrameOfReferenceUID); + } + + if (points) { + columns.push('points'); + // points has the form of [[x1, y1, z1], [x2, y2, z2], ...] + // convert it to string of [[x1 y1 z1];[x2 y2 z2];...] + // so that it can be used in the csv report + values.push(points.map(p => p.join(' ')).join(';')); + } + + return { + columns, + values, + }; +} + +function getDisplayText(mappedAnnotations, displaySet) { + if (!mappedAnnotations || !mappedAnnotations.length) { + return ''; + } + + const displayText = []; + + // Area is the same for all series + const { + angle, + unit, + SeriesNumber, + SOPInstanceUID, + frameNumber, + } = mappedAnnotations[0]; + + const instance = displaySet.images.find( + image => image.SOPInstanceUID === SOPInstanceUID + ); + + let InstanceNumber; + if (instance) { + InstanceNumber = instance.InstanceNumber; + } + + const instanceText = InstanceNumber ? ` I: ${InstanceNumber}` : ''; + const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : ''; + if (angle === undefined) return displayText; + const roundedAngle = utils.roundNumber(angle, 2); + displayText.push( + `${roundedAngle} ${unit} (S: ${SeriesNumber}${instanceText}${frameText})` + ); + + return displayText; +} + +export default CobbAngle; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/PlanarFreehandROI.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/PlanarFreehandROI.ts new file mode 100644 index 000000000..71ded00c1 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/PlanarFreehandROI.ts @@ -0,0 +1,148 @@ +import SUPPORTED_TOOLS from './constants/supportedTools'; +import getSOPInstanceAttributes from './utils/getSOPInstanceAttributes'; + +const PlanarFreehandROI = { + toAnnotation: measurement => { }, + + /** + * Maps cornerstone annotation event data to measurement service format. + * + * @param {Object} cornerstone Cornerstone event data + * @return {Measurement} Measurement instance + */ + toMeasurement: ( + csToolsEventDetail, + DisplaySetService, + CornerstoneViewportService, + getValueTypeFromToolType + ) => { + const { annotation, viewportId } = csToolsEventDetail; + const { metadata, data, annotationUID } = annotation; + + if (!metadata || !data) { + console.warn('PlanarFreehandROI tool: Missing metadata or data'); + return null; + } + + const { toolName, referencedImageId, FrameOfReferenceUID } = metadata; + const validToolType = SUPPORTED_TOOLS.includes(toolName); + + if (!validToolType) { + throw new Error('Tool not supported'); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + StudyInstanceUID, + } = getSOPInstanceAttributes( + referencedImageId, + CornerstoneViewportService, + viewportId + ); + + let displaySet; + + if (SOPInstanceUID) { + displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID + ); + } else { + displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + } + + const { points } = data.handles; + + const mappedAnnotations = getMappedAnnotations( + annotation, + DisplaySetService + ); + + const displayText = getDisplayText(mappedAnnotations); + const getReport = () => + _getReport(mappedAnnotations, points, FrameOfReferenceUID); + + return { + uid: annotationUID, + SOPInstanceUID, + FrameOfReferenceUID, + points, + metadata, + referenceSeriesUID: SeriesInstanceUID, + referenceStudyUID: StudyInstanceUID, + toolName: metadata.toolName, + displaySetInstanceUID: displaySet.displaySetInstanceUID, + label: data.label, + displayText: displayText, + data: { ...data, ...data.cachedStats }, + type: getValueTypeFromToolType(toolName), + getReport, + }; + }, +}; + +/** + * It maps an imaging library annotation to a list of simplified annotation properties. + * + * @param {Object} annotationData + * @param {Object} DisplaySetService + * @returns + */ +function getMappedAnnotations(annotationData, DisplaySetService) { + const { metadata, data } = annotationData; + const { label } = data; + const { referencedImageId } = metadata; + + const annotations = []; + + const { + SOPInstanceUID: _SOPInstanceUID, + SeriesInstanceUID: _SeriesInstanceUID, + } = getSOPInstanceAttributes(referencedImageId) || {}; + + if (!_SOPInstanceUID || !_SeriesInstanceUID) { + return annotations; + } + + const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + _SOPInstanceUID, + _SeriesInstanceUID + ); + + const { SeriesNumber, SeriesInstanceUID } = displaySet; + + annotations.push({ + SeriesInstanceUID, + SeriesNumber, + label, + data, + }); + + return annotations; +} + +/** + * TBD + * This function is used to convert the measurement data to a format that is suitable for the report generation (e.g. for the csv report). + * The report returns a list of columns and corresponding values. + * @param {*} mappedAnnotations + * @param {*} points + * @param {*} FrameOfReferenceUID + * @returns Object representing the report's content for this tool. + */ +function _getReport(mappedAnnotations, points, FrameOfReferenceUID) { + const columns = []; + const values = []; + + return { + columns, + values, + }; +} + +function getDisplayText(mappedAnnotations) { + return ''; +} + +export default PlanarFreehandROI; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/RectangleROI.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/RectangleROI.ts new file mode 100644 index 000000000..7560dc137 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/RectangleROI.ts @@ -0,0 +1,228 @@ +import SUPPORTED_TOOLS from './constants/supportedTools'; +import getSOPInstanceAttributes from './utils/getSOPInstanceAttributes'; +import getModalityUnit from './utils/getModalityUnit'; +import { utils } from '@ohif/core'; + +const RectangleROI = { + toAnnotation: measurement => { }, + toMeasurement: ( + csToolsEventDetail, + DisplaySetService, + CornerstoneViewportService, + getValueTypeFromToolType + ) => { + const { annotation, viewportId } = csToolsEventDetail; + const { metadata, data, annotationUID } = annotation; + + if (!metadata || !data) { + console.warn('Rectangle ROI tool: Missing metadata or data'); + return null; + } + + const { toolName, referencedImageId, FrameOfReferenceUID } = metadata; + const validToolType = SUPPORTED_TOOLS.includes(toolName); + + if (!validToolType) { + throw new Error('Tool not supported'); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + StudyInstanceUID, + } = getSOPInstanceAttributes( + referencedImageId, + CornerstoneViewportService, + viewportId + ); + + let displaySet; + + if (SOPInstanceUID) { + displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID + ); + } else { + displaySet = DisplaySetService.getDisplaySetsForSeries(SeriesInstanceUID); + } + + const { points } = data.handles; + + const mappedAnnotations = getMappedAnnotations( + annotation, + DisplaySetService + ); + + const displayText = getDisplayText(mappedAnnotations, displaySet); + const getReport = () => + _getReport(mappedAnnotations, points, FrameOfReferenceUID); + + return { + uid: annotationUID, + SOPInstanceUID, + FrameOfReferenceUID, + points, + metadata, + referenceSeriesUID: SeriesInstanceUID, + referenceStudyUID: StudyInstanceUID, + frameNumber: mappedAnnotations[0]?.frameNumber || 1, + toolName: metadata.toolName, + displaySetInstanceUID: displaySet.displaySetInstanceUID, + label: data.label, + displayText: displayText, + data: data.cachedStats, + type: getValueTypeFromToolType(toolName), + getReport, + }; + }, +}; + +function getMappedAnnotations(annotation, DisplaySetService) { + const { metadata, data } = annotation; + const { cachedStats } = data; + const { referencedImageId } = metadata; + const targets = Object.keys(cachedStats); + + if (!targets.length) { + return []; + } + + const annotations = []; + Object.keys(cachedStats).forEach(targetId => { + const targetStats = cachedStats[targetId]; + + if (!referencedImageId) { + // Todo: Non-acquisition plane measurement mapping not supported yet + throw new Error( + 'Non-acquisition plane measurement mapping not supported' + ); + } + + const { + SOPInstanceUID, + SeriesInstanceUID, + frameNumber, + } = getSOPInstanceAttributes(referencedImageId); + + const displaySet = DisplaySetService.getDisplaySetForSOPInstanceUID( + SOPInstanceUID, + SeriesInstanceUID, + frameNumber + ); + + const { SeriesNumber } = displaySet; + const { mean, stdDev, max, area, Modality } = targetStats; + const unit = getModalityUnit(Modality); + + annotations.push({ + SeriesInstanceUID, + SOPInstanceUID, + SeriesNumber, + frameNumber, + Modality, + unit, + mean, + stdDev, + max, + area, + }); + }); + + return annotations; +} + +/* +This function is used to convert the measurement data to a format that is +suitable for the report generation (e.g. for the csv report). The report +returns a list of columns and corresponding values. +*/ +function _getReport(mappedAnnotations, points, FrameOfReferenceUID) { + const columns = []; + const values = []; + + // Add Type + columns.push('AnnotationType'); + values.push('Cornerstone:EllipticalROI'); + + mappedAnnotations.forEach(annotation => { + const { mean, stdDev, max, area, unit } = annotation; + + if (!mean || !unit || !max || !area) { + return; + } + + columns.push( + `max (${unit})`, + `mean (${unit})`, + `std (${unit})`, + `area (mm2)` + ); + values.push(max, mean, stdDev, area); + }); + + if (FrameOfReferenceUID) { + columns.push('FrameOfReferenceUID'); + values.push(FrameOfReferenceUID); + } + + if (points) { + columns.push('points'); + // points has the form of [[x1, y1, z1], [x2, y2, z2], ...] + // convert it to string of [[x1 y1 z1];[x2 y2 z2];...] + // so that it can be used in the csv report + values.push(points.map(p => p.join(' ')).join(';')); + } + + return { + columns, + values, + }; +} + +function getDisplayText(mappedAnnotations, displaySet) { + if (!mappedAnnotations || !mappedAnnotations.length) { + return ''; + } + + const displayText = []; + + // Area is the same for all series + const { area, SOPInstanceUID, frameNumber } = mappedAnnotations[0]; + + const instance = displaySet.images.find( + image => image.SOPInstanceUID === SOPInstanceUID + ); + + let InstanceNumber; + if (instance) { + InstanceNumber = instance.InstanceNumber; + } + + const instanceText = InstanceNumber ? ` I: ${InstanceNumber}` : ''; + const frameText = displaySet.isMultiFrame ? ` F: ${frameNumber}` : ''; + + // Area sometimes becomes undefined if `preventHandleOutsideImage` is off. + const roundedArea = utils.roundNumber(area || 0, 2); + displayText.push(`${roundedArea} mm2`); + + // Todo: we need a better UI for displaying all these information + mappedAnnotations.forEach(mappedAnnotation => { + const { unit, max, SeriesNumber } = mappedAnnotation; + + let maxStr = ''; + if (max) { + const roundedMax = utils.roundNumber(max, 2); + maxStr = `Max: ${roundedMax} ${unit} `; + } + + const str = `${maxStr}(S:${SeriesNumber}${instanceText}${frameText})`; + if (!displayText.includes(str)) { + displayText.push(str); + } + }); + + return displayText; +} + +export default RectangleROI; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/constants/supportedTools.js b/extensions/cornerstone/src/utils/measurementServiceMappings/constants/supportedTools.js index ed45a00c9..00be9ae14 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/constants/supportedTools.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/constants/supportedTools.js @@ -1 +1,11 @@ -export default ['Length', 'EllipticalROI', 'Bidirectional', 'ArrowAnnotate']; +export default [ + 'Length', + 'EllipticalROI', + 'Bidirectional', + 'ArrowAnnotate', + 'Angle', + 'CobbAngle', + 'Probe', + 'RectangleROI', + 'PlanarFreehandROI', +]; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/index.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/index.ts new file mode 100644 index 000000000..795c744b8 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/index.ts @@ -0,0 +1,3 @@ +import * as measurementMappingUtils from './utils'; + +export { measurementMappingUtils }; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js b/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.ts similarity index 52% rename from extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js rename to extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.ts index 1e2f91daf..4d5c77f17 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.js +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/measurementServiceMappingsFactory.ts @@ -1,19 +1,24 @@ +import { MeasurementService } from '@ohif/core'; import Length from './Length'; import Bidirectional from './Bidirectional'; import EllipticalROI from './EllipticalROI'; import ArrowAnnotate from './ArrowAnnotate'; +import CobbAngle from './CobbAngle'; +import Angle from './Angle'; +import PlanarFreehandROI from './PlanarFreehandROI'; +import RectangleROI from './RectangleROI'; const measurementServiceMappingsFactory = ( - measurementService, + measurementService: MeasurementService, displaySetService, cornerstoneViewportService ) => { /** * Maps measurement service format object to cornerstone annotation object. * - * @param {Measurement} measurement The measurement instance - * @param {string} definition The source definition - * @return {Object} Cornerstone annotation data + * @param measurement The measurement instance + * @param definition The source definition + * @return Cornerstone annotation data */ const _getValueTypeFromToolType = toolType => { @@ -23,7 +28,8 @@ const measurementServiceMappingsFactory = ( RECTANGLE, BIDIRECTIONAL, POINT, - } = measurementService.VALUE_TYPES; + ANGLE, + } = MeasurementService.VALUE_TYPES; // TODO -> I get why this was attempted, but its not nearly flexible enough. // A single measurement may have an ellipse + a bidirectional measurement, for instances. @@ -32,14 +38,17 @@ const measurementServiceMappingsFactory = ( Length: POLYLINE, EllipticalROI: ELLIPSE, RectangleROI: RECTANGLE, + PlanarFreehandROI: POLYLINE, Bidirectional: BIDIRECTIONAL, ArrowAnnotate: POINT, + CobbAngle: ANGLE, + Angle: ANGLE, }; return TOOL_TYPE_TO_VALUE_TYPE[toolType]; }; - return { + const factories = { Length: { toAnnotation: Length.toAnnotation, toMeasurement: csToolsAnnotation => @@ -51,7 +60,7 @@ const measurementServiceMappingsFactory = ( ), matchingCriteria: [ { - valueType: measurementService.VALUE_TYPES.POLYLINE, + valueType: MeasurementService.VALUE_TYPES.POLYLINE, points: 2, }, ], @@ -69,15 +78,16 @@ const measurementServiceMappingsFactory = ( // TODO -> We should eventually do something like shortAxis + longAxis, // But its still a little unclear how these automatic interpretations will work. { - valueType: measurementService.VALUE_TYPES.POLYLINE, + valueType: MeasurementService.VALUE_TYPES.POLYLINE, points: 2, }, { - valueType: measurementService.VALUE_TYPES.POLYLINE, + valueType: MeasurementService.VALUE_TYPES.POLYLINE, points: 2, }, ], }, + EllipticalROI: { toAnnotation: EllipticalROI.toAnnotation, toMeasurement: csToolsAnnotation => @@ -89,10 +99,43 @@ const measurementServiceMappingsFactory = ( ), matchingCriteria: [ { - valueType: measurementService.VALUE_TYPES.ELLIPSE, + valueType: MeasurementService.VALUE_TYPES.ELLIPSE, }, ], }, + + RectangleROI: { + toAnnotation: RectangleROI.toAnnotation, + toMeasurement: csToolsAnnotation => + RectangleROI.toMeasurement( + csToolsAnnotation, + displaySetService, + cornerstoneViewportService, + _getValueTypeFromToolType + ), + matchingCriteria: [ + { + valueType: MeasurementService.VALUE_TYPES.POLYLINE, + }, + ], + }, + + PlanarFreehandROI: { + toAnnotation: PlanarFreehandROI.toAnnotation, + toMeasurement: csToolsAnnotation => + PlanarFreehandROI.toMeasurement( + csToolsAnnotation, + displaySetService, + cornerstoneViewportService, + _getValueTypeFromToolType + ), + matchingCriteria: [ + { + valueType: MeasurementService.VALUE_TYPES.POLYLINE, + }, + ], + }, + ArrowAnnotate: { toAnnotation: ArrowAnnotate.toAnnotation, toMeasurement: csToolsAnnotation => @@ -104,12 +147,46 @@ const measurementServiceMappingsFactory = ( ), matchingCriteria: [ { - valueType: measurementService.VALUE_TYPES.POINT, + valueType: MeasurementService.VALUE_TYPES.POINT, points: 1, }, ], }, + + CobbAngle: { + toAnnotation: CobbAngle.toAnnotation, + toMeasurement: csToolsAnnotation => + CobbAngle.toMeasurement( + csToolsAnnotation, + displaySetService, + cornerstoneViewportService, + _getValueTypeFromToolType + ), + matchingCriteria: [ + { + valueType: MeasurementService.VALUE_TYPES.ANGLE, + }, + ], + }, + + Angle: { + toAnnotation: Angle.toAnnotation, + toMeasurement: csToolsAnnotation => + Angle.toMeasurement( + csToolsAnnotation, + displaySetService, + cornerstoneViewportService, + _getValueTypeFromToolType + ), + matchingCriteria: [ + { + valueType: MeasurementService.VALUE_TYPES.ANGLE, + }, + ], + }, }; + + return factories; }; export default measurementServiceMappingsFactory; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/index.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/index.ts new file mode 100644 index 000000000..c31392196 --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/index.ts @@ -0,0 +1,17 @@ +import getHandlesFromPoints from './getHandlesFromPoints'; +import { + isAnnotationSelected, + setAnnotationSelected, + getFirstAnnotationSelected, +} from './selection'; +import getModalityUnit from './getModalityUnit'; +import getSOPInstanceAttributes from './getSOPInstanceAttributes'; + +export { + getModalityUnit, + getHandlesFromPoints, + getSOPInstanceAttributes, + isAnnotationSelected, + setAnnotationSelected, + getFirstAnnotationSelected, +}; diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts new file mode 100644 index 000000000..c70bf832e --- /dev/null +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts @@ -0,0 +1,44 @@ +import { annotation as cs3dToolAnnotationUtils } from '@cornerstonejs/tools'; + +/** + * Check whether an annotation from imaging library is selected or not. + * @param {string} annotationUID uid of imaging library annotation + * @returns boolean + */ +function isAnnotationSelected(annotationUID: string): boolean { + return cs3dToolAnnotationUtils.selection.isAnnotationSelected(annotationUID); +} + +/** + * Change an annotation from imaging library's selected property. + * @param annotationUID - uid of imaging library annotation + * @param selected - new value for selected + */ +function setAnnotationSelected(annotationUID: string, selected: boolean): void { + const isCurrentSelected = isAnnotationSelected(annotationUID); + // branch cut, avoid invoking imaging library unnecessarily. + if (isCurrentSelected !== selected) { + cs3dToolAnnotationUtils.selection.setAnnotationSelected( + annotationUID, + selected + ); + } +} + +function getFirstAnnotationSelected(element) { + const [selectedAnnotationUID] = + cs3dToolAnnotationUtils.selection.getAnnotationsSelected() || []; + + if (selectedAnnotationUID) { + return cs3dToolAnnotationUtils.state.getAnnotation( + selectedAnnotationUID, + element + ); + } +} + +export { + isAnnotationSelected, + setAnnotationSelected, + getFirstAnnotationSelected, +}; diff --git a/extensions/default/package.json b/extensions/default/package.json index 8c15e721a..80332ef34 100644 --- a/extensions/default/package.json +++ b/extensions/default/package.json @@ -32,8 +32,8 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/i18n": "^1.0.0", - "dcmjs": "0.29.4", - "dicomweb-client": "^0.6.0", + "dcmjs": "^0.29.4", + "dicomweb-client": "^0.8.4", "prop-types": "^15.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/extensions/default/src/Panels/PanelMeasurementTable.tsx b/extensions/default/src/Panels/PanelMeasurementTable.tsx index be95aa0b2..c2314bf08 100644 --- a/extensions/default/src/Panels/PanelMeasurementTable.tsx +++ b/extensions/default/src/Panels/PanelMeasurementTable.tsx @@ -1,15 +1,15 @@ import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; +import { utils, ServicesManager } from '@ohif/core'; import { MeasurementTable, Dialog, Input, useViewportGrid } from '@ohif/ui'; import ActionButtons from './ActionButtons'; import debounce from 'lodash.debounce'; -import { utils } from '@ohif/core'; import createReportDialogPrompt, { CREATE_REPORT_DIALOG_RESPONSE, } from './createReportDialogPrompt'; import createReportAsync from '../Actions/createReportAsync'; -import getNextSRSeriesNumber from '../utils/getNextSRSeriesNumber'; +import findSRWithSameSeriesDescription from '../utils/findSRWithSameSeriesDescription'; const { downloadCSVReport } = utils; @@ -17,7 +17,7 @@ export default function PanelMeasurementTable({ servicesManager, commandsManager, extensionManager, -}) { +}): React.FunctionComponent { const [viewportGrid, viewportGridService] = useViewportGrid(); const { activeViewportIndex, viewports } = viewportGrid; const { @@ -25,7 +25,7 @@ export default function PanelMeasurementTable({ uiDialogService, uiNotificationService, displaySetService, - } = servicesManager.services; + } = (servicesManager as ServicesManager).services; const [displayMeasurements, setDisplayMeasurements] = useState([]); useEffect(() => { @@ -72,7 +72,7 @@ export default function PanelMeasurementTable({ measurementService.clearMeasurements(); } - async function createReport() { + async function createReport(): Promise { // filter measurements that are added to the active study const activeViewport = viewports[activeViewportIndex]; const measurements = measurementService.getMeasurements(); @@ -109,17 +109,19 @@ export default function PanelMeasurementTable({ ? 'Research Derived Series' // default : promptResult.value; // provided value - const SeriesNumber = getNextSRSeriesNumber(displaySetService); + // Re-use an existing series having the same series description to avoid + // creating too many series instances. + const options = findSRWithSameSeriesDescription( + SeriesDescription, + displaySetService + ); - const displaySetInstanceUIDs = await createReportAsync( + return createReportAsync( servicesManager, commandsManager, dataSource, trackedMeasurements, - { - SeriesDescription, - SeriesNumber, - } + options ); } } @@ -233,16 +235,7 @@ export default function PanelMeasurementTable({ } PanelMeasurementTable.propTypes = { - servicesManager: PropTypes.shape({ - services: PropTypes.shape({ - measurementService: PropTypes.shape({ - getMeasurements: PropTypes.func.isRequired, - subscribe: PropTypes.func.isRequired, - EVENTS: PropTypes.object.isRequired, - VALUE_TYPES: PropTypes.object.isRequired, - }).isRequired, - }).isRequired, - }).isRequired, + servicesManager: PropTypes.instanceOf(ServicesManager).isRequired, }; function _getMappedMeasurements(measurementService) { diff --git a/extensions/default/src/utils/findSRWithSameSeriesDescription.ts b/extensions/default/src/utils/findSRWithSameSeriesDescription.ts new file mode 100644 index 000000000..476343fb5 --- /dev/null +++ b/extensions/default/src/utils/findSRWithSameSeriesDescription.ts @@ -0,0 +1,49 @@ +import { DisplaySetService, Types } from '@ohif/core'; + +import getNextSRSeriesNumber from './getNextSRSeriesNumber'; + +/** + * Find an SR having the same series description. + * This is used by the store service in order to store DICOM SR's having the + * same Series Description into a single series under consecutive instance numbers + * That way, they are all organized as a set and could have tools to view + * "prior" SR instances. + * + * @param SeriesDescription - is the description to look for + * @param displaySetService - the display sets to search for DICOM SR in + * @returns SeriesMetadata from a DICOM SR having the same series description + */ +export default function findSRWithSameSeriesDescription( + SeriesDescription: string, + displaySetService: DisplaySetService +): Types.SeriesMetadata { + const activeDisplaySets = displaySetService.getActiveDisplaySets(); + const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR'); + const sameSeries = srDisplaySets.find( + ds => ds.SeriesDescription === SeriesDescription + ); + if (sameSeries) { + console.log('Storing to same series', sameSeries); + const { instance } = sameSeries; + const { + SeriesInstanceUID, + SeriesDescription, + SeriesDate, + SeriesTime, + SeriesNumber, + Modality, + } = instance; + return { + SeriesInstanceUID, + SeriesDescription, + SeriesDate, + SeriesTime, + SeriesNumber, + Modality, + InstanceNumber: sameSeries.others.length + 1, + }; + } + + const SeriesNumber = getNextSRSeriesNumber(displaySetService); + return { SeriesDescription, SeriesNumber }; +} diff --git a/extensions/dicom-pdf/package.json b/extensions/dicom-pdf/package.json index 50aa40246..85684879c 100644 --- a/extensions/dicom-pdf/package.json +++ b/extensions/dicom-pdf/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/dicom-video/package.json b/extensions/dicom-video/package.json index a03edeeeb..83f4e060b 100644 --- a/extensions/dicom-video/package.json +++ b/extensions/dicom-video/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 89ef83c8a..86f91e615 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,10 +32,10 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.3.2", - "@cornerstonejs/core": "0.30.1", - "@cornerstonejs/tools": "0.39.0", + "@cornerstonejs/core": "^0.30.1", + "@cornerstonejs/tools": "^0.44.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "prop-types": "^15.6.2", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/extensions/tmtv/package.json b/extensions/tmtv/package.json index f5b5a0255..9210d7cfa 100644 --- a/extensions/tmtv/package.json +++ b/extensions/tmtv/package.json @@ -30,7 +30,7 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "@ohif/ui": "^2.0.0", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "dicom-parser": "^1.8.9", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/modes/longitudinal/src/initToolGroups.js b/modes/longitudinal/src/initToolGroups.js index 105b1a2f8..a5af64e77 100644 --- a/modes/longitudinal/src/initToolGroups.js +++ b/modes/longitudinal/src/initToolGroups.js @@ -35,6 +35,8 @@ function initDefaultToolGroup( { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, + { toolName: toolNames.CobbAngle }, + { toolName: toolNames.PlanarFreehandROI }, { toolName: toolNames.Magnify }, { toolName: toolNames.SegmentationDisplay }, ], @@ -173,6 +175,8 @@ function initMPRToolGroup(extensionManager, toolGroupService, commandsManager) { { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, + { toolName: toolNames.CobbAngle }, + { toolName: toolNames.PlanarFreehandROI }, { toolName: toolNames.SegmentationDisplay }, ], disabled: [ diff --git a/modes/longitudinal/src/toolbarButtons.js b/modes/longitudinal/src/toolbarButtons.js index a8c8a8535..e62fc2f2e 100644 --- a/modes/longitudinal/src/toolbarButtons.js +++ b/modes/longitudinal/src/toolbarButtons.js @@ -493,6 +493,38 @@ const toolbarButtons = [ ], 'Angle' ), + + // Next two tools can be added once icons are added + // _createToolButton( + // 'Cobb Angle', + // 'tool-cobb-angle', + // 'Cobb Angle', + // [ + // { + // commandName: 'setToolActive', + // commandOptions: { + // toolName: 'CobbAngle', + // }, + // context: 'CORNERSTONE', + // }, + // ], + // 'Cobb Angle' + // ), + // _createToolButton( + // 'Planar Freehand ROI', + // 'tool-freehand', + // 'PlanarFreehandROI', + // [ + // { + // commandName: 'setToolActive', + // commandOptions: { + // toolName: 'PlanarFreehandROI', + // }, + // context: 'CORNERSTONE', + // }, + // ], + // 'Planar Freehand ROI' + // ), _createToolButton( 'Magnify', 'tool-magnify', diff --git a/modes/tmtv/src/initToolGroups.js b/modes/tmtv/src/initToolGroups.js index 21e14e126..990b70058 100644 --- a/modes/tmtv/src/initToolGroups.js +++ b/modes/tmtv/src/initToolGroups.js @@ -34,6 +34,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) { { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, + { toolName: toolNames.CobbAngle }, { toolName: toolNames.Magnify }, ], enabled: [{ toolName: toolNames.SegmentationDisplay }], @@ -149,6 +150,7 @@ function initMPRToolGroup(toolNames, Enums, toolGroupService, commandsManager) { { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, { toolName: toolNames.Angle }, + { toolName: toolNames.CobbAngle }, { toolName: toolNames.SegmentationDisplay }, ], disabled: [{ toolName: toolNames.Crosshairs }], diff --git a/platform/core/package.json b/platform/core/package.json index 486fcc36d..f2b11412d 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,8 +37,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "dcmjs": "0.29.4", - "dicomweb-client": "^0.6.0", + "dcmjs": "^0.29.4", + "dicomweb-client": "^0.8.4", "isomorphic-base64": "^1.0.2", "lodash.merge": "^4.6.1", "lodash.clonedeep": "^4.5.0", diff --git a/platform/core/src/measurements/tools/polygonRoi.js b/platform/core/src/measurements/tools/polygonRoi.js index 4ebdc4d97..05876e581 100644 --- a/platform/core/src/measurements/tools/polygonRoi.js +++ b/platform/core/src/measurements/tools/polygonRoi.js @@ -11,7 +11,7 @@ export const polygonRoi = { id: 'PolygonRoi', name: 'Polygon', toolGroup: 'allTools', - cornerstoneToolType: 'FreehandRoiTool', + cornerstoneToolType: 'PlanarFreehandROITool', options: { measurementTable: { displayFunction, diff --git a/platform/core/src/services/MeasurementService/MeasurementService.ts b/platform/core/src/services/MeasurementService/MeasurementService.ts index 64cb53561..1fb9550f2 100644 --- a/platform/core/src/services/MeasurementService/MeasurementService.ts +++ b/platform/core/src/services/MeasurementService/MeasurementService.ts @@ -71,6 +71,7 @@ const EVENTS = { }; const VALUE_TYPES = { + ANGLE: 'value_type::polyline', POLYLINE: 'value_type::polyline', POINT: 'value_type::point', BIDIRECTIONAL: 'value_type::shortAxisLongAxis', // TODO -> Discuss with Danny. => just using SCOORD values isn't enough here. @@ -103,18 +104,15 @@ class MeasurementService extends PubSubService { }, }; + public static VALUE_TYPES = VALUE_TYPES; + public readonly VALUE_TYPES = VALUE_TYPES; + constructor() { super(EVENTS); this.sources = {}; this.mappings = {}; this.measurements = {}; this._jumpToMeasurementCache = {}; - Object.defineProperty(this, 'VALUE_TYPES', { - value: VALUE_TYPES, - writable: false, - enumerable: true, - configurable: false, - }); } /** @@ -529,6 +527,7 @@ class MeasurementService extends PubSubService { measurement = toMeasurementSchema(sourceAnnotationDetail); measurement.source = source; } catch (error) { + console.log('Failed to map', error); throw new Error( `Failed to map '${sourceInfo}' measurement for annotationType ${annotationType}: ${error.message}` ); diff --git a/platform/viewer/package.json b/platform/viewer/package.json index 235a838db..b7fe69b1e 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -66,8 +66,7 @@ "core-js": "^3.16.1", "cornerstone-math": "^0.1.9", "cornerstone-wado-image-loader": "^4.2.1", - "dayjs": "^1.11.6", - "dcmjs": "0.29.4", + "dcmjs": "^0.29.4", "detect-gpu": "^4.0.16", "dicom-parser": "^1.8.9", "dotenv-webpack": "^1.7.0", diff --git a/testdata b/testdata index 4d59660c2..1bca96aa2 160000 --- a/testdata +++ b/testdata @@ -1 +1 @@ -Subproject commit 4d59660c2883ed749a680e5fb6d4624ab54c9422 +Subproject commit 1bca96aa2aeae7d90b3c8db73845c85dd27b34d5 diff --git a/yarn.lock b/yarn.lock index 8f2187364..434106df8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1407,10 +1407,10 @@ resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cornerstonejs/adapters@0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@cornerstonejs/adapters/-/adapters-0.3.0.tgz#c0a2a904c92ebfae77520eba4fc64c07ebd06db4" - integrity sha512-o3GIrccNM0q/QF0//ueVIXeRltUmtTBkTR47qPgIY9gdi+3sYEFHEW6RTXe3OOtDDXOWgM88Jp3mWWUK4ZeXxg== +"@cornerstonejs/adapters@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@cornerstonejs/adapters/-/adapters-0.3.1.tgz#50cfaf3de3c5a55f22f7fae1a9f6584a1c343ffa" + integrity sha512-+tqMLVYeSZjzwtzbAPqRMq5iI47nrtXz4f3GQ1jKUSmZqQyvgWRzAizcfnl6OEIrgjeg/2MHdSGOEWu12H8M+w== dependencies: "@babel/runtime-corejs2" "^7.17.8" dcmjs "^0.29.4" @@ -1443,7 +1443,15 @@ resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== -"@cornerstonejs/core@0.30.1", "@cornerstonejs/core@^0.30.1": +"@cornerstonejs/core@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.25.1.tgz#7e5c70858018d99417b61965ac606754542f77ad" + integrity sha512-/Ve9qwGyRRK1uUCrefh9cVG3OIaaS9LQoTUk9YMUbsoWxd6JitXh31XVHjlvNtBYGMRVdz+uGPS2zSxq1vi4aA== + dependencies: + detect-gpu "^4.0.45" + lodash.clonedeep "4.5.0" + +"@cornerstonejs/core@^0.30.1": version "0.30.1" resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.30.1.tgz#6cb7088260641e7e55de2edb11979b1a0c00c794" integrity sha512-A7t6WtPut17uLGpv3cUfk1gSzEvWiFcCg1K3H0WGySdZsf4tIinb5xA+9oD2eaBPbvTXmIef4HWFIAsN3kAEgg== @@ -1451,28 +1459,28 @@ detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/core@^0.28.0": - version "0.28.0" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.28.0.tgz#bc5114dfd332fcc5caf4ab049bcb08f6457e5f97" - integrity sha512-DSAdH2+8h/rRCTR6WbbGkY+vqnAVVZH47+GgGQQHscEwDD/K3ZO62JMl4LgcgkDzI0LIIZAk6CgAtok31yG/3Q== +"@cornerstonejs/core@^0.31.0": + version "0.31.0" + resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.31.0.tgz#087731cc9c1745f02e8936a55956c4ca5d52f3d9" + integrity sha512-qJmR2JpPPuSJsIDW7seH+bJrhE/e5QNwuk2T8EzlWtHR3QcB2lSq/o7cX6kGOJDwn4KrE1p/9QZAJ4GaFlBoyQ== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/streaming-image-volume-loader@^0.11.2": - version "0.11.8" - resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.11.8.tgz#79dc9bf7f00a3277d9880f919c324cdeda2c28d6" - integrity sha512-fp+mmCUMWQQFzx9AzzmOJO1ntBStHQmxK3Zbi/sMs9TYcue+Zw14oA+qcuJ/7UZayb+c99unfWjhafjBiHWNeg== +"@cornerstonejs/streaming-image-volume-loader@^0.8.2": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.8.3.tgz#9370f1a609c5d83b3be59af2a0f44c57f68efdb0" + integrity sha512-p4kQisqQM/hD5yr/TZKSlq2Ux6eOJteuJrJRNaub46bGklU5M2J0TPShEkwpMDPIJeir9hNeQyg7q8fy5IoH+A== dependencies: - "@cornerstonejs/core" "^0.30.1" - cornerstone-wado-image-loader "^4.8.0" + "@cornerstonejs/core" "^0.25.1" + cornerstone-wado-image-loader "^4.7.0" -"@cornerstonejs/tools@0.39.0": - version "0.39.0" - resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.39.0.tgz#7d9bac4c55bc19145c2051f7c7150b34570849e4" - integrity sha512-xDR51lOEuNIDaTJltZvxDK+BIdIbznXUsWt+OpYiiygCQYt1Lt2eHufO2wVFVPrMgvm0dryF+WQbRVwtWvx4yA== +"@cornerstonejs/tools@^0.44.0": + version "0.44.0" + resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.44.0.tgz#7bec3dbcd25fce648cab49021c67ca2e3a80b1f1" + integrity sha512-/LfxjXwR4o1qzsByk4pf3vgRK+4BJGkth1G+dqYLj06iUsDYX724kR6AodEFZniwXUiSCZO7JDYOyns6fk7+GQ== dependencies: - "@cornerstonejs/core" "^0.28.0" + "@cornerstonejs/core" "^0.31.0" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -8544,7 +8552,7 @@ cornerstone-math@^0.1.9: resolved "https://registry.npmjs.org/cornerstone-math/-/cornerstone-math-0.1.10.tgz#a3f99db64d73c5adee61ae0d570128eca1682d07" integrity sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ== -cornerstone-wado-image-loader@^4.2.1, cornerstone-wado-image-loader@^4.8.0: +cornerstone-wado-image-loader@^4.2.1, cornerstone-wado-image-loader@^4.7.0: version "4.9.1" resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.9.1.tgz#442eeca78ff0bcf9f9cbde04e8c429f35b31c55a" integrity sha512-l0HRxGAupfufnHjT9uFpwAtafvuGMKKB9SCL8dHUwCK+7jwNeVigy8s6+Oki2nycaJUzy2TRQaauO78mIf3grg== @@ -9259,12 +9267,12 @@ dateformat@^3.0.0: resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@^1.10.4, dayjs@^1.11.6: +dayjs@^1.10.4: version "1.11.7" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -dcmjs@0.29.4, dcmjs@^0.29.4: +dcmjs@^0.29.4: version "0.29.4" resolved "https://registry.npmjs.org/dcmjs/-/dcmjs-0.29.4.tgz#3fb13945611979f756bc91b3f199fd87b4eabdb4" integrity sha512-PzD6C4oB7v/AVTIPbkS6D6hjgVcSW7+T+DsxFpkD1xcEgU4qjGM16WGEHH3ZAPDBF0Xgm2d9FXUu/lXZIyfmow== @@ -9649,10 +9657,10 @@ dicom-parser@^1.8.9: resolved "https://registry.npmjs.org/dicom-parser/-/dicom-parser-1.8.20.tgz#e5ef817d80d2fbc093ffd8c2a73a1cb5b47f50bd" integrity sha512-R8NXEcaqXu7Qe5exY662aXiJCbiE6fEF8+QpSkVcXTTecFzfIaW8KJ2tSwYvt0UMHP0AUBW13VxQSXfKv/0FUA== -dicomweb-client@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/dicomweb-client/-/dicomweb-client-0.6.0.tgz#5e35ada52fe0155af1cc1f0e84f9c7f76477f92d" - integrity sha512-VAkBg4W6odIo2XsFxqjN/rptd7bQ8oHpRuKH5d46E9BUIPzRschazE8Dx1xg7/l3N3f1M70jB7yJ339arAXiDQ== +dicomweb-client@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/dicomweb-client/-/dicomweb-client-0.8.4.tgz#3da814cedb9415facb50bc5f43af8d961a991c74" + integrity sha512-/6oY3/Fg9JyAlbTWuJOYbVqici3+nlZt43+Z/Y47RNiqLc028JcxNlY28u4VQqksxfB59f1hhNbsqsHyDT4vhw== didyoumean@^1.2.2: version "1.2.2" From 7a3636373560bc84ca03fafad023ece5749e9d4f Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 22 Feb 2023 12:15:30 -0500 Subject: [PATCH 34/47] docs: add percy acknowledgment (#3189) * docs: add percy acknowledgment * try to build --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ca0ade112..0de590f74 100644 --- a/README.md +++ b/README.md @@ -227,7 +227,7 @@ These projects comprise the ### Extensions -This is a list of Extensions maintained by the OHIF Core team. It's possible to +This is a list of Extensions maintained by the OHIF Core team. It is possible to customize and configure these extensions, and you can even create your own. You can [read more about extensions here][ohif-extensions]. @@ -271,6 +271,8 @@ Cancer Institute, Informatics Technology for Cancer Research (ITCR) program, under a [grant to Dr. Gordon Harris at Massachusetts General Hospital (U24 CA199460)](https://projectreporter.nih.gov/project_info_description.cfm?aid=8971104). +This project is tested with BrowserStack. Thank you for supporting open source + ## License MIT © [OHIF](https://github.com/OHIF) From b15988359fa63e983f799f11ab704fcd5f9abcb0 Mon Sep 17 00:00:00 2001 From: md-prog <26860200+md-prog@users.noreply.github.com> Date: Wed, 22 Feb 2023 21:01:36 -0500 Subject: [PATCH 35/47] feat(Calibration Tool): add a calibration tool that can manually recalibrate an image and measurements on it (#3136) * minor bug fix - reading modalities * react error log fix - button props * react warn fix - Typography color prop * calibration tool without persistence * added toolbar button for calibration tool * icon change for calibration tool * important bug fix for calibration - length and calibration rate calculation * fix weird autocorrection * [fix] bugs after merging upstream * [refactor] conform to the new service names --- extensions/cornerstone/src/commandsModule.ts | 7 +- extensions/cornerstone/src/init.tsx | 11 +- .../cornerstone/src/initCornerstoneTools.js | 4 + .../cornerstone/src/initMeasurementService.js | 58 ++++++-- .../src/tools/CalibrationLineTool.ts | 134 ++++++++++++++++++ .../cornerstone/src/utils/callInputDialog.tsx | 20 ++- .../utils/getActiveViewportEnabledElement.ts | 13 ++ modes/basic-dev-mode/src/index.js | 1 + modes/basic-dev-mode/src/toolbarButtons.js | 15 ++ modes/longitudinal/src/initToolGroups.js | 1 + modes/longitudinal/src/toolbarButtons.js | 15 ++ platform/core/src/DICOMWeb/getModalities.js | 4 + .../docs/docs/user-guide/viewer/toolbar.md | 1 + .../version-3.0/user-guide/viewer/toolbar.md | 1 + .../ui/src/assets/icons/tool-calibration.svg | 21 +++ platform/ui/src/components/Button/Button.tsx | 1 + platform/ui/src/components/Icon/getIcon.js | 2 + .../src/components/Typography/Typography.tsx | 1 + 18 files changed, 288 insertions(+), 22 deletions(-) create mode 100644 extensions/cornerstone/src/tools/CalibrationLineTool.ts create mode 100644 extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts create mode 100644 platform/ui/src/assets/icons/tool-calibration.svg diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts index b57e07d77..45726c0bb 100644 --- a/extensions/cornerstone/src/commandsModule.ts +++ b/extensions/cornerstone/src/commandsModule.ts @@ -12,12 +12,12 @@ import { } from '@cornerstonejs/tools'; import { ServicesManager } from '@ohif/core'; -import { getEnabledElement as OHIFgetEnabledElement } from './state'; import CornerstoneViewportDownloadForm from './utils/CornerstoneViewportDownloadForm'; import callInputDialog from './utils/callInputDialog'; import { setColormap } from './utils/colormap/transferFunctionHelpers'; import toggleMPRHangingProtocol from './utils/mpr/toggleMPRHangingProtocol'; import toggleStackImageSync from './utils/stackSync/toggleStackImageSync'; +import getActiveViewportEnabledElement from './utils/getActiveViewportEnabledElement'; const commandsModule = ({ servicesManager }) => { const { @@ -32,10 +32,7 @@ const commandsModule = ({ servicesManager }) => { } = (servicesManager as ServicesManager).services; function _getActiveViewportEnabledElement() { - const { activeViewportIndex } = viewportGridService.getState(); - const { element } = OHIFgetEnabledElement(activeViewportIndex) || {}; - const enabledElement = getEnabledElement(element); - return enabledElement; + return getActiveViewportEnabledElement(viewportGridService); } function _getToolGroup(toolGroupId) { diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx index 8c7aad4bd..8752baefe 100644 --- a/extensions/cornerstone/src/init.tsx +++ b/extensions/cornerstone/src/init.tsx @@ -12,6 +12,7 @@ import { volumeLoader, imageLoadPoolManager, Settings, + utilities as csUtilities, } from '@cornerstonejs/core'; import { Enums, utilities, ReferenceLinesTool } from '@cornerstonejs/tools'; import { cornerstoneStreamingImageVolumeLoader } from '@cornerstonejs/streaming-image-volume-loader'; @@ -126,6 +127,12 @@ export default async function init({ ); hangingProtocolService.registerImageLoadStrategy('nth', nthLoader); + // add metadata providers + metaData.addProvider( + csUtilities.calibratedPixelSpacingMetadataProvider.get.bind( + csUtilities.calibratedPixelSpacingMetadataProvider + ) + ); // this provider is required for Calibration tool metaData.addProvider(metadataProvider.get.bind(metadataProvider), 9999); imageLoadPoolManager.maxNumRequests = { @@ -138,9 +145,7 @@ export default async function init({ /* Measurement Service */ const measurementServiceSource = connectToolsToMeasurementService( - measurementService, - displaySetService, - cornerstoneViewportService + servicesManager ); initCineService(cineService); diff --git a/extensions/cornerstone/src/initCornerstoneTools.js b/extensions/cornerstone/src/initCornerstoneTools.js index 80dc0678b..291e02924 100644 --- a/extensions/cornerstone/src/initCornerstoneTools.js +++ b/extensions/cornerstone/src/initCornerstoneTools.js @@ -25,6 +25,8 @@ import { ReferenceLinesTool, } from '@cornerstonejs/tools'; +import CalibrationLineTool from './tools/CalibrationLineTool'; + export default function initCornerstoneTools(configuration = {}) { init(configuration); addTool(PanTool); @@ -48,6 +50,7 @@ export default function initCornerstoneTools(configuration = {}) { addTool(CrosshairsTool); addTool(SegmentationDisplayTool); addTool(ReferenceLinesTool); + addTool(CalibrationLineTool); // Modify annotation tools to use dashed lines on SR const annotationStyle = { @@ -86,6 +89,7 @@ const toolNames = { Crosshairs: CrosshairsTool.toolName, SegmentationDisplay: SegmentationDisplayTool.toolName, ReferenceLines: ReferenceLinesTool.toolName, + CalibrationLine: CalibrationLineTool.toolName, }; export { toolNames }; diff --git a/extensions/cornerstone/src/initMeasurementService.js b/extensions/cornerstone/src/initMeasurementService.js index 9ce6fc5c7..e081435ce 100644 --- a/extensions/cornerstone/src/initMeasurementService.js +++ b/extensions/cornerstone/src/initMeasurementService.js @@ -1,6 +1,8 @@ import { eventTarget } from '@cornerstonejs/core'; import { Enums, annotation } from '@cornerstonejs/tools'; -import { DicomMetadataStore, MeasurementService } from '@ohif/core'; +import { DicomMetadataStore } from '@ohif/core'; +import { toolNames } from './initCornerstoneTools'; +import { onCompletedCalibrationLine } from './tools/CalibrationLineTool'; import measurementServiceMappingsFactory from './utils/measurementServiceMappings/measurementServiceMappingsFactory'; import getSOPInstanceAttributes from './utils/measurementServiceMappings/utils/getSOPInstanceAttributes'; @@ -102,14 +104,25 @@ const initMeasurementService = ( PlanarFreehandROI.toMeasurement ); + // On the UI side, the Calibration Line tool will work almost the same as the + // Length tool + measurementService.addMapping( + csTools3DVer1MeasurementSource, + 'CalibrationLine', + Length.matchingCriteria, + Length.toAnnotation, + Length.toMeasurement + ); + return csTools3DVer1MeasurementSource; }; -const connectToolsToMeasurementService = ( - measurementService, - displaySetService, - cornerstoneViewportService -) => { +const connectToolsToMeasurementService = servicesManager => { + const { + measurementService, + displaySetService, + cornerstoneViewportService, + } = servicesManager.services; const csTools3DVer1MeasurementSource = initMeasurementService( measurementService, displaySetService, @@ -131,15 +144,38 @@ const connectToolsToMeasurementService = ( } = annotationAddedEventDetail; const { toolName } = metadata; - // To force the measurementUID be the same as the annotationUID - // Todo: this should be changed when a measurement can include multiple annotations - // in the future - annotationAddedEventDetail.uid = annotationUID; - annotationToMeasurement(toolName, annotationAddedEventDetail); + if ( + csToolsEvent.type === completedEvt && + toolName === toolNames.CalibrationLine + ) { + // show modal to input the measurement (mm) + onCompletedCalibrationLine(servicesManager, csToolsEvent) + .then( + () => { + console.log('calibration applied'); + }, + () => true + ) + .finally(() => { + // we don't need the calibration line lingering around, remove the + // annotation from the display + removeAnnotation(annotationUID); + removeMeasurement(csToolsEvent); + // this will ensure redrawing of annotations + cornerstoneViewportService.resize(); + }); + } else { + // To force the measurementUID be the same as the annotationUID + // Todo: this should be changed when a measurement can include multiple annotations + // in the future + annotationAddedEventDetail.uid = annotationUID; + annotationToMeasurement(toolName, annotationAddedEventDetail); + } } catch (error) { console.warn('Failed to update measurement:', error); } } + function updateMeasurement(csToolsEvent) { try { const annotationModifiedEventDetail = csToolsEvent.detail; diff --git a/extensions/cornerstone/src/tools/CalibrationLineTool.ts b/extensions/cornerstone/src/tools/CalibrationLineTool.ts new file mode 100644 index 000000000..27e521d46 --- /dev/null +++ b/extensions/cornerstone/src/tools/CalibrationLineTool.ts @@ -0,0 +1,134 @@ +import { metaData } from '@cornerstonejs/core'; +import { LengthTool } from '@cornerstonejs/tools'; +import { calibrateImageSpacing } from '@cornerstonejs/tools/dist/esm/utilities'; +import callInputDialog from '../utils/callInputDialog'; +import getActiveViewportEnabledElement from '../utils/getActiveViewportEnabledElement'; + +/** + * Calibration Line tool works almost the same as the + */ +class CalibrationLineTool extends LengthTool { + static toolName = 'CalibrationLine'; + + _renderingViewport: any; + _lengthToolRenderAnnotation = this.renderAnnotation; + + renderAnnotation = (enabledElement, svgDrawingHelper) => { + const { viewport } = enabledElement; + this._renderingViewport = viewport; + return this._lengthToolRenderAnnotation(enabledElement, svgDrawingHelper); + }; + + _getTextLines(data, targetId) { + const [canvasPoint1, canvasPoint2] = data.handles.points.map(p => + this._renderingViewport.worldToCanvas(p) + ); + // for display, round to 2 decimal points + const lengthPx = + Math.round(calculateLength2(canvasPoint1, canvasPoint2) * 100) / 100; + + const textLines = [`${lengthPx}px`]; + + return textLines; + } +} + +function calculateLength2(point1, point2) { + const dx = point1[0] - point2[0]; + const dy = point1[1] - point2[1]; + return Math.sqrt(dx * dx + dy * dy); +} + +function calculateLength3(pos1, pos2) { + const dx = pos1[0] - pos2[0]; + const dy = pos1[1] - pos2[1]; + const dz = pos1[2] - pos2[2]; + + return Math.sqrt(dx * dx + dy * dy + dz * dz); +} + +export default CalibrationLineTool; + +export function onCompletedCalibrationLine(servicesManager, csToolsEvent) { + const { uiDialogService, viewportGridService } = servicesManager.services; + + // calculate length (mm) with the current Pixel Spacing + const annotationAddedEventDetail = csToolsEvent.detail; + const { + annotation: { metadata, data: annotationData }, + } = annotationAddedEventDetail; + const { referencedImageId: imageId } = metadata; + const enabledElement = getActiveViewportEnabledElement(viewportGridService); + const { viewport } = enabledElement; + + const length = + Math.round( + calculateLength3( + annotationData.handles.points[0], + annotationData.handles.points[1] + ) * 100 + ) / 100; + + // calculate the currently applied pixel spacing on the viewport + const calibratedPixelSpacing = metaData.get( + 'calibratedPixelSpacing', + imageId + ); + const imagePlaneModule = metaData.get('imagePlaneModule', imageId); + const currentRowPixelSpacing = + calibratedPixelSpacing?.[0] || imagePlaneModule?.rowPixelSpacing || 1; + const currentColumnPixelSpacing = + calibratedPixelSpacing?.[1] || imagePlaneModule?.columnPixelSpacing || 1; + + const adjustCalibration = newLength => { + const spacingScale = newLength / length; + const rowSpacing = spacingScale * currentRowPixelSpacing; + const colSpacing = spacingScale * currentColumnPixelSpacing; + + // trigger resize of the viewport to adjust the world/pixel mapping + calibrateImageSpacing( + imageId, + viewport.getRenderingEngine(), + rowSpacing, + colSpacing + ); + }; + + return new Promise((resolve, reject) => { + if (!uiDialogService) { + reject('UIDialogService is not initiated'); + return; + } + + callInputDialog( + uiDialogService, + { + text: '', + label: `${length}`, + }, + (value, id) => { + if (id === 'save') { + adjustCalibration(Number.parseFloat(value)); + resolve(true); + } else { + reject('cancel'); + } + }, + false, + { + dialogTitle: 'Calibration', + inputLabel: 'Actual Physical distance (mm)', + + // the input value must be a number + validateFunc: val => { + try { + const v = Number.parseFloat(val); + return !isNaN(v) && v !== 0.0; + } catch { + return false; + } + }, + } + ); + }); +} diff --git a/extensions/cornerstone/src/utils/callInputDialog.tsx b/extensions/cornerstone/src/utils/callInputDialog.tsx index fb27f60d4..bd59a7bef 100644 --- a/extensions/cornerstone/src/utils/callInputDialog.tsx +++ b/extensions/cornerstone/src/utils/callInputDialog.tsx @@ -9,23 +9,35 @@ import { Input, Dialog } from '@ohif/ui'; * @param {*} event * @param {*} callback * @param {*} isArrowAnnotateInputDialog + * @param {*} dialogConfig + * @param {string?} dialogConfig.dialogTitle - title of the input dialog + * @param {string?} dialogConfig.inputLabel - show label above the input */ function callInputDialog( uiDialogService, data, callback, - isArrowAnnotateInputDialog = true + isArrowAnnotateInputDialog = true, + dialogConfig: any = {} ) { - const dialogId = 'enter-annotation'; + const dialogId = 'dialog-enter-annotation'; const label = data ? isArrowAnnotateInputDialog ? data.text : data.label : ''; + const { + dialogTitle = 'Enter your annotation', + inputLabel = '', + validateFunc = value => true, + } = dialogConfig; const onSubmitHandler = ({ action, value }) => { switch (action.id) { case 'save': + if (typeof validateFunc === 'function' && !validateFunc(value.label)) + return; + callback(value.label, action.id); break; case 'cancel': @@ -43,7 +55,7 @@ function callInputDialog( showOverlay: true, content: Dialog, contentProps: { - title: 'Enter your annotation', + title: dialogTitle, value: { label }, noCloseButton: true, onClose: () => uiDialogService.dismiss({ id: dialogId }), @@ -61,6 +73,8 @@ function callInputDialog( type="text" id="annotation" containerClassName="mr-2" + label={inputLabel} + labelClassName="text-primary-light" value={value.label} onChange={event => { event.persist(); diff --git a/extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts b/extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts new file mode 100644 index 000000000..d188ece9a --- /dev/null +++ b/extensions/cornerstone/src/utils/getActiveViewportEnabledElement.ts @@ -0,0 +1,13 @@ +import { getEnabledElement } from '@cornerstonejs/core'; +import { IEnabledElement } from '@cornerstonejs/core/dist/esm/types'; + +import { getEnabledElement as OHIFgetEnabledElement } from '../state'; + +export default function getActiveViewportEnabledElement( + viewportGridService +): IEnabledElement { + const { activeViewportIndex } = viewportGridService.getState(); + const { element } = OHIFgetEnabledElement(activeViewportIndex) || {}; + const enabledElement = getEnabledElement(element); + return enabledElement; +} diff --git a/modes/basic-dev-mode/src/index.js b/modes/basic-dev-mode/src/index.js index 204b7b612..f3368e412 100644 --- a/modes/basic-dev-mode/src/index.js +++ b/modes/basic-dev-mode/src/index.js @@ -83,6 +83,7 @@ function modeFactory({ modeConfiguration }) { { toolName: toolNames.EllipticalROI }, { toolName: toolNames.RectangleROI }, { toolName: toolNames.StackScroll }, + { toolName: toolNames.CalibrationLine }, ], // enabled // disabled diff --git a/modes/basic-dev-mode/src/toolbarButtons.js b/modes/basic-dev-mode/src/toolbarButtons.js index ff1b652d0..4a08edbf0 100644 --- a/modes/basic-dev-mode/src/toolbarButtons.js +++ b/modes/basic-dev-mode/src/toolbarButtons.js @@ -323,6 +323,21 @@ const toolbarButtons = [ ], 'Invert Colors' ), + _createToolButton( + 'CalibrationLine', + 'tool-calibration', + 'Calibration', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'CalibrationLine', + }, + context: 'CORNERSTONE', + }, + ], + 'Calibration Line' + ), ], }, }, diff --git a/modes/longitudinal/src/initToolGroups.js b/modes/longitudinal/src/initToolGroups.js index a5af64e77..fe77aa52f 100644 --- a/modes/longitudinal/src/initToolGroups.js +++ b/modes/longitudinal/src/initToolGroups.js @@ -39,6 +39,7 @@ function initDefaultToolGroup( { toolName: toolNames.PlanarFreehandROI }, { toolName: toolNames.Magnify }, { toolName: toolNames.SegmentationDisplay }, + { toolName: toolNames.CalibrationLine }, ], // enabled // disabled diff --git a/modes/longitudinal/src/toolbarButtons.js b/modes/longitudinal/src/toolbarButtons.js index e62fc2f2e..3addb750b 100644 --- a/modes/longitudinal/src/toolbarButtons.js +++ b/modes/longitudinal/src/toolbarButtons.js @@ -555,6 +555,21 @@ const toolbarButtons = [ ], 'Rectangle' ), + _createToolButton( + 'CalibrationLine', + 'tool-calibration', + 'Calibration', + [ + { + commandName: 'setToolActive', + commandOptions: { + toolName: 'CalibrationLine', + }, + context: 'CORNERSTONE', + }, + ], + 'Calibration Line' + ), _createActionButton( 'TagBrowser', 'list-bullets', diff --git a/platform/core/src/DICOMWeb/getModalities.js b/platform/core/src/DICOMWeb/getModalities.js index 9d124f59b..6cde6f22f 100644 --- a/platform/core/src/DICOMWeb/getModalities.js +++ b/platform/core/src/DICOMWeb/getModalities.js @@ -8,6 +8,10 @@ export default function getModalities(Modality, ModalitiesInStudy) { Value: [], }; + // Rare case, depending on the DICOM server we are using, but sometimes, + // modalities.Value is undefined or null. + modalities.Value = modalities.Value || []; + if (ModalitiesInStudy) { if (modalities.vr && modalities.vr === ModalitiesInStudy.vr) { for (let i = 0; i < ModalitiesInStudy.Value.length; i++) { diff --git a/platform/docs/docs/user-guide/viewer/toolbar.md b/platform/docs/docs/user-guide/viewer/toolbar.md index 9f226e0d6..cb982ce25 100644 --- a/platform/docs/docs/user-guide/viewer/toolbar.md +++ b/platform/docs/docs/user-guide/viewer/toolbar.md @@ -24,6 +24,7 @@ The basic viewer comes with the following default measurement tools: - Bidirectional Tool: Creates a measurement of the longest diameter (LD) and longest perpendicular diameter (LPD) in *mm* - Annotation: Used to create a qualitative marker with a freetext label - Ellipse: Measures an elliptical area in *mm2* and Hounsfield Units (HU) +- Calibration Tool: Calibrate (or override) the Pixel Spacing Attribute (Physical distance in the patient between the center of each pixel, specified by a numeric pair - adjacent row spacing (delimiter) adjacent column spacing in mm) When a measurement tool is selected from the toolbar, it becomes the `active` tool. Use the caret to expand the measurement tools and select another tool. diff --git a/platform/docs/versioned_docs/version-3.0/user-guide/viewer/toolbar.md b/platform/docs/versioned_docs/version-3.0/user-guide/viewer/toolbar.md index 9f226e0d6..cb982ce25 100644 --- a/platform/docs/versioned_docs/version-3.0/user-guide/viewer/toolbar.md +++ b/platform/docs/versioned_docs/version-3.0/user-guide/viewer/toolbar.md @@ -24,6 +24,7 @@ The basic viewer comes with the following default measurement tools: - Bidirectional Tool: Creates a measurement of the longest diameter (LD) and longest perpendicular diameter (LPD) in *mm* - Annotation: Used to create a qualitative marker with a freetext label - Ellipse: Measures an elliptical area in *mm2* and Hounsfield Units (HU) +- Calibration Tool: Calibrate (or override) the Pixel Spacing Attribute (Physical distance in the patient between the center of each pixel, specified by a numeric pair - adjacent row spacing (delimiter) adjacent column spacing in mm) When a measurement tool is selected from the toolbar, it becomes the `active` tool. Use the caret to expand the measurement tools and select another tool. diff --git a/platform/ui/src/assets/icons/tool-calibration.svg b/platform/ui/src/assets/icons/tool-calibration.svg new file mode 100644 index 000000000..0d810e510 --- /dev/null +++ b/platform/ui/src/assets/icons/tool-calibration.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/platform/ui/src/components/Button/Button.tsx b/platform/ui/src/components/Button/Button.tsx index fdafc91bb..939d803fd 100644 --- a/platform/ui/src/components/Button/Button.tsx +++ b/platform/ui/src/components/Button/Button.tsx @@ -227,6 +227,7 @@ Button.propTypes = { /** Button corner roundness */ rounded: PropTypes.oneOf(['none', 'small', 'medium', 'large', 'full']), variant: PropTypes.oneOf(['text', 'outlined', 'contained', 'disabled']), + /* color prop must have all the possible keys of variants defined above */ color: PropTypes.oneOf([ 'default', 'primary', diff --git a/platform/ui/src/components/Icon/getIcon.js b/platform/ui/src/components/Icon/getIcon.js index dc43c6b3a..d1b1d886c 100644 --- a/platform/ui/src/components/Icon/getIcon.js +++ b/platform/ui/src/components/Icon/getIcon.js @@ -82,6 +82,7 @@ import toolReset from './../../assets/icons/tool-reset.svg'; import toolRectangle from './../../assets/icons/tool-rectangle.svg'; import toolFusionColor from './../../assets/icons/tool-fusion-color.svg'; import toolCreateThreshold from './../../assets/icons/tool-create-threshold.svg'; +import toolCalibration from './../../assets/icons/tool-calibration.svg'; import editPatient from './../../assets/icons/edit-patient.svg'; import panelGroupMore from './../../assets/icons/panel-group-more.svg'; import panelGroupOpenClose from './../../assets/icons/panel-group-open-close.svg'; @@ -185,6 +186,7 @@ const ICONS = { 'tool-rectangle': toolRectangle, 'tool-fusion-color': toolFusionColor, 'tool-create-threshold': toolCreateThreshold, + 'tool-calibration': toolCalibration, 'edit-patient': editPatient, 'icon-mpr': iconMPR, 'icon-next-inactive': iconNextInactive, diff --git a/platform/ui/src/components/Typography/Typography.tsx b/platform/ui/src/components/Typography/Typography.tsx index 9f86c129e..b1904b941 100644 --- a/platform/ui/src/components/Typography/Typography.tsx +++ b/platform/ui/src/components/Typography/Typography.tsx @@ -133,6 +133,7 @@ Typography.propTypes = { 'primaryActive', 'secondary', 'error', + 'primaryActive', ]), className: PropTypes.string, children: PropTypes.node, From 9b3f2e66380e1cac6a85e6f472732fa70d750d54 Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 22 Feb 2023 21:51:33 -0500 Subject: [PATCH 36/47] chore: bump vtk version to fix rendering bug (#3192) --- extensions/cornerstone-dicom-sr/package.json | 4 +- extensions/cornerstone/package.json | 8 +-- extensions/measurement-tracking/package.json | 4 +- package.json | 2 +- yarn.lock | 72 ++++++++++---------- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 8759b1114..46e9eb36e 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,7 +46,7 @@ "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", "@cornerstonejs/adapters": "^0.3.1", - "@cornerstonejs/core": "^0.30.1", - "@cornerstonejs/tools": "^0.44.0" + "@cornerstonejs/core": "^0.31.2", + "@cornerstonejs/tools": "^0.46.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 7049b4cde..e46bd0fd3 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -44,10 +44,10 @@ "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/adapters": "^0.3.1", - "@cornerstonejs/core": "^0.30.1", - "@cornerstonejs/streaming-image-volume-loader": "^0.8.2", - "@cornerstonejs/tools": "^0.44.0", - "@kitware/vtk.js": "26.4.0", + "@cornerstonejs/core": "^0.31.2", + "@cornerstonejs/streaming-image-volume-loader": "^0.12.2", + "@cornerstonejs/tools": "^0.46.2", + "@kitware/vtk.js": "26.5.6", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", "lodash.merge": "^4.6.2", diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 86f91e615..6916ccbde 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.3.2", - "@cornerstonejs/core": "^0.30.1", - "@cornerstonejs/tools": "^0.44.0", + "@cornerstonejs/core": "^0.31.2", + "@cornerstonejs/tools": "^0.46.2", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "dcmjs": "^0.29.4", "prop-types": "^15.6.2", diff --git a/package.json b/package.json index a9464a4d0..3b5918b6f 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@kitware/vtk.js": "26.4.0", + "@kitware/vtk.js": "26.5.6", "core-js": "^3.2.1" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 434106df8..493f956c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1443,44 +1443,28 @@ resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== -"@cornerstonejs/core@^0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.25.1.tgz#7e5c70858018d99417b61965ac606754542f77ad" - integrity sha512-/Ve9qwGyRRK1uUCrefh9cVG3OIaaS9LQoTUk9YMUbsoWxd6JitXh31XVHjlvNtBYGMRVdz+uGPS2zSxq1vi4aA== +"@cornerstonejs/core@^0.31.2": + version "0.31.2" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.31.2.tgz#0087cb4445962c82125ae2dddff49aadcfab634d" + integrity sha512-RIxKF/3gGvx8Rca91YlAkUF0DVICedHr6Xis9x8EvOIm+DraP1h3FSQs6bO77FdalAEPGyDjG5U8ZfsAkAXN4g== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/core@^0.30.1": - version "0.30.1" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.30.1.tgz#6cb7088260641e7e55de2edb11979b1a0c00c794" - integrity sha512-A7t6WtPut17uLGpv3cUfk1gSzEvWiFcCg1K3H0WGySdZsf4tIinb5xA+9oD2eaBPbvTXmIef4HWFIAsN3kAEgg== +"@cornerstonejs/streaming-image-volume-loader@^0.12.2": + version "0.12.2" + resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.12.2.tgz#5df26356e846743264b624847fe4a1c7f0a304b9" + integrity sha512-0L7+oLAuhv/NIK/zmffHi499QGLcj+KS5Mgcml+7aqecO+ABiOzeC2hdCF9fGRPMN7IWadhDVOE1E78sUoCLRg== dependencies: - detect-gpu "^4.0.45" - lodash.clonedeep "4.5.0" + "@cornerstonejs/core" "^0.31.2" + cornerstone-wado-image-loader "^4.8.0" -"@cornerstonejs/core@^0.31.0": - version "0.31.0" - resolved "https://registry.yarnpkg.com/@cornerstonejs/core/-/core-0.31.0.tgz#087731cc9c1745f02e8936a55956c4ca5d52f3d9" - integrity sha512-qJmR2JpPPuSJsIDW7seH+bJrhE/e5QNwuk2T8EzlWtHR3QcB2lSq/o7cX6kGOJDwn4KrE1p/9QZAJ4GaFlBoyQ== +"@cornerstonejs/tools@^0.46.2": + version "0.46.2" + resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.46.2.tgz#d2adee12652c3c4ce7782102c82c21af6c4d3198" + integrity sha512-sqyEKU0f3nmBBQHju251C/oLbruBtgn+b5JT7Zvr79VH0qSxQAFVUyzYXWIF6Jmbd6i+A/qI1fiv2Gzv2CZfbg== dependencies: - detect-gpu "^4.0.45" - lodash.clonedeep "4.5.0" - -"@cornerstonejs/streaming-image-volume-loader@^0.8.2": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.8.3.tgz#9370f1a609c5d83b3be59af2a0f44c57f68efdb0" - integrity sha512-p4kQisqQM/hD5yr/TZKSlq2Ux6eOJteuJrJRNaub46bGklU5M2J0TPShEkwpMDPIJeir9hNeQyg7q8fy5IoH+A== - dependencies: - "@cornerstonejs/core" "^0.25.1" - cornerstone-wado-image-loader "^4.7.0" - -"@cornerstonejs/tools@^0.44.0": - version "0.44.0" - resolved "https://registry.yarnpkg.com/@cornerstonejs/tools/-/tools-0.44.0.tgz#7bec3dbcd25fce648cab49021c67ca2e3a80b1f1" - integrity sha512-/LfxjXwR4o1qzsByk4pf3vgRK+4BJGkth1G+dqYLj06iUsDYX724kR6AodEFZniwXUiSCZO7JDYOyns6fk7+GQ== - dependencies: - "@cornerstonejs/core" "^0.31.0" + "@cornerstonejs/core" "^0.31.2" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -2643,10 +2627,10 @@ merge-source-map "^1.1.0" schema-utils "^2.7.0" -"@kitware/vtk.js@26.4.0": - version "26.4.0" - resolved "https://registry.npmjs.org/@kitware/vtk.js/-/vtk.js-26.4.0.tgz#2b876d94c33c365bbb6352cbe7b18f7942753ad3" - integrity sha512-V8lTv0E0/cp5ORLId0Noy3+NryZjneDvZOrHnRCGhVzMuH/aCND8xy8M9AejwC0BRI0mIp5eX9MjH3xhAlbeFg== +"@kitware/vtk.js@26.5.6": + version "26.5.6" + resolved "https://registry.npmjs.org/@kitware/vtk.js/-/vtk.js-26.5.6.tgz#58fb474ce6929c18988c53fc993d02a463fc7ce1" + integrity sha512-1bTeo9xMa0hmeuAeRPp6JB98RuF36VCPTlq0A7I/zTmhP4XIsPQf/u468qE8Z3kXSb3RkCCNYo04GgaKlQr5VQ== dependencies: "@babel/runtime" "7.17.9" commander "9.2.0" @@ -8552,7 +8536,7 @@ cornerstone-math@^0.1.9: resolved "https://registry.npmjs.org/cornerstone-math/-/cornerstone-math-0.1.10.tgz#a3f99db64d73c5adee61ae0d570128eca1682d07" integrity sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ== -cornerstone-wado-image-loader@^4.2.1, cornerstone-wado-image-loader@^4.7.0: +cornerstone-wado-image-loader@^4.2.1: version "4.9.1" resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.9.1.tgz#442eeca78ff0bcf9f9cbde04e8c429f35b31c55a" integrity sha512-l0HRxGAupfufnHjT9uFpwAtafvuGMKKB9SCL8dHUwCK+7jwNeVigy8s6+Oki2nycaJUzy2TRQaauO78mIf3grg== @@ -8568,6 +8552,22 @@ cornerstone-wado-image-loader@^4.2.1, cornerstone-wado-image-loader@^4.7.0: pako "^2.0.4" uuid "^9.0.0" +cornerstone-wado-image-loader@^4.8.0: + version "4.10.0" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.10.0.tgz#25c367cfc54a2c92ebbb5c64dba4fe38439112a1" + integrity sha512-XZcgB8DpUxnsTA3vU/zbPtB2uFLL4ght70BPrQHykkX/Jlg/r6Ob7ztX2dEEAAb4ELE/d4icfGuSy10Acg/kyw== + dependencies: + "@babel/eslint-parser" "^7.19.1" + "@cornerstonejs/codec-charls" "^1.2.3" + "@cornerstonejs/codec-libjpeg-turbo-8bit" "^1.2.2" + "@cornerstonejs/codec-openjpeg" "^1.2.2" + "@cornerstonejs/codec-openjph" "^2.4.2" + coverage-istanbul-loader "^3.0.5" + date-format "^4.0.14" + dicom-parser "^1.8.9" + pako "^2.0.4" + uuid "^9.0.0" + cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" From 34d5873baef1bc5ed93d3ae31aed65d865b7d8b6 Mon Sep 17 00:00:00 2001 From: Pierre-Baptiste Date: Thu, 23 Feb 2023 15:37:13 +0100 Subject: [PATCH 37/47] fix(init): servicesManager use before initialization (#3191) Co-authored-by: Pierre-Baptiste Dupire --- platform/viewer/src/appInit.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/platform/viewer/src/appInit.js b/platform/viewer/src/appInit.js index 5990aa594..a130a41ee 100644 --- a/platform/viewer/src/appInit.js +++ b/platform/viewer/src/appInit.js @@ -24,12 +24,6 @@ import { * @param {object[]} defaultExtensions - array of extension objects */ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) { - const appConfig = { - ...(typeof appConfigOrFunc === 'function' - ? appConfigOrFunc({ servicesManager }) - : appConfigOrFunc), - }; - const commandsManagerConfig = { getAppState: () => {}, }; @@ -37,6 +31,13 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) { const commandsManager = new CommandsManager(commandsManagerConfig); const servicesManager = new ServicesManager(commandsManager); const hotkeysManager = new HotkeysManager(commandsManager, servicesManager); + + const appConfig = { + ...(typeof appConfigOrFunc === 'function' + ? appConfigOrFunc({ servicesManager }) + : appConfigOrFunc), + }; + const extensionManager = new ExtensionManager({ commandsManager, servicesManager, From c9125a0c0a9a1383740f1b297effb433a9c9faa0 Mon Sep 17 00:00:00 2001 From: Juan Esparza Torregrosa Date: Fri, 24 Feb 2023 19:07:16 +0100 Subject: [PATCH 38/47] fix(translation): errors in StudyList and StudyBrowser for es (#3170) * Fix translations * Fix errors and es new translations * Fix errors and es new translations * Fix errors and es new translations --- .../i18n/src/locales/en-US/SidePanel.json | 4 ++++ .../i18n/src/locales/en-US/StudyBrowser.json | 5 +++++ .../i18n/src/locales/en-US/StudyList.json | 11 ++++++++++- platform/i18n/src/locales/en-US/index.js | 4 ++++ platform/i18n/src/locales/es/AboutModal.json | 14 ++++++++++++++ platform/i18n/src/locales/es/DatePicker.json | 5 +++++ platform/i18n/src/locales/es/SidePanel.json | 4 ++++ .../i18n/src/locales/es/StudyBrowser.json | 6 ++++++ platform/i18n/src/locales/es/StudyList.json | 19 ++++++++++++++----- .../src/locales/es/ViewportDownloadForm.json | 14 ++++++++++++++ platform/i18n/src/locales/es/index.js | 10 ++++++++++ .../ui/src/components/SidePanel/SidePanel.tsx | 10 +++++----- .../StudyListFilter/StudyListFilter.tsx | 6 +++--- .../StudyListPagination.tsx | 8 ++++---- .../viewer/src/routes/WorkList/filtersMeta.js | 8 ++++---- 15 files changed, 106 insertions(+), 22 deletions(-) create mode 100644 platform/i18n/src/locales/en-US/SidePanel.json create mode 100644 platform/i18n/src/locales/en-US/StudyBrowser.json create mode 100644 platform/i18n/src/locales/es/AboutModal.json create mode 100644 platform/i18n/src/locales/es/DatePicker.json create mode 100644 platform/i18n/src/locales/es/SidePanel.json create mode 100644 platform/i18n/src/locales/es/StudyBrowser.json create mode 100644 platform/i18n/src/locales/es/ViewportDownloadForm.json diff --git a/platform/i18n/src/locales/en-US/SidePanel.json b/platform/i18n/src/locales/en-US/SidePanel.json new file mode 100644 index 000000000..e468fb574 --- /dev/null +++ b/platform/i18n/src/locales/en-US/SidePanel.json @@ -0,0 +1,4 @@ +{ + "Measurements": "Measurements", + "Studies": "Studies" +} diff --git a/platform/i18n/src/locales/en-US/StudyBrowser.json b/platform/i18n/src/locales/en-US/StudyBrowser.json new file mode 100644 index 000000000..b12c087f5 --- /dev/null +++ b/platform/i18n/src/locales/en-US/StudyBrowser.json @@ -0,0 +1,5 @@ +{ + "Primary": "Primary", + "Recent": "Recent", + "All": "All" +} diff --git a/platform/i18n/src/locales/en-US/StudyList.json b/platform/i18n/src/locales/en-US/StudyList.json index cbc2ffe6d..3c2c731ec 100644 --- a/platform/i18n/src/locales/en-US/StudyList.json +++ b/platform/i18n/src/locales/en-US/StudyList.json @@ -1,10 +1,19 @@ { "AccessionNumber": "Accession #", + "ClearFilters": "Clear Filters", + "Description": "Description", "Empty": "Empty", + "Instances": "Instances", "MRN": "MRN", + "NumOfStudiesHiggerThan100Message": "Filter the list to 100 studies or less to enable sorting", "Modality": "Modality", "PatientName": "Patient Name", + "Previous": "< Back", + "Page": "Page", + "Next": "Next >", + "ResultsPerPage": "Results per page", + "Studies": "Studies", "StudyDate": "Study Date", "StudyDescription": "Description", "StudyList": "Study List" -} \ No newline at end of file +} diff --git a/platform/i18n/src/locales/en-US/index.js b/platform/i18n/src/locales/en-US/index.js index b21c68812..279856d0a 100644 --- a/platform/i18n/src/locales/en-US/index.js +++ b/platform/i18n/src/locales/en-US/index.js @@ -5,6 +5,8 @@ import Common from './Common.json'; import DatePicker from './DatePicker.json'; import Header from './Header.json'; import MeasurementTable from './MeasurementTable.json'; +import SidePanel from './SidePanel.json'; +import StudyBrowser from './StudyBrowser.json'; import StudyList from './StudyList.json'; import UserPreferencesModal from './UserPreferencesModal.json'; import ViewportDownloadForm from './ViewportDownloadForm.json'; @@ -18,6 +20,8 @@ export default { DatePicker, Header, MeasurementTable, + SidePanel, + StudyBrowser, StudyList, UserPreferencesModal, ViewportDownloadForm, diff --git a/platform/i18n/src/locales/es/AboutModal.json b/platform/i18n/src/locales/es/AboutModal.json new file mode 100644 index 000000000..74cab12b2 --- /dev/null +++ b/platform/i18n/src/locales/es/AboutModal.json @@ -0,0 +1,14 @@ +{ + "Browser": "Navegador", + "Build Number": "Número de compilación", + "Latest Master Commits": "Últimos Master Commits", + "More details": "Más detalles", + "Name": "Nombre", + "OHIF Viewer - About": "Sobre OHIF Viewer", + "OS": "SO", + "Report an issue": "Informar un problema", + "Repository URL": "URL del repositorio", + "Value": "Valor", + "Version Information": "Información de la versión", + "Visit the forum": "Visita el foro" +} diff --git a/platform/i18n/src/locales/es/DatePicker.json b/platform/i18n/src/locales/es/DatePicker.json new file mode 100644 index 000000000..2c89998f0 --- /dev/null +++ b/platform/i18n/src/locales/es/DatePicker.json @@ -0,0 +1,5 @@ +{ + "Clear dates": "Borrar fechas", + "End Date": "Fecha fin", + "Start Date": "Fecha inicio" +} diff --git a/platform/i18n/src/locales/es/SidePanel.json b/platform/i18n/src/locales/es/SidePanel.json new file mode 100644 index 000000000..5581ad10d --- /dev/null +++ b/platform/i18n/src/locales/es/SidePanel.json @@ -0,0 +1,4 @@ +{ + "Measurements": "Mediciones", + "Studies": "Estudios" +} diff --git a/platform/i18n/src/locales/es/StudyBrowser.json b/platform/i18n/src/locales/es/StudyBrowser.json new file mode 100644 index 000000000..72f6defab --- /dev/null +++ b/platform/i18n/src/locales/es/StudyBrowser.json @@ -0,0 +1,6 @@ +{ + "Primary": "Primario", + "Recent": "Reciente", + "All": "Todos", + "Studies": "Estudios" +} diff --git a/platform/i18n/src/locales/es/StudyList.json b/platform/i18n/src/locales/es/StudyList.json index 8a8d40521..b20d1c98c 100644 --- a/platform/i18n/src/locales/es/StudyList.json +++ b/platform/i18n/src/locales/es/StudyList.json @@ -1,10 +1,19 @@ { - "AccessionNumber": "Número de Adhesión", + "AccessionNumber": "Num. Adhesión", + "ClearFilters": "Limpiar filtros", + "Description": "Descripción", "Empty": "vacío", + "Instances": "Instancias", "MRN": "MRN", + "NumOfStudiesHiggerThan100Message": "Filtre la lista a 100 estudios o menos para habilitar la clasificación", "Modality": "Modalidad", - "PatientName": "Nombre del paciente", - "StudyDate": "Fetcha de estudio", + "PatientName": "Nombre paciente", + "Previous": "< Anterior", + "Page": "Página", + "Next": "Siguiente >", + "ResultsPerPage": "Resultados por página", + "Studies": "Estudios", + "StudyDate": "Fecha del estudio", "StudyDescription": "Descripción", - "StudyList": "Lista de Estudio" -} \ No newline at end of file + "StudyList": "Lista de Estudios" +} diff --git a/platform/i18n/src/locales/es/ViewportDownloadForm.json b/platform/i18n/src/locales/es/ViewportDownloadForm.json new file mode 100644 index 000000000..95dfb83e0 --- /dev/null +++ b/platform/i18n/src/locales/es/ViewportDownloadForm.json @@ -0,0 +1,14 @@ +{ + "emptyFilenameError": "El nombre del fichero no puede ser vacío.", + "fileType": "Tipo de fichero", + "filename": "Nombre del fichero", + "formTitle": "Por favor especifica las dimensiones, nombre del fichero, y el tipo deseado para el fichero generado.", + "imageHeight": "Altura de la imagen (px)", + "imagePreview": "Preview de la imagen", + "imageWidth": "Anchura de la imagen (px)", + "keepAspectRatio": "Mantener el ratio de aspecto", + "loadingPreview": "Cargando el preview de la imagen...", + "minHeightError": "La altura mínima es 100px.", + "minWidthError": "La anchura mínima es 100px.", + "showAnnotations": "Mostrar las anotaciones" +} diff --git a/platform/i18n/src/locales/es/index.js b/platform/i18n/src/locales/es/index.js index 9ac8a8b84..80a1aaa94 100644 --- a/platform/i18n/src/locales/es/index.js +++ b/platform/i18n/src/locales/es/index.js @@ -1,19 +1,29 @@ +import AboutModal from './AboutModal.json'; import Buttons from './Buttons.json'; import CineDialog from './CineDialog.json'; import Common from './Common.json'; +import DatePicker from './DatePicker.json'; import Header from './Header.json'; import MeasurementTable from './MeasurementTable.json'; +import SidePanel from './SidePanel.json'; +import StudyBrowser from './StudyBrowser.json'; import StudyList from './StudyList.json'; import UserPreferencesModal from './UserPreferencesModal.json'; +import ViewportDownloadForm from './ViewportDownloadForm.json'; export default { es: { + AboutModal, Buttons, CineDialog, Common, + DatePicker, Header, MeasurementTable, + SidePanel, + StudyBrowser, StudyList, UserPreferencesModal, + ViewportDownloadForm, }, }; diff --git a/platform/ui/src/components/SidePanel/SidePanel.tsx b/platform/ui/src/components/SidePanel/SidePanel.tsx index 6c19878cb..53be594a3 100644 --- a/platform/ui/src/components/SidePanel/SidePanel.tsx +++ b/platform/ui/src/components/SidePanel/SidePanel.tsx @@ -1,15 +1,15 @@ -import React, { useState, useRef, useEffect, useCallback } from 'react'; -import PropTypes from 'prop-types'; import classnames from 'classnames'; +import PropTypes from 'prop-types'; +import React, { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { Swiper, SwiperSlide } from 'swiper/react'; import SwiperCore, { A11y, Controller, + Navigation, Pagination, Scrollbar, - Navigation, } from 'swiper'; +import { Swiper, SwiperSlide } from 'swiper/react'; import { Button, Icon, IconButton, Tooltip } from '../'; @@ -203,7 +203,7 @@ const SidePanel = ({ /> {/* Todo: ass secondary label here */} - {tabs.length === 1 && t(tabs[activeTabIndex].label) as string} + {tabs.length === 1 && (t(tabs[activeTabIndex].label) as string)}
diff --git a/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx b/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx index aa4b54dbd..5ae39fcef 100644 --- a/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx +++ b/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx @@ -31,7 +31,7 @@ const StudyListFilter = ({
- {t('Study list')} + {t('StudyList')}
@@ -45,7 +45,7 @@ const StudyListFilter = ({ startIcon={} onClick={clearFilters} > - {t('Clear filters')} + {t('ClearFilters')} )}

- {t('Filter list to 100 studies or less to enable sorting')} + {t('NumOfStudiesHiggerThan100Message')}

diff --git a/platform/ui/src/components/StudyListPagination/StudyListPagination.tsx b/platform/ui/src/components/StudyListPagination/StudyListPagination.tsx index c03f02b81..a21a4a8b7 100644 --- a/platform/ui/src/components/StudyListPagination/StudyListPagination.tsx +++ b/platform/ui/src/components/StudyListPagination/StudyListPagination.tsx @@ -47,13 +47,13 @@ const StudyListPagination = ({ onChange={onSelectedRange} /> - {t('Results per page')} + {t('ResultsPerPage')}
- Page {currentPage} + {t('Page')} {currentPage}
diff --git a/platform/viewer/src/routes/WorkList/filtersMeta.js b/platform/viewer/src/routes/WorkList/filtersMeta.js index 95724a30d..a6bf204b5 100644 --- a/platform/viewer/src/routes/WorkList/filtersMeta.js +++ b/platform/viewer/src/routes/WorkList/filtersMeta.js @@ -1,7 +1,7 @@ const filtersMeta = [ { name: 'patientName', - displayName: 'Patient Name', + displayName: 'PatientName', inputType: 'Text', isSortable: true, gridCol: 4, @@ -15,14 +15,14 @@ const filtersMeta = [ }, { name: 'studyDate', - displayName: 'Study date', + displayName: 'StudyDate', inputType: 'DateRange', isSortable: true, gridCol: 5, }, { name: 'description', - displayName: 'Description', + displayName: 'StudyDescription', inputType: 'Text', isSortable: true, gridCol: 4, @@ -110,7 +110,7 @@ const filtersMeta = [ }, { name: 'accession', - displayName: 'Accession', + displayName: 'AccessionNumber', inputType: 'Text', isSortable: true, gridCol: 3, From 35d078721176030ba1ebf3842630dfa2de547498 Mon Sep 17 00:00:00 2001 From: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com> Date: Tue, 28 Feb 2023 15:57:19 -0500 Subject: [PATCH 39/47] feat(ViewportActionBar and CinePlayer): Add new design for action bar and cine player (#3204) * feat(ViewportActionBar): OHIF issue #3123 (#3186) * feat(ViewportActionBar): OHIF issue #3123 - Renamed previous viewport action bar to be LegacyViewportActionBar - Components LegacyViewportActionBar depends on also renamed: LegacyCinePlayer and LegacyPatientInfo - New Viewport coded to specs in issue - added React hook useResizeObserver - added some tailwind classes * Updated tailwind to 3.2.7. Put external imports like React at the top of the import list. * feat(CinePlayer and ViewportActionBar) (#3198) * feat(CinePlayer and ViewportActionBar) - OHIF issue 3123 - new look cine control implemented - new custom blue color in tailwind config for various hover backgrounds in the cine control - new icons added for cine - Tooltip component now can be placed top (center) on hover - Tooltip component border colour now consistent with specs - fixed NPE in ViewportActionBar - upgraded tailwind to 3.2.7 in platform/ui - fixed issues in various button components brought by tailwind 3.2.7 where classes now need important flag - fixed issue with InputRange component so that the tracked value property can change externally - InputRange component can now optionally show its label - added new measurement tracking state service to hydrate SR without prompting - segmentation can also now be hydrated without prompting * PR feedback: - cine centralized to OHIFCornerstoneViewport - introduced a type for the CinePlayer properties * Addressed PR comments and concerns... The DOM ref for the root component of the ViewportActionBar is now added to state so that the various callbacks and ResizeObserver are updated with it. The CinePlayer FPS slider tooltip was moved up so that its arrow does not intersect the FPS text. The hover area for the CinePlayer slider tooltip is now the FPS < > buttons and text. The tracked measurements are now filtered to only include those of the active viewport series when the tracked measurement navigation arrows are used. * Addressed PR comments... The update to tailwind 3.2.7 caused several look-and-feel, UI regressions, so we are rolling back to 3.2.4. --- .../viewports/OHIFCornerstoneSEGViewport.tsx | 32 +-- .../src/viewports/_getStatusComponent.tsx | 88 +++---- .../viewports/OHIFCornerstoneSRViewport.tsx | 127 +++------- .../src/Viewport/OHIFCornerstoneViewport.tsx | 91 ++++++++ .../src/Viewport/Overlays/ViewportOverlay.tsx | 6 +- .../TrackedMeasurementsContext.tsx | 5 + .../hydrateStructuredReport.tsx | 33 +++ .../measurementTrackingMachine.js | 20 ++ .../viewports/TrackedCornerstoneViewport.tsx | 111 ++------- platform/docs/tailwind.config.js | 11 +- platform/i18n/src/locales/en-US/Common.json | 3 +- .../ui/src/assets/icons/arrow-left-small.svg | 6 + .../ui/src/assets/icons/arrow-right-small.svg | 6 + platform/ui/src/assets/icons/chevron-next.svg | 6 + platform/ui/src/assets/icons/chevron-prev.svg | 6 + .../ui/src/assets/icons/component-slider.svg | 3 + platform/ui/src/assets/icons/icon-close.svg | 8 + platform/ui/src/assets/icons/icon-pause.svg | 6 + platform/ui/src/assets/icons/icon-play.svg | 6 + platform/ui/src/assets/icons/info-action.svg | 10 + platform/ui/src/assets/icons/status-alert.svg | 7 + .../ui/src/assets/icons/status-locked.svg | 7 + .../ui/src/assets/icons/status-tracked.svg | 7 + .../ui/src/assets/icons/status-untracked.svg | 6 + .../src/components/CinePlayer/CinePlayer.css | 3 + .../src/components/CinePlayer/CinePlayer.tsx | 119 ++++++---- .../__stories__/cinePlayer.stories.mdx | 32 --- platform/ui/src/components/Icon/getIcon.js | 25 ++ .../src/components/IconButton/IconButton.tsx | 2 +- .../src/components/InputRange/InputRange.tsx | 27 ++- .../LegacyCinePlayer/LegacyCinePlayer.tsx | 99 ++++++++ .../LegacyCinePlayerCustomInputRange.css} | 28 +-- .../__stories__/legacyCinePlayer.stories.mdx | 35 +++ .../src/components/LegacyCinePlayer/index.js | 2 + .../LegacyPatientInfo/LegacyPatientInfo.tsx | 149 ++++++++++++ .../src/components/LegacyPatientInfo/index.js | 2 + .../LegacyViewportActionBar.stories.tsx} | 8 +- .../LegacyViewportActionBar.tsx | 180 +++++++++++++++ .../LegacyViewportActionBar/index.js | 2 + .../components/PatientInfo/PatientInfo.tsx | 14 +- .../SegmentationConfig.tsx | 27 ++- .../components/SplitButton/SplitButton.tsx | 6 +- .../ToolbarButton/ToolbarButton.tsx | 8 +- .../ui/src/components/Tooltip/Tooltip.tsx | 12 +- .../ui/src/components/Tooltip/tooltip.css | 17 ++ .../ui/src/components/Viewport/Viewport.tsx | 4 +- .../ViewportActionBar/ViewportActionBar.tsx | 217 ++++++++++-------- .../ViewportActionBar/{index.js => index.tsx} | 0 platform/ui/src/components/index.js | 10 +- platform/ui/src/hooks/index.ts | 3 + platform/ui/src/hooks/useResizeObserver.ts | 28 +++ platform/ui/src/index.js | 2 + platform/ui/tailwind.config.js | 11 +- platform/viewer/tailwind.config.js | 11 +- yarn.lock | 24 +- 55 files changed, 1205 insertions(+), 513 deletions(-) create mode 100644 extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx create mode 100644 platform/ui/src/assets/icons/arrow-left-small.svg create mode 100644 platform/ui/src/assets/icons/arrow-right-small.svg create mode 100644 platform/ui/src/assets/icons/chevron-next.svg create mode 100644 platform/ui/src/assets/icons/chevron-prev.svg create mode 100644 platform/ui/src/assets/icons/component-slider.svg create mode 100644 platform/ui/src/assets/icons/icon-close.svg create mode 100644 platform/ui/src/assets/icons/icon-pause.svg create mode 100644 platform/ui/src/assets/icons/icon-play.svg create mode 100644 platform/ui/src/assets/icons/info-action.svg create mode 100644 platform/ui/src/assets/icons/status-alert.svg create mode 100644 platform/ui/src/assets/icons/status-locked.svg create mode 100644 platform/ui/src/assets/icons/status-tracked.svg create mode 100644 platform/ui/src/assets/icons/status-untracked.svg create mode 100644 platform/ui/src/components/CinePlayer/CinePlayer.css delete mode 100644 platform/ui/src/components/CinePlayer/__stories__/cinePlayer.stories.mdx create mode 100644 platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayer.tsx rename platform/ui/src/components/{CinePlayer/CinePlayerCustomInputRange.css => LegacyCinePlayer/LegacyCinePlayerCustomInputRange.css} (66%) create mode 100644 platform/ui/src/components/LegacyCinePlayer/__stories__/legacyCinePlayer.stories.mdx create mode 100644 platform/ui/src/components/LegacyCinePlayer/index.js create mode 100644 platform/ui/src/components/LegacyPatientInfo/LegacyPatientInfo.tsx create mode 100644 platform/ui/src/components/LegacyPatientInfo/index.js rename platform/ui/src/components/{ViewportActionBar/ViewportActionBar.stories.tsx => LegacyViewportActionBar/LegacyViewportActionBar.stories.tsx} (82%) create mode 100644 platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.tsx create mode 100644 platform/ui/src/components/LegacyViewportActionBar/index.js rename platform/ui/src/components/ViewportActionBar/{index.js => index.tsx} (100%) create mode 100644 platform/ui/src/hooks/index.ts create mode 100644 platform/ui/src/hooks/useResizeObserver.ts diff --git a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx index 7644aa045..cf0479ee1 100644 --- a/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx +++ b/extensions/cornerstone-dicom-seg/src/viewports/OHIFCornerstoneSEGViewport.tsx @@ -1,19 +1,13 @@ -import React, { useCallback, useEffect, useRef, useState } from 'react'; import PropTypes from 'prop-types'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import OHIF, { utils } from '@ohif/core'; import { - Notification, - ViewportActionBar, - useViewportGrid, - useViewportDialog, - LoadingIndicatorProgress, + LoadingIndicatorProgress, Notification, useViewportDialog, useViewportGrid, ViewportActionBar } from '@ohif/ui'; - -import { useTranslation } from 'react-i18next'; - import createSEGToolGroupAndAddTools from '../utils/initSEGToolGroup'; -import _hydrateSEGDisplaySet from '../utils/_hydrateSEG'; import promptHydrateSEG from '../utils/promptHydrateSEG'; +import hydrateSEGDisplaySet from '../utils/_hydrateSEG'; import _getStatusComponent from './_getStatusComponent'; const { formatDate } = utils; @@ -307,16 +301,15 @@ function OHIFCornerstoneSEGViewport(props) { SeriesNumber, } = referencedDisplaySetRef.current.metadata; - const onPillClick = () => { - promptHydrateSEG({ - servicesManager, - viewportIndex, + const onStatusClick = async () => { + const isHydrated = await hydrateSEGDisplaySet({ segDisplaySet, - }).then(isHydrated => { - if (isHydrated) { - setIsHydrated(true); - } + viewportIndex, + toolGroupId, + servicesManager, }); + + setIsHydrated(isHydrated); }; return ( @@ -330,14 +323,13 @@ function OHIFCornerstoneSEGViewport(props) { getStatusComponent={() => { return _getStatusComponent({ isHydrated, - onPillClick, + onStatusClick, }); }} studyData={{ label: viewportLabel, useAltStyling: true, studyDate: formatDate(StudyDate), - currentSeries: SeriesNumber, seriesDescription: `SEG Viewport ${SeriesDescription}`, patientInformation: { patientName: PatientName diff --git a/extensions/cornerstone-dicom-seg/src/viewports/_getStatusComponent.tsx b/extensions/cornerstone-dicom-seg/src/viewports/_getStatusComponent.tsx index 3ef7d3ce1..f9614f806 100644 --- a/extensions/cornerstone-dicom-seg/src/viewports/_getStatusComponent.tsx +++ b/extensions/cornerstone-dicom-seg/src/viewports/_getStatusComponent.tsx @@ -1,92 +1,56 @@ import React from 'react'; -import classNames from 'classnames'; +import { useTranslation } from 'react-i18next'; import { Icon, Tooltip } from '@ohif/ui'; -import _hydrateSEGDisplaySet from '../utils/_hydrateSEG'; -export default function _getStatusComponent({ isHydrated, onPillClick }) { +export default function _getStatusComponent({ isHydrated, onStatusClick }) { let ToolTipMessage = null; let StatusIcon = null; + const {t} = useTranslation("Common"); + const loadStr = t("LOAD"); + switch (isHydrated) { case true: - StatusIcon = () => ( -
- -
- ); + StatusIcon = () => ; ToolTipMessage = () => (
This Segmentation is loaded in the segmentation panel
); break; - case false: - StatusIcon = () => ( -
- -
- ); + case false: + StatusIcon = () => ; - ToolTipMessage = () =>
Click to load segmentation.
; + ToolTipMessage = () =>
Click LOAD to load segmentation.
; } - const StatusPill = () => ( -
{ - if (!isHydrated) { - if (onPillClick) { - onPillClick(); - } - } - }} - > -
- SEG + const StatusArea = () => ( +
+
+ + SEG
- + {!isHydrated && ( +
+ {loadStr} +
+ )}
); + return ( <> {ToolTipMessage && ( } position="bottom-left"> - + )} - {!ToolTipMessage && } + {!ToolTipMessage && } ); } diff --git a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx index cb13803d7..61068726c 100644 --- a/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/viewports/OHIFCornerstoneSRViewport.tsx @@ -1,18 +1,17 @@ -import React, { useCallback, useContext, useEffect, useState } from 'react'; import PropTypes from 'prop-types'; -import OHIF, { utils } from '@ohif/core'; +import React, { useCallback, useContext, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; +import OHIF, { utils } from '@ohif/core'; import { setTrackingUniqueIdentifiersForElement } from '../tools/modules/dicomSRModule'; import { - Notification, - ViewportActionBar, - useViewportGrid, - useViewportDialog, - Tooltip, Icon, + Notification, + Tooltip, + useViewportDialog, + useViewportGrid, + ViewportActionBar, } from '@ohif/ui'; -import classNames from 'classnames'; import hydrateStructuredReport from '../utils/hydrateStructuredReport'; const { formatDate } = utils; @@ -33,8 +32,6 @@ function OHIFCornerstoneSRViewport(props) { extensionManager, } = props; - const { t } = useTranslation('SRViewport'); - const { displaySetService, cornerstoneViewportService, @@ -379,7 +376,6 @@ function OHIFCornerstoneSRViewport(props) { label: viewportLabel, useAltStyling: true, studyDate: formatDate(StudyDate), - currentSeries: SeriesNumber, seriesDescription: SeriesDescription || '', patientInformation: { patientName: PatientName @@ -468,13 +464,16 @@ function _getStatusComponent({ isLocked, sendTrackedMeasurementsEvent, }) { - const onPillClick = () => { - sendTrackedMeasurementsEvent('RESTORE_PROMPT_HYDRATE_SR', { + const handleMouseUp = () => { + sendTrackedMeasurementsEvent('HYDRATE_SR', { displaySetInstanceUID: srDisplaySet.displaySetInstanceUID, viewportIndex, }); }; + const { t } = useTranslation('Common'); + const loadStr = t('LOAD'); + // 1 - Incompatible // 2 - Locked // 3 - Rehydratable / Open @@ -485,22 +484,7 @@ function _getStatusComponent({ switch (state) { case 1: - StatusIcon = () => ( -
- -
- ); + StatusIcon = () => ; ToolTipMessage = () => (
@@ -511,20 +495,7 @@ function _getStatusComponent({ ); break; case 2: - StatusIcon = () => ( -
- -
- ); + StatusIcon = () => ; ToolTipMessage = () => (
@@ -537,48 +508,28 @@ function _getStatusComponent({ ); break; case 3: - StatusIcon = () => ( -
- -
- ); + StatusIcon = () => ; - ToolTipMessage = () =>
Click to restore measurements.
; + ToolTipMessage = () => ( +
{`Click ${loadStr} to restore measurements.`}
+ ); } - const StatusPill = () => ( -
( +
+
+ + SR +
+ {state === 3 && ( +
+ {loadStr} +
)} - style={{ - height: '24px', - width: '55px', - }} - onClick={() => { - if (state === 3) { - if (onPillClick) { - onPillClick(); - } - } - }} - > - SR -
); @@ -586,22 +537,12 @@ function _getStatusComponent({ <> {ToolTipMessage && ( } position="bottom-left"> - + )} - {!ToolTipMessage && } + {!ToolTipMessage && } ); } -// function _onDoubleClick() { -// const cancelActiveManipulatorsForElement = cornerstoneTools.getModule( -// 'manipulatorState' -// ).setters.cancelActiveManipulatorsForElement; -// const enabledElements = cornerstoneTools.store.state.enabledElements; -// enabledElements.forEach(element => { -// cancelActiveManipulatorsForElement(element); -// }); -// } - export default OHIFCornerstoneSRViewport; diff --git a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx index d150c44e0..e1a6bbb1b 100644 --- a/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx +++ b/extensions/cornerstone/src/Viewport/OHIFCornerstoneViewport.tsx @@ -20,6 +20,7 @@ import { IVolumeViewport, } from '@cornerstonejs/core/dist/esm/types'; import getSOPInstanceAttributes from '../utils/measurementServiceMappings/utils/getSOPInstanceAttributes'; +import { CinePlayer, useCine, useViewportGrid } from '@ohif/ui'; const STACK = 'stack'; @@ -112,6 +113,9 @@ const OHIFCornerstoneViewport = React.memo(props => { } = props; const [scrollbarHeight, setScrollbarHeight] = useState('100px'); + const [{ isCineEnabled, cines }, cineService] = useCine(); + const [{ activeViewportIndex }] = useViewportGrid(); + const [enabledVPElement, setEnabledVPElement] = useState(null); const elementRef = useRef(); @@ -126,6 +130,73 @@ const OHIFCornerstoneViewport = React.memo(props => { viewportGridService, } = servicesManager.services; + const cineHandler = () => { + if (!cines || !cines[viewportIndex] || !enabledVPElement) { + return; + } + + const cine = cines[viewportIndex]; + const isPlaying = cine.isPlaying || false; + const frameRate = cine.frameRate || 24; + + const validFrameRate = Math.max(frameRate, 1); + + if (isPlaying) { + cineService.playClip(enabledVPElement, { + framesPerSecond: validFrameRate, + }); + } else { + cineService.stopClip(enabledVPElement); + } + }; + + useEffect(() => { + eventTarget.addEventListener( + Enums.Events.STACK_VIEWPORT_NEW_STACK, + cineHandler + ); + + return () => { + cineService.setCine({ id: viewportIndex, isPlaying: false }); + eventTarget.removeEventListener( + Enums.Events.STACK_VIEWPORT_NEW_STACK, + cineHandler + ); + }; + }, [enabledVPElement]); + + useEffect(() => { + if (!cines || !cines[viewportIndex] || !enabledVPElement) { + return; + } + + cineHandler(); + + return () => { + if (enabledVPElement && cines?.[viewportIndex]?.isPlaying) { + cineService.stopClip(enabledVPElement); + } + }; + }, [cines, viewportIndex, cineService, enabledVPElement, cineHandler]); + + const cine = cines[viewportIndex]; + const isPlaying = (cine && cine.isPlaying) || false; + + const handleCineClose = () => { + toolbarService.recordInteraction({ + groupId: 'MoreTools', + itemId: 'cine', + interactionType: 'toggle', + commands: [ + { + commandName: 'toggleCine', + commandOptions: {}, + context: 'CORNERSTONE', + }, + ], + }); + }; + // useCallback for scroll bar height calculation const setImageScrollBarHeight = useCallback(() => { const scrollbarHeight = `${elementRef.current.clientHeight - 20}px`; @@ -176,6 +247,7 @@ const OHIFCornerstoneViewport = React.memo(props => { const viewportIndex = viewportInfo.getViewportIndex(); setEnabledElement(viewportIndex, element); + setEnabledVPElement(element); const renderingEngineId = viewportInfo.getRenderingEngineId(); const toolGroupId = viewportInfo.getToolGroupId(); @@ -360,6 +432,25 @@ const OHIFCornerstoneViewport = React.memo(props => { scrollbarHeight={scrollbarHeight} servicesManager={servicesManager} /> + {isCineEnabled && ( + + cineService.setCine({ + id: activeViewportIndex, + isPlaying, + }) + } + onFrameRateChange={frameRate => + cineService.setCine({ + id: activeViewportIndex, + frameRate, + }) + } + /> + )}
); }, areEqual); diff --git a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx index b9e542b94..b3ecf6e2c 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/ViewportOverlay.tsx @@ -129,7 +129,7 @@ function CornerstoneViewportOverlay({ } return ( -
+
W: {windowWidth.toFixed(0)} L: @@ -140,7 +140,7 @@ function CornerstoneViewportOverlay({ if (activeTools.includes('Zoom')) { return ( -
+
Zoom: {scale.toFixed(2)}x
@@ -174,7 +174,7 @@ function CornerstoneViewportOverlay({ } return ( -
+
I: {instanceNumber !== undefined diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx index b35f16389..476e80a40 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/TrackedMeasurementsContext.tsx @@ -12,6 +12,7 @@ import promptTrackNewSeries from './promptTrackNewSeries'; import promptTrackNewStudy from './promptTrackNewStudy'; import promptSaveReport from './promptSaveReport'; import promptHydrateStructuredReport from './promptHydrateStructuredReport'; +import hydrateStructuredReport from './hydrateStructuredReport'; const TrackedMeasurementsContext = React.createContext(); TrackedMeasurementsContext.displayName = 'TrackedMeasurementsContext'; @@ -106,6 +107,10 @@ function TrackedMeasurementsContextProvider( servicesManager, extensionManager, }), + hydrateStructuredReport: hydrateStructuredReport.bind(null, { + servicesManager, + extensionManager, + }), }); // TODO: IMPROVE diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx new file mode 100644 index 000000000..5a1be430b --- /dev/null +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/hydrateStructuredReport.tsx @@ -0,0 +1,33 @@ +import { hydrateStructuredReport as baseHydrateStructuredReport } from '@ohif/extension-cornerstone-dicom-sr'; + +function hydrateStructuredReport( + { servicesManager, extensionManager }, + ctx, + evt +) { + const { displaySetService } = servicesManager.services; + const { viewportIndex, displaySetInstanceUID } = evt; + const srDisplaySet = displaySetService.getDisplaySetByUID( + displaySetInstanceUID + ); + + return new Promise((resolve, reject) => { + const hydrationResult = baseHydrateStructuredReport( + { servicesManager, extensionManager }, + displaySetInstanceUID + ); + + const StudyInstanceUID = hydrationResult.StudyInstanceUID; + const SeriesInstanceUIDs = hydrationResult.SeriesInstanceUIDs; + + resolve({ + displaySetInstanceUID: evt.displaySetInstanceUID, + srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID, + viewportIndex, + StudyInstanceUID, + SeriesInstanceUIDs, + }); + }); +} + +export default hydrateStructuredReport; diff --git a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js index a6e45850e..08c6b8c4a 100644 --- a/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js +++ b/extensions/measurement-tracking/src/contexts/TrackedMeasurementsContext/measurementTrackingMachine.js @@ -1,3 +1,4 @@ +import { hydrateStructuredReport } from '@ohif/extension-cornerstone-dicom-sr'; import { assign } from 'xstate'; const RESPONSE = { @@ -45,6 +46,7 @@ const machineConfiguration = { cond: 'hasNotIgnoredSRSeriesForHydration', }, RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport', + HYDRATE_SR: 'hydrateStructuredReport', }, }, promptBeginTracking: { @@ -232,6 +234,24 @@ const machineConfiguration = { }, }, }, + hydrateStructuredReport: { + invoke: { + src: 'hydrateStructuredReport', + onDone: [ + { + target: 'tracking', + actions: [ + 'setTrackedStudyAndMultipleSeries', + 'jumpToFirstMeasurementInActiveViewport', + 'setIsDirtyToClean', + ], + }, + ], + onError: { + target: 'idle', + }, + }, + }, }, strict: true, }; diff --git a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx index c732215f4..97ac7affc 100644 --- a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx +++ b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx @@ -5,8 +5,6 @@ import OHIF, { utils } from '@ohif/core'; import { Notification, ViewportActionBar, - useCine, - useViewportGrid, useViewportDialog, Tooltip, Icon, @@ -14,7 +12,6 @@ import { import { useTranslation } from 'react-i18next'; -import { eventTarget, Enums } from '@cornerstonejs/core'; import { annotation } from '@cornerstonejs/tools'; import { useTrackedMeasurements } from './../getContextModule'; @@ -43,12 +40,9 @@ function TrackedCornerstoneViewport(props) { const displaySet = displaySets[0]; const [trackedMeasurements] = useTrackedMeasurements(); - const [{ activeViewportIndex }] = useViewportGrid(); - const [{ isCineEnabled, cines }, cineService] = useCine(); const [viewportDialogState] = useViewportDialog(); const [isTracked, setIsTracked] = useState(false); const [trackedMeasurementUID, setTrackedMeasurementUID] = useState(null); - const [element, setElement] = useState(null); const { trackedSeries } = trackedMeasurements.context; const viewportId = viewportOptions.viewportId; @@ -71,26 +65,6 @@ function TrackedCornerstoneViewport(props) { ManufacturerModelName, } = displaySet.images[0]; - const cineHandler = () => { - if (!cines || !cines[viewportIndex] || !element) { - return; - } - - const cine = cines[viewportIndex]; - const isPlaying = cine.isPlaying || false; - const frameRate = cine.frameRate || 24; - - const validFrameRate = Math.max(frameRate, 1); - - if (isPlaying) { - cineService.playClip(element, { - framesPerSecond: validFrameRate, - }); - } else { - cineService.stopClip(element); - } - }; - useEffect(() => { if (isTracked) { annotation.config.style.setViewportToolStyles(viewportId, { @@ -119,50 +93,10 @@ function TrackedCornerstoneViewport(props) { }; }, [isTracked]); - // unmount cleanup - useEffect(() => { - eventTarget.addEventListener( - Enums.Events.STACK_VIEWPORT_NEW_STACK, - cineHandler - ); - - return () => { - cineService.setCine({ id: viewportIndex, isPlaying: false }); - eventTarget.removeEventListener( - Enums.Events.STACK_VIEWPORT_NEW_STACK, - cineHandler - ); - }; - }, [element]); - - useEffect(() => { - if (!cines || !cines[viewportIndex] || !element) { - return; - } - - cineHandler(); - - return () => { - if (element && cines?.[viewportIndex]?.isPlaying) { - cineService.stopClip(element); - } - }; - }, [cines, viewportIndex, cineService, element, cineHandler]); - if (trackedSeries.includes(SeriesInstanceUID) !== isTracked) { setIsTracked(!isTracked); } - /** - * OnElementEnabled callback which is called after the cornerstoneExtension - * has enabled the element. Note: we delegate all the image rendering to - * cornerstoneExtension, so we don't need to do anything here regarding - * the image rendering, element enabling etc. - */ - const onElementEnabled = evt => { - setElement(evt.detail.element); - }; - function switchMeasurement(direction) { const newTrackedMeasurementUID = _getNextMeasurementUID( direction, @@ -188,12 +122,9 @@ function TrackedCornerstoneViewport(props) { '@ohif/extension-cornerstone.viewportModule.cornerstone' ); - return ; + return ; }; - const cine = cines[viewportIndex]; - const isPlaying = (cine && cine.isPlaying) || false; - return ( <> commandsManager.runCommand('toggleCine'), - onPlayPauseChange: isPlaying => - cineService.setCine({ - id: activeViewportIndex, - isPlaying, - }), - onFrameRateChange: frameRate => - cineService.setCine({ - id: activeViewportIndex, - frameRate, - }), - }} /> {/* TODO: Viewport interface to accept stack or layers of content like this? */}
@@ -281,17 +194,25 @@ function _getNextMeasurementUID( trackedMeasurementId, trackedMeasurements ) { - const { measurementService } = servicesManager.services; + const { measurementService, viewportGridService } = servicesManager.services; const measurements = measurementService.getMeasurements(); + const { activeViewportIndex, viewports } = viewportGridService.getState(); + const { + displaySetInstanceUIDs: activeViewportDisplaySetInstanceUIDs, + } = viewports[activeViewportIndex]; + const { trackedSeries } = trackedMeasurements.context; - // Get the potentially trackable measurements for this series, + // Get the potentially trackable measurements for the series of the + // active viewport. // The measurements to jump between are the same // regardless if this series is tracked or not. - const filteredMeasurements = measurements.filter(m => - trackedSeries.includes(m.referenceSeriesUID) + const filteredMeasurements = measurements.filter( + m => + trackedSeries.includes(m.referenceSeriesUID) && + activeViewportDisplaySetInstanceUIDs.includes(m.displaySetInstanceUID) ); if (!filteredMeasurements.length) { @@ -329,7 +250,7 @@ function _getNextMeasurementUID( } function _getStatusComponent(isTracked) { - const trackedIcon = isTracked ? 'tracked' : 'dotted-circle'; + const trackedIcon = isTracked ? 'status-tracked' : 'status-untracked'; return (
@@ -361,7 +282,7 @@ function _getStatusComponent(isTracked) {
} > - +
); diff --git a/platform/docs/tailwind.config.js b/platform/docs/tailwind.config.js index a6cfc1953..3081fe2e2 100644 --- a/platform/docs/tailwind.config.js +++ b/platform/docs/tailwind.config.js @@ -53,11 +53,17 @@ module.exports = { customgreen: { 100: '#05D97C', + 200: '#0FD97C', }, customblue: { 100: '#c4fdff', 200: '#38daff', + 300: '#1D204D', + }, + + customgray: { + 100: '#262943', }, gray: { @@ -338,14 +344,15 @@ module.exports = { full: '100%', screen: '100vh', }), - inset: { + inset: theme => ({ + ...theme('spacing'), '0': '0', auto: 'auto', full: '100%', viewport: '0.5rem', '1/2': '50%', 'viewport-scrollbar': '1.3rem', - }, + }), letterSpacing: { tighter: '-0.05em', tight: '-0.025em', diff --git a/platform/i18n/src/locales/en-US/Common.json b/platform/i18n/src/locales/en-US/Common.json index 64c587150..ff2e5d3b1 100644 --- a/platform/i18n/src/locales/en-US/Common.json +++ b/platform/i18n/src/locales/en-US/Common.json @@ -2,6 +2,7 @@ "Close": "Close", "Image": "Image", "Layout": "Layout", + "LOAD": "LOAD", "Measurements": "Measurements", "More": "More", "Next": "Next", @@ -13,4 +14,4 @@ "Show": "Show", "Stop": "Stop", "StudyDate": "Study Date" -} \ No newline at end of file +} diff --git a/platform/ui/src/assets/icons/arrow-left-small.svg b/platform/ui/src/assets/icons/arrow-left-small.svg new file mode 100644 index 000000000..4a86c50e2 --- /dev/null +++ b/platform/ui/src/assets/icons/arrow-left-small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/arrow-right-small.svg b/platform/ui/src/assets/icons/arrow-right-small.svg new file mode 100644 index 000000000..6d72336f6 --- /dev/null +++ b/platform/ui/src/assets/icons/arrow-right-small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/chevron-next.svg b/platform/ui/src/assets/icons/chevron-next.svg new file mode 100644 index 000000000..197f3f2d4 --- /dev/null +++ b/platform/ui/src/assets/icons/chevron-next.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/chevron-prev.svg b/platform/ui/src/assets/icons/chevron-prev.svg new file mode 100644 index 000000000..dcd01a2b8 --- /dev/null +++ b/platform/ui/src/assets/icons/chevron-prev.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/component-slider.svg b/platform/ui/src/assets/icons/component-slider.svg new file mode 100644 index 000000000..b52165689 --- /dev/null +++ b/platform/ui/src/assets/icons/component-slider.svg @@ -0,0 +1,3 @@ + + + diff --git a/platform/ui/src/assets/icons/icon-close.svg b/platform/ui/src/assets/icons/icon-close.svg new file mode 100644 index 000000000..75066f4d0 --- /dev/null +++ b/platform/ui/src/assets/icons/icon-close.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/platform/ui/src/assets/icons/icon-pause.svg b/platform/ui/src/assets/icons/icon-pause.svg new file mode 100644 index 000000000..00f45ac29 --- /dev/null +++ b/platform/ui/src/assets/icons/icon-pause.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/icon-play.svg b/platform/ui/src/assets/icons/icon-play.svg new file mode 100644 index 000000000..226ae614d --- /dev/null +++ b/platform/ui/src/assets/icons/icon-play.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/assets/icons/info-action.svg b/platform/ui/src/assets/icons/info-action.svg new file mode 100644 index 000000000..305a6c385 --- /dev/null +++ b/platform/ui/src/assets/icons/info-action.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/platform/ui/src/assets/icons/status-alert.svg b/platform/ui/src/assets/icons/status-alert.svg new file mode 100644 index 000000000..3a88223e9 --- /dev/null +++ b/platform/ui/src/assets/icons/status-alert.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/platform/ui/src/assets/icons/status-locked.svg b/platform/ui/src/assets/icons/status-locked.svg new file mode 100644 index 000000000..344ffe329 --- /dev/null +++ b/platform/ui/src/assets/icons/status-locked.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/platform/ui/src/assets/icons/status-tracked.svg b/platform/ui/src/assets/icons/status-tracked.svg new file mode 100644 index 000000000..549063a49 --- /dev/null +++ b/platform/ui/src/assets/icons/status-tracked.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/platform/ui/src/assets/icons/status-untracked.svg b/platform/ui/src/assets/icons/status-untracked.svg new file mode 100644 index 000000000..cf347223f --- /dev/null +++ b/platform/ui/src/assets/icons/status-untracked.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/ui/src/components/CinePlayer/CinePlayer.css b/platform/ui/src/components/CinePlayer/CinePlayer.css new file mode 100644 index 000000000..ffa0a52b5 --- /dev/null +++ b/platform/ui/src/components/CinePlayer/CinePlayer.css @@ -0,0 +1,3 @@ +.cine-fps-range-tooltip .tooltip.tooltip-top { + bottom: 85% !important; +} diff --git a/platform/ui/src/components/CinePlayer/CinePlayer.tsx b/platform/ui/src/components/CinePlayer/CinePlayer.tsx index 6e0fe5b96..6ede1bf11 100644 --- a/platform/ui/src/components/CinePlayer/CinePlayer.tsx +++ b/platform/ui/src/components/CinePlayer/CinePlayer.tsx @@ -1,11 +1,28 @@ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import debounce from 'lodash.debounce'; -import { IconButton, Icon } from '../'; +import { Icon, Tooltip, InputRange } from '../'; -import './CinePlayerCustomInputRange.css'; +import './CinePlayer.css'; +import classNames from 'classnames'; -const CinePlayer = ({ +export type CinePlayerProps = { + className: string; + isPlaying: boolean; + minFrameRate: number; + maxFrameRate: number; + stepFrameRate: number; + frameRate: number; + onFrameRateChange: (value: number) => void; + onPlayPauseChange: (value: boolean) => void; + onClose: () => void; +}; + +const fpsButtonClassNames = + 'cursor-pointer text-primary-active active:text-primary-light hover:bg-customblue-300 w-4 flex items-center justify-center'; + +const CinePlayer: React.FC = ({ + className, isPlaying, minFrameRate, maxFrameRate, @@ -18,52 +35,68 @@ const CinePlayer = ({ const [frameRate, setFrameRate] = useState(defaultFrameRate); const debouncedSetFrameRate = debounce(onFrameRateChange, 300); - const onFrameRateChangeHandler = ({ target }) => { - const frameRate = parseFloat(target.value); - debouncedSetFrameRate(frameRate); + const getPlayPauseIconName = () => (isPlaying ? 'icon-pause' : 'icon-play'); + + const handleSetFrameRate = (frameRate: number) => { + if (frameRate < minFrameRate || frameRate > maxFrameRate) { + return; + } setFrameRate(frameRate); - }; - - const onPlayPauseChangeHandler = () => onPlayPauseChange(!isPlaying); - - const action = { - false: { icon: 'old-play' }, - true: { icon: 'old-stop' }, + debouncedSetFrameRate(frameRate); }; return ( -
- + onPlayPauseChange(!isPlaying)} + /> + + } > - - -
- -

{`${frameRate.toFixed( - 1 - )} fps`}

-
- +
handleSetFrameRate(frameRate - 1)} + > + +
+
+ {`${frameRate} FPS`} +
+
handleSetFrameRate(frameRate + 1)} + > + +
+
+ + - - + />
); }; diff --git a/platform/ui/src/components/CinePlayer/__stories__/cinePlayer.stories.mdx b/platform/ui/src/components/CinePlayer/__stories__/cinePlayer.stories.mdx deleted file mode 100644 index f53ba7112..000000000 --- a/platform/ui/src/components/CinePlayer/__stories__/cinePlayer.stories.mdx +++ /dev/null @@ -1,32 +0,0 @@ -import CinePlayer from '../CinePlayer'; -import { ArgsTable, Story, Canvas, Meta } from '@storybook/addon-docs'; -import { createComponentTemplate } from '../../../storybook/functions/create-component-story'; - -export const argTypes = { - component: CinePlayer, - title: 'Components/CinePlayer', -}; - - - -export const cineTemplate = createComponentTemplate(CinePlayer); - - - -- [Overview](#overview) -- [Props](#props) -- [Contribute](#contribute) - -## Overview - - - {cineTemplate.bind({})} - - -## Props - - - -## Contribute - -
diff --git a/platform/ui/src/components/Icon/getIcon.js b/platform/ui/src/components/Icon/getIcon.js index d1b1d886c..b4ebdf562 100644 --- a/platform/ui/src/components/Icon/getIcon.js +++ b/platform/ui/src/components/Icon/getIcon.js @@ -3,6 +3,8 @@ import React from 'react'; import arrowDown from './../../assets/icons/arrow-down.svg'; import arrowLeft from './../../assets/icons/arrow-left.svg'; +import arrowLeftSmall from './../../assets/icons/arrow-left-small.svg'; +import arrowRightSmall from './../../assets/icons/arrow-right-small.svg'; import calendar from './../../assets/icons/calendar.svg'; import cancel from './../../assets/icons/cancel.svg'; import clipboard from './../../assets/icons/clipboard.svg'; @@ -11,6 +13,8 @@ import dottedCircle from './../../assets/icons/dotted-circle.svg'; import circledCheckmark from './../../assets/icons/circled-checkmark.svg'; import chevronDown from './../../assets/icons/chevron-down.svg'; import chevronLeft from './../../assets/icons/chevron-left.svg'; +import chevronNext from './../../assets/icons/chevron-next.svg'; +import chevronPrev from './../../assets/icons/chevron-prev.svg'; import chevronRight from './../../assets/icons/chevron-right.svg'; import eyeVisible from './../../assets/icons/eye-visible.svg'; import eyeHidden from './../../assets/icons/eye-hidden.svg'; @@ -18,6 +22,7 @@ import exclamation from './../../assets/icons/exclamation.svg'; import externalLink from './../../assets/icons/external-link.svg'; import groupLayers from './../../assets/icons/group-layers.svg'; import info from './../../assets/icons/info.svg'; +import infoAction from './../../assets/icons/info-action.svg'; import infoLink from './../../assets/icons/info-link.svg'; import launchArrow from './../../assets/icons/launch-arrow.svg'; import launchInfo from './../../assets/icons/launch-info.svg'; @@ -36,12 +41,19 @@ import settings from './../../assets/icons/settings.svg'; import sorting from './../../assets/icons/sorting.svg'; import sortingActiveDown from './../../assets/icons/sorting-active-down.svg'; import sortingActiveUp from './../../assets/icons/sorting-active-up.svg'; +import statusAlert from './../../assets/icons/status-alert.svg'; +import statusLocked from './../../assets/icons/status-locked.svg'; +import statusTracked from './../../assets/icons/status-tracked.svg'; +import statusUntracked from './../../assets/icons/status-untracked.svg'; import tracked from './../../assets/icons/tracked.svg'; import unlink from './../../assets/icons/unlink.svg'; import checkboxChecked from './../../assets/icons/checkbox-checked.svg'; import checkboxUnchecked from './../../assets/icons/checkbox-unchecked.svg'; +import iconClose from './../../assets/icons/icon-close.svg'; import iconNextInactive from './../../assets/icons/icon-next-inactive.svg'; import iconNext from './../../assets/icons/icon-next.svg'; +import iconPlay from './../../assets/icons/icon-play.svg'; +import iconPause from './../../assets/icons/icon-pause.svg'; import iconPrevInactive from './../../assets/icons/icon-prev-inactive.svg'; import iconPrev from './../../assets/icons/icon-prev.svg'; import navigationPanelRightHide from './../../assets/icons/navigation-panel-right-hide.svg'; @@ -107,6 +119,9 @@ import oldStop from './../../assets/icons/old-stop.svg'; const ICONS = { 'arrow-down': arrowDown, + 'arrow-left': arrowLeft, + 'arrow-left-small': arrowLeftSmall, + 'arrow-right-small': arrowRightSmall, calendar: calendar, cancel: cancel, clipboard: clipboard, @@ -115,12 +130,18 @@ const ICONS = { 'circled-checkmark': circledCheckmark, 'chevron-down': chevronDown, 'chevron-left': chevronLeft, + 'chevron-next': chevronNext, + 'chevron-prev': chevronPrev, 'chevron-right': chevronRight, 'eye-visible': eyeVisible, 'eye-hidden': eyeHidden, 'external-link': externalLink, 'group-layers': groupLayers, info: info, + 'icon-close': iconClose, + 'icon-play': iconPlay, + 'icon-pause': iconPause, + 'info-action': infoAction, 'info-link': infoLink, 'arrow-left': arrowLeft, 'launch-arrow': launchArrow, @@ -140,6 +161,10 @@ const ICONS = { settings: settings, 'sorting-active-down': sortingActiveDown, 'sorting-active-up': sortingActiveUp, + 'status-alert': statusAlert, + 'status-locked': statusLocked, + 'status-tracked': statusTracked, + 'status-untracked': statusUntracked, sorting: sorting, tracked: tracked, unlink: unlink, diff --git a/platform/ui/src/components/IconButton/IconButton.tsx b/platform/ui/src/components/IconButton/IconButton.tsx index d073443d7..a32df49a6 100644 --- a/platform/ui/src/components/IconButton/IconButton.tsx +++ b/platform/ui/src/components/IconButton/IconButton.tsx @@ -21,7 +21,7 @@ const disabledClasses = { const variantClasses = { text: { default: - 'text-white hover:bg-primary-light hover:text-black active:opacity-80 focus:bg-primary-light focus:text-black', + 'text-white hover:bg-primary-light hover:text-black active:opacity-80 focus:!bg-primary-light focus:text-black', primary: 'text-primary-main hover:bg-primary-main hover:text-white active:opacity-80 focus:bg-primary-main focus:text-white', secondary: diff --git a/platform/ui/src/components/InputRange/InputRange.tsx b/platform/ui/src/components/InputRange/InputRange.tsx index e79dcdce3..28e98b06f 100644 --- a/platform/ui/src/components/InputRange/InputRange.tsx +++ b/platform/ui/src/components/InputRange/InputRange.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback } from 'react'; +import React, { useState, useCallback, useEffect } from 'react'; import classNames from 'classnames'; import Typography from '../Typography'; import './InputRange.css'; @@ -23,6 +23,7 @@ const InputRange: React.FC<{ inputClassName?: string; labelClassName?: string; labelVariant?: string; + showLabel: boolean; }> = ({ value, onChange, @@ -34,12 +35,16 @@ const InputRange: React.FC<{ inputClassName, labelClassName, labelVariant, + showLabel = true, }) => { const [rangeValue, setRangeValue] = useState(value); + // Allow for the value property to update the range value. + useEffect(() => setRangeValue(value), [value]); + const handleChange = useCallback( e => { - const rangeValue = e.target.value; + const rangeValue = Number(e.target.value); setRangeValue(rangeValue); onChange(rangeValue); }, @@ -71,14 +76,16 @@ const InputRange: React.FC<{ id="myRange" step={step} /> - - {rangeValue} - {unit} - + {showLabel && ( + + {rangeValue} + {unit} + + )}
); }; diff --git a/platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayer.tsx b/platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayer.tsx new file mode 100644 index 000000000..465368888 --- /dev/null +++ b/platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayer.tsx @@ -0,0 +1,99 @@ +import React, { useState } from 'react'; +import PropTypes from 'prop-types'; +import debounce from 'lodash.debounce'; +import { IconButton, Icon } from '../'; + +import './LegacyCinePlayerCustomInputRange.css'; + +const LegacyCinePlayer = ({ + isPlaying, + minFrameRate, + maxFrameRate, + stepFrameRate, + frameRate: defaultFrameRate, + onFrameRateChange, + onPlayPauseChange, + onClose, +}) => { + const [frameRate, setFrameRate] = useState(defaultFrameRate); + const debouncedSetFrameRate = debounce(onFrameRateChange, 300); + + const onFrameRateChangeHandler = ({ target }) => { + const frameRate = parseFloat(target.value); + debouncedSetFrameRate(frameRate); + setFrameRate(frameRate); + }; + + const onPlayPauseChangeHandler = () => onPlayPauseChange(!isPlaying); + + const action = { + false: { icon: 'old-play' }, + true: { icon: 'old-stop' }, + }; + + return ( +
+ + + +
+ +

{`${frameRate.toFixed( + 1 + )} fps`}

+
+ + + +
+ ); +}; + +const noop = () => {}; + +LegacyCinePlayer.defaultProps = { + isPlaying: false, + minFrameRate: 1, + maxFrameRate: 90, + stepFrameRate: 1, + frameRate: 24, + onPlayPauseChange: noop, + onFrameRateChange: noop, + onClose: noop, +}; + +LegacyCinePlayer.propTypes = { + /** Minimum value for range slider */ + minFrameRate: PropTypes.number.isRequired, + /** Maximum value for range slider */ + maxFrameRate: PropTypes.number.isRequired, + /** Increment range slider can "step" in either direction */ + stepFrameRate: PropTypes.number.isRequired, + frameRate: PropTypes.number.isRequired, + /** 'true' if playing, 'false' if paused */ + isPlaying: PropTypes.bool.isRequired, + onPlayPauseChange: PropTypes.func, + onFrameRateChange: PropTypes.func, + onClose: PropTypes.func, +}; + +export default LegacyCinePlayer; diff --git a/platform/ui/src/components/CinePlayer/CinePlayerCustomInputRange.css b/platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayerCustomInputRange.css similarity index 66% rename from platform/ui/src/components/CinePlayer/CinePlayerCustomInputRange.css rename to platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayerCustomInputRange.css index 19661d2b9..d321b7fa7 100644 --- a/platform/ui/src/components/CinePlayer/CinePlayerCustomInputRange.css +++ b/platform/ui/src/components/LegacyCinePlayer/LegacyCinePlayerCustomInputRange.css @@ -1,9 +1,9 @@ /* - * This is a custom input style scoped specifically to CinePlayer + * This is a custom input style scoped specifically to LegacyCinePlayer * written in plain CSS with color variables from tailwind * to avoid complex compatibility configuration. */ -.CinePlayer input[type='range'] { +.LegacyCinePlayer input[type='range'] { -webkit-appearance: none; background: transparent; width: 100%; @@ -11,11 +11,11 @@ z-index: 5; } -.CinePlayer input[type='range']:focus { +.LegacyCinePlayer input[type='range']:focus { outline: none; } -.CinePlayer input[type='range']::-webkit-slider-runnable-track { +.LegacyCinePlayer input[type='range']::-webkit-slider-runnable-track { width: 100%; height: 2px; cursor: pointer; @@ -26,7 +26,7 @@ border: 0px solid #000000; } -.CinePlayer input[type='range']::-webkit-slider-thumb { +.LegacyCinePlayer input[type='range']::-webkit-slider-thumb { box-shadow: 0px 0px 0px #000000; border: 4px solid #000000; height: 18px; @@ -38,11 +38,11 @@ margin-top: -9px; } -.CinePlayer input[type='range']:focus::-webkit-slider-runnable-track { +.LegacyCinePlayer input[type='range']:focus::-webkit-slider-runnable-track { @apply bg-primary-light; } -.CinePlayer input[type='range']::-moz-range-track { +.LegacyCinePlayer input[type='range']::-moz-range-track { width: 100%; height: 2px; cursor: pointer; @@ -53,7 +53,7 @@ border: 0px solid #000000; } -.CinePlayer input[type='range']::-moz-range-thumb { +.LegacyCinePlayer input[type='range']::-moz-range-thumb { box-shadow: 0px 0px 0px #000000; border: 2px solid #000000; height: 12px; @@ -63,7 +63,7 @@ cursor: pointer; } -.CinePlayer input[type='range']::-ms-track { +.LegacyCinePlayer input[type='range']::-ms-track { width: 100%; height: 2px; cursor: pointer; @@ -73,21 +73,21 @@ color: transparent; } -.CinePlayer input[type='range']::-ms-fill-lower { +.LegacyCinePlayer input[type='range']::-ms-fill-lower { @apply bg-primary-light; border: 0px solid #000000; border-radius: 10px; box-shadow: 0px 0px 0px #000000; } -.CinePlayer input[type='range']::-ms-fill-upper { +.LegacyCinePlayer input[type='range']::-ms-fill-upper { @apply bg-primary-light; border: 0px solid #000000; border-radius: 10px; box-shadow: 0px 0px 0px #000000; } -.CinePlayer input[type='range']::-ms-thumb { +.LegacyCinePlayer input[type='range']::-ms-thumb { margin-top: 1px; box-shadow: 0px 0px 0px #000000; border: 4px solid #000000; @@ -98,10 +98,10 @@ cursor: pointer; } -.CinePlayer input[type='range']:focus::-ms-fill-lower { +.LegacyCinePlayer input[type='range']:focus::-ms-fill-lower { @apply bg-primary-light; } -.CinePlayer input[type='range']:focus::-ms-fill-upper { +.LegacyCinePlayer input[type='range']:focus::-ms-fill-upper { @apply bg-primary-light; } diff --git a/platform/ui/src/components/LegacyCinePlayer/__stories__/legacyCinePlayer.stories.mdx b/platform/ui/src/components/LegacyCinePlayer/__stories__/legacyCinePlayer.stories.mdx new file mode 100644 index 000000000..35ad2c7f0 --- /dev/null +++ b/platform/ui/src/components/LegacyCinePlayer/__stories__/legacyCinePlayer.stories.mdx @@ -0,0 +1,35 @@ +import LegacyCinePlayer from '../LegacyCinePlayer'; +import { ArgsTable, Story, Canvas, Meta } from '@storybook/addon-docs'; +import { createComponentTemplate } from '../../../storybook/functions/create-component-story'; + +export const argTypes = { + component: LegacyCinePlayer, + title: 'Components/LegacyCinePlayer', +}; + + + +export const cineTemplate = createComponentTemplate(LegacyCinePlayer); + + + +- [Overview](#overview) +- [Props](#props) +- [Contribute](#contribute) + +## Overview + + + {cineTemplate.bind({})} + + +## Props + + + +## Contribute + +
diff --git a/platform/ui/src/components/LegacyCinePlayer/index.js b/platform/ui/src/components/LegacyCinePlayer/index.js new file mode 100644 index 000000000..6344b92c3 --- /dev/null +++ b/platform/ui/src/components/LegacyCinePlayer/index.js @@ -0,0 +1,2 @@ +import LegacyCinePlayer from './LegacyCinePlayer'; +export default LegacyCinePlayer; diff --git a/platform/ui/src/components/LegacyPatientInfo/LegacyPatientInfo.tsx b/platform/ui/src/components/LegacyPatientInfo/LegacyPatientInfo.tsx new file mode 100644 index 000000000..9c0957630 --- /dev/null +++ b/platform/ui/src/components/LegacyPatientInfo/LegacyPatientInfo.tsx @@ -0,0 +1,149 @@ +import React from 'react'; +import classnames from 'classnames'; +import PropTypes from 'prop-types'; +import { Icon, Tooltip } from '../'; +import { useTranslation } from 'react-i18next'; + +const classes = { + infoHeader: 'text-base text-primary-light', + infoText: 'text-base text-white max-w-24 truncate', + firstRow: 'flex flex-col', + row: 'flex flex-col ml-4', +}; + +function LegacyPatientInfo({ + patientName, + patientSex, + patientAge, + MRN, + thickness, + spacing, + scanner, + isOpen, + showPatientInfoRef, +}) { + const { t } = useTranslation('PatientInfo'); + + while (patientAge.charAt(0) === '0') { + patientAge = patientAge.substr(1); + } + + return ( +
+ +
+ +
+
+ + {patientName} + +
+
+ + {t('Sex')} + + + {patientSex} + +
+
+ + {t('Age')} + + + {patientAge} + +
+
+ + {t('MRN')} + + + {MRN} + +
+
+
+
+ + {t('Thickness')} + + + {thickness} + +
+
+ + {t('Spacing')} + + + {spacing} + +
+
+ + {t('Scanner')} + + + {scanner} + +
+
+
+
+ ) + } + > +
+
+ + +
+
+ +
+ ); +} + +LegacyPatientInfo.propTypes = { + patientName: PropTypes.string, + patientSex: PropTypes.string, + patientAge: PropTypes.string, + MRN: PropTypes.string, + thickness: PropTypes.string, + spacing: PropTypes.string, + scanner: PropTypes.string, + isOpen: PropTypes.bool, + showPatientInfoRef: PropTypes.object, +}; + +export default LegacyPatientInfo; diff --git a/platform/ui/src/components/LegacyPatientInfo/index.js b/platform/ui/src/components/LegacyPatientInfo/index.js new file mode 100644 index 000000000..d4506eeab --- /dev/null +++ b/platform/ui/src/components/LegacyPatientInfo/index.js @@ -0,0 +1,2 @@ +import LegacyPatientInfo from './LegacyPatientInfo'; +export default LegacyPatientInfo; diff --git a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.stories.tsx b/platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.stories.tsx similarity index 82% rename from platform/ui/src/components/ViewportActionBar/ViewportActionBar.stories.tsx rename to platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.stories.tsx index ec6d1a3b1..fb76d1fea 100644 --- a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.stories.tsx +++ b/platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.stories.tsx @@ -1,14 +1,14 @@ import React from 'react'; -import ViewportActionBar from './ViewportActionBar'; +import LegacyViewportActionBar from './LegacyViewportActionBar'; export default { - component: ViewportActionBar, - title: 'Components/ViewportActionBar', + component: LegacyViewportActionBar, + title: 'Components/LegacyViewportActionBar', }; export const Default = () => (
- alert(`Series ${direction}`)} studyData={{ label: 'A', diff --git a/platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.tsx b/platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.tsx new file mode 100644 index 000000000..5207d179c --- /dev/null +++ b/platform/ui/src/components/LegacyViewportActionBar/LegacyViewportActionBar.tsx @@ -0,0 +1,180 @@ +import React, { useState, useRef, useEffect } from 'react'; +import PropTypes from 'prop-types'; +import { Icon, ButtonGroup, Button, LegacyCinePlayer } from '../'; +import useOnClickOutside from '../../utils/useOnClickOutside'; +import LegacyPatientInfo from '../LegacyPatientInfo'; +import { StringNumber } from '../../types'; + +const LegacyViewportActionBar = ({ + studyData, + showNavArrows, + showStatus, + showCine, + cineProps, + showPatientInfo: patientInfoVisibility, + onArrowsClick, + onDoubleClick, + getStatusComponent, +}) => { + const [showPatientInfo, setShowPatientInfo] = useState(patientInfoVisibility); + + const { + label, + useAltStyling, + studyDate, + currentSeries, + seriesDescription, + patientInformation, + } = studyData; + + const { + patientName, + patientSex, + patientAge, + MRN, + thickness, + spacing, + scanner, + } = patientInformation; + + const onPatientInfoClick = () => setShowPatientInfo(!showPatientInfo); + const closePatientInfo = () => setShowPatientInfo(false); + const showPatientInfoRef = useRef(null); + const clickOutsideListener = useOnClickOutside( + showPatientInfoRef, + closePatientInfo + ); + + useEffect(() => { + if (showPatientInfo) { + clickOutsideListener.add(); + } else { + clickOutsideListener.remove(); + } + + return () => clickOutsideListener.remove(); + }, [clickOutsideListener, showPatientInfo]); + + const borderColor = useAltStyling ? '#365A6A' : '#1D205A'; + + let backgroundColor = '#020424'; + if (useAltStyling) { + backgroundColor = '#031923'; + } + + return ( +
e.preventDefault()} + > +
+
+ {label} + {showStatus && getStatusComponent()} +
+
+
+ {studyDate} + + S: {currentSeries} + +
+
+ {/* TODO: + This is tricky. Our "no-wrap" in truncate means this has a hard + length. The overflow forces ellipse. If we don't set max width + appropriately, this causes the ActionBar to overflow. + Can clean up by setting percentage widths + calc on parent + containers + */} +

+ {seriesDescription} +

+
+
+
+ {showNavArrows && !showCine && ( +
+ + + + +
+ )} + {showCine && !showNavArrows && ( +
+ +
+ )} +
+ +
+
+ ); +}; + +LegacyViewportActionBar.propTypes = { + onArrowsClick: PropTypes.func.isRequired, + showNavArrows: PropTypes.bool, + showCine: PropTypes.bool, + cineProps: PropTypes.object, + showPatientInfo: PropTypes.bool, + studyData: PropTypes.shape({ + // + useAltStyling: PropTypes.bool, + // + label: PropTypes.string.isRequired, + studyDate: PropTypes.string.isRequired, + currentSeries: StringNumber.isRequired, + seriesDescription: PropTypes.string.isRequired, + patientInformation: PropTypes.shape({ + patientName: PropTypes.string.isRequired, + patientSex: PropTypes.string.isRequired, + patientAge: PropTypes.string.isRequired, + MRN: PropTypes.string.isRequired, + thickness: PropTypes.string.isRequired, + spacing: PropTypes.string.isRequired, + scanner: PropTypes.string.isRequired, + }), + }).isRequired, + getStatusComponent: PropTypes.func.isRequired, +}; + +LegacyViewportActionBar.defaultProps = { + cineProps: {}, + showCine: false, + showStatus: true, + showNavArrows: true, + showPatientInfo: false, +}; + +export default LegacyViewportActionBar; diff --git a/platform/ui/src/components/LegacyViewportActionBar/index.js b/platform/ui/src/components/LegacyViewportActionBar/index.js new file mode 100644 index 000000000..1a1a8959c --- /dev/null +++ b/platform/ui/src/components/LegacyViewportActionBar/index.js @@ -0,0 +1,2 @@ +import LegacyViewportActionBar from './LegacyViewportActionBar'; +export default LegacyViewportActionBar; diff --git a/platform/ui/src/components/PatientInfo/PatientInfo.tsx b/platform/ui/src/components/PatientInfo/PatientInfo.tsx index bb09389f9..615950c06 100644 --- a/platform/ui/src/components/PatientInfo/PatientInfo.tsx +++ b/platform/ui/src/components/PatientInfo/PatientInfo.tsx @@ -119,16 +119,10 @@ function PatientInfo({ ) } > -
-
- - -
-
+
); diff --git a/platform/ui/src/components/SegmentationGroupTable/SegmentationConfig.tsx b/platform/ui/src/components/SegmentationGroupTable/SegmentationConfig.tsx index 437d0cdad..6167ec55d 100644 --- a/platform/ui/src/components/SegmentationGroupTable/SegmentationConfig.tsx +++ b/platform/ui/src/components/SegmentationGroupTable/SegmentationConfig.tsx @@ -13,6 +13,15 @@ const ActiveSegmentationConfig = ({ setFillAlpha, usePercentage, }) => { + const [ + useOutlineOpacityPercentage, + setUseOutlineOpacityPercentage, + ] = useState(usePercentage); + + const [useFillAlphaPercentage, setUseFillAlphaPercentage] = useState( + usePercentage + ); + return (
@@ -57,9 +66,12 @@ const ActiveSegmentationConfig = ({ minValue={0} maxValue={usePercentage ? 100 : 1} value={ - usePercentage ? config.outlineOpacity * 100 : config.outlineOpacity + useOutlineOpacityPercentage + ? config.outlineOpacity * 100 + : config.outlineOpacity } onChange={value => { + setUseOutlineOpacityPercentage(false); dispatch({ type: 'SET_OUTLINE_OPACITY', payload: { @@ -78,8 +90,11 @@ const ActiveSegmentationConfig = ({ { + setUseFillAlphaPercentage(false); dispatch({ type: 'SET_FILL_ALPHA', payload: { @@ -125,6 +140,11 @@ const InactiveSegmentationConfig = ({ setFillAlphaInactive, usePercentage, }) => { + const [ + useFillAlphaInactivePercentage, + setUseFillInactivePercentage, + ] = useState(usePercentage); + return (
{ + setUseFillInactivePercentage(false); dispatch({ type: 'SET_FILL_ALPHA_INACTIVE', payload: { diff --git a/platform/ui/src/components/SplitButton/SplitButton.tsx b/platform/ui/src/components/SplitButton/SplitButton.tsx index 00c354098..1aec782d5 100644 --- a/platform/ui/src/components/SplitButton/SplitButton.tsx +++ b/platform/ui/src/components/SplitButton/SplitButton.tsx @@ -26,7 +26,7 @@ const classes = { baseClasses.Button, !isExpanded && !primary.isActive && - 'hover:bg-primary-dark hover:border-primary-dark' + 'hover:!bg-primary-dark hover:border-primary-dark' ), Interface: 'h-full flex flex-row items-center', Primary: ({ primary, isExpanded }) => @@ -34,7 +34,7 @@ const classes = { baseClasses.Primary, primary.isActive ? isExpanded - ? 'border-primary-dark !bg-primary-dark hover:border-primary-dark text-primary-light' + ? 'border-primary-dark !bg-primary-dark hover:border-primary-dark !text-primary-light' : `${ primary.isToggle ? 'border-secondary-dark bg-secondary-light' @@ -45,7 +45,7 @@ const classes = { ${ isExpanded ? 'border-primary-dark bg-primary-dark !text-primary-light' - : 'border-secondary-dark bg-secondary-dark group-hover/button:border-primary-dark group-hover/button:text-primary-light hover:bg-primary-dark hover:border-primary-dark focus:!text-black' + : 'border-secondary-dark bg-secondary-dark group-hover/button:border-primary-dark group-hover/button:text-primary-light hover:!bg-primary-dark hover:border-primary-dark focus:!text-black' } ` ), diff --git a/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx b/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx index b2fb20da6..5e9a2c141 100644 --- a/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx +++ b/platform/ui/src/components/ToolbarButton/ToolbarButton.tsx @@ -24,13 +24,13 @@ const ToolbarButton = ({ const classes = { tool: isActive ? 'text-black' - : 'text-common-bright hover:bg-primary-dark hover:text-primary-light', + : 'text-common-bright hover:!bg-primary-dark hover:text-primary-light', toggle: isActive - ? 'text-[#348CFD]' - : 'text-common-bright hover:bg-primary-dark hover:text-primary-light', + ? '!text-[#348CFD]' + : 'text-common-bright hover:!bg-primary-dark hover:text-primary-light', action: isActive ? 'text-black' - : 'text-common-bright hover:bg-primary-dark hover:text-primary-light', + : 'text-common-bright hover:!bg-primary-dark hover:text-primary-light', }; const bgClasses = { diff --git a/platform/ui/src/components/Tooltip/Tooltip.tsx b/platform/ui/src/components/Tooltip/Tooltip.tsx index d44f73409..7487e9bfa 100644 --- a/platform/ui/src/components/Tooltip/Tooltip.tsx +++ b/platform/ui/src/components/Tooltip/Tooltip.tsx @@ -23,6 +23,11 @@ const arrowPositionStyle = { right: -15, transform: 'rotate(-270deg)', }, + top: { + bottom: -15, + left: '50%', + transform: 'translateX(-50%) rotate(180deg)', + }, }; const Tooltip = ({ @@ -69,7 +74,7 @@ const Tooltip = ({ >
{typeof content === 'string' ? t(content) : content} - +
@@ -107,6 +112,7 @@ Tooltip.propTypes = { 'bottom-right', 'left', 'right', + 'top', ]), isSticky: PropTypes.bool, tight: PropTypes.bool, diff --git a/platform/ui/src/components/Tooltip/tooltip.css b/platform/ui/src/components/Tooltip/tooltip.css index 28c0b3991..06de8e4b5 100644 --- a/platform/ui/src/components/Tooltip/tooltip.css +++ b/platform/ui/src/components/Tooltip/tooltip.css @@ -13,12 +13,29 @@ transform: translateX(-50%); } +.tooltip.tooltip-top .tooltip-box::before { + @apply absolute z-10 bg-primary-dark; + content: ''; + width: 14px; + height: 1px; + bottom: -1px; + left: 50%; + transform: translateX(-50%); +} + .tooltip.tooltip-bottom { @apply pt-2 mt-1; left: 50%; transform: translateX(-50%); } +.tooltip.tooltip-top { + @apply pb-2 mb-1; + left: 50%; + transform: translateX(-50%); + bottom: 100%; +} + .tooltip.tooltip-bottom-left { @apply pt-2 mt-1; left: 0; diff --git a/platform/ui/src/components/Viewport/Viewport.tsx b/platform/ui/src/components/Viewport/Viewport.tsx index e2c599238..a9576c1c9 100644 --- a/platform/ui/src/components/Viewport/Viewport.tsx +++ b/platform/ui/src/components/Viewport/Viewport.tsx @@ -1,12 +1,12 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { ViewportActionBar, Notification } from '../'; +import { LegacyViewportActionBar, Notification } from '../'; const Viewport = ({ viewportIndex, onArrowsClick, studyData, children }) => { return (
- diff --git a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.tsx b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.tsx index 4490b57df..cbb5df022 100644 --- a/platform/ui/src/components/ViewportActionBar/ViewportActionBar.tsx +++ b/platform/ui/src/components/ViewportActionBar/ViewportActionBar.tsx @@ -1,31 +1,31 @@ -import React, { useState, useRef, useEffect } from 'react'; import PropTypes from 'prop-types'; -import { Icon, ButtonGroup, Button, CinePlayer } from '../'; +import React, { + MouseEventHandler, + ReactElement, + useCallback, + useEffect, + useRef, + useState, +} from 'react'; +import { Icon } from '..'; +import { useResizeObserver } from '../../hooks'; import useOnClickOutside from '../../utils/useOnClickOutside'; import PatientInfo from '../PatientInfo'; -import { StringNumber } from '../../types'; + +export type ViewportActionBarProps = { + studyData: any; + onArrowsClick: (arrow: string) => void; + onDoubleClick: MouseEventHandler; + getStatusComponent: () => ReactElement; +}; const ViewportActionBar = ({ studyData, - showNavArrows, - showStatus, - showCine, - cineProps, - showPatientInfo: patientInfoVisibility, onArrowsClick, onDoubleClick, getStatusComponent, -}) => { - const [showPatientInfo, setShowPatientInfo] = useState(patientInfoVisibility); - - const { - label, - useAltStyling, - studyDate, - currentSeries, - seriesDescription, - patientInformation, - } = studyData; +}: ViewportActionBarProps): JSX.Element => { + const { label, studyDate, seriesDescription, patientInformation } = studyData; const { patientName, @@ -37,11 +37,43 @@ const ViewportActionBar = ({ scanner, } = patientInformation; + // The minimum width that the viewport must be to show the next/prev arrows. + const arrowsPresentViewportMinWidth = 300; + + // The space left between the study date and the patient info icon when the series description text is zero width. + // With a zero width series description what we have left is: + // - a separator (17px) + // - patient info icon left padding (4px) + // - series description right margin (4px) + const zeroWidthSeriesDescriptionSpace = 25; + + const separatorClasses = 'border-l py-2 mx-2 border-secondary-light'; + const textEllipsisClasses = 'overflow-hidden shrink text-ellipsis'; + const arrowClasses = + 'cursor-pointer shrink-0 mr-2 text-white hover:text-primary-light'; + + const componentRootElemRef = (elem: HTMLElement) => { + setComponentRootElem(elem); + }; + const studyDateElemRef = useRef(null); + const seriesDescElemRef = useRef(null); + const showPatientInfoElemRef = useRef(null); + const onPatientInfoClick = () => setShowPatientInfo(!showPatientInfo); const closePatientInfo = () => setShowPatientInfo(false); - const showPatientInfoRef = useRef(null); + + const [showPatientInfo, setShowPatientInfo] = useState(false); + const [showSeriesDesc, setShowSeriesDesc] = useState(true); + const [showArrows, setShowArrows] = useState(true); + const [componentRootElem, setComponentRootElem] = useState(null); + + const studyDateClasses = () => + `text-white ${showSeriesDesc ? '' : `mr-1 ${textEllipsisClasses}`}`; + + const patientInfoClasses = () => (showArrows ? '' : 'pl-1 ml-auto'); + const clickOutsideListener = useOnClickOutside( - showPatientInfoRef, + showPatientInfoElemRef, closePatientInfo ); @@ -55,79 +87,81 @@ const ViewportActionBar = ({ return () => clickOutsideListener.remove(); }, [clickOutsideListener, showPatientInfo]); - const borderColor = useAltStyling ? '#365A6A' : '#1D205A'; + /** + * Handles what gets hidden and what gets shown during a resize of the viewport. + */ + const resizeCallback = useCallback(() => { + if (!componentRootElem) { + return; + } - let backgroundColor = '#020424'; - if (useAltStyling) { - backgroundColor = '#031923'; - } + const componentRootElemBBox = componentRootElem.getBoundingClientRect(); + + // Show or hide the arrows based on the viewport/root element width. + if (componentRootElemBBox.width < arrowsPresentViewportMinWidth) { + setShowArrows(false); + } else { + setShowArrows(true); + } + + const studyDateElemBBox = studyDateElemRef.current.getBoundingClientRect(); + const showPatientInfoElemBBox = showPatientInfoElemRef.current.getBoundingClientRect(); + + if ( + showPatientInfoElemBBox.left - studyDateElemBBox.right <= + zeroWidthSeriesDescriptionSpace + ) { + // The area to display the series description is zero, so don't show the series description element. + setShowSeriesDesc(false); + } else { + setShowSeriesDesc(true); + } + }, [componentRootElem]); + + useResizeObserver(componentRootElem, resizeCallback); return (
e.preventDefault()} > -
-
- {label} - {showStatus && getStatusComponent()} -
-
-
- {studyDate} - - S: {currentSeries} - -
-
- {/* TODO: - This is tricky. Our "no-wrap" in truncate means this has a hard - length. The overflow forces ellipse. If we don't set max width - appropriately, this causes the ActionBar to overflow. - Can clean up by setting percentage widths + calc on parent - containers - */} -

- {seriesDescription} -

-
-
-
- {showNavArrows && !showCine && ( -
- - - - -
+ {getStatusComponent()} + {!!label?.length && ( + {label} )} - {showCine && !showNavArrows && ( -
- -
+
+ + {studyDate} + + {showSeriesDesc && ( + <> +
+ + {seriesDescription} + + )} -
+ {showArrows && ( + <> + onArrowsClick('left')} + /> + onArrowsClick('right')} + /> + + )} +
+ * Care is taken to disconnect the ResizeObserver whenever either the element or the callback change. + * + * @param elem the element to listen for resizing + * @param callback the callback to invoke when the element is resized + */ +const useResizeObserver = ( + elem: HTMLElement, + callback: ResizeObserverCallback +): void => { + useEffect(() => { + if (!elem || !callback) { + return; + } + + const resizeObserver = new ResizeObserver(callback); + resizeObserver.observe(elem); + + return () => resizeObserver.disconnect(); + }, [elem, callback]); +}; + +export default useResizeObserver; diff --git a/platform/ui/src/index.js b/platform/ui/src/index.js index 3e14405c7..9315e4c11 100644 --- a/platform/ui/src/index.js +++ b/platform/ui/src/index.js @@ -62,6 +62,8 @@ export { InputText, Label, LayoutSelector, + LegacyCinePlayer, + LegacyViewportActionBar, LoadingIndicatorProgress, MeasurementTable, Modal, diff --git a/platform/ui/tailwind.config.js b/platform/ui/tailwind.config.js index b8863ac2e..3a5b1d842 100644 --- a/platform/ui/tailwind.config.js +++ b/platform/ui/tailwind.config.js @@ -55,11 +55,17 @@ module.exports = { customgreen: { 100: '#05D97C', + 200: '#0FD97C', }, customblue: { 100: '#c4fdff', 200: '#38daff', + 300: '#1D204D', + }, + + customgray: { + 100: '#262943', }, gray: { @@ -257,14 +263,15 @@ module.exports = { full: '100%', screen: '100vh', }), - inset: { + inset: theme => ({ + ...theme('spacing'), '0': '0', auto: 'auto', full: '100%', viewport: '0.5rem', '1/2': '50%', 'viewport-scrollbar': '1.3rem', - }, + }), letterSpacing: { tighter: '-0.05em', tight: '-0.025em', diff --git a/platform/viewer/tailwind.config.js b/platform/viewer/tailwind.config.js index ca024d273..535239ca5 100644 --- a/platform/viewer/tailwind.config.js +++ b/platform/viewer/tailwind.config.js @@ -63,11 +63,17 @@ module.exports = { customgreen: { 100: '#05D97C', + 200: '#0FD97C', }, customblue: { 100: '#c4fdff', 200: '#38daff', + 300: '#1D204D', + }, + + customgray: { + 100: '#262943', }, gray: { @@ -305,14 +311,15 @@ module.exports = { screen: '100vh', inherit: 'inherit', }), - inset: { + inset: theme => ({ + ...theme('spacing'), '0': '0', auto: 'auto', full: '100%', viewport: '0.5rem', '1/2': '50%', 'viewport-scrollbar': '1.3rem', - }, + }), minHeight: theme => ({ ...theme('spacing'), '0': '0', diff --git a/yarn.lock b/yarn.lock index 493f956c8..8566e8078 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17919,9 +17919,27 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.2 picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.18, postcss@^8.4.19: +postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.14: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.17, postcss@^8.4.18, postcss@^8.4.19: version "8.4.21" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== dependencies: nanoid "^3.3.4" @@ -21030,7 +21048,7 @@ table@^6.0.9: tailwindcss@3.2.4: version "3.2.4" - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250" integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== dependencies: arg "^5.0.2" From 38d452e17db2e8ebeab1a587e44a05c35a3ec5a6 Mon Sep 17 00:00:00 2001 From: Alireza Date: Thu, 2 Mar 2023 17:11:51 -0500 Subject: [PATCH 40/47] feat(measurementService): use the new api for annotation manager in cs3d (#3206) * fix OHIF to use the new api for annotation manager in cs3d * bump package versions * fix tests * remove unnecessary code --- extensions/cornerstone-dicom-sr/package.json | 4 +- .../src/tools/DICOMSRDisplayTool.ts | 4 +- .../src/utils/addMeasurement.ts | 2 +- .../utils/getFilteredCornerstoneToolState.ts | 2 +- extensions/cornerstone/package.json | 6 +-- .../cornerstone/src/initMeasurementService.js | 2 +- .../utils/selection.ts | 5 +- extensions/measurement-tracking/package.json | 4 +- extensions/tmtv/src/commandsModule.js | 2 +- .../cypress/integration/volume/MPR.spec.js | 4 +- testdata | 2 +- yarn.lock | 46 +++++++++---------- 12 files changed, 40 insertions(+), 43 deletions(-) diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 46e9eb36e..93573b40b 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,7 +46,7 @@ "@babel/runtime": "^7.20.13", "classnames": "^2.3.2", "@cornerstonejs/adapters": "^0.3.1", - "@cornerstonejs/core": "^0.31.2", - "@cornerstonejs/tools": "^0.46.2" + "@cornerstonejs/core": "^0.32.0", + "@cornerstonejs/tools": "^0.48.0" } } diff --git a/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts b/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts index 6aa7a1347..9c4f3c2ea 100644 --- a/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts +++ b/extensions/cornerstone-dicom-sr/src/tools/DICOMSRDisplayTool.ts @@ -48,8 +48,8 @@ export default class DICOMSRDisplayTool extends AnnotationTool { const { element } = viewport; let annotations = annotation.state.getAnnotations( - element, - this.getToolName() + this.getToolName(), + element ); // Todo: We don't need this anymore, filtering happens in triggerAnnotationRender diff --git a/extensions/cornerstone-dicom-sr/src/utils/addMeasurement.ts b/extensions/cornerstone-dicom-sr/src/utils/addMeasurement.ts index 546dc644d..ac8e43003 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/addMeasurement.ts +++ b/extensions/cornerstone-dicom-sr/src/utils/addMeasurement.ts @@ -43,7 +43,7 @@ export default function addMeasurement( // Use the metadata provider to grab its imagePlaneModule metadata const imagePlaneModule = metaData.get('imagePlaneModule', imageId); - const annotationManager = annotation.state.getDefaultAnnotationManager(); + const annotationManager = annotation.state.getAnnotationManager(); // Create Cornerstone3D Annotation from measurement const frameNumber = diff --git a/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts b/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts index 1ef1842a5..9cef86345 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts +++ b/extensions/cornerstone-dicom-sr/src/utils/getFilteredCornerstoneToolState.ts @@ -67,7 +67,7 @@ function getFilteredCornerstoneToolState( const uidFilter = measurementData.map(md => md.uid); const uids = uidFilter.slice(); - const annotationManager = annotation.state.getDefaultAnnotationManager(); + const annotationManager = annotation.state.getAnnotationManager(); const framesOfReference = annotationManager.getFramesOfReference(); for (let i = 0; i < framesOfReference.length; i++) { diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index e46bd0fd3..8a62a6905 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -44,9 +44,9 @@ "dependencies": { "@babel/runtime": "^7.20.13", "@cornerstonejs/adapters": "^0.3.1", - "@cornerstonejs/core": "^0.31.2", - "@cornerstonejs/streaming-image-volume-loader": "^0.12.2", - "@cornerstonejs/tools": "^0.46.2", + "@cornerstonejs/core": "^0.32.0", + "@cornerstonejs/streaming-image-volume-loader": "^0.13.0", + "@cornerstonejs/tools": "^0.48.0", "@kitware/vtk.js": "26.5.6", "html2canvas": "^1.4.1", "lodash.debounce": "4.0.8", diff --git a/extensions/cornerstone/src/initMeasurementService.js b/extensions/cornerstone/src/initMeasurementService.js index e081435ce..93a618eaf 100644 --- a/extensions/cornerstone/src/initMeasurementService.js +++ b/extensions/cornerstone/src/initMeasurementService.js @@ -366,7 +366,7 @@ const connectMeasurementServiceToTools = ( imageId = dataSource.getImageIdsForInstance({ instance }); } - const annotationManager = annotation.state.getDefaultAnnotationManager(); + const annotationManager = annotation.state.getAnnotationManager(); annotationManager.addAnnotation({ annotationUID: measurement.uid, highlighted: false, diff --git a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts index c70bf832e..156133306 100644 --- a/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts +++ b/extensions/cornerstone/src/utils/measurementServiceMappings/utils/selection.ts @@ -30,10 +30,7 @@ function getFirstAnnotationSelected(element) { cs3dToolAnnotationUtils.selection.getAnnotationsSelected() || []; if (selectedAnnotationUID) { - return cs3dToolAnnotationUtils.state.getAnnotation( - selectedAnnotationUID, - element - ); + return cs3dToolAnnotationUtils.state.getAnnotation(selectedAnnotationUID); } } diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index 6916ccbde..1f2f5c694 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "peerDependencies": { "@ohif/core": "^3.0.0", "classnames": "^2.3.2", - "@cornerstonejs/core": "^0.31.2", - "@cornerstonejs/tools": "^0.46.2", + "@cornerstonejs/core": "^0.32.0", + "@cornerstonejs/tools": "^0.48.0", "@ohif/extension-cornerstone-dicom-sr": "^3.0.0", "dcmjs": "^0.29.4", "prop-types": "^15.6.2", diff --git a/extensions/tmtv/src/commandsModule.js b/extensions/tmtv/src/commandsModule.js index bc4de2c98..37de4dea8 100644 --- a/extensions/tmtv/src/commandsModule.js +++ b/extensions/tmtv/src/commandsModule.js @@ -432,7 +432,7 @@ const commandsModule = ({ }, createTMTVRTReport: () => { // get all Rectangle ROI annotation - const stateManager = csTools.annotation.state.getDefaultAnnotationManager(); + const stateManager = csTools.annotation.state.getAnnotationManager(); const annotations = []; diff --git a/platform/viewer/cypress/integration/volume/MPR.spec.js b/platform/viewer/cypress/integration/volume/MPR.spec.js index 3efed2fad..d377a3fa3 100644 --- a/platform/viewer/cypress/integration/volume/MPR.spec.js +++ b/platform/viewer/cypress/integration/volume/MPR.spec.js @@ -99,7 +99,7 @@ describe('OHIF MPR', () => { cy.window() .its('cornerstoneTools') .then(cornerstoneTools => { - const state = cornerstoneTools.annotation.state.getDefaultAnnotationManager(); + const state = cornerstoneTools.annotation.state.getAnnotationManager(); const fORMap = state.annotations; // it should not have crosshairs yet @@ -117,7 +117,7 @@ describe('OHIF MPR', () => { cy.window() .its('cornerstoneTools') .then(cornerstoneTools => { - const state = cornerstoneTools.annotation.state.getDefaultAnnotationManager(); + const state = cornerstoneTools.annotation.state.getAnnotationManager(); const fORMap = state.annotations; const fOR = Object.keys(fORMap)[0]; diff --git a/testdata b/testdata index 1bca96aa2..4d59660c2 160000 --- a/testdata +++ b/testdata @@ -1 +1 @@ -Subproject commit 1bca96aa2aeae7d90b3c8db73845c85dd27b34d5 +Subproject commit 4d59660c2883ed749a680e5fb6d4624ab54c9422 diff --git a/yarn.lock b/yarn.lock index 8566e8078..c9d5ac58c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1443,28 +1443,28 @@ resolved "https://registry.npmjs.org/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz#e96721d56f6ec96f7f95c16321d88cc8467d8d81" integrity sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng== -"@cornerstonejs/core@^0.31.2": - version "0.31.2" - resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.31.2.tgz#0087cb4445962c82125ae2dddff49aadcfab634d" - integrity sha512-RIxKF/3gGvx8Rca91YlAkUF0DVICedHr6Xis9x8EvOIm+DraP1h3FSQs6bO77FdalAEPGyDjG5U8ZfsAkAXN4g== +"@cornerstonejs/core@^0.32.0": + version "0.32.0" + resolved "https://registry.npmjs.org/@cornerstonejs/core/-/core-0.32.0.tgz#75fb782cc30c82642d6085d7900ec91df51aee36" + integrity sha512-Ep7b+jUO5OtRuEYRlb2Q386ZZfndAdgkDApPoTOYR+BzrwVfMF8/BEmP7UagT/bpAFk5lp5PHt/akN0qM2KR/Q== dependencies: detect-gpu "^4.0.45" lodash.clonedeep "4.5.0" -"@cornerstonejs/streaming-image-volume-loader@^0.12.2": - version "0.12.2" - resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.12.2.tgz#5df26356e846743264b624847fe4a1c7f0a304b9" - integrity sha512-0L7+oLAuhv/NIK/zmffHi499QGLcj+KS5Mgcml+7aqecO+ABiOzeC2hdCF9fGRPMN7IWadhDVOE1E78sUoCLRg== +"@cornerstonejs/streaming-image-volume-loader@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-0.13.0.tgz#0b27bde776585274b6f5ab98eb2366711f8fc878" + integrity sha512-js+qaw+I5en0FR/SzJVwGY5WKfldPiVfoJvMuZb7/mNoeoi+N/U47W9WzKlCPqM81xb1mlnjXPyhVdxQ78F36Q== dependencies: - "@cornerstonejs/core" "^0.31.2" - cornerstone-wado-image-loader "^4.8.0" + "@cornerstonejs/core" "^0.32.0" + cornerstone-wado-image-loader "^4.10.0" -"@cornerstonejs/tools@^0.46.2": - version "0.46.2" - resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.46.2.tgz#d2adee12652c3c4ce7782102c82c21af6c4d3198" - integrity sha512-sqyEKU0f3nmBBQHju251C/oLbruBtgn+b5JT7Zvr79VH0qSxQAFVUyzYXWIF6Jmbd6i+A/qI1fiv2Gzv2CZfbg== +"@cornerstonejs/tools@^0.48.0": + version "0.48.0" + resolved "https://registry.npmjs.org/@cornerstonejs/tools/-/tools-0.48.0.tgz#c881866a58dd7fe5338256166630e3de633b14e7" + integrity sha512-uMrfY84m1bzVQ8I6HAkmKjZDuB3cHy9T7SWiOhXqfQGdcftkEJXYzXA6WbXDbsG8LpslnSv79Ovbx1uvH2GrWQ== dependencies: - "@cornerstonejs/core" "^0.31.2" + "@cornerstonejs/core" "^0.32.0" lodash.clonedeep "4.5.0" lodash.get "^4.4.2" @@ -8536,10 +8536,10 @@ cornerstone-math@^0.1.9: resolved "https://registry.npmjs.org/cornerstone-math/-/cornerstone-math-0.1.10.tgz#a3f99db64d73c5adee61ae0d570128eca1682d07" integrity sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ== -cornerstone-wado-image-loader@^4.2.1: - version "4.9.1" - resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.9.1.tgz#442eeca78ff0bcf9f9cbde04e8c429f35b31c55a" - integrity sha512-l0HRxGAupfufnHjT9uFpwAtafvuGMKKB9SCL8dHUwCK+7jwNeVigy8s6+Oki2nycaJUzy2TRQaauO78mIf3grg== +cornerstone-wado-image-loader@^4.10.0: + version "4.10.0" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.10.0.tgz#25c367cfc54a2c92ebbb5c64dba4fe38439112a1" + integrity sha512-XZcgB8DpUxnsTA3vU/zbPtB2uFLL4ght70BPrQHykkX/Jlg/r6Ob7ztX2dEEAAb4ELE/d4icfGuSy10Acg/kyw== dependencies: "@babel/eslint-parser" "^7.19.1" "@cornerstonejs/codec-charls" "^1.2.3" @@ -8552,10 +8552,10 @@ cornerstone-wado-image-loader@^4.2.1: pako "^2.0.4" uuid "^9.0.0" -cornerstone-wado-image-loader@^4.8.0: - version "4.10.0" - resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.10.0.tgz#25c367cfc54a2c92ebbb5c64dba4fe38439112a1" - integrity sha512-XZcgB8DpUxnsTA3vU/zbPtB2uFLL4ght70BPrQHykkX/Jlg/r6Ob7ztX2dEEAAb4ELE/d4icfGuSy10Acg/kyw== +cornerstone-wado-image-loader@^4.2.1: + version "4.9.1" + resolved "https://registry.npmjs.org/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-4.9.1.tgz#442eeca78ff0bcf9f9cbde04e8c429f35b31c55a" + integrity sha512-l0HRxGAupfufnHjT9uFpwAtafvuGMKKB9SCL8dHUwCK+7jwNeVigy8s6+Oki2nycaJUzy2TRQaauO78mIf3grg== dependencies: "@babel/eslint-parser" "^7.19.1" "@cornerstonejs/codec-charls" "^1.2.3" From f14e23cb8b45d2179e8e46774e28239606127bb5 Mon Sep 17 00:00:00 2001 From: Alireza Date: Mon, 6 Mar 2023 09:47:26 -0500 Subject: [PATCH 41/47] fix(ui): worklist had layout shift (#3218) * fix(ui): worklist had layout shift * apply review comments --- .../StudyListFilter/StudyListFilter.tsx | 5 +- .../viewer/src/routes/WorkList/WorkList.tsx | 70 +++++++++---------- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx b/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx index 5ae39fcef..1e8008c80 100644 --- a/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx +++ b/platform/ui/src/components/StudyListFilter/StudyListFilter.tsx @@ -66,10 +66,7 @@ const StudyListFilter = ({
-
+
+
- 100 ? 101 : numOfStudies} - filtersMeta={filtersMeta} - filterValues={{ ...filterValues, ...defaultSortValues }} - onChange={setFilterValues} - clearFilters={() => setFilterValues(defaultFilterValues)} - isFiltering={isFiltering(filterValues, defaultFilterValues)} - /> - {hasStudies ? ( - <> - - - - ) : ( -
- {appConfig.showLoadingIndicator && isLoadingData ? ( - - ) : ( - - )} -
- )} +
+ 100 ? 101 : numOfStudies} + filtersMeta={filtersMeta} + filterValues={{ ...filterValues, ...defaultSortValues }} + onChange={setFilterValues} + clearFilters={() => setFilterValues(defaultFilterValues)} + isFiltering={isFiltering(filterValues, defaultFilterValues)} + /> + {hasStudies ? ( + <> + + + + ) : ( +
+ {appConfig.showLoadingIndicator && isLoadingData ? ( + + ) : ( + + )} +
+ )} +
); } From 7a591b87a2d7646523a9792bb5cc62b7cb0db53e Mon Sep 17 00:00:00 2001 From: Alireza Date: Tue, 7 Mar 2023 22:47:16 -0500 Subject: [PATCH 42/47] feat(tmtv): add ct ranges for thresholding (#3225) * Add CT volume in PET ROI Thresholding (#3053) * Add CT volume in PET ROI Thresholding * Change UI ROI Threshold config * Refactoring ROI Threshold configuration Panel * fix menus * try to fix build preview * try to fix build preview --------- Co-authored-by: rodrigobasilio2022 <114958722+rodrigobasilio2022@users.noreply.github.com> --- .../PanelROIThresholdSegmentation.tsx | 185 +++++++++--------- .../ROIThresholdConfiguration.tsx | 134 +++++++++---- extensions/tmtv/src/commandsModule.js | 27 +-- .../tmtv/src/utils/getThresholdValue.ts | 48 +++-- platform/viewer/netlify.toml | 2 +- 5 files changed, 240 insertions(+), 156 deletions(-) diff --git a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx index 0d47b93f5..1b946c6cf 100644 --- a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx +++ b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/PanelROIThresholdSegmentation.tsx @@ -1,7 +1,6 @@ import React, { useEffect, useState, useCallback, useReducer } from 'react'; import PropTypes from 'prop-types'; import { SegmentationTable, Button, Icon } from '@ohif/ui'; -import classnames from 'classnames'; import { useTranslation } from 'react-i18next'; import segmentationEditHandler from './segmentationEditHandler'; @@ -10,14 +9,16 @@ import ROIThresholdConfiguration, { ROI_STAT, } from './ROIThresholdConfiguration'; -const LOWER_THRESHOLD_DEFAULT = 0; -const UPPER_THRESHOLD_DEFAULT = 100; +const LOWER_CT_THRESHOLD_DEFAULT = -1000; +const UPPER_CT_THRESHOLD_DEFAULT = 500; +const LOWER_PT_THRESHOLD_DEFAULT = 5; +const UPPER_PT_THRESHOLD_DEFAULT = 50; const WEIGHT_DEFAULT = 0.41; // a default weight for suv max often used in the literature const DEFAULT_STRATEGY = ROI_STAT; function reducer(state, action) { const { payload } = action; - const { strategy, lower, upper, weight } = payload; + const { strategy, ctLower, ctUpper, ptLower, ptUpper, weight } = payload; switch (action.type) { case 'setStrategy': @@ -28,8 +29,10 @@ function reducer(state, action) { case 'setThreshold': return { ...state, - lower: lower ? lower : state.lower, - upper: upper ? upper : state.upper, + ctLower: ctLower ? ctLower : state.ctLower, + ctUpper: ctUpper ? ctUpper : state.ctUpper, + ptLower: ptLower ? ptLower : state.ptLower, + ptUpper: ptUpper ? ptUpper : state.ptUpper, }; case 'setWeight': return { @@ -57,8 +60,10 @@ export default function PanelRoiThresholdSegmentation({ const [config, dispatch] = useReducer(reducer, { strategy: DEFAULT_STRATEGY, - lower: LOWER_THRESHOLD_DEFAULT, - upper: UPPER_THRESHOLD_DEFAULT, + ctLower: LOWER_CT_THRESHOLD_DEFAULT, + ctUpper: UPPER_CT_THRESHOLD_DEFAULT, + ptLower: LOWER_PT_THRESHOLD_DEFAULT, + ptUpper: UPPER_PT_THRESHOLD_DEFAULT, weight: WEIGHT_DEFAULT, }); @@ -171,91 +176,93 @@ export default function PanelRoiThresholdSegmentation({ }, [segmentations, selectedSegmentationId]); return ( -
-
-
- + +
+
{ + setShowConfig(!showConfig); }} > - {labelmapLoading ? 'loading ...' : 'New Label'} - - -
-
{ - setShowConfig(!showConfig); - }} - > -
- {t('ROI Threshold Configuration')} +
+ {t('ROI Threshold Configuration')} +
-
- {showConfig && ( - - )} - {/* show segmentation table */} -
- {segmentations?.length ? ( - { - runCommand('setSegmentationActiveForToolGroups', { - segmentationId: id, - }); - setSelectedSegmentationId(id); - }} - onToggleVisibility={id => { - segmentationService.toggleSegmentationVisibility(id); - }} - onToggleVisibilityAll={ids => { - ids.map(id => { - segmentationService.toggleSegmentationVisibility(id); - }); - }} - onDelete={id => { - segmentationService.remove(id); - }} - onEdit={id => { - segmentationEditHandler({ - id, - servicesManager, - }); - }} + {showConfig && ( + - ) : null} -
- {tmtvValue !== null ? ( -
- - {'TMTV:'} - -
{`${tmtvValue} mL`}
+ )} + {/* show segmentation table */} +
+ {segmentations?.length ? ( + { + runCommand('setSegmentationActiveForToolGroups', { + segmentationId: id, + }); + setSelectedSegmentationId(id); + }} + onToggleVisibility={id => { + segmentationService.toggleSegmentationVisibility(id); + }} + onToggleVisibilityAll={ids => { + ids.map(id => { + segmentationService.toggleSegmentationVisibility(id); + }); + }} + onDelete={id => { + segmentationService.remove(id); + }} + onEdit={id => { + segmentationEditHandler({ + id, + servicesManager, + }); + }} + /> + ) : null}
- ) : null} - + {tmtvValue !== null ? ( +
+ + {'TMTV:'} + +
{`${tmtvValue} mL`}
+
+ ) : null} + +
{'User Guide'}
-
+ ); } diff --git a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/ROIThresholdConfiguration.tsx b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/ROIThresholdConfiguration.tsx index d4c048cf5..cd55a3cb0 100644 --- a/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/ROIThresholdConfiguration.tsx +++ b/extensions/tmtv/src/Panels/PanelROIThresholdSegmentation/ROIThresholdConfiguration.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Input, Select, Button, ButtonGroup } from '@ohif/ui'; +import { Input, Label, Select, Button, ButtonGroup } from '@ohif/ui'; import { useTranslation } from 'react-i18next'; export const ROI_STAT = 'roi_stat'; @@ -14,9 +14,9 @@ function ROIThresholdConfiguration({ config, dispatch, runCommand }) { const { t } = useTranslation('ROIThresholdConfiguration'); return ( -
+
-
+
{ - dispatch({ - type: 'setThreshold', - payload: { - lower: e.target.value, - }, - }); - }} - /> - { - dispatch({ - type: 'setThreshold', - payload: { - upper: e.target.value, - }, - }); - }} - /> +
+ + + + + + + + + + + + + + +
+ +
+ + +
+ { + dispatch({ + type: 'setThreshold', + payload: { + ctLower: e.target.value, + }, + }); + }} + /> + { + dispatch({ + type: 'setThreshold', + payload: { + ctUpper: e.target.value, + }, + }); + }} + /> +
+
+ + +
+ { + dispatch({ + type: 'setThreshold', + payload: { + ptLower: e.target.value, + }, + }); + }} + /> + { + dispatch({ + type: 'setThreshold', + payload: { + ptUpper: e.target.value, + }, + }); + }} + /> +
+
)}
diff --git a/extensions/tmtv/src/commandsModule.js b/extensions/tmtv/src/commandsModule.js index 37de4dea8..b633d231c 100644 --- a/extensions/tmtv/src/commandsModule.js +++ b/extensions/tmtv/src/commandsModule.js @@ -173,12 +173,20 @@ const commandsModule = ({ ); const { representationData } = segmentation; - const { volumeId: segVolumeId } = representationData[LABELMAP]; + const { + displaySetMatchDetails: matchDetails, + } = hangingProtocolService.getMatchDetails(); + const volumeLoaderScheme = 'cornerstoneStreamingImageVolume'; // Loader id which defines which volume loader to use + const ctDisplaySet = matchDetails.get('ctDisplaySet'); + const ctVolumeId = `${volumeLoaderScheme}:${ctDisplaySet.displaySetInstanceUID}`; // VolumeId with loader id + volume id + + const { volumeId: segVolumeId } = representationData[LABELMAP]; const { referencedVolumeId } = cs.cache.getVolume(segVolumeId); const labelmapVolume = cs.cache.getVolume(segmentationId); const referencedVolume = cs.cache.getVolume(referencedVolumeId); + const ctReferencedVolume = cs.cache.getVolume(ctVolumeId); if (!referencedVolume) { throw new Error('No Reference volume found'); @@ -201,23 +209,20 @@ const commandsModule = ({ return; } - const { lower, upper } = getThresholdValues( + const { ptLower, ptUpper, ctLower, ctUpper } = getThresholdValues( annotationUIDs, - referencedVolume, + [referencedVolume, ctReferencedVolume], config ); - const configToUse = { - lower, - upper, - overwrite: true, - }; - return csTools.utilities.segmentation.rectangleROIThresholdVolumeByRange( annotationUIDs, labelmapVolume, - [referencedVolume], - configToUse + [ + { volume: referencedVolume, lower: ptLower, upper: ptUpper }, + { volume: ctReferencedVolume, lower: ctLower, upper: ctUpper }, + ], + { overwrite: true } ); }, calculateSuvPeak: ({ labelmap }) => { diff --git a/extensions/tmtv/src/utils/getThresholdValue.ts b/extensions/tmtv/src/utils/getThresholdValue.ts index 3f597433b..a54171f6a 100644 --- a/extensions/tmtv/src/utils/getThresholdValue.ts +++ b/extensions/tmtv/src/utils/getThresholdValue.ts @@ -1,19 +1,7 @@ import * as csTools from '@cornerstonejs/tools'; -function getThresholdValues( - annotationUIDs, - referencedVolume, - config -): { lower: number; upper: number } { - if (config.strategy === 'range') { - return { - lower: Number(config.lower), - upper: Number(config.upper), - }; - } - +function getRoiStats(referencedVolume, annotations) { // roiStats - const { weight } = config; const { imageData } = referencedVolume; const values = imageData .getPointData() @@ -24,10 +12,6 @@ function getThresholdValues( const { fn, baseValue } = _getStrategyFn('max'); let value = baseValue; - const annotations = annotationUIDs.map(annotationUID => - csTools.annotation.state.getAnnotation(annotationUID) - ); - const boundsIJK = csTools.utilities.rectangleROITool.getBoundsIJKFromRectangleAnnotations( annotations, referencedVolume @@ -43,10 +27,36 @@ function getThresholdValues( } } } + return value; +} + +function getThresholdValues( + annotationUIDs, + referencedVolumes, + config +): { ptLower: number; ptUpper: number; ctLower: number; ctUpper: number } { + if (config.strategy === 'range') { + return { + ptLower: Number(config.ptLower), + ptUpper: Number(config.ptUpper), + ctLower: Number(config.ctLower), + ctUpper: Number(config.ctUpper), + }; + } + + const { weight } = config; + const annotations = annotationUIDs.map(annotationUID => + csTools.annotation.state.getAnnotation(annotationUID) + ); + + const ptValue = getRoiStats(referencedVolumes[0], annotations); + const ctValue = getRoiStats(referencedVolumes[1], annotations); return { - lower: weight * value, - upper: +Infinity, + ctLower: weight * ctValue, + ctUpper: +Infinity, + ptLower: weight * ptValue, + ptUpper: +Infinity, }; } diff --git a/platform/viewer/netlify.toml b/platform/viewer/netlify.toml index 4f86618bb..468eca951 100644 --- a/platform/viewer/netlify.toml +++ b/platform/viewer/netlify.toml @@ -12,7 +12,7 @@ base = "" build = "yarn run build:viewer:ci" publish = "dist" - ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../ui/ ../core/ ../i18n ../../extensions/ ../../modes" + ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF . ../ui/ ../core/ ../i18n" # NODE_VERSION in root `.nvmrc` takes priority From b9dbc5b3a5b50ea9666bb273425914def7a6ea3b Mon Sep 17 00:00:00 2001 From: Braden Morley <63816946+bradenjmorley@users.noreply.github.com> Date: Thu, 9 Mar 2023 19:25:05 +0000 Subject: [PATCH 43/47] fix(thumbnails): expand multi studies scrollbar (#3224) made per study scrollbars visible --- platform/ui/src/assets/styles/styles.css | 4 ++++ platform/ui/src/components/StudyBrowser/StudyBrowser.tsx | 4 ++-- platform/ui/src/components/ThumbnailList/ThumbnailList.tsx | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/ui/src/assets/styles/styles.css b/platform/ui/src/assets/styles/styles.css index 9cb7c3fbe..addaa2375 100644 --- a/platform/ui/src/assets/styles/styles.css +++ b/platform/ui/src/assets/styles/styles.css @@ -4,6 +4,10 @@ scrollbar-gutter: stable; } +.study-min-height { + min-height: 450px; +} + .ohif-scrollbar:hover { overflow-y: auto; } diff --git a/platform/ui/src/components/StudyBrowser/StudyBrowser.tsx b/platform/ui/src/components/StudyBrowser/StudyBrowser.tsx index 37993c58e..9d7e6a2ec 100644 --- a/platform/ui/src/components/StudyBrowser/StudyBrowser.tsx +++ b/platform/ui/src/components/StudyBrowser/StudyBrowser.tsx @@ -109,7 +109,7 @@ const StudyBrowser = ({ })}
-
+
{getTabContent()}
@@ -171,7 +171,7 @@ StudyBrowser.propTypes = { ), }; -const noop = () => {}; +const noop = () => { }; StudyBrowser.defaultProps = { onClickTab: noop, diff --git a/platform/ui/src/components/ThumbnailList/ThumbnailList.tsx b/platform/ui/src/components/ThumbnailList/ThumbnailList.tsx index 7a3c01661..f739cf281 100644 --- a/platform/ui/src/components/ThumbnailList/ThumbnailList.tsx +++ b/platform/ui/src/components/ThumbnailList/ThumbnailList.tsx @@ -12,7 +12,7 @@ const ThumbnailList = ({ activeDisplaySetInstanceUIDs = [], }) => { return ( -
+
{thumbnails.map( ({ displaySetInstanceUID, From e4e62e9e14117392362e0df7ecda2aab1161bb89 Mon Sep 17 00:00:00 2001 From: md-prog <26860200+md-prog@users.noreply.github.com> Date: Thu, 9 Mar 2023 17:12:08 -0500 Subject: [PATCH 44/47] feat(customizableOverlay): Add customizable overlay info (#3061) * overlay customization * custom overlay definition and examples * minor fix - import statement difference between cornerstone and cornerstone3D * move "VOI" and "Zoom" calulation to the ViewportOverlay component, make OverlayItem fairly dull * type specifications * follow up fixes for CustomizationService changes on upstream * [fix] various fixes related to custom overlays (formatting, toggling) * [fix] various fixes related to custom overlays (formatting, toggling) * right side overlay panels - align right * [fix] remove "notification" from toggleOverlay command * comments * [refactor] remove unused imports * documentation of customizable overlay configuration * prettify * review of documentation of customization service * fix useCallback() dependencies * fix useCallback dependencies * documentation for customization service * documentation for customization service --- .../Viewport/Overlays/CornerstoneOverlays.tsx | 12 +- .../Overlays/CustomizableViewportOverlay.css | 25 + .../Overlays/CustomizableViewportOverlay.tsx | 489 ++++++++++++++++++ .../src/Viewport/Overlays/utils.ts | 98 ++++ extensions/default/src/commandsModule.js | 12 + .../default/src/getCustomizationModule.tsx | 71 +++ .../CustomizationService.ts | 7 + .../docs/assets/img/customizable-overlay.png | Bin 0 -> 1086983 bytes .../services/ui/customization-service.md | 396 ++++++++++---- .../ViewportOverlay/ViewportOverlay.tsx | 2 +- 10 files changed, 992 insertions(+), 120 deletions(-) create mode 100644 extensions/cornerstone/src/Viewport/Overlays/CustomizableViewportOverlay.css create mode 100644 extensions/cornerstone/src/Viewport/Overlays/CustomizableViewportOverlay.tsx create mode 100644 extensions/cornerstone/src/Viewport/Overlays/utils.ts create mode 100644 platform/docs/docs/assets/img/customizable-overlay.png diff --git a/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx b/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx index 160b6b294..ea0c42cb9 100644 --- a/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx +++ b/extensions/cornerstone/src/Viewport/Overlays/CornerstoneOverlays.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import ViewportImageScrollbar from './ViewportImageScrollbar'; -import ViewportOverlay from './ViewportOverlay'; +import CustomizableViewportOverlay from './CustomizableViewportOverlay'; import ViewportOrientationMarkers from './ViewportOrientationMarkers'; import ViewportImageSliceLoadingIndicator from './ViewportImageSliceLoadingIndicator'; @@ -36,9 +36,8 @@ function CornerstoneOverlays(props) { } if (viewportData) { - const viewportInfo = cornerstoneViewportService.getViewportInfoByIndex( - viewportIndex - ); + const viewportInfo = + cornerstoneViewportService.getViewportInfoByIndex(viewportIndex); if (viewportInfo?.viewportOptions?.customViewportProps?.hideOverlays) { return null; @@ -56,17 +55,20 @@ function CornerstoneOverlays(props) { scrollbarHeight={scrollbarHeight} servicesManager={servicesManager} /> - + + string; + formatDate: (val) => string; + formatTime: (val) => string; + formatNumberPrecision: (val, number) => string; + }; + + // calculated values + voi: { + windowWidth: number; + windowCenter: number; + }; + instanceNumber?: number; + scale?: number; +} + +/** + * Window Level / Center Overlay item + */ +function VOIOverlayItem({ voi, customization }: OverlayItemProps) { + const { windowWidth, windowCenter } = voi; + if (typeof windowCenter !== 'number' || typeof windowWidth !== 'number') { + return null; + } + + return ( +
+ W: + + {windowWidth.toFixed(0)} + + L: + + {windowCenter.toFixed(0)} + +
+ ); +} + +/** + * Zoom Level Overlay item + */ +function ZoomOverlayItem({ scale, customization }: OverlayItemProps) { + return ( +
+ Zoom: + {scale.toFixed(2)}x +
+ ); +} + +/** + * Instance Number Overlay Item + */ +function InstanceNumberOverlayItem({ + instanceNumber, + imageSliceData, + customization, +}: OverlayItemProps) { + const { imageIndex, numberOfSlices } = imageSliceData; + + return ( +
+ I: + + {instanceNumber !== undefined && instanceNumber !== null + ? `${instanceNumber} (${imageIndex + 1}/${numberOfSlices})` + : `${imageIndex + 1}/${numberOfSlices}`} + +
+ ); +} + +/** + * Customizable Viewport Overlay + */ +function CustomizableViewportOverlay({ + element, + viewportData, + imageSliceData, + viewportIndex, + servicesManager, +}) { + const { toolbarService, cornerstoneViewportService, customizationService } = + servicesManager.services; + const [voi, setVOI] = useState({ windowCenter: null, windowWidth: null }); + const [scale, setScale] = useState(1); + const [activeTools, setActiveTools] = useState([]); + const { imageIndex } = imageSliceData; + + const topLeftCustomization = customizationService.getModeCustomization( + 'cornerstoneOverlayTopLeft' + ); + const topRightCustomization = customizationService.getModeCustomization( + 'cornerstoneOverlayTopRight' + ); + const bottomLeftCustomization = customizationService.getModeCustomization( + 'cornerstoneOverlayBottomLeft' + ); + const bottomRightCustomization = customizationService.getModeCustomization( + 'cornerstoneOverlayBottomRight' + ); + + const instance = useMemo(() => { + if (viewportData != null) { + return _getViewportInstance(viewportData, imageIndex); + } else { + return null; + } + }, [viewportData, imageIndex]); + + const instanceNumber = useMemo(() => { + if (viewportData != null) { + return _getInstanceNumber( + viewportData, + viewportIndex, + imageIndex, + cornerstoneViewportService + ); + } + return null; + }, [viewportData, viewportIndex, imageIndex, cornerstoneViewportService]); + + /** + * Initial toolbar state + */ + useEffect(() => { + setActiveTools(toolbarService.getActiveTools()); + }, []); + + /** + * Updating the VOI when the viewport changes its voi + */ + useEffect(() => { + const updateVOI = eventDetail => { + const { range } = eventDetail.detail; + + if (!range) { + return; + } + + const { lower, upper } = range; + const { windowWidth, windowCenter } = utilities.windowLevel.toWindowLevel( + lower, + upper + ); + + setVOI({ windowCenter, windowWidth }); + }; + + element.addEventListener(Enums.Events.VOI_MODIFIED, updateVOI); + + return () => { + element.removeEventListener(Enums.Events.VOI_MODIFIED, updateVOI); + }; + }, [viewportIndex, viewportData, voi, element]); + + /** + * Updating the scale when the viewport changes its zoom + */ + useEffect(() => { + const updateScale = eventDetail => { + const { previousCamera, camera } = eventDetail.detail; + + if ( + previousCamera.parallelScale !== camera.parallelScale || + previousCamera.scale !== camera.scale + ) { + const viewport = + cornerstoneViewportService.getCornerstoneViewportByIndex( + viewportIndex + ); + + if (!viewport) { + return; + } + + const imageData = viewport.getImageData(); + + if (!imageData) { + return; + } + + if (camera.scale) { + setScale(camera.scale); + return; + } + + const { spacing } = imageData; + // convert parallel scale to scale + const scale = + (element.clientHeight * spacing[0] * 0.5) / camera.parallelScale; + setScale(scale); + } + }; + + element.addEventListener(Enums.Events.CAMERA_MODIFIED, updateScale); + + return () => { + element.removeEventListener(Enums.Events.CAMERA_MODIFIED, updateScale); + }; + }, [viewportIndex, viewportData, cornerstoneViewportService, element]); + + /** + * Updating the active tools when the toolbar changes + */ + // Todo: this should act on the toolGroups instead of the toolbar state + useEffect(() => { + const { unsubscribe } = toolbarService.subscribe( + toolbarService.EVENTS.TOOL_BAR_STATE_MODIFIED, + () => { + setActiveTools(toolbarService.getActiveTools()); + } + ); + + return () => { + unsubscribe(); + }; + }, [toolbarService]); + + const _renderOverlayItem = useCallback( + item => { + const overlayItemProps: OverlayItemProps = { + element, + viewportData, + imageSliceData, + viewportIndex, + servicesManager, + customization: item, + formatters: { + formatPN: formatPN, + formatDate: formatDICOMDate, + formatTime: formatDICOMTime, + formatNumberPrecision: formatNumberPrecision, + }, + instance, + // calculated + voi, + scale, + instanceNumber, + }; + + if (item.customizationType === 'ohif.overlayItem.windowLevel') { + return ; + } else if (item.customizationType === 'ohif.overlayItem.zoomLevel') { + return ; + } else if (item.customizationType === 'ohif.overlayItem.instanceNumber') { + return ; + } else { + const renderItem = customizationService.applyType(item); + + if (typeof renderItem.content === 'function') { + return renderItem.content(overlayItemProps); + } + } + }, + [ + element, + viewportData, + imageSliceData, + viewportIndex, + servicesManager, + customizationService, + instance, + voi, + scale, + instanceNumber, + ] + ); + + const getTopLeftContent = useCallback(() => { + const items = topLeftCustomization?.items || [ + { + id: 'WindowLevel', + customizationType: 'ohif.overlayItem.windowLevel', + }, + ]; + return ( + <> + {items.map((item, i) => ( +
{_renderOverlayItem(item)}
+ ))} + + ); + }, [topLeftCustomization, _renderOverlayItem]); + + const getTopRightContent = useCallback(() => { + const items = topRightCustomization?.items || [ + { + id: 'InstanceNmber', + customizationType: 'ohif.overlayItem.instanceNumber', + }, + ]; + return ( + <> + {items.map((item, i) => ( +
{_renderOverlayItem(item)}
+ ))} + + ); + }, [topRightCustomization, _renderOverlayItem]); + + const getBottomLeftContent = useCallback(() => { + const items = bottomLeftCustomization?.items || []; + return ( + <> + {items.map((item, i) => ( +
+ {_renderOverlayItem(item)} +
+ ))} + + ); + }, [bottomLeftCustomization, _renderOverlayItem]); + + const getBottomRightContent = useCallback(() => { + const items = bottomRightCustomization?.items || []; + return ( + <> + {items.map((item, i) => ( +
+ {_renderOverlayItem(item)} +
+ ))} + + ); + }, [bottomRightCustomization, _renderOverlayItem]); + + return ( + + ); +} + +function _getViewportInstance(viewportData, imageIndex) { + let imageId = null; + if (viewportData.viewportType === Enums.ViewportType.STACK) { + imageId = viewportData.data.imageIds[imageIndex]; + } else if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) { + const volumes = viewportData.volumes; + if (volumes && volumes.length == 1) { + const volume = volumes[0]; + imageId = volume.imageIds[imageIndex]; + } + } + return imageId ? metaData.get('instance', imageId) || {} : {}; +} + +function _getInstanceNumber( + viewportData, + viewportIndex, + imageIndex, + cornerstoneViewportService +) { + let instanceNumber; + + if (viewportData.viewportType === Enums.ViewportType.STACK) { + instanceNumber = _getInstanceNumberFromStack(viewportData, imageIndex); + + if (!instanceNumber && instanceNumber !== 0) { + return null; + } + } else if (viewportData.viewportType === Enums.ViewportType.ORTHOGRAPHIC) { + instanceNumber = _getInstanceNumberFromVolume( + viewportData, + imageIndex, + viewportIndex, + cornerstoneViewportService + ); + } + return instanceNumber; +} + +function _getInstanceNumberFromStack(viewportData, imageIndex) { + const imageIds = viewportData.data.imageIds; + const imageId = imageIds[imageIndex]; + + if (!imageId) { + return; + } + + const generalImageModule = metaData.get('generalImageModule', imageId) || {}; + const { instanceNumber } = generalImageModule; + + const stackSize = imageIds.length; + + if (stackSize <= 1) { + return; + } + + return parseInt(instanceNumber); +} + +// Since volume viewports can be in any view direction, they can render +// a reconstructed image which don't have imageIds; therefore, no instance and instanceNumber +// Here we check if viewport is in the acquisition direction and if so, we get the instanceNumber +function _getInstanceNumberFromVolume( + viewportData, + imageIndex, + viewportIndex, + cornerstoneViewportService +) { + const volumes = viewportData.volumes; + + // Todo: support fusion of acquisition plane which has instanceNumber + if (!volumes || volumes.length > 1) { + return; + } + + const volume = volumes[0]; + const { direction, imageIds } = volume; + + const cornerstoneViewport = + cornerstoneViewportService.getCornerstoneViewportByIndex(viewportIndex); + + if (!cornerstoneViewport) { + return; + } + + const camera = cornerstoneViewport.getCamera(); + const { viewPlaneNormal } = camera; + // checking if camera is looking at the acquisition plane (defined by the direction on the volume) + + const scanAxisNormal = direction.slice(6, 9); + + // check if viewPlaneNormal is parallel to scanAxisNormal + const cross = vec3.cross(vec3.create(), viewPlaneNormal, scanAxisNormal); + const isAcquisitionPlane = vec3.length(cross) < EPSILON; + + if (isAcquisitionPlane) { + const imageId = imageIds[imageIndex]; + + if (!imageId) { + return {}; + } + + const { instanceNumber } = + metaData.get('generalImageModule', imageId) || {}; + return parseInt(instanceNumber); + } +} + +CustomizableViewportOverlay.propTypes = { + viewportData: PropTypes.object, + imageIndex: PropTypes.number, + viewportIndex: PropTypes.number, +}; + +export default CustomizableViewportOverlay; diff --git a/extensions/cornerstone/src/Viewport/Overlays/utils.ts b/extensions/cornerstone/src/Viewport/Overlays/utils.ts new file mode 100644 index 000000000..3e36429ba --- /dev/null +++ b/extensions/cornerstone/src/Viewport/Overlays/utils.ts @@ -0,0 +1,98 @@ +import moment from 'moment'; +import { metaData } from '@cornerstonejs/core'; + +/** + * Checks if value is valid. + * + * @param {number} value + * @returns {boolean} is valid. + */ +export function isValidNumber(value) { + return typeof value === 'number' && !isNaN(value); +} + +/** + * Formats number precision. + * + * @param {number} number + * @param {number} precision + * @returns {number} formatted number. + */ +export function formatNumberPrecision(number, precision = 0) { + if (number !== null) { + return parseFloat(number).toFixed(precision); + } +} + +/** + * Formats DICOM date. + * + * @param {string} date + * @param {string} strFormat + * @returns {string} formatted date. + */ +export function formatDICOMDate(date, strFormat = 'MMM D, YYYY') { + return moment(date, 'YYYYMMDD').format(strFormat); +} + +/** + * DICOM Time is stored as HHmmss.SSS, where: + * HH 24 hour time: + * m mm 0..59 Minutes + * s ss 0..59 Seconds + * S SS SSS 0..999 Fractional seconds + * + * Goal: '24:12:12' + * + * @param {*} time + * @param {string} strFormat + * @returns {string} formatted name. + */ +export function formatDICOMTime(time, strFormat = 'HH:mm:ss') { + return moment(time, 'HH:mm:ss').format(strFormat); +} + +/** + * Formats a patient name for display purposes + * + * @param {string} name + * @returns {string} formatted name. + */ +export function formatPN(name) { + if (!name) { + return ''; + } + + const cleaned = name + .split('^') + .filter(s => !!s) + .join(', ') + .trim(); + return cleaned === ',' || cleaned === '' ? '' : cleaned; +} + +/** + * Gets compression type + * + * @param {number} imageId + * @returns {string} comrpession type. + */ +export function getCompression(imageId) { + const generalImageModule = metaData.get('generalImageModule', imageId) || {}; + const { + lossyImageCompression, + lossyImageCompressionRatio, + lossyImageCompressionMethod, + } = generalImageModule; + + if (lossyImageCompression === '01' && lossyImageCompressionRatio !== '') { + const compressionMethod = lossyImageCompressionMethod || 'Lossy: '; + const compressionRatio = formatNumberPrecision( + lossyImageCompressionRatio, + 2 + ); + return compressionMethod + compressionRatio + ' : 1'; + } + + return 'Lossless / Uncompressed'; +} diff --git a/extensions/default/src/commandsModule.js b/extensions/default/src/commandsModule.js index ba4e89de9..a39b78670 100644 --- a/extensions/default/src/commandsModule.js +++ b/extensions/default/src/commandsModule.js @@ -47,6 +47,18 @@ const commandsModule = ({ servicesManager, commandsManager }) => { title: 'DICOM Tag Browser', }); }, + + /** + * Toggle viewport overlay (the information panel shown on the four corners + * of the viewport) + * @see ViewportOverlay and CustomizableViewportOverlay components + */ + toggleOverlays: () => { + const overlays = document.getElementsByClassName('viewport-overlay'); + for (let i = 0; i < overlays.length; i++) { + overlays.item(i).classList.toggle('hidden'); + } + }, }; const definitions = { diff --git a/extensions/default/src/getCustomizationModule.tsx b/extensions/default/src/getCustomizationModule.tsx index 3ffd78a3e..47d5d1718 100644 --- a/extensions/default/src/getCustomizationModule.tsx +++ b/extensions/default/src/getCustomizationModule.tsx @@ -40,5 +40,76 @@ export default function getCustomizationModule() { ], }, }, + + { + name: 'default', + value: [ + /** + * Customization Component Type definition for overlay items. + * Overlay items are texts (or other components) that will be displayed + * on a Viewport Overlay, which contains the information panels on the + * four corners of a viewport. + * + * @definition of a overlay item using this type + * The value to be displayed is defined by + * - setting DICOM image instance's property to this field, + * - or defining contentF() + * + * { + * id: string - unique id for the overlay item + * customizationType: string - indicates customization type definition to this + * label: string - Label, to be displayed for the item + * title: string - Tooltip, for the item + * color: string - Color of the text + * condition: ({ instance }) => boolean - decides whether to display the overlay item or not + * attribute: string - property name of the DICOM image instance + * contentF: ({ instance, formatters }) => string | component, + * } + * + * @example + * { + * id: 'PatientNameOverlay', + * customizationType: 'ohif.overlayItem', + * label: 'PN:', + * title: 'Patient Name', + * color: 'yellow', + * condition: ({ instance }) => instance && instance.PatientName && instance.PatientName.Alphabetic, + * attribute: 'PatientName', + * contentF: ({ instance, formatters: { formatPN } }) => `${formatPN(instance.PatientName.Alphabetic)} ${(instance.PatientSex ? '(' + instance.PatientSex + ')' : '')}`, + * }, + * + * @see CustomizableViewportOverlay + */ + { + id: 'ohif.overlayItem', + uiType: 'uiType', + content: function (props) { + if (this.condition && !this.condition(props)) return null; + + const { instance } = props; + const value = + instance && this.attribute + ? instance[this.attribute] + : this.contentF && typeof this.contentF === 'function' + ? this.contentF(props) + : null; + if (!value) return null; + + return ( + + {this.label && ( + {this.label} + )} + {value} + + ); + }, + }, + ], + }, ]; } diff --git a/platform/core/src/services/CustomizationService/CustomizationService.ts b/platform/core/src/services/CustomizationService/CustomizationService.ts index 25a3dd3be..e3574f643 100644 --- a/platform/core/src/services/CustomizationService/CustomizationService.ts +++ b/platform/core/src/services/CustomizationService/CustomizationService.ts @@ -161,6 +161,13 @@ export default class CustomizationService extends PubSubService { return this.applyType(customization); } + public hasModeCustomization(customizationId: string) { + return ( + this.globalCustomizations[customizationId] || + this.modeCustomizations[customizationId] + ); + } + /** Applies any inheritance due to UI Type customization */ public applyType(customization: Customization): Customization { if (!customization) return customization; diff --git a/platform/docs/docs/assets/img/customizable-overlay.png b/platform/docs/docs/assets/img/customizable-overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..05ca4d275be569180f6065896ed5c265082c6657 GIT binary patch literal 1086983 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 u)p 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�yAJ4p0;yCOmhel1QESSM)hp|y4YqLwiN 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