From b4bf48f53181e7a3fedbf7619404d0817a7bac45 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 30 Oct 2019 23:04:47 +0100 Subject: [PATCH 01/50] Add unit argument to onZoom and onTimeChange callbacks --- README.md | 4 ++-- demo/app/demo-main/index.js | 5 +++++ src/lib/Timeline.js | 32 +++++++++++++++++++++++++------- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 614c0d2d8..15027687f 100644 --- a/README.md +++ b/README.md @@ -308,7 +308,7 @@ Called when an empty spot on the canvas was double clicked. Get the group and th Called when the canvas is clicked by the right button of the mouse. Note: If this property is set the default context menu doesn't appear -## onZoom(timelineContext) +## onZoom(timelineContext, unit) Called when the timeline is zoomed, either via mouse/pinch zoom or clicking header to change timeline units @@ -338,7 +338,7 @@ function (action, item, time, resizeEdge) { ``` -## onTimeChange(visibleTimeStart, visibleTimeEnd, updateScrollCanvas) +## onTimeChange(visibleTimeStart, visibleTimeEnd, updateScrollCanvas, unit) A function that's called when the user tries to scroll. Call the passed `updateScrollCanvas(start, end)` with the updated visibleTimeStart and visibleTimeEnd (as unix timestamps in milliseconds) to change the scroll behavior, for example to limit scrolling. diff --git a/demo/app/demo-main/index.js b/demo/app/demo-main/index.js index 6c8fd3c22..66deb97d2 100644 --- a/demo/app/demo-main/index.js +++ b/demo/app/demo-main/index.js @@ -135,6 +135,10 @@ export default class App extends Component { } } + handleZoom = (timelineContext, unit) => { + console.log('Zoomed', timelineContext, unit) + } + moveResizeValidator = (action, item, time) => { if (time < new Date().getTime()) { var newTime = @@ -174,6 +178,7 @@ export default class App extends Component { onItemResize={this.handleItemResize} onItemDoubleClick={this.handleItemDoubleClick} onTimeChange={this.handleTimeChange} + onZoom={this.handleZoom} moveResizeValidator={this.moveResizeValidator} > diff --git a/src/lib/Timeline.js b/src/lib/Timeline.js index d0087e114..45d26739a 100644 --- a/src/lib/Timeline.js +++ b/src/lib/Timeline.js @@ -264,6 +264,21 @@ export default class ReactCalendarTimeline extends Component { } } + getTimelineUnit = () => { + const { + width, + visibleTimeStart, + visibleTimeEnd + } = this.state + + const { timeSteps } = this.props + + const zoom = visibleTimeEnd - visibleTimeStart + const minUnit = getMinUnit(zoom, width, timeSteps) + + return minUnit + } + constructor(props) { super(props) @@ -409,7 +424,7 @@ export default class ReactCalendarTimeline extends Component { ) ) } - + return derivedState } @@ -419,7 +434,7 @@ export default class ReactCalendarTimeline extends Component { // are we changing zoom? Report it! if (this.props.onZoom && newZoom !== oldZoom) { - this.props.onZoom(this.getTimelineContext()) + this.props.onZoom(this.getTimelineContext(), this.getTimelineUnit()) } // The bounds have changed? Report it! @@ -509,7 +524,8 @@ export default class ReactCalendarTimeline extends Component { this.props.onTimeChange( visibleTimeStart, visibleTimeStart + zoom, - this.updateScrollCanvas + this.updateScrollCanvas, + this.getTimelineUnit() ) } } @@ -553,7 +569,8 @@ export default class ReactCalendarTimeline extends Component { this.props.onTimeChange( newVisibleTimeStart, newVisibleTimeStart + newZoom, - this.updateScrollCanvas + this.updateScrollCanvas, + this.getTimelineUnit() ) } @@ -570,7 +587,8 @@ export default class ReactCalendarTimeline extends Component { this.props.onTimeChange( visibleTimeStart, visibleTimeStart + zoom, - this.updateScrollCanvas + this.updateScrollCanvas, + this.getTimelineUnit() ) } @@ -869,13 +887,13 @@ export default class ReactCalendarTimeline extends Component { /** * check if child of type TimelineHeader - * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types + * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types */ isTimelineHeader = (child) => { if(child.type === undefined) return false return child.type.secretKey ===TimelineHeaders.secretKey } - + childrenWithProps( canvasTimeStart, canvasTimeEnd, From 39817fa51c949d73a0b45114289d395520f5ba97 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 30 Oct 2019 23:21:41 +0100 Subject: [PATCH 02/50] Update CHANGELOG.md --- CHANGELOG.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61deacbfc..204671e75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o ## Unreleased +* Add unit argument to onZoom and onTimeChange callbacks + ## 0.26.6 * fix `visibleTimeStart`, `visibleTimeEnd` and `onTimeChange` not working as expected in controlled mode @ilaiwi @@ -42,11 +44,11 @@ Using controlled scroll and react-spring to trigger scrolling and create an anim * add documentation for `onItemDeselect` #350 @ilaiwi * solve a bug where `onItemDeselect` is not triggered as expected for several item clicks #350 @ilaiwi -* fix row height on browser scaling #615 @gaston-niglia +* fix row height on browser scaling #615 @gaston-niglia ### Packages -update to `node-sass@4.12.0` for newer versions of node. +update to `node-sass@4.12.0` for newer versions of node. ## 0.26.2 @@ -78,7 +80,7 @@ you can as well solve the issue without upgrading by adding the following style #### Breaking -* Removed `` in favour of allowing for custom component to be rendered on move or resize. Check out the demo in `demo/app/demo-custom-info-label` for an example on how to display your own custom info label or [this example](https://codesandbox.io/s/timeline-demo-info-label-neec9). +* Removed `` in favour of allowing for custom component to be rendered on move or resize. Check out the demo in `demo/app/demo-custom-info-label` for an example on how to display your own custom info label or [this example](https://codesandbox.io/s/timeline-demo-info-label-neec9). ## 0.25.4 From 8aa758e98b81dde0076f5ff350f2da2ea75dd291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Zakrzewski?= Date: Wed, 18 Mar 2020 14:12:29 +0100 Subject: [PATCH 03/50] Fix injecting custom class names for vertical lines Fixes injecting custom class names for vertical lines spanning over a period of time longer than day (eg. month) --- src/lib/columns/Columns.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/columns/Columns.js b/src/lib/columns/Columns.js index 7447d596e..0942984c4 100644 --- a/src/lib/columns/Columns.js +++ b/src/lib/columns/Columns.js @@ -73,7 +73,7 @@ class Columns extends Component { (firstOfType ? ' rct-vl-first' : '') + (minUnit === 'day' || minUnit === 'hour' || minUnit === 'minute' ? ` rct-day-${time.day()} ` - : '') + + : ' ') + classNamesForTime.join(' ') const left = getLeftOffsetFromDate(time.valueOf()) @@ -112,4 +112,4 @@ ColumnsWrapper.defaultProps = { ...passThroughPropTypes } -export default ColumnsWrapper \ No newline at end of file +export default ColumnsWrapper From eb2b19655eb06f78b6d3849e00d34aac0b65436b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Zakrzewski?= Date: Wed, 18 Mar 2020 14:19:48 +0100 Subject: [PATCH 04/50] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a0fac65e..82c081e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o ## Unreleased * Add `className` prop to Timeline component to override `react-calendar-timeline` class #682 +* Fix injecting custom vertical line's class names for time periods longer than day ## 0.26.7 From 03bbff86906cf4227995537338d9d56cb9b90208 Mon Sep 17 00:00:00 2001 From: Lin Zhao Date: Fri, 15 May 2020 09:09:52 +0100 Subject: [PATCH 05/50] update create-react-context version to v0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8c7387bdc..1fdd4770f 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ }, "dependencies": { "classnames": "^2.2.6", - "create-react-context": "^0.2.2", + "create-react-context": "^0.3.0", "element-resize-detector": "^1.1.12", "lodash.isequal": "^4.5.0", "memoize-one": "^5.1.1" From feb9b2693fd9bd6edfb460c66aee8c86525d3412 Mon Sep 17 00:00:00 2001 From: ilaiwi Date: Wed, 20 May 2020 17:56:32 +0300 Subject: [PATCH 06/50] 0.27.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1fdd4770f..b62e59e68 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline", - "version": "0.26.7", + "version": "0.27.0", "description": "react calendar timeline", "main": "lib/index.js", "scripts": { From 9182d7eb9a1cef7027dae26c4ceb485ed7cf4b07 Mon Sep 17 00:00:00 2001 From: ilaiwi Date: Wed, 20 May 2020 17:57:42 +0300 Subject: [PATCH 07/50] yarn lock --- yarn.lock | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/yarn.lock b/yarn.lock index adaeacef0..08dc1afe9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2224,12 +2224,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" +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" + integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== dependencies: - fbjs "^0.8.0" gud "^1.0.0" + warning "^4.0.3" cross-env@^5.1.4: version "5.1.4" @@ -3300,18 +3301,6 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.0: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - fbjs@^0.8.16: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" @@ -8043,10 +8032,6 @@ typescript@^2.5.1: version "2.6.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" -ua-parser-js@^0.7.18: - version "0.7.18" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed" - ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" @@ -8288,6 +8273,13 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" From 845b3e7945939193aed80ff66abde60d8b777032 Mon Sep 17 00:00:00 2001 From: Steve G Date: Thu, 29 Oct 2020 16:15:21 -0400 Subject: [PATCH 08/50] Fix for Context Menu unintentionally disabled by default. Also a documentation update --- README.md | 6 +++--- src/lib/Timeline.js | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index daa482dbb..2a0ea15b2 100644 --- a/README.md +++ b/README.md @@ -435,8 +435,8 @@ Rather than applying props on the element yourself and to avoid your props being * onTouchEnd: event handler * onDoubleClick: event handler * onContextMenu: event handler - * style: inline object - + * style: inline object + \*\* _the given styles will only override the styles that are not a requirement for positioning the item. Other styles like `color`, `radius` and others_ @@ -1263,7 +1263,7 @@ $ yarn start Check http://0.0.0.0:8888/ in your browser and have fun! -Please run `npm run lint` before you send a pull request. `npm run jest` runs the tests. +Please run `npm run lint` before you send a pull request. `npm run test` runs the jest tests. - +
+ + diff --git a/demo/index.jsx b/demo/index.jsx index 6cc990bef..b0659fcc1 100644 --- a/demo/index.jsx +++ b/demo/index.jsx @@ -1,18 +1,16 @@ import React from 'react' -import ReactDOM from 'react-dom' import 'react-calendar-timeline-css' import App from './app' +import { createRoot } from 'react-dom/client'; +const container = document.getElementById('root'); +const root = createRoot(container); // createRoot(container!) if you use TypeScript +root.render(); -const render = AppToRender => { - ReactDOM.render(, document.getElementById('root')) -} - -render(App) if (module.hot) { module.hot.accept('./app', () => { const NextApp = require('./app').default - render(NextApp) + root.render(NextApp) }) } diff --git a/package.json b/package.json index a88834397..0052a65fe 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build:demo": "echo '!!! Building Demo' && cross-env NODE_ENV=production webpack --progress", "build:lib": "echo '!!! Building Library' && rimraf lib && cross-env NODE_ENV=production babel src --out-dir lib && node-sass src/lib/Timeline.scss lib/Timeline.css && sed -i'.bak' 's/Timeline\\.scss/Timeline\\.css/g' lib/lib/Timeline.js && rm lib/lib/Timeline.js.bak", "lint": "eslint --ext .js --ext .jsx ./src", - "lint:fix": "prettier-eslint --parser babylon --write \"src/**/*.js\"", + "lint:fix": "npm run lint --fix", "prepublish": "npm run build:lib", "start": "webpack-dev-server --hot --host 0.0.0.0", "test": "jest", @@ -92,64 +92,60 @@ ] }, "dependencies": { - "classnames": "^2.2.6", - "create-react-context": "^0.3.0", - "element-resize-detector": "^1.1.12", - "lodash.isequal": "^4.5.0", - "memoize-one": "^5.1.1" + "classnames": "^2.3.2", + "element-resize-detector": "^1.2.4", + "lodash": "^4.17.21", + "memoize-one": "^6.0.0" }, "peerDependencies": { - "interactjs": "^1.3.4", - "moment": "*", - "prop-types": "^15.6.2", - "react": ">=16.3", - "react-dom": ">=16.3" + "dayjs": "*", + "interactjs": "^1.10.24", + "prop-types": "^15.8.1", + "react": ">=18.2", + "react-dom": ">=18.2" }, "devDependencies": { - "@babel/cli": "^7.5.0", - "@babel/core": "^7.5.0", - "@babel/plugin-proposal-class-properties": "^7.5.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.2", - "@babel/preset-env": "^7.5.2", - "@babel/preset-react": "^7.0.0", - "babel-eslint": "^7.1.1", - "babel-jest": "^24.8.0", - "babel-loader": "^8.0.6", + "@babel/cli": "^7.23.4", + "@babel/core": "^7.23.5", + "@babel/eslint-parser": "^7.23.3", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/preset-env": "^7.23.5", + "@babel/preset-react": "^7.23.3", + "@faker-js/faker": "^8.3.1", + "@testing-library/jest-dom": "^6.1.5", + "@testing-library/react": "^14.1.2", + "babel-jest": "^29.7.0", + "babel-loader": "^9.1.3", "babel-plugin-react-remove-properties": "^0.3.0", - "cross-env": "^5.1.4", - "css-loader": "^6.7.1", - "enzyme": "^3.10.0", - "enzyme-adapter-react-16": "^1.14.0", - "eslint": "^4.16.0", - "eslint-config-prettier": "^2.9.0", - "eslint-config-standard": "^6.2.1", - "eslint-plugin-jest": "^21.6.1", + "cross-env": "^7.0.3", + "css-loader": "^6.8.1", + "dayjs": "^1.11.10", + "eslint": "^8.55.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^2.5.0", - "eslint-plugin-promise": "^3.4.0", - "eslint-plugin-react": "^7.5.1", - "eslint-plugin-standard": "^2.0.1", - "faker": "^4.1.0", - "interactjs": "^1.3.4", - "jest": "^24.8.0", - "jest-dom": "^3.5.0", - "jest-watch-typeahead": "^0.3.1", - "jsdom": "^11.5.1", - "moment": "^2.11.1", - "node-sass": "^7.0.1", - "prettier": "^1.10.2", - "prettier-eslint-cli": "^4.7.0", - "prop-types": "^15.6.2", - "randomcolor": "^0.5.3", - "react": "^16.2.0", - "react-dom": "^16.2.0", - "react-router-dom": "^4.1.1", - "react-testing-library": "^6.0.3", - "regenerator-runtime": "^0.13.2", - "rimraf": "^2.6.2", - "sass-loader": "^13.0.0", - "style-loader": "^3.3.1", - "webpack": "^5.72.1", - "webpack-cli": "^4.9.2", - "webpack-dev-server": "^4.9.0" + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "interactjs": "^1.10.24", + "jest": "^29.7.0", + "jest-watch-typeahead": "^2.2.2", + "jsdom": "^23.0.1", + "node-sass": "^9.0.0", + "prettier": "^3.1.0", + "prettier-eslint-cli": "^8.0.1", + "prop-types": "^15.8.1", + "randomcolor": "^0.6.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.20.1", + "regenerator-runtime": "^0.14.0", + "rimraf": "^5.0.5", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" } } diff --git a/src/lib/headers/HeadersContext.js b/src/lib/headers/HeadersContext.js index d2a6830fe..47888462c 100644 --- a/src/lib/headers/HeadersContext.js +++ b/src/lib/headers/HeadersContext.js @@ -1,6 +1,5 @@ import React from 'react' import PropTypes from 'prop-types' -import createReactContext from 'create-react-context' import { noop } from '../utility/generic' const defaultContextState = { @@ -14,7 +13,7 @@ const defaultContextState = { timeSteps: {} } -const { Consumer, Provider } = createReactContext(defaultContextState) +const { Consumer, Provider } = React.createContext(defaultContextState) export class TimelineHeadersProvider extends React.Component { diff --git a/src/lib/items/Item.js b/src/lib/items/Item.js index 2099a1a1a..f2dc793e5 100644 --- a/src/lib/items/Item.js +++ b/src/lib/items/Item.js @@ -1,7 +1,9 @@ import { Component } from 'react' import PropTypes from 'prop-types' import interact from 'interactjs' -import moment from 'moment' +import dayjs from "dayjs" +import utc from "dayjs/plugin/utc" +dayjs.extend(utc) import { _get, deepObjectCompare } from '../utility/generic' import { composeEvents } from '../utility/events' @@ -135,7 +137,7 @@ export default class Item extends Component { dragTimeSnap(dragTime, considerOffset) { const { dragSnap } = this.props if (dragSnap) { - const offset = considerOffset ? moment().utcOffset() * 60 * 1000 : 0 + const offset = considerOffset ? dayjs().utcOffset() * 60 * 1000 : 0 return Math.round(dragTime / dragSnap) * dragSnap - offset % dragSnap } else { return dragTime @@ -153,7 +155,7 @@ export default class Item extends Component { } dragTime(e) { - const startTime = moment(this.itemTimeStart) + const startTime = dayjs(this.itemTimeStart) if (this.state.dragging) { return this.dragTimeSnap(this.timeFor(e) + this.state.dragStart.offset, true) diff --git a/src/lib/markers/MarkerCanvasContext.js b/src/lib/markers/MarkerCanvasContext.js index 7e4cb0448..af3ef0e7c 100644 --- a/src/lib/markers/MarkerCanvasContext.js +++ b/src/lib/markers/MarkerCanvasContext.js @@ -1,4 +1,4 @@ -import createReactContext from 'create-react-context' +import React from 'react' /* eslint-disable no-console */ const defaultContextState = { @@ -8,7 +8,7 @@ const defaultContextState = { } /* eslint-enable */ -const { Consumer, Provider } = createReactContext(defaultContextState) +const { Consumer, Provider } = React.createContext(defaultContextState) export const MarkerCanvasProvider = Provider export const MarkerCanvasConsumer = Consumer diff --git a/src/lib/markers/TimelineMarkersContext.js b/src/lib/markers/TimelineMarkersContext.js index 474a36e28..c047d3eee 100644 --- a/src/lib/markers/TimelineMarkersContext.js +++ b/src/lib/markers/TimelineMarkersContext.js @@ -1,6 +1,5 @@ import React from 'react' import PropTypes from 'prop-types' -import createReactContext from 'create-react-context' import { noop } from '../utility/generic' const defaultContextState = { @@ -12,7 +11,7 @@ const defaultContextState = { } } -const { Consumer, Provider } = createReactContext(defaultContextState) +const { Consumer, Provider } = React.createContext(defaultContextState) // REVIEW: is this the best way to manage ids? let _id = 0 diff --git a/src/lib/timeline/TimelineStateContext.js b/src/lib/timeline/TimelineStateContext.js index 681f37ca8..ea0e31aa2 100644 --- a/src/lib/timeline/TimelineStateContext.js +++ b/src/lib/timeline/TimelineStateContext.js @@ -1,6 +1,5 @@ import React from 'react' import PropTypes from 'prop-types' -import createReactContext from 'create-react-context' import { calculateXPositionForTime, calculateTimeForXPosition @@ -30,7 +29,7 @@ const defaultContextState = { } /* eslint-enable */ -const { Consumer, Provider } = createReactContext(defaultContextState) +const { Consumer, Provider } = React.createContext(defaultContextState) export class TimelineStateProvider extends React.Component { /* eslint-disable react/no-unused-prop-types */ diff --git a/src/lib/utility/calendar.js b/src/lib/utility/calendar.js index c4721b13e..054896ce6 100644 --- a/src/lib/utility/calendar.js +++ b/src/lib/utility/calendar.js @@ -1,4 +1,4 @@ -import moment from 'moment' +import dayjs from 'dayjs' import { _get } from './generic' /** @@ -60,7 +60,7 @@ export function calculateTimeForXPosition( } export function iterateTimes(start, end, unit, timeSteps, callback) { - let time = moment(start).startOf(unit) + let time = dayjs(start).startOf(unit) if (timeSteps[unit] && timeSteps[unit] > 1) { let value = time.get(unit) @@ -68,7 +68,7 @@ export function iterateTimes(start, end, unit, timeSteps, callback) { } while (time.valueOf() < end) { - let nextTime = moment(time).add(timeSteps[unit] || 1, `${unit}s`) + let nextTime = dayjs(time).add(timeSteps[unit] || 1, `${unit}s`) callback(time, nextTime) time = nextTime } diff --git a/src/lib/utility/generic.js b/src/lib/utility/generic.js index 3e4ae1527..ab48b35aa 100644 --- a/src/lib/utility/generic.js +++ b/src/lib/utility/generic.js @@ -1,4 +1,4 @@ -import isEqual from 'lodash.isequal' +import isEqual from 'lodash/isEqual' // so we could use both immutable.js objects and regular objects diff --git a/webpack.config.js b/webpack.config.js index e170b2073..fb8158178 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -9,7 +9,7 @@ const config = { demo: [ `webpack-dev-server/client?http://0.0.0.0:${port}`, 'webpack/hot/only-dev-server', - './index.js' + './index.jsx' ] }, output: { diff --git a/yarn.lock b/yarn.lock index 287128de2..67a343ea4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,884 +2,1624 @@ # yarn lockfile v1 -"@babel/cli@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.5.0.tgz#f403c930692e28ecfa3bf02a9e7562b474f38271" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adobe/css-tools@^4.3.1": + version "4.3.2" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz" + integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/cli@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz" + integrity sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw== dependencies: - commander "^2.8.1" - convert-source-map "^1.1.0" + "@jridgewell/trace-mapping" "^0.3.17" + commander "^4.0.1" + convert-source-map "^2.0.0" fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - lodash "^4.17.11" - mkdirp "^0.5.1" - output-file-sync "^2.0.0" + glob "^7.2.0" + make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: - chokidar "^2.0.4" + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" + chokidar "^3.4.0" -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" -"@babel/core@^7.1.0", "@babel/core@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.0.tgz#6ed6a2881ad48a732c5433096d96d1b0ee5eb734" - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/helpers" "^7.5.0" - "@babel/parser" "^7.5.0" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.0" - "@babel/types" "^7.5.0" - convert-source-map "^1.1.0" +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.23.5", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz" + integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.5" + "@babel/parser" "^7.23.5" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.5" + "@babel/types" "^7.23.5" + convert-source-map "^2.0.0" debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.4.0", "@babel/generator@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" - dependencies: - "@babel/types" "^7.5.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz" + integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.23.5", "@babel/generator@^7.7.2": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz" + integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== + dependencies: + "@babel/types" "^7.23.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.15": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz" + integrity sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@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.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz" + integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg== dependencies: - "@babel/types" "^7.3.0" - esutils "^2.0.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.5" + "@babel/types" "^7.23.5" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz" + integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== -"@babel/helper-create-class-features-plugin@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.0.tgz#02edb97f512d44ba23b3227f1bf2ed43454edac5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": + version "7.23.3" + 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.23.3.tgz" + integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz" + integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.23.3" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz" + integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - "@babel/types" "^7.4.4" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" +"@babel/plugin-syntax-import-assertions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz" + integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== dependencies: - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" +"@babel/plugin-syntax-import-attributes@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz" + integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== dependencies: - "@babel/types" "^7.4.4" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/helpers@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.0.tgz#7f0c17666e7ed8355ed6eff643dde12fb681ddb4" +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.0" - "@babel/types" "^7.5.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.0.tgz#5bc6a0537d286fcb4fd4e89975adbca334987007" +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-dynamic-import@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-object-rest-spread@^7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.2.tgz#ec92b0c6419074ea7af77c78b7c5d42041f2f5a9" +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" +"@babel/plugin-transform-arrow-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz" + integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-dynamic-import@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" +"@babel/plugin-transform-async-generator-functions@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz" + integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" +"@babel/plugin-transform-async-to-generator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz" + integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" +"@babel/plugin-transform-block-scoped-functions@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz" + integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" +"@babel/plugin-transform-block-scoping@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz" + integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" +"@babel/plugin-transform-class-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz" + integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz" + integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-async-to-generator@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" +"@babel/plugin-transform-classes@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz" + integrity sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" +"@babel/plugin-transform-computed-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz" + integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.15" -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" +"@babel/plugin-transform-destructuring@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz" + integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" +"@babel/plugin-transform-dotall-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz" + integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" +"@babel/plugin-transform-duplicate-keys@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz" + integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" +"@babel/plugin-transform-dynamic-import@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz" + integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" +"@babel/plugin-transform-exponentiation-operator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz" + integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" +"@babel/plugin-transform-export-namespace-from@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz" + integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" +"@babel/plugin-transform-for-of@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz" + integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" +"@babel/plugin-transform-function-name@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz" + integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" +"@babel/plugin-transform-json-strings@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz" + integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" +"@babel/plugin-transform-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz" + integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" +"@babel/plugin-transform-logical-assignment-operators@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz" + integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" +"@babel/plugin-transform-member-expression-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz" + integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" +"@babel/plugin-transform-modules-amd@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz" + integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" +"@babel/plugin-transform-modules-systemjs@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz" + integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - dependencies: - regexp-tree "^0.1.6" +"@babel/plugin-transform-modules-umd@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz" + integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" +"@babel/plugin-transform-new-target@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz" + integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" +"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz" + integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz" + integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz" + integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== + dependencies: + "@babel/compat-data" "^7.23.3" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.23.3" + +"@babel/plugin-transform-object-super@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz" + integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + +"@babel/plugin-transform-optional-catch-binding@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz" + integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz" + integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz" + integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz" + integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" +"@babel/plugin-transform-private-property-in-object@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz" + integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" +"@babel/plugin-transform-property-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz" + integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" +"@babel/plugin-transform-react-display-name@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz" + integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz" + integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz" + integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz" + integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz" + integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz" + integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz" + integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz" + integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz" + integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz" + integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz" + integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz" + integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz" + integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz" + integrity sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@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.23.3" + "@babel/plugin-syntax-import-attributes" "^7.23.3" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@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-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.23.3" + "@babel/plugin-transform-async-generator-functions" "^7.23.4" + "@babel/plugin-transform-async-to-generator" "^7.23.3" + "@babel/plugin-transform-block-scoped-functions" "^7.23.3" + "@babel/plugin-transform-block-scoping" "^7.23.4" + "@babel/plugin-transform-class-properties" "^7.23.3" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-classes" "^7.23.5" + "@babel/plugin-transform-computed-properties" "^7.23.3" + "@babel/plugin-transform-destructuring" "^7.23.3" + "@babel/plugin-transform-dotall-regex" "^7.23.3" + "@babel/plugin-transform-duplicate-keys" "^7.23.3" + "@babel/plugin-transform-dynamic-import" "^7.23.4" + "@babel/plugin-transform-exponentiation-operator" "^7.23.3" + "@babel/plugin-transform-export-namespace-from" "^7.23.4" + "@babel/plugin-transform-for-of" "^7.23.3" + "@babel/plugin-transform-function-name" "^7.23.3" + "@babel/plugin-transform-json-strings" "^7.23.4" + "@babel/plugin-transform-literals" "^7.23.3" + "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" + "@babel/plugin-transform-member-expression-literals" "^7.23.3" + "@babel/plugin-transform-modules-amd" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-umd" "^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-object-rest-spread" "^7.23.4" + "@babel/plugin-transform-object-super" "^7.23.3" + "@babel/plugin-transform-optional-catch-binding" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-parameters" "^7.23.3" + "@babel/plugin-transform-private-methods" "^7.23.3" + "@babel/plugin-transform-private-property-in-object" "^7.23.4" + "@babel/plugin-transform-property-literals" "^7.23.3" + "@babel/plugin-transform-regenerator" "^7.23.3" + "@babel/plugin-transform-reserved-words" "^7.23.3" + "@babel/plugin-transform-shorthand-properties" "^7.23.3" + "@babel/plugin-transform-spread" "^7.23.3" + "@babel/plugin-transform-sticky-regex" "^7.23.3" + "@babel/plugin-transform-template-literals" "^7.23.3" + "@babel/plugin-transform-typeof-symbol" "^7.23.3" + "@babel/plugin-transform-unicode-escapes" "^7.23.3" + "@babel/plugin-transform-unicode-property-regex" "^7.23.3" + "@babel/plugin-transform-unicode-regex" "^7.23.3" + "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - dependencies: - regenerator-transform "^0.14.0" +"@babel/preset-react@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz" + integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.23.3" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.23.3" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz" + integrity sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz" + integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.5" + "@babel/types" "^7.23.5" + debug "^4.1.0" + globals "^11.1.0" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz" + integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + eslint-visitor-keys "^3.3.0" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.55.0": + version "8.55.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz" + integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== + +"@faker-js/faker@^8.3.1": + version "8.3.1" + resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-8.3.1.tgz" + integrity sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw== + +"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@interactjs/types@1.10.24": + version "1.10.24" + resolved "https://registry.npmjs.org/@interactjs/types/-/types-1.10.24.tgz" + integrity sha512-AZ0pElgSyu21RaSjNq0PkO2XfEDGHcj+zZhQztDnDQNo4lh1FTEm1lhqqOxyvcbP1tgFBTMX1jnnB+AcirgKmw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + jest-get-type "^29.6.3" -"@babel/preset-env@^7.5.2": - version "7.5.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.2.tgz#34a46f01aed617b174b8dbaf8fed9239300343d0" +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.5.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.5.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.5.0" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/preset-react@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0", "@jest/globals@>= 28": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" -"@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.2.tgz#f5ab6897320f16decd855eed70b705908a313fe8" +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: - regenerator-runtime "^0.13.2" + "@sinclair/typebox" "^0.27.8" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.0" - "@babel/types" "^7.5.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.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" -"@cnakazawa/watch@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: - "@jest/source-map" "^24.3.0" - chalk "^2.0.1" - slash "^2.0.0" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - pirates "^4.0.1" - realpath-native "^1.1.0" - rimraf "^2.5.4" - strip-ansi "^5.0.0" - -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - node-notifier "^5.2.1" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@messageformat/core@^3.2.0": + version "3.3.0" + resolved "https://registry.npmjs.org/@messageformat/core/-/core-3.3.0.tgz" + integrity sha512-YcXd3remTDdeMxAlbvW6oV9d/01/DZ8DHUFwSttO3LMzIZj3iO0NRw+u1xlsNNORFI+u0EQzD52ZX3+Udi0T3g== dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" - "@types/istanbul-lib-coverage" "^2.0.0" + "@messageformat/date-skeleton" "^1.0.0" + "@messageformat/number-skeleton" "^1.0.0" + "@messageformat/parser" "^5.1.0" + "@messageformat/runtime" "^3.0.1" + make-plural "^7.0.0" + safe-identifier "^0.4.1" + +"@messageformat/date-skeleton@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@messageformat/date-skeleton/-/date-skeleton-1.0.1.tgz" + integrity sha512-jPXy8fg+WMPIgmGjxSlnGJn68h/2InfT0TNSkVx0IGXgp4ynnvYkbZ51dGWmGySEK+pBiYUttbQdu5XEqX5CRg== + +"@messageformat/number-skeleton@^1.0.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@messageformat/number-skeleton/-/number-skeleton-1.2.0.tgz" + integrity sha512-xsgwcL7J7WhlHJ3RNbaVgssaIwcEyFkBqxHdcdaiJzwTZAWEOD8BuUFxnxV9k5S0qHN3v/KzUpq0IUpjH1seRg== -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" +"@messageformat/parser@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.0.tgz" + integrity sha512-jKlkls3Gewgw6qMjKZ9SFfHUpdzEVdovKFtW1qRhJ3WI4FW5R/NnGDqr8SDGz+krWDO3ki94boMmQvGke1HwUQ== dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" + moo "^0.5.1" -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" +"@messageformat/runtime@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@messageformat/runtime/-/runtime-3.0.1.tgz" + integrity sha512-6RU5ol2lDtO8bD9Yxe6CZkl0DArdv0qkuoZC+ZwowU+cdRlVE1157wjCmlA5Rsf1Xc/brACnsZa5PZpEDfTFFg== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" - micromatch "^3.1.10" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" + make-plural "^7.0.0" -"@jest/types@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.5.0.tgz#feee214a4d0167b0ca447284e95a57aa10b3ee95" +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + version "2.1.8-no-fsevents.3" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" + integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== + +"@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" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: - "@types/istanbul-lib-coverage" "^1.1.0" - "@types/yargs" "^12.0.9" + eslint-scope "5.1.1" -"@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@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" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" "@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" integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + "@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" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" rimraf "^3.0.2" -"@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@prettier/eslint@npm:prettier-eslint@^16.1.0": + version "16.1.2" + resolved "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.1.2.tgz" + integrity sha512-mGFGZQbAh11FSnwW3H1zngzQYR2QMmHO8vdfgnAuzOFhnDeUZHYtwpqQvOMOMT0k818Dr1X+J4a/sVE0r34RKQ== + dependencies: + "@typescript-eslint/parser" "^6.7.5" + common-tags "^1.4.0" + dlv "^1.1.0" + eslint "^8.7.0" + indent-string "^4.0.0" + lodash.merge "^4.6.0" + loglevel-colored-level-prefix "^1.0.0" + prettier "^3.0.1" + pretty-format "^29.7.0" + require-relative "^0.8.7" + typescript "^5.2.2" + vue-eslint-parser "^9.1.0" + +"@remix-run/router@1.13.1": + version "1.13.1" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz" + integrity sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@testing-library/dom@^9.0.0": + version "9.3.3" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" + integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^6.1.5": + version "6.1.5" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz" + integrity sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g== + dependencies: + "@adobe/css-tools" "^4.3.1" + "@babel/runtime" "^7.9.2" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^14.1.2": + version "14.1.2" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz" + integrity sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^9.0.0" + "@types/react-dom" "^18.0.0" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/babel__core@^7.1.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== 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.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + version "7.6.7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz" + integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" + version "7.20.4" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz" + integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@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" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -887,14 +1627,14 @@ "@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" integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== 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" integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== dependencies: "@types/express-serve-static-core" "*" @@ -902,14 +1642,14 @@ "@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" 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" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz" integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== dependencies: "@types/eslint" "*" @@ -917,20 +1657,20 @@ "@types/eslint@*": version "8.4.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz" integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== 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@*", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@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" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== dependencies: "@types/node" "*" @@ -939,7 +1679,7 @@ "@types/express@*", "@types/express@^4.17.13": version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== dependencies: "@types/body-parser" "*" @@ -947,400 +1687,494 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + "@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" integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - -"@types/istanbul-lib-coverage@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#2cc2ca41051498382b43157c8227fea60363f94a" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: - "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" "@types/json-schema@*", "@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" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@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/mime@*": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz" + integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== "@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" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/node-forge@^1.3.0": + version "1.3.10" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz" + integrity sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw== + dependencies: + "@types/node" "*" + "@types/node@*": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" + version "20.10.2" + resolved "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz" + integrity sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw== + dependencies: + undici-types "~5.26.4" "@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" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/prop-types@*": + version "15.7.11" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + "@types/qs@*": 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" 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" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/react-dom@^18.0.0": + version "18.2.17" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz" + integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.41" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz" + integrity sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@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" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/scheduler@*": + version "0.16.8" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" + integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== + +"@types/semver@^7.3.12": + version "7.5.6" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + "@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" 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== +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.5" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: - "@types/mime" "^1" + "@types/http-errors" "*" + "@types/mime" "*" "@types/node" "*" "@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" integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" -"@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" +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@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== +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" -"@types/yargs@^12.0.2": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" - -"@types/yargs@^12.0.9": - version "12.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.10.tgz#17a8ec65cd8e88f51b418ceb271af18d3137df67" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@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" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@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" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@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" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@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" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/parser@^6.7.5": + version "6.13.2" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz" + integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg== + dependencies: + "@typescript-eslint/scope-manager" "6.13.2" + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/typescript-estree" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@6.13.2": + version "6.13.2" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz" + integrity sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA== + dependencies: + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@6.13.2": + version "6.13.2" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz" + integrity sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@6.13.2": + version "6.13.2" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz" + integrity sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w== + dependencies: + "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/visitor-keys" "6.13.2" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@^5.10.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@6.13.2": + version "6.13.2" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz" + integrity sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw== + dependencies: + "@typescript-eslint/types" "6.13.2" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@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" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@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" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== 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" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== 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" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@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" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@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" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@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" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@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" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@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" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" "@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@^2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== -"@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== - dependencies: - envinfo "^7.7.3" +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== -"@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@^2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== "@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" 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" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - 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" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" - dependencies: - mime-types "~2.1.16" - negotiator "0.6.1" - -accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -accepts@~1.3.8: +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" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" negotiator "0.6.3" -acorn-globals@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" - dependencies: - acorn "^5.0.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" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.0.0, acorn@^5.1.2, acorn@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== -acorn@^5.5.0: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -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@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -agent-base@6, agent-base@^6.0.2: +agent-base@^6.0.2, agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + +agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^1.1.2" 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" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" -airbnb-prop-types@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz#43147a5062dd2a4a5600e748a47b64004cc5f7fc" - dependencies: - array.prototype.find "^2.0.4" - function.prototype.name "^1.1.0" - has "^1.0.3" - is-regex "^1.0.4" - object-is "^1.0.1" - object.assign "^4.1.0" - object.entries "^1.1.0" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.8.6" - 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" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - 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" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv-keywords@^5.0.0: +ajv-keywords@^5.1.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" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" -ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: 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" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -1348,403 +2182,373 @@ ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" +ajv@^8.0.0: + version "8.11.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== +ajv@^8.8.2, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" +ansi-escapes@^6.0.0: + version "6.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz" + integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== + dependencies: + type-fest "^3.0.0" 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" 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" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 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" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + 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" - -ansi-styles@^3.1.0, ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== 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" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.0.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" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@~3.1.2: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - "aproba@^1.0.3 || ^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" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -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" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - are-we-there-yet@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz" integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +aria-query@^5.0.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" -array-filter@^1.0.0: +array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - -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-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" 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" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: - array-uniq "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -array.prototype.find@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz#630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7" +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.13.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -array.prototype.flat@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.10.0" - function-bind "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -arrify@^1.0.0, arrify@^1.0.1: +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +arrify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -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" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - -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/arrify/-/arrify-1.0.1.tgz" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== async-foreach@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz" + integrity sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -atob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" - -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^7.1.1: - version "7.2.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" - dependencies: - babel-code-frame "^6.22.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.17.0" - -babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" - chalk "^2.4.2" - slash "^2.0.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" -babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" +babel-loader@^9.1.3: + version "9.1.3" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" + integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: - babel-runtime "^6.22.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: - object.assign "^4.1.0" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" -babel-plugin-istanbul@^5.1.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@types/babel__traverse" "^7.0.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-plugin-react-remove-properties@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-react-remove-properties/-/babel-plugin-react-remove-properties-0.3.0.tgz#7b623fb3c424b6efb4edc9b1ae4cc50e7154b87f" - -babel-preset-jest@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" - -babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-traverse@^6.23.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" + resolved "https://registry.npmjs.org/babel-plugin-react-remove-properties/-/babel-plugin-react-remove-properties-0.3.0.tgz" + integrity sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng== -babel-types@^6.23.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@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-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + integrity sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch-processor@^1.0.0: +batch-processor@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + resolved "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz" + integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== 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" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== body-parser@1.20.0: version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: bytes "3.1.2" @@ -1762,7 +2566,7 @@ body-parser@1.20.0: bonjour-service@^1.0.11: version "1.0.12" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz" integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== dependencies: array-flatten "^2.1.2" @@ -1770,110 +2574,68 @@ bonjour-service@^1.0.11: fast-deep-equal "^3.1.3" multicast-dns "^7.2.4" -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boolify@^1.0.0: +boolify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b" - -boom@4.x.x: - version "4.3.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" - dependencies: - hoek "4.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" + resolved "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz" + integrity sha512-ma2q0Tc760dW54CdOyJjhrg/a54317o1zYADQJFgperNGKIKgAUGIcKnuMiff8z57+yGlrGNEt4lPgZfCgTJgA== 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" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + balanced-match "^1.0.0" 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" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browser-process-hrtime@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" +browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1, "browserslist@>= 4.21.0": + version "4.22.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== dependencies: - resolve "1.1.7" + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" -browserslist@^4.14.5: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - 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" - -browserslist@^4.6.0, browserslist@^4.6.2: - version "4.6.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.3.tgz#0530cbc6ab0c1f3fc8c819c72377ba55cf647f05" - dependencies: - caniuse-lite "^1.0.30000975" - electron-to-chromium "^1.3.164" - node-releases "^1.1.23" - -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz" + integrity sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ== 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" + 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" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^15.2.0: 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" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" @@ -1895,97 +2657,87 @@ cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - -camelcase-keys@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 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" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +camelcase-keys@^9.1.0: + version "9.1.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-9.1.2.tgz" + integrity sha512-nFhquwz7p3nWSHeVYoIkefNPdR2Rt4EuKs9/gaqx3DhJL6HkNHIEcsH+D6N4NvW/MHxc4TT+rp0rc4K7E7x9hw== + dependencies: + camelcase "^8.0.0" + map-obj "5.0.0" + quick-lru "^6.1.1" + type-fest "^4.3.2" -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - -caniuse-lite@^1.0.30000975: - version "1.0.30000979" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000979.tgz#92f16d00186a6cf20d6c5711bb6e042a3d667029" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001332: - 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== +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +camelcase@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz" + integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== -chalk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" +caniuse-lite@^1.0.30001565: + version "1.0.30001565" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz" + integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== 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" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1993,66 +2745,65 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - 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" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.2: +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: 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" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - -cheerio@^1.0.0-rc.2: - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chokidar@^2.0.4: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== -chokidar@^3.5.3: +chokidar@^3.4.0, 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" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -2065,84 +2816,48 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - 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" 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" 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" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== -classnames@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" +classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== 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" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wrap-ansi "^7.0.0" 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" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -2151,105 +2866,85 @@ clone-deep@^4.0.1: co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -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/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz" + integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== dependencies: color-name "^1.1.1" 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" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -color-name@~1.1.4: +color-name@^1.1.1, 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" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.3: 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" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== colorette@^2.0.10, colorette@^2.0.14: version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" - -combined-stream@1.0.6, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.8: 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" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + 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" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^2.8.1, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - -commander@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -common-tags@^1.4.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771" - dependencies: - babel-runtime "^6.26.0" +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +common-tags@^1.4.0, common-tags@^1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== 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" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" 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" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -2262,595 +2957,519 @@ 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" - -concat-stream@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -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" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -console-control-strings@^1.0.0, console-control-strings@^1.1.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" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== 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" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" -content-type-parser@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" - content-type@~1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -convert-source-map@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - dependencies: - safe-buffer "~5.1.1" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 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" + 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" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - -core-js-compat@^3.1.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.3" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz" + integrity sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow== dependencies: - browserslist "^4.6.2" - core-js-pure "3.1.4" - semver "^6.1.1" - -core-js-pure@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + browserslist "^4.22.1" -core-js@^2.4.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +core-js@^3.33.0: + version "3.33.3" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz" + integrity sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -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" - integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== - dependencies: - gud "^1.0.0" - warning "^4.0.3" - -cross-env@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.4.tgz#f61c14291f7cc653bb86457002ea80a04699d022" - dependencies: - cross-spawn "^5.1.0" - is-windows "^1.0.0" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + cross-spawn "^7.0.1" -cross-spawn@^7.0.3: +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" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -cryptiles@3.x.x: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" - dependencies: - boom "5.x.x" - -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== +css-loader@^6.8.1: + version "6.8.1" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" + integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== dependencies: icss-utils "^5.1.0" - postcss "^8.4.7" + postcss "^8.4.21" postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" + postcss-modules-local-by-default "^4.0.3" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" - semver "^7.3.5" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + semver "^7.3.8" css.escape@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - -css@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.3.tgz#f861f4ba61e79bedc962aa548e5780fd95cbc6be" - dependencies: - inherits "^2.0.1" - source-map "^0.1.38" - source-map-resolve "^0.5.1" - urix "^0.1.0" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== 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" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" +cssstyle@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz" + integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== dependencies: - cssom "0.3.x" + rrweb-cssom "^0.6.0" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== dependencies: - ms "2.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" -debug@4, debug@^4.3.3: +dayjs@^1.11.10: + version "1.11.10" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@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" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - dependencies: - ms "^2.1.1" - decamelize-keys@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.0, 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" + 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" +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + 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.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 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" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + 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" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - 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" - 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" - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.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" + 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" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== depd@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz" + integrity sha512-Jlk9xvkTDGXwZiIDyoM7+3AsuvJVoyOpRupvEVy9nX3YO3/ieZxhlgh8GpLNZ8AY7HjO6y2YwpMSh1ejhu3uIw== 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" 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" +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== 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" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 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" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" dlv@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.1.tgz#c79d96bfe659a5568001250ed2aaf653992bdd3f" + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 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" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: version "5.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz" integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - dependencies: - esutils "^2.0.2" - -dom-serializer@0, dom-serializer@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -dom-testing-library@^3.18.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/dom-testing-library/-/dom-testing-library-3.18.2.tgz#07d65166743ad3299b7bee5b488e9622c31241bc" - dependencies: - "@babel/runtime" "^7.3.4" - "@sheerun/mutationobserver-shim" "^0.3.2" - pretty-format "^24.5.0" - wait-for-expect "^1.1.0" - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.0.tgz#81fe5df81b3f057052cde3a9fa9bf536a85b9ab0" - -domhandler@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: - dom-serializer "0" - domelementtype "1" + esutils "^2.0.2" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -electron-to-chromium@^1.3.164: - version "1.3.187" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.187.tgz#fea64435f370892c0f27aded1bbdcb6f235c592b" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.118: - version "1.4.141" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz#4dd9119e8a99f1c83c51dfcf1bed79ea541f08d6" - integrity sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA== +electron-to-chromium@^1.4.601: + version "1.4.601" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz" + integrity sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA== -element-resize-detector@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.1.12.tgz#8b3fd6eedda17f9c00b360a0ea2df9927ae80ba2" +element-resize-detector@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz" + integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg== dependencies: - batch-processor "^1.0.0" + batch-processor "1.0.0" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== 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" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.12: +encoding@^0.1.12, encoding@^0.1.13: 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" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.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== +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^1.1.1, entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 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" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.3: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -enzyme-adapter-react-16@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz#204722b769172bcf096cb250d33e6795c1f1858f" - dependencies: - enzyme-adapter-utils "^1.12.0" - has "^1.0.3" - object.assign "^4.1.0" - object.values "^1.1.0" - prop-types "^15.7.2" - react-is "^16.8.6" - react-test-renderer "^16.0.0-0" - semver "^5.7.0" - -enzyme-adapter-utils@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz#96e3730d76b872f593e54ce1c51fa3a451422d93" - dependencies: - airbnb-prop-types "^2.13.2" - function.prototype.name "^1.1.0" - object.assign "^4.1.0" - object.fromentries "^2.0.0" - prop-types "^15.7.2" - semver "^5.6.0" - -enzyme@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.10.0.tgz#7218e347c4a7746e133f8e964aada4a3523452f6" - dependencies: - array.prototype.flat "^1.2.1" - cheerio "^1.0.0-rc.2" - function.prototype.name "^1.1.0" - has "^1.0.3" - html-element-map "^1.0.0" - is-boolean-object "^1.0.0" - is-callable "^1.1.4" - is-number-object "^1.0.3" - is-regex "^1.0.4" - is-string "^1.0.4" - is-subset "^0.1.1" - lodash.escape "^4.0.1" - lodash.isequal "^4.5.0" - object-inspect "^1.6.0" - object-is "^1.0.1" - object.assign "^4.1.0" - object.entries "^1.0.4" - object.values "^1.0.4" - raf "^3.4.0" - rst-selector-parser "^2.2.3" - string.prototype.trim "^1.1.2" + version "7.11.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz" + integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== err-code@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== 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" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.5.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - dependencies: - es-to-primitive "^1.2.0" +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + 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.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== -es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.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" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" + hasown "^2.0.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -2858,275 +3477,225 @@ es-to-primitive@^1.2.0: 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" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 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" + 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" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escodegen@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-config-prettier@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b" - dependencies: - get-stdin "^5.0.1" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-standard@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-plugin-jest@^21.6.1: - version "21.27.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.27.2.tgz#2a795b7c3b5e707df48a953d651042bd01d7b0a8" +eslint-plugin-jest@^27.6.0: + version "27.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz" + integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== + dependencies: + "@typescript-eslint/utils" "^5.10.0" eslint-plugin-prettier@^2.5.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz" + integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== dependencies: fast-diff "^1.1.1" jest-docblock "^21.0.0" -eslint-plugin-promise@^3.4.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621" +eslint-plugin-promise@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-react@^7.5.1: - version "7.14.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz#94c193cc77a899ac0ecbb2766fbef88685b7ecc1" +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.1.0" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" - prop-types "^15.7.2" - resolve "^1.10.1" - -eslint-plugin-standard@^2.0.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.3.1.tgz#6765bd2a6d9ecdc7bdf1b145ae4bb30e2b7b86f8" - -eslint-scope@5.1.1: + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + 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.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +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" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" +eslint-scope@^7.1.1: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - -eslint@^4.0.0, eslint@^4.5.0: - version "4.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.16.0.tgz#934ada9e98715e1d7bbfd6f6f0519ed2fab35cc1" - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.2" - esquery "^1.0.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" - imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "^4.0.1" - text-table "~0.2.0" - -eslint@^4.16.0: - version "4.19.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" - chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^3.7.1" - eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^3.4.1: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.51.0, eslint@^8.55.0, eslint@^8.7.0, eslint@>=6.0.0, eslint@>=7.0.0: + version "8.55.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" + integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.55.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" - mkdirp "^0.5.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^1.0.1" - require-uncached "^1.0.3" - semver "^5.3.0" - strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" - -espree@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" - dependencies: - acorn "^5.2.1" - acorn-jsx "^3.0.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" -espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" +espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" - dependencies: - estraverse "^4.0.0" + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" +esquery@^1.4.0, esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: - estraverse "^4.1.0" - object-assign "^4.0.1" + estraverse "^5.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" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.2.0: +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" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -esutils@^2.0.0, esutils@^2.0.2: +esutils@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + integrity sha512-UUPPULqkyAV+M3Shodis7l8D+IyX6V8SbaBnTb449jf3fMTd8+UOZI1Q70NbZVOQkcR91yYgdHsJiMMMVmYshg== 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" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 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" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 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" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^5.0.0: 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" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -3141,34 +3710,23 @@ execa@^5.0.0: 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" + 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" - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - dependencies: - "@jest/types" "^24.8.0" - ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" express@^4.17.3: version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + resolved "https://registry.npmjs.org/express/-/express-4.18.1.tgz" integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" @@ -3203,143 +3761,80 @@ express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - 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" - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.1, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -external-editor@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -faker@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -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" - 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" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4: +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" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastest-levenshtein@^1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + 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" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - dependencies: - bser "^2.0.0" - -fbjs@^0.8.16: - version "0.8.16" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + bser "2.1.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + flat-cache "^3.0.4" 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" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" 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" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -3350,163 +3845,146 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.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" - 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" +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== dependencies: - locate-path "^3.0.0" + common-path-prefix "^3.0.0" + pkg-dir "^7.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" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.0.0: version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" -form-data@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" 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" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - 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" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - dependencies: - minipass "^2.2.1" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-minipass@^2.0.0: +fs-minipass@^2.0.0, fs-minipass@^2.1.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" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" 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" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs-readdir-recursive@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@^2.3.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" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - is-callable "^1.1.3" - -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" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gauge@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -3518,119 +3996,129 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gaze@^1.0.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== dependencies: globule "^1.0.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 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" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2: - 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, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 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" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -get-stdin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - dependencies: - pump "^3.0.0" +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== get-stream@^6.0.0: 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" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -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" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -glob-parent@~5.1.2: +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" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + 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" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" -glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" +glob@~7.1.1: + version "7.1.2" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3639,277 +4127,193 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" + type-fest "^0.20.2" -glob@~7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" + define-properties "^1.1.3" -globals@^11.0.1: +globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" globule@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + resolved "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz" + integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== dependencies: glob "~7.1.1" lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - -graceful-fs@^4.1.15: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" -graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.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" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 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" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - 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" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== 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" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + 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" + 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" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - -has-symbols@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -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" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.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" - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + get-intrinsic "^1.2.2" -has@^1.0.1: +has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -hawk@~6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" - dependencies: - boom "4.x.x" - cryptiles "3.x.x" - hoek "4.x.x" - sntp "2.x.x" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -history@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - resolve-pathname "^2.2.0" - value-equal "^0.4.0" - warning "^3.0.0" + has-symbols "^1.0.2" -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -hoist-non-react-statics@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + 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" 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" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" obuf "^1.0.0" readable-stream "^2.0.1" wbuf "^1.1.0" -html-element-map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz#3c4fcb4874ebddfe4283b51c8994e7713782b592" - dependencies: - array-filter "^1.0.0" - -html-encoding-sniffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^3.1.1" 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" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== -htmlparser2@^3.9.1: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^2.0.2" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-cache-semantics@^4.1.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" + 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" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz" + integrity sha512-STnYGcKMXL9CGdtpeTFnLmgMSHTTNQJSHxiC4DETHKf934Q160Ht5pljrNeH24S0O9xUN+9vsDJZdZtk5js6Ww== + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" 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" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -3918,36 +4322,40 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-parser-js@>=0.4.0: - version "0.4.9" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" - 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" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz" integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + 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" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" @@ -3958,90 +4366,76 @@ 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" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + dependencies: + agent-base "^7.0.2" + debug "4" + 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" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 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" integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" -iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@^0.6.2, iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" 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" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.4: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - 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" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - 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" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - -ignore@^3.2.7, ignore@^3.3.3: - version "3.3.7" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" + integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" + parent-module "^1.0.0" + resolve-from "^4.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" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -4049,1134 +4443,1069 @@ 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" - -indent-string@^3.0.0, indent-string@^3.1.0, indent-string@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 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" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 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" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== 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" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.4: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, 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" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -interactjs@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/interactjs/-/interactjs-1.3.4.tgz#9d5aa886f8fa03ea2f6c711e688792e3d3bde1ff" - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -invariant@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" +interactjs@^1.10.24: + version "1.10.24" + resolved "https://registry.npmjs.org/interactjs/-/interactjs-1.10.24.tgz" + integrity sha512-vLuxezTaCzcrEwVkKpAh07h7wG1Qt3FgLJ7MOo1qznNV6qPocIAmygmgQQ4R1CuFYYkV03iI1PqF67g/ANP4vg== dependencies: - loose-envify "^1.0.0" + "@interactjs/types" "1.10.24" -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - loose-envify "^1.0.0" + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -invert-kv@^2.0.0: +ip@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== 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" 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" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -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" +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - kind-of "^3.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -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" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: - kind-of "^6.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + 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" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -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" +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== dependencies: - binary-extensions "^1.0.0" + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" 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" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - dependencies: - ci-info "^2.0.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-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" - 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" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - kind-of "^6.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +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" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" +is-core-module@^2.13.0, is-core-module@^2.5.0: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + hasown "^2.0.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" +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" + has-tostringtag "^1.0.0" 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" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -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" - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +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" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -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" +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== 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" + call-bind "^1.0.2" 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" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 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" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: - is-extglob "^2.1.1" + has-tostringtag "^1.0.0" -is-glob@^4.0.1, is-glob@~4.0.1: +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" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-lambda@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -is-number-object@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" 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" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - dependencies: - path-is-inside "^1.0.1" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 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" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== 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" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +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" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - has "^1.0.1" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-resolvable@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -is-stream@^1.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" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" 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" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.4: +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== -is-symbol@^1.0.2: +is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - has-symbols "^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" + call-bind "^1.0.2" -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" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.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" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -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" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -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" +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" -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" +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.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" +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.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" +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - handlebars "^4.1.2" + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: - "@jest/types" "^24.8.0" - execa "^1.0.0" - throat "^4.0.0" + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -jest-cli@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^12.0.2" - -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - micromatch "^3.1.10" - pretty-format "^24.8.0" - realpath-native "^1.1.0" - -jest-diff@^24.0.0, jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - dependencies: - chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" jest-docblock@^21.0.0: version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz" + integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - dependencies: - detect-newline "^2.1.0" +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-dom@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jest-dom/-/jest-dom-3.5.0.tgz#715908b545c0d66a0eba9d21fc59357fac024f43" +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: - chalk "^2.4.1" - css "^2.2.3" - css.escape "^1.5.1" - jest-diff "^24.0.0" - jest-matcher-utils "^24.0.0" - lodash "^4.17.11" - pretty-format "^24.0.0" - redent "^2.0.0" - -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - dependencies: - "@jest/types" "^24.8.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - jsdom "^11.5.1" - -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - -jest-haste-map@^24.8.0: - version "24.8.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" - dependencies: - "@jest/types" "^24.8.0" - anymatch "^2.0.0" + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" optionalDependencies: - fsevents "^1.2.7" - -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.8.0" - is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - throat "^4.0.0" - -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - dependencies: - pretty-format "^24.8.0" - -jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - dependencies: - chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" - -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" -jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - dependencies: - "@jest/types" "^24.8.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" - -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - dependencies: - "@jest/types" "^24.8.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^12.0.2" +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" +jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.8.0" - semver "^5.5.0" - -jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" +jest-resolve@*, jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - leven "^2.1.0" - pretty-format "^24.8.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" -jest-watch-typeahead@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.1.tgz#47701024b64b444aa325d801b4b3a6d61ed70701" +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - ansi-escapes "^3.0.0" - chalk "^2.4.1" - jest-watcher "^24.3.0" - slash "^2.0.0" - string-length "^2.0.0" - strip-ansi "^5.0.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -jest-watcher@^24.3.0, jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.8.0" - string-length "^2.0.0" + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - dependencies: - merge-stream "^1.0.1" - supports-color "^6.1.0" +jest-watch-typeahead@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.2.tgz" + integrity sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ== + dependencies: + ansi-escapes "^6.0.0" + chalk "^5.2.0" + jest-regex-util "^29.0.0" + jest-watcher "^29.0.0" + slash "^5.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^29.0.0, jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" jest-worker@^27.4.5: 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" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@*, "jest@^27.0.0 || ^28.0.0 || ^29.0.0", jest@^29.7.0, "jest@>= 28": + version "29.7.0" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - import-local "^2.0.0" - jest-cli "^24.8.0" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" -js-base64@^2.4.3: +js-base64@^2.4.9: version "2.6.4" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz" integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - "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" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsdom@^11.5.1: - version "11.5.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.5.1.tgz#5df753b8d0bca20142ce21f4f6c039f99a992929" - dependencies: - abab "^1.0.3" - acorn "^5.1.2" - acorn-globals "^4.0.0" - array-equal "^1.0.0" - browser-process-hrtime "^0.1.2" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - domexception "^1.0.0" - escodegen "^1.9.0" - html-encoding-sniffer "^1.0.1" - left-pad "^1.2.0" - nwmatcher "^1.4.3" - parse5 "^3.0.2" - pn "^1.0.0" - request "^2.83.0" - request-promise-native "^1.0.3" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.3" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.1" - whatwg-url "^6.3.0" - xml-name-validator "^2.0.1" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^23.0.1: + version "23.0.1" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz" + integrity sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ== + dependencies: + cssstyle "^3.0.0" + data-urls "^5.0.0" + decimal.js "^10.4.3" + form-data "^4.0.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.7" + parse5 "^7.1.2" + rrweb-cssom "^0.6.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.3" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" + ws "^8.14.2" + xml-name-validator "^5.0.0" 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" + 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" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 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" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - 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" + 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" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - 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" - -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-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - dependencies: - minimist "^1.2.0" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -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" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: - is-buffer "^1.1.5" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 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" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + json-buffer "3.0.1" -kind-of@^6.0.3: +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" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^3.0.2: +kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - -klona@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: - invert-kv "^2.0.0" - -left-pad@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" + picocolors "^1.0.0" + shell-quote "^1.8.1" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + 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" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" 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" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -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" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - 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" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.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" - dependencies: - p-locate "^3.0.0" - path-exists "^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" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" -lodash.escape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - -lodash@^4.13.1, lodash@^4.15.0, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -lodash@^4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +lodash.merge@^4.6.0, lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.15: +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21, lodash@~4.17.10: 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" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^4.17.4, lodash@~4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - loglevel-colored-level-prefix@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" + resolved "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz" + integrity sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA== dependencies: chalk "^1.1.3" loglevel "^1.4.1" loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + version "1.8.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" + integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== -loose-envify@^1.0.0, loose-envify@^1.4.0: +loose-envify@^1.1.0, 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" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" -loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -lru-cache@^4.0.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + 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" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +"lru-cache@^9.1.1 || ^10.0.0": + version "10.1.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz" + integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +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" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" semver "^5.6.0" +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-fetch-happen@^10.0.4: + version "10.2.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + make-fetch-happen@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" @@ -5196,80 +5525,53 @@ make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -make-plural@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.1.1.tgz#5658ce9d337487077daed221854c8cef9dd75749" - optionalDependencies: - minimist "^1.2.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - dependencies: - tmpl "1.0.x" +make-plural@^7.0.0: + version "7.3.0" + resolved "https://registry.npmjs.org/make-plural/-/make-plural-7.3.0.tgz" + integrity sha512-/K3BC0KIsO+WK2i94LkMPv3wslMrazrQhfi5We9fMbLlLjzoOSJWr7TAdupLlDWaJcWxwoNosBkhFDejiu5VDw== -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 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" + tmpl "1.0.5" map-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -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-1.0.1.tgz" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== 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" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" +map-obj@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz" + integrity sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.4.3: version "3.4.4" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.4.tgz#e8973cd8060548916adcca58a248e7805c715e89" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz" integrity sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA== dependencies: fs-monkey "1.0.3" -memoize-one@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== meow@^9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== dependencies: "@types/minimist" "^1.2.0" @@ -5287,171 +5589,111 @@ meow@^9.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" - -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 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" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -messageformat-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a" - -messageformat@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.1.1.tgz#ceaa2e6c86929d4807058275a7372b1bd963bdf6" - dependencies: - glob "~7.0.6" - make-plural "^4.1.1" - messageformat-parser "^1.1.0" - nopt "~3.0.6" - reserved-words "^0.1.2" +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + 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" - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2: +micromatch@^4.0.2, micromatch@^4.0.4: 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" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: 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" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - -mime-db@~1.35.0: - version "1.35.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18: - version "2.1.19" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" - dependencies: - mime-db "~1.35.0" - -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, 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" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime-types@~2.1.16: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" - dependencies: - mime-db "~1.30.0" - -mime-types@~2.1.19: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - dependencies: - mime-db "1.40.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" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +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" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 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" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0: 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" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@~3.0.2: + version "3.0.8" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== dependencies: brace-expansion "^1.1.7" 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" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - 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" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-fetch@^1.3.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" @@ -5460,185 +5702,129 @@ minipass-fetch@^1.3.2: optionalDependencies: encoding "^0.1.12" +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + 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" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: 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" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass-sized@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== dependencies: minipass "^3.0.0" -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - dependencies: - minipass "^2.2.1" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: 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" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@^2.11.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" +moo@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== + +ms@^2.0.0, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 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" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - -ms@2.1.3, ms@^2.0.0: +ms@2.1.3: 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" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns@^7.2.4: 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" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" thunky "^1.0.2" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.12.1, nan@^2.13.2: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-odd "^2.0.0" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +nan@^2.17.0: + version "2.18.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz" + integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -nearley@^2.7.10: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae" - dependencies: - nomnom "~1.6.2" - railroad-diagrams "^1.0.0" - randexp "^0.4.2" - -needle@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3, negotiator@^0.6.2: +negotiator@^0.6.2, negotiator@^0.6.3, 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" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - 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" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.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" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp@^8.4.1: version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz" integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" @@ -5654,107 +5840,44 @@ node-gyp@^8.4.1: node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - -node-notifier@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" - dependencies: - growly "^1.3.0" - semver "^5.4.1" - shellwords "^0.1.1" - which "^1.3.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.23: - version "1.1.25" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" - dependencies: - semver "^5.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.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-sass@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-7.0.1.tgz#ad4f6bc663de8acc0a9360db39165a1e2620aa72" - integrity sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ== +"node-sass@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", node-sass@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz" + integrity sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg== dependencies: async-foreach "^0.1.3" chalk "^4.1.2" cross-spawn "^7.0.3" gaze "^1.0.0" get-stdin "^4.0.1" - glob "^7.0.3" - lodash "^4.17.15" - meow "^9.0.0" - nan "^2.13.2" - node-gyp "^8.4.1" - npmlog "^5.0.0" - request "^2.88.0" - sass-graph "4.0.0" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -nomnom@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" - dependencies: - colors "0.5.x" - underscore "~1.4.4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" + glob "^7.0.3" + lodash "^4.17.15" + make-fetch-happen "^10.0.4" + meow "^9.0.0" + nan "^2.17.0" + node-gyp "^8.4.1" + sass-graph "^4.0.1" + stdout-stream "^1.4.0" + "true-case-path" "^2.2.1" nopt@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - 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" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -5764,7 +5887,7 @@ normalize-package-data@^2.5.0: 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" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" @@ -5772,62 +5895,21 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - 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" - -npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" - -npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -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" - dependencies: - path-key "^2.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 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" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -npmlog@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - npmlog@^6.0.0: version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: are-we-there-yet "^3.0.0" @@ -5835,328 +5917,203 @@ npmlog@^6.0.0: gauge "^4.0.3" set-blocking "^2.0.0" -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -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" - -nwmatcher@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" - -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" +nwsapi@^2.2.7: + version "2.2.7" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - -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-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-keys@^1.0.11, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== -object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.entries@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.5" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" - function-bind "^1.1.1" - has "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: - isobject "^3.0.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.values@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" 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" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== 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" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.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" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.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" + 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" - dependencies: - mimic-fn "^1.0.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" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^8.0.9: version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" is-wsl "^2.2.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.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" - -osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" - dependencies: - graceful-fs "^4.1.11" - is-plain-obj "^1.1.0" - mkdirp "^0.5.1" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - -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" - dependencies: - p-reduce "^1.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" - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - -p-limit@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: - p-try "^2.0.0" + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.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" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-limit "^1.1.0" + yocto-queue "^0.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" +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: - p-limit "^2.0.0" + yocto-queue "^1.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" 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.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.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" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - 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" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" retry "^0.13.1" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - p-try@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + callsites "^3.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.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" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -6164,156 +6121,104 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@^3.0.1, parse5@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" +parse5@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - "@types/node" "*" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + entities "^4.4.0" -parseurl@~1.3.3: +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" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - 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" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + 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" - -path-is-inside@^1.0.1, 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" - -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-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 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" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - 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" 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" - -path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== dependencies: - isarray "0.0.1" + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.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" - dependencies: - pify "^3.0.0" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 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" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, 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" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - 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" - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - dependencies: - node-modules-regexp "^1.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - dependencies: - find-up "^3.0.0" +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== 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" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -pluralize@^7.0.0: +pkg-dir@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - -pn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - -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" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" 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" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== -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" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== +postcss-modules-local-by-default@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" @@ -6321,21 +6226,21 @@ postcss-modules-local-by-default@^4.0.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" integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: postcss-selector-parser "^6.0.4" 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" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" @@ -6343,250 +6248,175 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: 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" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -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== +postcss@^8.1.0, postcss@^8.4.21: + version "8.4.32" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz" + integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-eslint-cli@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.7.0.tgz#66421dd8e03ea67d6ba28d9e16b0de01559bc8ad" - dependencies: - arrify "^1.0.1" - babel-runtime "^6.23.0" - boolify "^1.0.0" - camelcase-keys "^4.1.0" - chalk "2.3.0" - common-tags "^1.4.0" - eslint "^4.5.0" - find-up "^2.1.0" - get-stdin "^5.0.1" - glob "^7.1.1" - ignore "^3.2.7" - indent-string "^3.1.0" +prettier-eslint-cli@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/prettier-eslint-cli/-/prettier-eslint-cli-8.0.1.tgz" + integrity sha512-jru4JUDHzWEtM/SOxqagU7hQTVP8BVrxO2J0qNauWZuPRld6Ea2eyNaEzIGx6I+yjmOLCsjNM+vU1AJgaW1ZSQ== + dependencies: + "@messageformat/core" "^3.2.0" + "@prettier/eslint" "npm:prettier-eslint@^16.1.0" + arrify "^2.0.1" + boolify "^1.0.1" + camelcase-keys "^9.1.0" + chalk "^4.1.2" + common-tags "^1.8.2" + core-js "^3.33.0" + eslint "^8.51.0" + find-up "^5.0.0" + get-stdin "^8.0.0" + glob "^10.3.10" + ignore "^5.2.4" + indent-string "^4.0.0" lodash.memoize "^4.1.2" loglevel-colored-level-prefix "^1.0.0" - messageformat "^1.0.2" - prettier-eslint "^8.5.0" - rxjs "^5.3.0" - yargs "10.0.3" - -prettier-eslint@^8.5.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.8.1.tgz#38505163274742f2a0b31653c39e40f37ebd07da" - dependencies: - babel-runtime "^6.26.0" - common-tags "^1.4.0" - dlv "^1.1.0" - eslint "^4.0.0" - indent-string "^3.2.0" - lodash.merge "^4.6.0" - loglevel-colored-level-prefix "^1.0.0" - prettier "^1.7.0" - pretty-format "^22.0.3" - require-relative "^0.8.7" - typescript "^2.5.1" - typescript-eslint-parser "^11.0.0" + rxjs "^7.8.1" + yargs "^17.7.2" -prettier@^1.10.2, prettier@^1.7.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93" - -pretty-format@^22.0.3: - version "22.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.1.0.tgz#2277605b40ed4529ae4db51ff62f4be817647914" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" +prettier@^3.0.1, prettier@^3.1.0, "prettier@>= 0.11.0": + version "3.1.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz" + integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== -pretty-format@^24.0.0, pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "@jest/types" "^24.8.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" -pretty-format@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.5.0.tgz#cc69a0281a62cd7242633fc135d6930cd889822d" +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/types" "^24.5.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" process-nextick-args@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== promise-inflight@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: err-code "^2.0.2" retry "^0.12.0" -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - dependencies: - asap "~2.0.3" - prompts@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" - dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" - -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" - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@^15.5.4, prop-types@^15.6.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" - dependencies: - fbjs "^0.8.16" - loose-envify "^1.3.1" - object-assign "^4.1.1" - -prop-types@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - loose-envify "^1.3.1" - object-assign "^4.1.1" + kleur "^3.0.3" + sisteransi "^1.0.5" -prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" 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" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" ipaddr.js "1.9.1" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -psl@^1.1.24: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -punycode@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== qs@6.10.3: version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== dependencies: side-channel "^1.0.4" -qs@~6.5.1, qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 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" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -raf@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" - dependencies: - performance-now "^2.1.0" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - -randexp@^0.4.2: - version "0.4.6" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" +quick-lru@^6.1.1: + version "6.1.2" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz" + integrity sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ== 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" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomcolor@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/randomcolor/-/randomcolor-0.5.3.tgz#7f90f2f2a7f6d5a52232161eeaeeaea9ac3b5815" +randomcolor@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/randomcolor/-/randomcolor-0.6.2.tgz" + integrity sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A== 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" 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" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -6594,107 +6424,63 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-dom@^16.2.0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.4.1.tgz#7f8b0223b3a5fbe205116c56deb85de32685dad6" +react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.8: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: - fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.0" - -react-is@^16.4.1: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.1.tgz#d624c4650d2c65dbd52c72622bbf389435d9776e" + scheduler "^0.23.0" -react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-router-dom@^4.1.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d" - dependencies: - history "^4.7.2" - invariant "^2.2.2" - loose-envify "^1.3.1" - prop-types "^15.5.4" - react-router "^4.2.0" - warning "^3.0.0" +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-router@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.2.0.tgz#61f7b3e3770daeb24062dae3eedef1b054155986" - dependencies: - history "^4.7.2" - hoist-non-react-statics "^2.3.0" - invariant "^2.2.2" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.5.4" - warning "^3.0.0" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-test-renderer@^16.0.0-0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.4.1.tgz#f2fb30c2c7b517db6e5b10ed20bb6b0a7ccd8d70" +react-router-dom@^6.20.1: + version "6.20.1" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz" + integrity sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw== dependencies: - fbjs "^0.8.16" - object-assign "^4.1.1" - prop-types "^15.6.0" - react-is "^16.4.1" + "@remix-run/router" "1.13.1" + react-router "6.20.1" -react-testing-library@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-6.0.3.tgz#8b5d276a353c17ce4f7486015bb7a1c8827c442c" +react-router@6.20.1: + version "6.20.1" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz" + integrity sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA== dependencies: - "@babel/runtime" "^7.4.2" - dom-testing-library "^3.18.2" + "@remix-run/router" "1.13.1" -react@^16.2.0: - version "16.4.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.4.1.tgz#de51ba5764b5dbcd1f9079037b862bd26b82fe32" +react@^18.0.0, react@^18.2.0, react@>=16.8: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: - fbjs "^0.8.16" loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.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" - dependencies: - find-up "^3.0.0" - read-pkg "^3.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" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^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" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -6702,9 +6488,10 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.0.6: +readable-stream@^2.0.1: version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6714,494 +6501,400 @@ readable-stream@^2.0.1, readable-stream@^2.0.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^2.0.2, readable-stream@^2.2.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - readable-stream@^3.0.6, 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" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - 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" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - dependencies: - util.promisify "^1.0.0" - -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" + resolve "^1.20.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" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" strip-indent "^3.0.0" -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - -regenerate-unicode-properties@^8.0.2: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - -regenerator-transform@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== dependencies: - private "^0.1.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" -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" +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + regenerate "^1.4.2" -regexp-tree@^0.1.6: - version "0.1.10" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + "@babel/runtime" "^7.8.4" -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.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" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - dependencies: - lodash "^4.13.1" - -request-promise-native@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" - -request@^2.83.0: - version "2.83.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - hawk "~6.0.2" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - stringstream "~0.0.5" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + 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" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -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" - require-relative@^0.8.7: version "0.8.7" - resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" - -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" + resolved "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz" + integrity sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg== 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= - -reserved-words@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 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" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + 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" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.10.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== +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.10.1, resolve@^1.3.2: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== 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" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - dependencies: - glob "^7.1.3" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 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" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rst-selector-parser@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== dependencies: - lodash.flattendeep "^4.4.0" - nearley "^2.7.10" + glob "^10.3.7" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" +rrweb-cssom@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" + integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - is-promise "^2.1.0" + queue-microtask "^1.2.2" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + tslib "^2.1.0" -rxjs@^5.3.0: - version "5.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: - symbol-observable "1.0.1" - -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, 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" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: 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" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" +safe-identifier@^0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz" + integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== + +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" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -sass-graph@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.0.tgz#fff8359efc77b31213056dfd251d05dadc74c613" - integrity sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ== +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz" + integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA== dependencies: glob "^7.0.0" lodash "^4.17.11" - scss-tokenizer "^0.3.0" + scss-tokenizer "^0.4.3" yargs "^17.2.1" -sass-loader@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.0.0.tgz#0b4bff0289951ed21240bca54453eca3dbda1713" - integrity sha512-IHCFecI+rbPvXE2zO/mqdVFe8MU7ElGrwga9hh2H65Ru4iaBJAMRteum1c4Gsxi9Cq1FOtTEDd6+/AEYuQDM4Q== +sass-loader@^13.3.2: + version "13.3.2" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz" + integrity sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg== dependencies: - klona "^2.0.4" neo-async "^2.6.2" -sax@^1.2.1, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.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" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +schema-utils@^3.1.1: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + version "4.2.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" - ajv "^8.8.0" + ajv "^8.9.0" ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" + ajv-keywords "^5.1.0" -scss-tokenizer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz#ef7edc3bc438b25cd6ffacf1aa5b9ad5813bf260" - integrity sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ== +scss-tokenizer@^0.4.3: + version "0.4.3" + resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz" + integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw== dependencies: - js-base64 "^2.4.3" - source-map "^0.7.1" + js-base64 "^2.4.9" + source-map "^0.7.3" select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -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.1.1: + version "2.4.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@5.4.1, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" -semver@^5.6.0, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" +semver@^7.3.5: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" +semver@^7.3.6: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.7: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.8: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" -semver@^7.3.4, semver@^7.3.5: - 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.5.3: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + 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" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -7218,17 +6911,17 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -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== +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.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" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" batch "0.6.1" @@ -7240,7 +6933,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" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -7248,147 +6941,111 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.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" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" setprototypeof@1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz" + integrity sha512-9jphSf3UbIgpOX/RKvX02iw/rN2TKdusnsPpGfO/rkcsrd+IRqgHZb4VGnmL0Cynps8Nj2hN45wsi30BzrHDIw== 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" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 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" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - 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" 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" - 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" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== 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" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - 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" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sisteransi@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.2.tgz#ec57d64b6f25c4f26c0e2c7dd23f2d7f12f7e418" +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 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" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - dependencies: - is-fullwidth-code-point "^2.0.0" +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== smart-buffer@^4.2.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" 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" - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.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" - 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" - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sntp@2.x.x: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" - dependencies: - hoek "4.x.x" - -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" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -7396,107 +7053,91 @@ sockjs@^0.3.21: websocket-driver "^0.7.4" socks-proxy-agent@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz#f6b5229cc0cbd6f2f202d9695f09d871e951c85e" - integrity sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ== + version "6.2.1" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: agent-base "^6.0.2" debug "^4.3.3" socks "^2.6.2" socks@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + version "2.7.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: - ip "^1.1.5" + ip "^2.0.0" smart-buffer "^4.2.0" 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" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - 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" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@^0.1.38: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + buffer-from "^1.0.0" + source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, 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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -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" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + 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.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + version "3.0.16" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== 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" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -7508,7 +7149,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" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -7517,669 +7158,678 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -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" - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^8.0.0, 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" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" -stack-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" + escape-string-regexp "^2.0.0" + +"statuses@>= 1.3.1 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 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" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.3.1 < 2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + version "1.4.1" + resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== dependencies: readable-stream "^2.0.1" -stealthy-require@^1.1.0: +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" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + 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/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + char-regex "^2.0.0" + strip-ansi "^7.0.1" -"string-width@^1.0.2 || 2", 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" +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, 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" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trim@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + 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.8: + version "4.0.10" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: - safe-buffer "~5.2.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: - safe-buffer "~5.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: - safe-buffer "~5.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -stringstream@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + 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" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - 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" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 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" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - 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" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" -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" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -style-loader@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" - integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== +style-loader@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - 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" + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.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" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: 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" 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" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - -table@4.0.2, table@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 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" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tar@^6.0.2, tar@^6.1.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== +tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: + version "6.2.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" -terser-webpack-plugin@^5.1.3: - 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.3.7: + version "5.3.9" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - terser "^5.7.2" + serialize-javascript "^6.0.1" + terser "^5.16.8" -terser@^5.7.2: - version "5.13.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" - integrity sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA== +terser@^5.16.8: + version "5.25.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.25.0.tgz" + integrity sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg== dependencies: - acorn "^8.5.0" + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.8.0-beta.0" source-map-support "~0.5.20" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" -text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thunky@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 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" - -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" - dependencies: - kind-of "^3.0.2" - -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" - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 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" 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" - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - 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" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@>=2.3.3, tough-cookie@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" - dependencies: - punycode "^1.4.1" - -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" +tough-cookie@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" -tr46@^1.0.0, tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" +tr46@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz" + integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== dependencies: - punycode "^2.1.0" + punycode "^2.3.1" 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" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== -"true-case-path@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" - dependencies: - glob "^6.0.4" +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 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" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + 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" 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" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +type-fest@^4.3.2: + version "4.8.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz" + integrity sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw== + 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" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" mime-types "~2.1.24" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -typescript-eslint-parser@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-11.0.0.tgz#37dba6a0130dd307504aa4b4b21b0d3dc7d4e9f2" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: - lodash.unescape "4.0.1" - semver "5.4.1" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" -typescript@^2.5.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" - -ua-parser-js@^0.7.9: - version "0.7.17" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" - -uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== dependencies: - commander "~2.20.0" - source-map "~0.6.1" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -unicode-canonical-property-names-ecmascript@^1.0.4: +typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" +typescript@^5.2.2, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0: + version "5.3.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz" + integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-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" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== 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" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -unset-value@^1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + 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" - -use@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - kind-of "^6.0.2" + querystringify "^2.1.1" + requires-port "^1.0.0" 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" - -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -uuid@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 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" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-equal@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" - vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -wait-for-expect@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-1.1.1.tgz#9cd10e07d52810af9e0aaf509872e38f3c3d81ae" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vue-eslint-parser@^9.1.0: + version "9.3.2" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" + +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== dependencies: - loose-envify "^1.0.0" + xml-name-validator "^5.0.0" -warning@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - loose-envify "^1.0.0" + makeerror "1.0.12" -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== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" 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" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" -webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-cli@^4.9.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== +webpack-cli@^5.1.4, webpack-cli@5.x.x: + version "5.1.4" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== 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" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" colorette "^2.0.14" - commander "^7.0.0" - execa "^5.0.0" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" 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" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" @@ -8188,69 +7838,72 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" - integrity sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw== +webpack-dev-server@^4.15.1: + version "4.15.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" + "@types/ws" "^8.5.5" ansi-html-community "^0.0.8" bonjour-service "^1.0.11" chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" - connect-history-api-fallback "^1.6.0" + connect-history-api-fallback "^2.0.0" default-gateway "^6.0.3" express "^4.17.3" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" + launch-editor "^2.6.0" open "^8.0.9" 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.21" + sockjs "^0.3.24" spdy "^4.0.2" webpack-dev-middleware "^5.3.1" - ws "^8.4.2" + ws "^8.13.0" webpack-merge@^5.7.3: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + version "5.10.0" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== dependencies: clone-deep "^4.0.1" + flat "^5.0.2" wildcard "^2.0.0" 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" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.72.1: - version "5.72.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.1.tgz#3500fc834b4e9ba573b9f430b2c0a61e1bb57d13" - integrity sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung== +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.89.0, webpack@>=5, webpack@5.x.x: + version "5.89.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== 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" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -8259,22 +7912,15 @@ webpack@^5.72.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.0" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: 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" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -8282,214 +7928,198 @@ websocket-driver@^0.7.4: websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: - iconv-lite "0.4.19" + iconv-lite "0.6.3" -whatwg-fetch@>=0.10.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== -whatwg-url@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08" +whatwg-url@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz" + integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.0" - webidl-conversions "^4.0.1" + tr46 "^5.0.0" + webidl-conversions "^7.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + 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@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: - isexe "^2.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" which@^2.0.1, which@^2.0.2: 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" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.5: 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" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + version "2.0.1" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.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" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + 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" +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -ws@^8.4.2: - version "8.7.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957" - integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg== + signal-exit "^3.0.7" -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" +ws@^8.13.0, ws@^8.14.2: + version "8.14.2" + resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== -"y18n@^3.2.1 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 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" 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" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + 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" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.3: 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" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-parser@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - dependencies: - camelcase "^4.1.0" - -yargs@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.0.0" - -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^17.2.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== +yargs@^17.2.1, yargs@^17.3.1, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== From ff1df2a6df0666d9bf02e4574e005804b95cf759 Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Sun, 10 Dec 2023 19:49:32 +0100 Subject: [PATCH 17/50] Wio on conversion to typescript --- package.json | 5 + src/{index.js => index.ts} | 0 src/lib/{Timeline.js => Timeline.tsx} | 687 +++++++++++------- src/lib/columns/{Columns.js => Columns.tsx} | 53 +- .../headers/{constants.js => constants.ts} | 0 src/lib/layout/{Sidebar.js => Sidebar.tsx} | 29 +- .../{MarkerCanvas.js => MarkerCanvas.tsx} | 39 +- ...anvasContext.js => MarkerCanvasContext.ts} | 0 src/lib/markers/TimelineMarkersContext.js | 81 --- src/lib/markers/TimelineMarkersContext.tsx | 96 +++ .../{CursorMarker.js => CursorMarker.tsx} | 67 +- .../{CustomMarker.js => CustomMarker.tsx} | 29 +- .../{TodayMarker.js => TodayMarker.tsx} | 35 +- .../implementations/{shared.js => shared.tsx} | 16 +- src/lib/markers/markerType.js | 5 - src/lib/markers/markerType.ts | 22 + .../{TodayMarker.js => TodayMarker.tsx} | 26 +- ...ateContext.js => TimelineStateContext.tsx} | 69 +- src/lib/types/dimension.ts | 21 + src/lib/types/main.ts | 369 ++++++++++ src/lib/utility/{calendar.js => calendar.tsx} | 426 +++++++---- webpack.config.js | 5 +- yarn.lock | 43 +- 23 files changed, 1468 insertions(+), 655 deletions(-) rename src/{index.js => index.ts} (100%) rename src/lib/{Timeline.js => Timeline.tsx} (63%) rename src/lib/columns/{Columns.js => Columns.tsx} (73%) rename src/lib/headers/{constants.js => constants.ts} (100%) rename src/lib/layout/{Sidebar.js => Sidebar.tsx} (74%) rename src/lib/markers/{MarkerCanvas.js => MarkerCanvas.tsx} (74%) rename src/lib/markers/{MarkerCanvasContext.js => MarkerCanvasContext.ts} (100%) delete mode 100644 src/lib/markers/TimelineMarkersContext.js create mode 100644 src/lib/markers/TimelineMarkersContext.tsx rename src/lib/markers/implementations/{CursorMarker.js => CursorMarker.tsx} (61%) rename src/lib/markers/implementations/{CustomMarker.js => CustomMarker.tsx} (53%) rename src/lib/markers/implementations/{TodayMarker.js => TodayMarker.tsx} (62%) rename src/lib/markers/implementations/{shared.js => shared.tsx} (61%) delete mode 100644 src/lib/markers/markerType.js create mode 100644 src/lib/markers/markerType.ts rename src/lib/markers/public/{TodayMarker.js => TodayMarker.tsx} (67%) rename src/lib/timeline/{TimelineStateContext.js => TimelineStateContext.tsx} (60%) create mode 100644 src/lib/types/dimension.ts create mode 100644 src/lib/types/main.ts rename src/lib/utility/{calendar.js => calendar.tsx} (68%) diff --git a/package.json b/package.json index 0052a65fe..11cb4eadb 100644 --- a/package.json +++ b/package.json @@ -92,6 +92,7 @@ ] }, "dependencies": { + "@types/lodash": "^4.14.202", "classnames": "^2.3.2", "element-resize-detector": "^1.2.4", "lodash": "^4.17.21", @@ -116,6 +117,8 @@ "@faker-js/faker": "^8.3.1", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", + "@types/react": "^18.2.42", + "@types/react-dom": "^18.2.17", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", "babel-plugin-react-remove-properties": "^0.3.0", @@ -144,6 +147,8 @@ "rimraf": "^5.0.5", "sass-loader": "^13.3.2", "style-loader": "^3.3.3", + "ts-loader": "^9.5.1", + "typescript": "^5.3.3", "webpack": "^5.89.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1" diff --git a/src/index.js b/src/index.ts similarity index 100% rename from src/index.js rename to src/index.ts diff --git a/src/lib/Timeline.js b/src/lib/Timeline.tsx similarity index 63% rename from src/lib/Timeline.js rename to src/lib/Timeline.tsx index c77ba2f35..da33e8572 100644 --- a/src/lib/Timeline.js +++ b/src/lib/Timeline.tsx @@ -15,116 +15,253 @@ import { calculateScrollCanvas, getCanvasBoundariesFromVisibleTime, getCanvasWidth, - stackTimelineItems + stackTimelineItems, } from './utility/calendar' import { _get, _length } from './utility/generic' -import { - defaultKeys, - defaultTimeSteps, -} from './default-config' +import { defaultKeys, defaultTimeSteps } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' import TimelineHeaders from './headers/TimelineHeaders' import DateHeader from './headers/DateHeader' +import { + dateType, + Id, + OnItemDragObjectMove, + OnItemDragObjectResize, + ReactCalendarGroupRendererProps, + ReactCalendarItemRendererProps, + TimelineContext, + TimelineGroupBase, + TimelineItemBase, + TimelineKeys, + TimelineTimeSteps, + Unit, +} from './types/main' +import { ItemDimension } from './types/dimension' +import { Dayjs } from 'dayjs' + +export type ReactCalendarTimelineProps< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> = { + children?: React.ReactNode + groups: CustomGroup[] + items: CustomItem[] + keys: TimelineKeys + defaultTimeStart: number + defaultTimeEnd: number + visibleTimeStart?: dateType + visibleTimeEnd?: dateType + selected?: Id[] | undefined + sidebarWidth: number + sidebarContent?: React.ReactNode | undefined + rightSidebarWidth: number + rightSidebarContent?: React.ReactNode | undefined + dragSnap: number + minResizeWidth?: number | undefined + lineHeight: number + itemHeightRatio: number + minZoom: number + maxZoom: number + clickTolerance?: number | undefined + canMove?: boolean | undefined + canChangeGroup?: boolean | undefined + canResize?: false | true | 'left' | 'right' | 'both' | undefined + useResizeHandle?: boolean | undefined + canSelect?: boolean + stackItems: boolean + traditionalZoom?: boolean | undefined + itemTouchSendsClick?: boolean | undefined + timeSteps: TimelineTimeSteps + scrollRef?: React.Ref | undefined + onItemDrag?( + itemDragObject: OnItemDragObjectMove | OnItemDragObjectResize, + ): void + onItemMove?(itemId: Id, dragTime: number, newGroupOrder: number): void + onItemResize?( + itemId: Id, + endTimeOrStartTime: number, + edge: 'left' | 'right', + ): void + onItemSelect?(itemId: Id, e: any, time: number): void + onItemDeselect?(e: React.SyntheticEvent): void + onItemClick?(itemId: Id, e: React.SyntheticEvent, time: number): void + onItemDoubleClick?(itemId: Id, e: React.SyntheticEvent, time: number): void + onItemContextMenu?(itemId: Id, e: React.SyntheticEvent, time: number): void + onCanvasClick?(groupId: Id, time: number, e: React.SyntheticEvent): void + onCanvasDoubleClick?(groupId: Id, time: number, e: React.SyntheticEvent): void + onCanvasContextMenu?(groupId: Id, time: number, e: React.SyntheticEvent): void + onZoom?(timelineContext: TimelineContext, unit: Unit): void + moveResizeValidator?( + action: 'move' | 'resize', + itemId: Id, + time: number, + resizeEdge: 'left' | 'right', + ): number + onTimeChange?( + visibleTimeStart: number, + visibleTimeEnd: number, + updateScrollCanvas: ( + start: dateType, + end: dateType, + forceUpdateDimensions: boolean, + items: CustomItem[], + groups: CustomGroup[], + ) => void, + unit: Unit, + ): any + onBoundsChange?(canvasTimeStart: number, canvasTimeEnd: number): any + itemRenderer?: + | ((props: ReactCalendarItemRendererProps) => React.ReactNode) + | undefined + groupRenderer?: + | ((props: ReactCalendarGroupRendererProps) => React.ReactNode) + | undefined + resizeDetector?: + | { + addListener?: (x: any) => void + removeListener: (x: any) => void + } + | undefined + verticalLineClassNamesForTime?: + | ((start: number, end: number) => string[] | undefined) + | undefined + horizontalLineClassNamesForGroup?: + | ((group: CustomGroup) => string[]) + | undefined + buffer: number + // Fields that are in propTypes but not documented + headerRef?: React.Ref | undefined + className?: string + style?: React.CSSProperties +} -export default class ReactCalendarTimeline extends Component { - static propTypes = { - groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - sidebarWidth: PropTypes.number, - rightSidebarWidth: PropTypes.number, - dragSnap: PropTypes.number, - minResizeWidth: PropTypes.number, - lineHeight: PropTypes.number, - itemHeightRatio: PropTypes.number, - - minZoom: PropTypes.number, - maxZoom: PropTypes.number, - buffer: PropTypes.number, - - clickTolerance: PropTypes.number, - - canChangeGroup: PropTypes.bool, - canMove: PropTypes.bool, - canResize: PropTypes.oneOf([true, false, 'left', 'right', 'both']), - useResizeHandle: PropTypes.bool, - canSelect: PropTypes.bool, - - stackItems: PropTypes.bool, - - traditionalZoom: PropTypes.bool, - - itemTouchSendsClick: PropTypes.bool, - - horizontalLineClassNamesForGroup: PropTypes.func, - - onItemMove: PropTypes.func, - onItemResize: PropTypes.func, - onItemClick: PropTypes.func, - onItemSelect: PropTypes.func, - onItemDeselect: PropTypes.func, - onCanvasClick: PropTypes.func, - onItemDoubleClick: PropTypes.func, - onItemContextMenu: PropTypes.func, - onCanvasDoubleClick: PropTypes.func, - onCanvasContextMenu: PropTypes.func, - onZoom: PropTypes.func, - onItemDrag: PropTypes.func, - - moveResizeValidator: PropTypes.func, - - itemRenderer: PropTypes.func, - groupRenderer: PropTypes.func, - - className: PropTypes.string, - style: PropTypes.object, - - keys: PropTypes.shape({ - groupIdKey: PropTypes.string, - groupTitleKey: PropTypes.string, - groupLabelKey: PropTypes.string, - groupRightTitleKey: PropTypes.string, - itemIdKey: PropTypes.string, - itemTitleKey: PropTypes.string, - itemDivTitleKey: PropTypes.string, - itemGroupKey: PropTypes.string, - itemTimeStartKey: PropTypes.string, - itemTimeEndKey: PropTypes.string - }), - headerRef: PropTypes.func, - scrollRef: PropTypes.func, - - timeSteps: PropTypes.shape({ - second: PropTypes.number, - minute: PropTypes.number, - hour: PropTypes.number, - day: PropTypes.number, - month: PropTypes.number, - year: PropTypes.number - }), - - defaultTimeStart: PropTypes.object, - defaultTimeEnd: PropTypes.object, - - visibleTimeStart: PropTypes.number, - visibleTimeEnd: PropTypes.number, - onTimeChange: PropTypes.func, - onBoundsChange: PropTypes.func, - - selected: PropTypes.array, - - resizeDetector: PropTypes.shape({ - addListener: PropTypes.func, - removeListener: PropTypes.func - }), - - verticalLineClassNamesForTime: PropTypes.func, - - children: PropTypes.node - } +export type ReactCalendarTimelineState< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> = { + width: number + visibleTimeStart: number + visibleTimeEnd: number + canvasTimeStart: dateType + canvasTimeEnd: dateType + selectedItem: CustomItem | null + dragTime: number | null + dragGroupTitle: string | null + resizeTime: number | null + resizingItem: CustomItem | null + resizingEdge: 'left' | 'right' | null + items?: CustomItem[] + groups?: CustomGroup[] + draggingItem?: CustomItem | null + newGroupOrder: number + dimensionItems: ItemDimension[] + height: number + groupHeights: number[] + groupTops: number[] +} - static defaultProps = { +export default class ReactCalendarTimeline extends Component< + ReactCalendarTimelineProps, + ReactCalendarTimelineState +> { + // static propTypes = { + // groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, + // items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, + // sidebarWidth: PropTypes.number,/ + // rightSidebarWidth: PropTypes.number, + // dragSnap: PropTypes.number, + // minResizeWidth: PropTypes.num÷ber, + // lineHeight: PropTypes.number, + // itemHeightRatio: PropTypes.number, + + // minZoom: PropTypes.number, + // maxZoom: PropTypes.number, + // buffer: PropTypes.number, + // + // clickTolerance: PropTypes.number, + + // canChangeGroup: PropTypes.bool, + // canMove: PropTypes.bool, + // canResize: PropTypes.oneOf([true, false, 'left', 'right', 'both']), + // useResizeHandle: PropTypes.bool, + // canSelect: PropTypes.bool, + // + // stackItems: PropTypes.bool, + // + // traditionalZoom: PropTypes.bool, + // + // itemTouchSendsClick: PropTypes.bool, + // + // horizontalLineClassNamesForGroup: PropTypes.func, + // + // onItemMove: PropTypes.func, + // onItemResize: PropTypes.func, + // onItemClick: PropTypes.func, + // onItemSelect: PropTypes.func, + // onItemDeselect: PropTypes.func, + // onCanvasClick: PropTypes.func, + // onItemDoubleClick: PropTypes.func, + // onItemContextMenu: PropTypes.func, + // onCanvasDoubleClick: PropTypes.func, + // onCanvasContextMenu: PropTypes.func, + // onZoom: PropTypes.func, + // onItemDrag: PropTypes.func, + // + // moveResizeValidator: PropTypes.func, + // + // itemRenderer: PropTypes.func, + // groupRenderer: PropTypes.func, + // + // className: PropTypes.string, + // style: PropTypes.object, + // + // keys: PropTypes.shape({ + // groupIdKey: PropTypes.string, + // groupTitleKey: PropTypes.string, + // groupLabelKey: PropTypes.string, + // groupRightTitleKey: PropTypes.string, + // itemIdKey: PropTypes.string, + // itemTitleKey: PropTypes.string, + // itemDivTitleKey: PropTypes.string, + // itemGroupKey: PropTypes.string, + // itemTimeStartKey: PropTypes.string, + // itemTimeEndKey: PropTypes.string + // }), + // headerRef: PropTypes.func, + // scrollRef: PropTypes.func, + // + // timeSteps: PropTypes.shape({ + // second: PropTypes.number, + // minute: PropTypes.number, + // hour: PropTypes.number, + // day: PropTypes.number, + // month: PropTypes.number, + // year: PropTypes.number + // }), + // + // defaultTimeStart: PropTypes.object, + // defaultTimeEnd: PropTypes.object, + // + // visibleTimeStart: PropTypes.number, + // visibleTimeEnd: PropTypes.number, + // onTimeChange: PropTypes.func, + // onBoundsChange: PropTypes.func, + // + // selected: PropTypes.array, + // + // resizeDetector: PropTypes.shape({ + // addListener: PropTypes.func, + // removeListener: PropTypes.func + // }), + // + // verticalLineClassNamesForTime: PropTypes.func, + // + // children: PropTypes.node + // } + + public static defaultProps = { sidebarWidth: 150, rightSidebarWidth: 0, dragSnap: 1000 * 60 * 15, // 15min @@ -167,7 +304,7 @@ export default class ReactCalendarTimeline extends Component { dayBackground: null, - defaultTimeStart: null, + // defaultTimeStart: null, defaultTimeEnd: null, itemTouchSendsClick: false, @@ -175,7 +312,7 @@ export default class ReactCalendarTimeline extends Component { style: {}, className: '', keys: defaultKeys, - timeSteps: defaultTimeSteps, + //timeSteps: defaultTimeSteps, headerRef: () => {}, scrollRef: () => {}, @@ -183,10 +320,13 @@ export default class ReactCalendarTimeline extends Component { // which needs to update the props visibleTimeStart and visibleTimeEnd to the ones passed visibleTimeStart: null, visibleTimeEnd: null, - onTimeChange: function( - visibleTimeStart, - visibleTimeEnd, - updateScrollCanvas + onTimeChange: function ( + visibleTimeStart: dateType, + visibleTimeEnd: dateType, + updateScrollCanvas: ( + visibleTimeStart: dateType, + visibleTimeEnd: dateType, + ) => void, ) { updateScrollCanvas(visibleTimeStart, visibleTimeEnd) }, @@ -194,18 +334,18 @@ export default class ReactCalendarTimeline extends Component { onBoundsChange: null, children: null, - selected: null + selected: null, } - static childContextTypes = { - getTimelineContext: PropTypes.func + public static childContextTypes = { + getTimelineContext: PropTypes.func, } getChildContext() { return { getTimelineContext: () => { return this.getTimelineContext() - } + }, } } @@ -215,7 +355,7 @@ export default class ReactCalendarTimeline extends Component { visibleTimeStart, visibleTimeEnd, canvasTimeStart, - canvasTimeEnd + canvasTimeEnd, } = this.state return { @@ -223,45 +363,41 @@ export default class ReactCalendarTimeline extends Component { visibleTimeStart, visibleTimeEnd, canvasTimeStart, - canvasTimeEnd + canvasTimeEnd, } } getTimelineUnit = () => { - const { - width, - visibleTimeStart, - visibleTimeEnd - } = this.state + const { width, visibleTimeStart, visibleTimeEnd } = this.state const { timeSteps } = this.props const zoom = visibleTimeEnd - visibleTimeStart const minUnit = getMinUnit(zoom, width, timeSteps) - return minUnit + return minUnit as Unit } - constructor(props) { + constructor(props: any) { super(props) this.getSelected = this.getSelected.bind(this) this.hasSelectedItem = this.hasSelectedItem.bind(this) - this.isItemSelected= this.isItemSelected.bind(this) + this.isItemSelected = this.isItemSelected.bind(this) let visibleTimeStart = null let visibleTimeEnd = null if (this.props.defaultTimeStart && this.props.defaultTimeEnd) { - visibleTimeStart = this.props.defaultTimeStart.valueOf() - visibleTimeEnd = this.props.defaultTimeEnd.valueOf() + visibleTimeStart = this.props.defaultTimeStart //.valueOf() + visibleTimeEnd = this.props.defaultTimeEnd //.valueOf() } else if (this.props.visibleTimeStart && this.props.visibleTimeEnd) { visibleTimeStart = this.props.visibleTimeStart visibleTimeEnd = this.props.visibleTimeEnd } else { //throwing an error because neither default or visible time props provided throw new Error( - 'You must provide either "defaultTimeStart" and "defaultTimeEnd" or "visibleTimeStart" and "visibleTimeEnd" to initialize the Timeline' + 'You must provide either "defaultTimeStart" and "defaultTimeEnd" or "visibleTimeStart" and "visibleTimeEnd" to initialize the Timeline', ) } @@ -270,6 +406,26 @@ export default class ReactCalendarTimeline extends Component { visibleTimeEnd, props.buffer, ) + const canvasWidth = getCanvasWidth(this.state.width, props.buffer) + + const { dimensionItems, height, groupHeights, groupTops } = + stackTimelineItems( + props.items, + props.groups, + canvasWidth, + this.state.canvasTimeStart, + this.state.canvasTimeEnd, + props.keys, + props.lineHeight, + props.itemHeightRatio, + props.stackItems, + this.state.draggingItem, + this.state.resizingItem, + this.state.dragTime, + this.state.resizingEdge, + this.state.resizeTime, + this.state.newGroupOrder, + ) this.state = { width: 1000, @@ -282,41 +438,13 @@ export default class ReactCalendarTimeline extends Component { dragGroupTitle: null, resizeTime: null, resizingItem: null, - resizingEdge: null + resizingEdge: null, + newGroupOrder: 0, //CHECK + groupHeights: groupHeights, + height: height, + groupTops: groupTops, + dimensionItems: dimensionItems, } - - const canvasWidth = getCanvasWidth(this.state.width, props.buffer); - - const { - dimensionItems, - height, - groupHeights, - groupTops - } = stackTimelineItems( - props.items, - props.groups, - canvasWidth, - this.state.canvasTimeStart, - this.state.canvasTimeEnd, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - this.state.draggingItem, - this.state.resizingItem, - this.state.dragTime, - this.state.resizingEdge, - this.state.resizeTime, - this.state.newGroupOrder - ) - - /* eslint-disable react/no-direct-mutation-state */ - this.state.dimensionItems = dimensionItems - this.state.height = height - this.state.groupHeights = groupHeights - this.state.groupTops = groupTops - - /* eslint-enable */ } componentDidMount() { @@ -328,7 +456,7 @@ export default class ReactCalendarTimeline extends Component { windowResizeDetector.addListener(this) - this.lastTouchDistance = null + //this.lastTouchDistance = null //TODO do we need this? } componentWillUnmount() { @@ -339,7 +467,10 @@ export default class ReactCalendarTimeline extends Component { windowResizeDetector.removeListener(this) } - static getDerivedStateFromProps(nextProps, prevState) { + static getDerivedStateFromProps( + nextProps: ReactCalendarTimelineProps, + prevState: ReactCalendarTimelineState, + ) { const { visibleTimeStart, visibleTimeEnd, items, groups } = nextProps // This is a gross hack pushing items and groups in to state only to allow @@ -361,8 +492,8 @@ export default class ReactCalendarTimeline extends Component { items, groups, nextProps, - prevState - ) + prevState, + ), ) } else if (forceUpdate) { // Calculate new item stack position as canvas may have changed @@ -384,15 +515,21 @@ export default class ReactCalendarTimeline extends Component { prevState.dragTime, prevState.resizingEdge, prevState.resizeTime, - prevState.newGroupOrder - ) + prevState.newGroupOrder, + ), ) } return derivedState } - componentDidUpdate(prevProps, prevState) { + scrollComponent = React.createRef() + scrollHeaderRef = React.createRef() + + componentDidUpdate( + prevProps: ReactCalendarTimelineProps, + prevState: ReactCalendarTimelineState, + ) { const newZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart const oldZoom = prevState.visibleTimeEnd - prevState.visibleTimeStart @@ -408,55 +545,52 @@ export default class ReactCalendarTimeline extends Component { ) { this.props.onBoundsChange( this.state.canvasTimeStart, - this.state.canvasTimeStart + newZoom * 3 + this.state.canvasTimeStart + newZoom * 3, ) } // Check the scroll is correct const scrollLeft = Math.round( - this.state.width * - (this.state.visibleTimeStart - this.state.canvasTimeStart) / - newZoom + (this.state.width * + (this.state.visibleTimeStart - this.state.canvasTimeStart)) / + newZoom, ) const componentScrollLeft = Math.round( - prevState.width * - (prevState.visibleTimeStart - prevState.canvasTimeStart) / - oldZoom + (prevState.width * + (prevState.visibleTimeStart - prevState.canvasTimeStart)) / + oldZoom, ) if (componentScrollLeft !== scrollLeft) { - this.scrollComponent.scrollLeft = scrollLeft + this.scrollComponent.current?.scrollLeft = scrollLeft this.scrollHeaderRef.scrollLeft = scrollLeft } } resize = (props = this.props) => { - const { width: containerWidth } = this.container.getBoundingClientRect() + const { width: containerWidth } = + this.container.current?.getBoundingClientRect() ?? { width: 0 } let width = containerWidth - props.sidebarWidth - props.rightSidebarWidth const canvasWidth = getCanvasWidth(width, props.buffer) - const { - dimensionItems, - height, - groupHeights, - groupTops - } = stackTimelineItems( - props.items, - props.groups, - canvasWidth, - this.state.canvasTimeStart, - this.state.canvasTimeEnd, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - this.state.draggingItem, - this.state.resizingItem, - this.state.dragTime, - this.state.resizingEdge, - this.state.resizeTime, - this.state.newGroupOrder - ) + const { dimensionItems, height, groupHeights, groupTops } = + stackTimelineItems( + props.items, + props.groups, + canvasWidth, + this.state.canvasTimeStart, + this.state.canvasTimeEnd, + props.keys, + props.lineHeight, + props.itemHeightRatio, + props.stackItems, + this.state.draggingItem, + this.state.resizingItem, + this.state.dragTime, + this.state.resizingEdge, + this.state.resizeTime, + this.state.newGroupOrder, + ) // this is needed by dragItem since it uses pageY from the drag events // if this was in the context of the scrollElement, this would not be necessary @@ -466,43 +600,43 @@ export default class ReactCalendarTimeline extends Component { dimensionItems, height, groupHeights, - groupTops + groupTops, }) //initial scroll left is the buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) const scrollLeft = width * ((props.buffer - 1) / 2) - this.scrollComponent.scrollLeft = scrollLeft; - this.scrollHeaderRef.scrollLeft = scrollLeft; + this.scrollComponent.scrollLeft = scrollLeft + this.scrollHeaderRef.scrollLeft = scrollLeft } - onScroll = scrollX => { + onScroll = (scrollX: number) => { const width = this.state.width const canvasTimeStart = this.state.canvasTimeStart const zoom = this.state.visibleTimeEnd - this.state.visibleTimeStart - const visibleTimeStart = canvasTimeStart + zoom * scrollX / width + const visibleTimeStart = canvasTimeStart + (zoom * scrollX) / width if ( this.state.visibleTimeStart !== visibleTimeStart || this.state.visibleTimeEnd !== visibleTimeStart + zoom ) { - this.props.onTimeChange( + this.props.onTimeChange?.( visibleTimeStart, visibleTimeStart + zoom, this.updateScrollCanvas, - this.getTimelineUnit() + this.getTimelineUnit(), ) } } // called when the visible time changes updateScrollCanvas = ( - visibleTimeStart, - visibleTimeEnd, - forceUpdateDimensions, + visibleTimeStart: dateType, + visibleTimeEnd: dateType, + forceUpdateDimensions: boolean, items = this.props.items, - groups = this.props.groups + groups = this.props.groups, ) => { this.setState( calculateScrollCanvas( @@ -512,35 +646,36 @@ export default class ReactCalendarTimeline extends Component { items, groups, this.props, - this.state - ) + this.state, + ), ) } - handleWheelZoom = (speed, xPosition, deltaY) => { - this.changeZoom(1.0 + speed * deltaY / 500, xPosition / this.state.width) + handleWheelZoom = (speed: number, xPosition: number, deltaY: number) => { + this.changeZoom(1.0 + (speed * deltaY) / 500, xPosition / this.state.width) } - changeZoom = (scale, offset = 0.5) => { + changeZoom = (scale: number, offset = 0.5) => { const { minZoom, maxZoom } = this.props const oldZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart const newZoom = Math.min( Math.max(Math.round(oldZoom * scale), minZoom), - maxZoom + maxZoom, ) // min 1 min, max 20 years const newVisibleTimeStart = Math.round( - this.state.visibleTimeStart + (oldZoom - newZoom) * offset - ) - - this.props.onTimeChange( - newVisibleTimeStart, - newVisibleTimeStart + newZoom, - this.updateScrollCanvas, - this.getTimelineUnit() + this.state.visibleTimeStart + (oldZoom - newZoom) * offset, ) + if (this.props.onTimeChange) { + this.props.onTimeChange( + newVisibleTimeStart, + newVisibleTimeStart + newZoom, + this.updateScrollCanvas, + this.getTimelineUnit(), + ) + } } - showPeriod = (from, to) => { + showPeriod = (from: Dayjs, to: Dayjs) => { let visibleTimeStart = from.valueOf() let visibleTimeEnd = to.valueOf() @@ -550,15 +685,15 @@ export default class ReactCalendarTimeline extends Component { return } - this.props.onTimeChange( + this.props.onTimeChange?.( visibleTimeStart, visibleTimeStart + zoom, this.updateScrollCanvas, - this.getTimelineUnit() + this.getTimelineUnit(), ) } - selectItem = (item, clickType, e) => { + selectItem = (item: TimelineItemBase, clickType, e) => { if ( this.isItemSelected(item) || (this.props.itemTouchSendsClick && clickType === 'touch') @@ -595,7 +730,7 @@ export default class ReactCalendarTimeline extends Component { // TODO: this is very similar to timeFromItemEvent, aside from which element to get offsets // from. Look to consolidate the logic for determining coordinate to time // as well as generalizing how we get time from click on the canvas - getTimeFromRowClickEvent = e => { + getTimeFromRowClickEvent = (e) => { const { dragSnap, buffer } = this.props const { width, canvasTimeStart, canvasTimeEnd } = this.state // this gives us distance from left of row element, so event is in @@ -607,19 +742,19 @@ export default class ReactCalendarTimeline extends Component { canvasTimeEnd, getCanvasWidth(width, buffer), - offsetX + offsetX, ) time = Math.floor(time / dragSnap) * dragSnap return time } - timeFromItemEvent = e => { + timeFromItemEvent = (e) => { const { width, visibleTimeStart, visibleTimeEnd } = this.state const { dragSnap } = this.props - const scrollComponent = this.scrollComponent - const { left: scrollX } = scrollComponent.getBoundingClientRect() + const scrollComponent = this.scrollComponent.current + const { left: scrollX } = scrollComponent?.getBoundingClientRect() const xRelativeToTimeline = e.clientX - scrollX @@ -641,14 +776,15 @@ export default class ReactCalendarTimeline extends Component { draggingItem: item, dragTime: dragTime, newGroupOrder: newGroupOrder, - dragGroupTitle: newGroup ? _get(newGroup, keys.groupLabelKey) : '' + dragGroupTitle: newGroup ? _get(newGroup, keys.groupLabelKey) : '', }) this.updatingItem({ eventType: 'move', itemId: item, time: dragTime, - newGroupOrder + undefined, //todo + newGroupOrder, }) } @@ -663,14 +799,14 @@ export default class ReactCalendarTimeline extends Component { this.setState({ resizingItem: item, resizingEdge: edge, - resizeTime: resizeTime + resizeTime: resizeTime, }) this.updatingItem({ eventType: 'resize', itemId: item, time: resizeTime, - edge + edge, }) } @@ -681,19 +817,31 @@ export default class ReactCalendarTimeline extends Component { } } - updatingItem = ({ eventType, itemId, time, edge, newGroupOrder }) => { + updatingItem = ({ + eventType, + itemId, + time, + edge, + newGroupOrder, + }: { + eventType: 'move' + itemId: Id + time: number + edge: 'left' | 'right' | undefined + newGroupOrder: number + }) => { if (this.props.onItemDrag) { this.props.onItemDrag({ eventType, itemId, time, edge, newGroupOrder }) } } columns( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - minUnit, - timeSteps, - height + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + minUnit: string, + timeSteps: TimelineTimeSteps, + height: number, ) { return ( { + handleHeaderRef = (el) => { this.scrollHeaderRef = el this.props.headerRef(el) } - sidebar(height, groupHeights) { + sidebar(height: number, groupHeights) { const { sidebarWidth } = this.props return ( sidebarWidth && ( @@ -856,8 +1006,8 @@ export default class ReactCalendarTimeline extends Component { * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types */ isTimelineHeader = (child) => { - if(child.type === undefined) return false - return child.type.secretKey ===TimelineHeaders.secretKey + if (child.type === undefined) return false + return child.type.secretKey === TimelineHeaders.secretKey } childrenWithProps( @@ -871,7 +1021,7 @@ export default class ReactCalendarTimeline extends Component { visibleTimeStart, visibleTimeEnd, minUnit, - timeSteps + timeSteps, ) { if (!this.props.children) { return null @@ -879,7 +1029,7 @@ export default class ReactCalendarTimeline extends Component { // convert to an array and remove the nulls const childArray = Array.isArray(this.props.children) - ? this.props.children.filter(c => c) + ? this.props.children.filter((c) => c) : [this.props.children] const childProps = { @@ -897,10 +1047,10 @@ export default class ReactCalendarTimeline extends Component { selected: this.getSelected(), height: height, minUnit: minUnit, - timeSteps: timeSteps + timeSteps: timeSteps, } - return React.Children.map(childArray, child => { + return React.Children.map(childArray, (child) => { if (!this.isTimelineHeader(child)) { return React.cloneElement(child, childProps) } else { @@ -912,7 +1062,7 @@ export default class ReactCalendarTimeline extends Component { renderHeaders = () => { if (this.props.children) { let headerRenderer - React.Children.map(this.props.children, child => { + React.Children.map(this.props.children, (child) => { if (this.isTimelineHeader(child)) { headerRenderer = child } @@ -932,23 +1082,24 @@ export default class ReactCalendarTimeline extends Component { getSelected() { return this.state.selectedItem && !this.props.selected ? [this.state.selectedItem] - : this.props.selected || []; + : this.props.selected || [] } - hasSelectedItem(){ - if(!Array.isArray(this.props.selected)) return !!this.state.selectedItem + hasSelectedItem() { + if (!Array.isArray(this.props.selected)) return !!this.state.selectedItem return this.props.selected.length > 0 } - isItemSelected(itemId){ + isItemSelected(itemId) { const selectedItems = this.getSelected() - return selectedItems.some(i => i === itemId) + return selectedItems.some((i) => i === itemId) } - getScrollElementRef = el => { + getScrollElementRef = (el) => { this.props.scrollRef(el) this.scrollComponent = el } + container = React.createRef() render() { const { items, @@ -966,7 +1117,7 @@ export default class ReactCalendarTimeline extends Component { visibleTimeStart, visibleTimeEnd, canvasTimeStart, - canvasTimeEnd + canvasTimeEnd, } = this.state let { dimensionItems, height, groupHeights, groupTops } = this.state @@ -992,7 +1143,7 @@ export default class ReactCalendarTimeline extends Component { this.state.dragTime, this.state.resizingEdge, this.state.resizeTime, - this.state.newGroupOrder + this.state.newGroupOrder, ) dimensionItems = stackResults.dimensionItems height = stackResults.height @@ -1001,7 +1152,7 @@ export default class ReactCalendarTimeline extends Component { } const outerComponentStyle = { - height: `${height}px` + height: `${height}px`, } return ( @@ -1024,7 +1175,7 @@ export default class ReactCalendarTimeline extends Component { >
(this.container = el)} + ref={this.container} className={`react-calendar-timeline ${this.props.className}`} > {this.renderHeaders()} @@ -1047,7 +1198,7 @@ export default class ReactCalendarTimeline extends Component { canvasWidth, minUnit, timeSteps, - height + height, )} {this.rows(canvasWidth, groupHeights, groups)} {this.items( @@ -1058,7 +1209,7 @@ export default class ReactCalendarTimeline extends Component { minUnit, dimensionItems, groupHeights, - groupTops + groupTops, )} {this.childrenWithProps( canvasTimeStart, @@ -1071,7 +1222,7 @@ export default class ReactCalendarTimeline extends Component { visibleTimeStart, visibleTimeEnd, minUnit, - timeSteps + timeSteps, )} diff --git a/src/lib/columns/Columns.js b/src/lib/columns/Columns.tsx similarity index 73% rename from src/lib/columns/Columns.js rename to src/lib/columns/Columns.tsx index 0942984c4..863d5f862 100644 --- a/src/lib/columns/Columns.js +++ b/src/lib/columns/Columns.tsx @@ -1,27 +1,26 @@ -import PropTypes from 'prop-types' -import React, { Component } from 'react' +import React, { Component, FC } from 'react' import { iterateTimes } from '../utility/calendar' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' +import { UnitType } from 'dayjs' -const passThroughPropTypes = { - canvasTimeStart: PropTypes.number.isRequired, - canvasTimeEnd: PropTypes.number.isRequired, - canvasWidth: PropTypes.number.isRequired, - lineCount: PropTypes.number.isRequired, - minUnit: PropTypes.string.isRequired, - timeSteps: PropTypes.object.isRequired, - height: PropTypes.number.isRequired, - verticalLineClassNamesForTime: PropTypes.func +type WrapperColumnsProps = { + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + lineCount: number + minUnit: UnitType + timeSteps: Record + height: number + verticalLineClassNamesForTime: (a: number, b: number) => number[] } -class Columns extends Component { - static propTypes = { - ...passThroughPropTypes, - getLeftOffsetFromDate: PropTypes.func.isRequired - } +type ColumnsProps = WrapperColumnsProps & { + getLeftOffsetFromDate: (time: number) => number +} - shouldComponentUpdate(nextProps) { +class Columns extends Component { + shouldComponentUpdate(nextProps: ColumnsProps) { return !( nextProps.canvasTimeStart === this.props.canvasTimeStart && nextProps.canvasTimeEnd === this.props.canvasTimeEnd && @@ -44,11 +43,11 @@ class Columns extends Component { timeSteps, height, verticalLineClassNamesForTime, - getLeftOffsetFromDate + getLeftOffsetFromDate, } = this.props const ratio = canvasWidth / (canvasTimeEnd - canvasTimeStart) - let lines = [] + let lines: React.JSX.Element[] = [] iterateTimes( canvasTimeStart, @@ -59,11 +58,11 @@ class Columns extends Component { const minUnitValue = time.get(minUnit === 'day' ? 'date' : minUnit) const firstOfType = minUnitValue === (minUnit === 'day' ? 1 : 0) - let classNamesForTime = [] + let classNamesForTime: number[] = [] if (verticalLineClassNamesForTime) { classNamesForTime = verticalLineClassNamesForTime( time.unix() * 1000, // turn into ms, which is what verticalLineClassNamesForTime expects - nextTime.unix() * 1000 - 1 + nextTime.unix() * 1000 - 1, ) } @@ -87,18 +86,18 @@ class Columns extends Component { top: '0px', left: `${left}px`, width: `${right - left}px`, - height: `${height}px` + height: `${height}px`, }} - /> + />, ) - } + }, ) return
{lines}
} } -const ColumnsWrapper = ({ ...props }) => { +const ColumnsWrapper: FC = ({ ...props }) => { return ( {({ getLeftOffsetFromDate }) => ( @@ -108,8 +107,4 @@ const ColumnsWrapper = ({ ...props }) => { ) } -ColumnsWrapper.defaultProps = { - ...passThroughPropTypes -} - export default ColumnsWrapper diff --git a/src/lib/headers/constants.js b/src/lib/headers/constants.ts similarity index 100% rename from src/lib/headers/constants.js rename to src/lib/headers/constants.ts diff --git a/src/lib/layout/Sidebar.js b/src/lib/layout/Sidebar.tsx similarity index 74% rename from src/lib/layout/Sidebar.js rename to src/lib/layout/Sidebar.tsx index 399e9316f..0a0c2aff9 100644 --- a/src/lib/layout/Sidebar.js +++ b/src/lib/layout/Sidebar.tsx @@ -1,20 +1,23 @@ -import PropTypes from 'prop-types' import React, { Component } from 'react' import { _get, arraysEqual } from '../utility/generic' +import {ReactCalendarGroupRendererProps, TimelineGroupBase, TimelineKeys} from "../types/main"; -export default class Sidebar extends Component { - static propTypes = { - groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - width: PropTypes.number.isRequired, - height: PropTypes.number.isRequired, - groupHeights: PropTypes.array.isRequired, - keys: PropTypes.object.isRequired, - groupRenderer: PropTypes.func, - isRightSidebar: PropTypes.bool, - } - shouldComponentUpdate(nextProps) { + +type Props = { + groups:CustomGroup[] + width:number + height:number + groupHeights:number[] + keys:TimelineKeys, + groupRenderer:React.ComponentType; //TODO Check + isRightSidebar:boolean +} + +export default class Sidebar extends Component { + + shouldComponentUpdate(nextProps:Props) { return !( nextProps.keys === this.props.keys && nextProps.width === this.props.width && @@ -24,7 +27,7 @@ export default class Sidebar extends Component { ) } - renderGroupContent(group, isRightSidebar, groupTitleKey, groupRightTitleKey) { + renderGroupContent(group:TimelineGroupBase, isRightSidebar:boolean, groupTitleKey:string, groupRightTitleKey:string) { if (this.props.groupRenderer) { return React.createElement(this.props.groupRenderer, { group, diff --git a/src/lib/markers/MarkerCanvas.js b/src/lib/markers/MarkerCanvas.tsx similarity index 74% rename from src/lib/markers/MarkerCanvas.js rename to src/lib/markers/MarkerCanvas.tsx index d41750c95..ce29d553b 100644 --- a/src/lib/markers/MarkerCanvas.js +++ b/src/lib/markers/MarkerCanvas.tsx @@ -1,33 +1,36 @@ -import React from 'react' -import PropTypes from 'prop-types' +import React, { PropsWithChildren } from 'react' import { MarkerCanvasProvider } from './MarkerCanvasContext' import TimelineMarkersRenderer from './TimelineMarkersRenderer' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' // expand to fill entire parent container (ScrollElement) -const staticStyles = { +const staticStyles: React.CSSProperties = { position: 'absolute', left: 0, right: 0, top: 0, - bottom: 0 + bottom: 0, +} + +type MarkerCanvasProps = { + getDateFromLeftOffsetPosition: (offset: number) => number } /** * Renders registered markers and exposes a mouse over listener for * CursorMarkers to subscribe to */ -class MarkerCanvas extends React.Component { - static propTypes = { - getDateFromLeftOffsetPosition: PropTypes.func.isRequired, - children: PropTypes.node - } - - handleMouseMove = evt => { +class MarkerCanvas extends React.Component< + PropsWithChildren +> { + handleMouseMove = (evt) => { if (this.subscription != null) { const { pageX } = evt // FIXME: dont use getBoundingClientRect. Use passed in scroll amount - const { left: containerLeft } = this.containerEl.getBoundingClientRect() + const { left: containerLeft } = + this.containerEl.current?.getBoundingClientRect() ?? { + left: 0, + } // number of pixels from left we are on canvas // we do this calculation as pageX is based on x from viewport whereas @@ -39,7 +42,7 @@ class MarkerCanvas extends React.Component { this.subscription({ leftOffset: canvasX, date, - isCursorOverCanvas: true + isCursorOverCanvas: true, }) } } @@ -51,7 +54,7 @@ class MarkerCanvas extends React.Component { } } - handleMouseMoveSubscribe = sub => { + handleMouseMoveSubscribe = (sub) => { this.subscription = sub return () => { this.subscription = null @@ -59,9 +62,11 @@ class MarkerCanvas extends React.Component { } state = { - subscribeToMouseOver: this.handleMouseMoveSubscribe + subscribeToMouseOver: this.handleMouseMoveSubscribe, } + containerEl = React.createRef() + render() { return ( @@ -69,7 +74,7 @@ class MarkerCanvas extends React.Component { style={staticStyles} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave} - ref={el => (this.containerEl = el)} + ref={this.containerEl} > {this.props.children} @@ -79,7 +84,7 @@ class MarkerCanvas extends React.Component { } } -const MarkerCanvasWrapper = props => ( +const MarkerCanvasWrapper = (props) => ( {({ getDateFromLeftOffsetPosition }) => ( { - // eslint-disable-next-line - console.warn('default subscribe marker used') - return noop - } -} - -const { Consumer, Provider } = React.createContext(defaultContextState) - -// REVIEW: is this the best way to manage ids? -let _id = 0 -const createId = () => { - _id += 1 - return _id + 1 -} - -export class TimelineMarkersProvider extends React.Component { - static propTypes = { - children: PropTypes.element.isRequired - } - - handleSubscribeToMarker = newMarker => { - newMarker = { - ...newMarker, - // REVIEW: in the event that we accept id to be passed to the Marker components, this line would override those - id: createId() - } - - this.setState(state => { - return { - markers: [...state.markers, newMarker] - } - }) - return { - unsubscribe: () => { - this.setState(state => { - return { - markers: state.markers.filter(marker => marker.id !== newMarker.id) - } - }) - }, - getMarker: () => { - return newMarker - } - } - } - - handleUpdateMarker = updateMarker => { - const markerIndex = this.state.markers.findIndex( - marker => marker.id === updateMarker.id - ) - if (markerIndex < 0) return - this.setState(state => { - return { - markers: [ - ...state.markers.slice(0, markerIndex), - updateMarker, - ...state.markers.slice(markerIndex + 1) - ] - } - }) - } - - state = { - markers: [], - subscribeMarker: this.handleSubscribeToMarker, - updateMarker: this.handleUpdateMarker - } - - render() { - return {this.props.children} - } -} - -export const TimelineMarkersConsumer = Consumer diff --git a/src/lib/markers/TimelineMarkersContext.tsx b/src/lib/markers/TimelineMarkersContext.tsx new file mode 100644 index 000000000..69eb879f0 --- /dev/null +++ b/src/lib/markers/TimelineMarkersContext.tsx @@ -0,0 +1,96 @@ +import React, { PropsWithChildren } from 'react' +import { noop } from '../utility/generic' +import { MarkerType } from './markerType' + +type TimelineMarkersContextValue = { + markers: MarkerType[] + subscribeMarker: (newe: MarkerType) => void + updateMarker: (upd: MarkerType) => void +} + +const defaultContextState: TimelineMarkersContextValue = { + markers: [], + subscribeMarker: () => { + // eslint-disable-next-line + console.warn('default subscribe marker used') + return noop + }, + updateMarker: () => { + // eslint-disable-next-line + console.warn('default subscribe marker used') + return noop + }, +} + +const { Consumer, Provider } = + React.createContext(defaultContextState) + +// REVIEW: is this the best way to manage ids? +let _id = 0 +const createId = () => { + _id += 1 + return _id + 1 +} + +export class TimelineMarkersProvider extends React.Component< + PropsWithChildren, + TimelineMarkersContextValue +> { + handleSubscribeToMarker = (newMarker: MarkerType) => { + newMarker = { + ...newMarker, + // REVIEW: in the event that we accept id to be passed to the Marker components, this line would override those + id: createId(), + } + + this.setState((state) => { + return { + markers: [...state.markers, newMarker], + } + }) + return { + unsubscribe: () => { + this.setState((state) => { + return { + markers: state.markers.filter( + (marker) => marker.id !== newMarker.id, + ), + } + }) + }, + getMarker: () => { + return newMarker + }, + } + } + + handleUpdateMarker = (updateMarker: MarkerType) => { + const markerIndex = this.state.markers.findIndex( + (marker) => marker.id === updateMarker.id, + ) + if (markerIndex < 0) return + this.setState((state) => { + return { + markers: [ + ...state.markers.slice(0, markerIndex), + updateMarker, + ...state.markers.slice(markerIndex + 1), + ], + } + }) + } + constructor(props: any) { + super(props) + this.state = { + markers: [], + subscribeMarker: this.handleSubscribeToMarker, + updateMarker: this.handleUpdateMarker, + } + } + + render() { + return {this.props.children} + } +} + +export const TimelineMarkersConsumer = Consumer diff --git a/src/lib/markers/implementations/CursorMarker.js b/src/lib/markers/implementations/CursorMarker.tsx similarity index 61% rename from src/lib/markers/implementations/CursorMarker.js rename to src/lib/markers/implementations/CursorMarker.tsx index cc628090e..99fdd6640 100644 --- a/src/lib/markers/implementations/CursorMarker.js +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -2,12 +2,43 @@ import React from 'react' import PropTypes from 'prop-types' import { createMarkerStylesWithLeftOffset, - createDefaultRenderer + createDefaultRenderer, } from './shared' import { MarkerCanvasConsumer } from '../MarkerCanvasContext' const defaultRenderer = createDefaultRenderer('default-cursor-marker') +type CursorMarkerWrapperProps = { + renderer: ({ + styles, + date, + }: { + styles: React.CSSProperties + date: number + }) => React.JSX.Element + //interval: number +} + +type CursorMarkerProps = CursorMarkerWrapperProps & { + subscribeToCanvasMouseOver: ( + handleCanvasMouseOver: ({ + leftOffset, + date, + isCursorOverCanvas, + }: { + leftOffset: number + date: number + isCursorOverCanvas: boolean + }) => void, + ) => void +} + +type CursorMarkerStat = { + leftOffset: number + date: number + isShowingCursor: boolean +} + /** * CursorMarker implementation subscribes to 'subscribeToCanvasMouseOver' on mount. * This subscription is passed in via MarkerCanvasConsumer, which is wired up to @@ -18,37 +49,49 @@ const defaultRenderer = createDefaultRenderer('default-cursor-marker') * isCursorOverCanvas - whether the user cursor is over the canvas. This is set to 'false' * when the user mouseleaves the element */ -class CursorMarker extends React.Component { +class CursorMarker extends React.Component< + CursorMarkerProps, + CursorMarkerStat +> { static propTypes = { subscribeToCanvasMouseOver: PropTypes.func.isRequired, - renderer: PropTypes.func + renderer: PropTypes.func, } - static defaultProps = { - renderer: defaultRenderer + public static defaultProps = { + renderer: defaultRenderer, } - constructor() { - super() + constructor(props: any) { + super(props) this.state = { leftOffset: 0, date: 0, - isShowingCursor: false + isShowingCursor: false, } } - handleCanvasMouseOver = ({ leftOffset, date, isCursorOverCanvas }) => { + handleCanvasMouseOver = ({ + leftOffset, + date, + isCursorOverCanvas, + }: { + leftOffset: number + date: number + isCursorOverCanvas: boolean + }) => { this.setState({ leftOffset, date, - isShowingCursor: isCursorOverCanvas + isShowingCursor: isCursorOverCanvas, }) } + private unsubscribe: undefined | any //todo componentDidMount() { this.unsubscribe = this.props.subscribeToCanvasMouseOver( - this.handleCanvasMouseOver + this.handleCanvasMouseOver, ) } @@ -71,7 +114,7 @@ class CursorMarker extends React.Component { } // TODO: turn into HOC? -const CursorMarkerWrapper = props => { +const CursorMarkerWrapper = (props: CursorMarkerWrapperProps) => { return ( {({ subscribeToMouseOver }) => { diff --git a/src/lib/markers/implementations/CustomMarker.js b/src/lib/markers/implementations/CustomMarker.tsx similarity index 53% rename from src/lib/markers/implementations/CustomMarker.js rename to src/lib/markers/implementations/CustomMarker.tsx index a72f750be..a01a4ae7a 100644 --- a/src/lib/markers/implementations/CustomMarker.js +++ b/src/lib/markers/implementations/CustomMarker.tsx @@ -1,25 +1,30 @@ import React from 'react' -import PropTypes from 'prop-types' import { createMarkerStylesWithLeftOffset, - createDefaultRenderer + createDefaultRenderer, } from './shared' const defaultCustomMarkerRenderer = createDefaultRenderer( - 'default-customer-marker-id' + 'default-customer-marker-id', ) +type CustomMarkerProps = { + date: number + getLeftOffsetFromDate: (date: number) => number + renderer: ({ + styles, + date, + }: { + styles: React.CSSProperties + date: number + }) => React.JSX.Element +} + /** * CustomMarker that is placed based on passed in date prop */ -class CustomMarker extends React.Component { - static propTypes = { - getLeftOffsetFromDate: PropTypes.func.isRequired, - renderer: PropTypes.func, - date: PropTypes.number.isRequired - } - - static defaultProps = { - renderer: defaultCustomMarkerRenderer +class CustomMarker extends React.Component { + public static defaultProps = { + renderer: defaultCustomMarkerRenderer, } render() { const { date } = this.props diff --git a/src/lib/markers/implementations/TodayMarker.js b/src/lib/markers/implementations/TodayMarker.tsx similarity index 62% rename from src/lib/markers/implementations/TodayMarker.js rename to src/lib/markers/implementations/TodayMarker.tsx index 5f243fe51..fd5040b3c 100644 --- a/src/lib/markers/implementations/TodayMarker.js +++ b/src/lib/markers/implementations/TodayMarker.tsx @@ -1,47 +1,48 @@ import React from 'react' -import PropTypes from 'prop-types' import { createMarkerStylesWithLeftOffset, - createDefaultRenderer + createDefaultRenderer, } from './shared' +import { MarkerRendererType } from '../markerType' const defaultRenderer = createDefaultRenderer('default-today-line') +type TodayMarkerProps = { + getLeftOffsetFromDate: (date: number) => number + renderer: MarkerRendererType + interval: number +} + /** Marker that is placed based on current date. This component updates itself on * a set interval, dictated by the 'interval' prop. */ -class TodayMarker extends React.Component { - static propTypes = { - getLeftOffsetFromDate: PropTypes.func.isRequired, - renderer: PropTypes.func, - interval: PropTypes.number.isRequired - } - - static defaultProps = { - renderer: defaultRenderer +class TodayMarker extends React.Component { + public static defaultProps = { + renderer: defaultRenderer, } state = { - date: Date.now() + date: Date.now(), } + private intervalToken: NodeJS.Timeout | undefined componentDidMount() { this.intervalToken = this.createIntervalUpdater(this.props.interval) } - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: TodayMarkerProps) { if (prevProps.interval !== this.props.interval) { clearInterval(this.intervalToken) this.intervalToken = this.createIntervalUpdater(this.props.interval) } } - createIntervalUpdater(interval) { + createIntervalUpdater(interval: number) { return setInterval(() => { this.setState({ - date: Date.now() // FIXME: use date utils pass in as props - }); - }, interval); + date: Date.now(), // FIXME: use date utils pass in as props + }) + }, interval) } componentWillUnmount() { diff --git a/src/lib/markers/implementations/shared.js b/src/lib/markers/implementations/shared.tsx similarity index 61% rename from src/lib/markers/implementations/shared.js rename to src/lib/markers/implementations/shared.tsx index 17855e791..e6ec20b3a 100644 --- a/src/lib/markers/implementations/shared.js +++ b/src/lib/markers/implementations/shared.tsx @@ -3,7 +3,7 @@ import React from 'react' /** * Baseline styles to get the marker to render correctly */ -const criticalStyles = { +const criticalStyles: React.CSSProperties = { position: 'absolute', top: 0, bottom: 0, @@ -12,19 +12,23 @@ const criticalStyles = { // by default, pointer events (specifically click) will // "pass through". This is added so that CursorMarker // will not get in the way of canvas click - pointerEvents: 'none' + pointerEvents: 'none', } // FIXME: this creates a new object each time in render // might want to memoize this? -export const createMarkerStylesWithLeftOffset = leftOffset => ({ +export const createMarkerStylesWithLeftOffset = (leftOffset: number) => ({ ...criticalStyles, - left: leftOffset + left: leftOffset, }) -export const createDefaultRenderer = dataTestidValue => { +export const createDefaultRenderer = (dataTestidValue: string | undefined) => { // eslint-disable-next-line - return function DefaultMarkerRenderer({ styles }) { + return function DefaultMarkerRenderer({ + styles, + }: { + styles: React.CSSProperties + }) { return
} } diff --git a/src/lib/markers/markerType.js b/src/lib/markers/markerType.js deleted file mode 100644 index d85af0439..000000000 --- a/src/lib/markers/markerType.js +++ /dev/null @@ -1,5 +0,0 @@ -export const TimelineMarkerType = { - Today: 'Today', - Custom: 'Custom', - Cursor: 'Cursor' -} diff --git a/src/lib/markers/markerType.ts b/src/lib/markers/markerType.ts new file mode 100644 index 000000000..4484ffd76 --- /dev/null +++ b/src/lib/markers/markerType.ts @@ -0,0 +1,22 @@ +import React from 'react' + +export const TimelineMarkerType = { + Today: 'Today', + Custom: 'Custom', + Cursor: 'Cursor', +} + +export type MarkerType = { + type: typeof TimelineMarkerType + renderer: MarkerRendererType + interval: number + id: number +} + +export type MarkerRendererType = ({ + styles, + date, +}: { + styles: React.CSSProperties + date: number +}) => React.JSX.Element diff --git a/src/lib/markers/public/TodayMarker.js b/src/lib/markers/public/TodayMarker.tsx similarity index 67% rename from src/lib/markers/public/TodayMarker.js rename to src/lib/markers/public/TodayMarker.tsx index b58c24e95..823680ae0 100644 --- a/src/lib/markers/public/TodayMarker.js +++ b/src/lib/markers/public/TodayMarker.tsx @@ -1,25 +1,29 @@ -import React from 'react' +import React, { PropsWithChildren } from 'react' import PropTypes from 'prop-types' import { TimelineMarkersConsumer } from '../TimelineMarkersContext' import { TimelineMarkerType } from '../markerType' -class TodayMarker extends React.Component { +type TodayMarkerProps = { + interval: number + updateMarker: () => void + subscribeMarker: () => void +} + +class TodayMarker extends React.Component> { static propTypes = { subscribeMarker: PropTypes.func.isRequired, updateMarker: PropTypes.func.isRequired, - interval: PropTypes.number, - children: PropTypes.func } static defaultProps = { - interval: 1000 * 10 // default to ten seconds + interval: 1000 * 10, // default to ten seconds } componentDidMount() { - const { unsubscribe, getMarker } = this.props.subscribeMarker({ + const { unsubscribe, getMarker } = this.props.subscribeMarker({ type: TimelineMarkerType.Today, renderer: this.props.children, - interval: this.props.interval + interval: this.props.interval, }) this.unsubscribe = unsubscribe this.getMarker = getMarker @@ -48,11 +52,15 @@ class TodayMarker extends React.Component { } // TODO: turn into HOC? -const TodayMarkerWrapper = props => { +const TodayMarkerWrapper = (props) => { return ( {({ subscribeMarker, updateMarker }) => ( - + )} ) diff --git a/src/lib/timeline/TimelineStateContext.js b/src/lib/timeline/TimelineStateContext.tsx similarity index 60% rename from src/lib/timeline/TimelineStateContext.js rename to src/lib/timeline/TimelineStateContext.tsx index ea0e31aa2..b2d5fe898 100644 --- a/src/lib/timeline/TimelineStateContext.js +++ b/src/lib/timeline/TimelineStateContext.tsx @@ -1,9 +1,11 @@ -import React from 'react' -import PropTypes from 'prop-types' +import React, { PropsWithChildren } from 'react' + import { calculateXPositionForTime, - calculateTimeForXPosition + calculateTimeForXPosition, } from '../utility/calendar' +import { TimelineContext as TimelineContextValue } from '../types/main' +import { Dayjs } from 'dayjs' /* this context will hold all information regarding timeline state: 1. timeline width @@ -13,39 +15,54 @@ import { */ /* eslint-disable no-console */ -const defaultContextState = { +const defaultContextState: timelineContextType = { getTimelineState: () => { console.warn('"getTimelineState" default func is being used') + return {} as TimelineContextValue }, getLeftOffsetFromDate: () => { console.warn('"getLeftOffsetFromDate" default func is being used') + return 0 }, getDateFromLeftOffsetPosition: () => { console.warn('"getDateFromLeftOffsetPosition" default func is being used') + return 0 }, showPeriod: () => { console.warn('"showPeriod" default func is being used') - } + }, } /* eslint-enable */ -const { Consumer, Provider } = React.createContext(defaultContextState) +const { Consumer, Provider } = + React.createContext(defaultContextState) -export class TimelineStateProvider extends React.Component { - /* eslint-disable react/no-unused-prop-types */ - static propTypes = { - children: PropTypes.element.isRequired, - visibleTimeStart: PropTypes.number.isRequired, - visibleTimeEnd: PropTypes.number.isRequired, - canvasTimeStart: PropTypes.number.isRequired, - canvasTimeEnd: PropTypes.number.isRequired, - canvasWidth: PropTypes.number.isRequired, - showPeriod: PropTypes.func.isRequired, - timelineUnit: PropTypes.string.isRequired, - timelineWidth: PropTypes.number.isRequired, - } +type TimelineStarteProps = { + visibleTimeStart: number + visibleTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + showPeriod: (from: Dayjs, to: Dayjs) => void + timelineUnit: string //todo + timelineWidth: number +} +type timelineContextType = { + getTimelineState: () => TimelineContextValue + getLeftOffsetFromDate: (date: number) => number + getDateFromLeftOffsetPosition: (leftOffset: number) => number + showPeriod: (from: Dayjs, to: Dayjs) => void +} + +type TimelineState = { + timelineContext: timelineContextType +} - constructor(props) { +export class TimelineStateProvider extends React.Component< + PropsWithChildren, + TimelineState +> { + constructor(props: any) { super(props) this.state = { @@ -54,7 +71,7 @@ export class TimelineStateProvider extends React.Component { getLeftOffsetFromDate: this.getLeftOffsetFromDate, getDateFromLeftOffsetPosition: this.getDateFromLeftOffsetPosition, showPeriod: this.props.showPeriod, - } + }, } } @@ -76,26 +93,26 @@ export class TimelineStateProvider extends React.Component { canvasWidth, timelineUnit, timelineWidth, - } // REVIEW, + } as TimelineContextValue // REVIEW, } - getLeftOffsetFromDate = date => { + getLeftOffsetFromDate = (date: number): number => { const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props return calculateXPositionForTime( canvasTimeStart, canvasTimeEnd, canvasWidth, - date + date, ) } - getDateFromLeftOffsetPosition = leftOffset => { + getDateFromLeftOffsetPosition = (leftOffset: number) => { const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props return calculateTimeForXPosition( canvasTimeStart, canvasTimeEnd, canvasWidth, - leftOffset + leftOffset, ) } diff --git a/src/lib/types/dimension.ts b/src/lib/types/dimension.ts new file mode 100644 index 000000000..f0222586b --- /dev/null +++ b/src/lib/types/dimension.ts @@ -0,0 +1,21 @@ +import { Id } from './main' + +export type Dimension = { + collisionLeft: number + collisionWidth: number + height: number + isDragging: boolean + left: number + order: { + group: { + id: string + } + index: number + } + originalLeft: number + stack: boolean + top: number | null + width: number +} + +export type ItemDimension = { id: Id; dimensions: Dimension } diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts new file mode 100644 index 000000000..95c2bccfa --- /dev/null +++ b/src/lib/types/main.ts @@ -0,0 +1,369 @@ +import { Dayjs } from 'dayjs' +import * as React from 'react' +import reactCalendarTimeline from '../../../index' +import { Dimension, ItemDimension } from './dimension' +import { number } from 'prop-types' + +export type Id = number | string + +export interface TimelineGroupBase { + id: Id + title: React.ReactNode + rightTitle?: React.ReactNode | undefined + height?: number | undefined + stackItems?: boolean | undefined + dimensions?: Dimension | undefined +} +export type GroupOrders = Record< + Id, + { index: number; group: TimelineGroupBase } +> + +export type GroupedItem = { + index: number + group: TimelineGroupBase + items: ItemDimension[] +} + +export interface TimelineItemBase { + id: Id + group: Id + title?: React.ReactNode | undefined + start_time: DateType + end_time: DateType + canMove?: boolean | undefined + canResize?: boolean | 'left' | 'right' | 'both' | undefined + canChangeGroup?: boolean | undefined + className?: string | undefined + style?: React.CSSProperties | undefined + itemProps?: React.HTMLAttributes | undefined + isOverlay?: boolean | undefined + dimensions?: Dimension | undefined +} + +export type TimelineItem< + CustomItemFields, + DateType = number, +> = TimelineItemBase & CustomItemFields +export type TimelineGroup = TimelineGroupBase & + CustomGroupFields + +export interface TimelineContext { + timelineWidth: number + visibleTimeStart: number + visibleTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + timelineUnit: string +} + +export type GroupStack = { + groupHeight: number + verticalMargin: number + itemTop: number +} +export interface ItemContext { + dimensions: { + collisionLeft: number + collisionWidth: number + height: number + isDragging: boolean + left: number + order: { + group: { + id: string + } + index: number + } + originalLeft: number + stack: boolean + top: number | null + width: number + } + useResizeHandle: boolean + title: string + canMove: boolean + canResizeLeft: boolean + canResizeRight: boolean + selected: boolean + dragging: boolean + dragStart: { + x: number + y: number + } + dragTime: number + dragGroupDelta: number + resizing: boolean + resizeEdge: 'left' | 'right' + resizeStart: number + resizeTime: number + width: boolean +} + +export interface TimeFormat { + long: string + mediumLong: string + medium: string + short: string +} + +export interface LabelFormat { + year: TimeFormat + month: TimeFormat + week: TimeFormat + day: TimeFormat + hour: TimeFormat + minute: TimeFormat +} + +export interface ItemRendererGetItemPropsReturnType { + key: Id + ref: React.Ref + className: string + onMouseDown: React.MouseEventHandler + onMouseUp: React.MouseEventHandler + onTouchStart: React.TouchEventHandler + onTouchEnd: React.TouchEventHandler + onDoubleClick: React.MouseEventHandler + onContextMenu: React.ReactEventHandler + style: React.CSSProperties +} + +export type GetItemsProps = Partial< + Omit +> + +export interface ItemRendererGetResizePropsReturnType { + left?: + | { + ref: React.Ref + className: string + style: React.CSSProperties + } + | undefined + right?: + | { + ref: React.Ref + className: string + style: React.CSSProperties + } + | undefined +} + +export type GetResizeProps = { + leftStyle?: React.CSSProperties | undefined + rightStyle?: React.CSSProperties | undefined + leftClassName?: string | undefined + rightClassName?: string | undefined +} + +export interface ReactCalendarItemRendererProps< + CustomItem extends TimelineItemBase = TimelineItemBase, +> { + item: CustomItem + itemContext: ItemContext + getItemProps: (props: GetItemsProps) => { + key: Id + ref: React.Ref + className: string + onMouseDown: React.MouseEventHandler + onMouseUp: React.MouseEventHandler + onTouchStart: React.TouchEventHandler + onTouchEnd: React.TouchEventHandler + onDoubleClick: React.MouseEventHandler + onContextMenu: React.ReactEventHandler + style: React.CSSProperties + } + getResizeProps: ( + propsOverride?: GetResizeProps, + ) => ItemRendererGetResizePropsReturnType +} + +export interface ReactCalendarGroupRendererProps< + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> { + group: CustomGroup + isRightSidebar?: boolean | undefined +} + +export interface OnItemDragObjectBase { + eventType: 'move' | 'resize' + itemId: Id + time: number +} + +export interface OnItemDragObjectMove extends OnItemDragObjectBase { + eventType: 'move' + newGroupOrder: number +} + +export interface OnItemDragObjectResize extends OnItemDragObjectBase { + eventType: 'resize' + edge?: 'left' | 'right' | undefined +} + +export interface TimelineKeys { + groupIdKey: string + groupTitleKey: string + groupRightTitleKey: string + itemIdKey: string + itemTitleKey: string + itemDivTitleKey: string + itemGroupKey: string + itemTimeStartKey: string + itemTimeEndKey: string +} +export type dateType = number //| undefined; + +export interface TimelineTimeSteps { + second: number + minute: number + hour: number + day: number + month: number + year: number +} + +export class TimelineMarkers extends React.Component {} + +export interface CustomMarkerChildrenProps { + styles: React.CSSProperties + date: number +} +export interface MarkerProps { + date: Date | number + children?: ((props: CustomMarkerChildrenProps) => React.ReactNode) | undefined +} + +export class CustomMarker extends React.Component {} + +export interface TodayMarkerProps extends MarkerProps { + interval?: number | undefined +} +export class TodayMarker extends React.Component {} + +export type CursorMarkerProps = Omit +export class CursorMarker extends React.Component {} + +export interface TimelineHeadersProps { + children?: React.ReactNode + style?: React.CSSProperties | undefined + className?: string | undefined + calendarHeaderStyle?: React.CSSProperties | undefined + calendarHeaderClassName?: string | undefined + headerRef?: React.Ref | undefined +} +export class TimelineHeaders extends React.Component {} + +export type TimelineHeaderProps = TimelineHeadersProps + +export interface SidebarHeaderChildrenFnProps { + getRootProps: (propsToOverride?: { style: React.CSSProperties }) => { + style: React.CSSProperties + } + data: Data +} + +export interface SidebarHeaderProps { + variant?: 'left' | 'right' | undefined + headerData?: Data | undefined + children: (props: SidebarHeaderChildrenFnProps) => React.ReactNode +} +export class SidebarHeader extends React.Component< + SidebarHeaderProps +> {} + +export type Unit = + | 'second' + | 'minute' + | 'hour' + | 'day' + | 'week' + | 'isoWeek' + | 'month' + | 'year' + +export interface IntervalContext { + interval: { + startTime: number + endTime: number + labelWidth: number + left: number + } + intervalText: string +} +export interface GetIntervalProps { + interval?: Interval | undefined + style?: React.CSSProperties | undefined + onClick?: React.MouseEventHandler | undefined +} +export interface IntervalRenderer { + intervalContext: IntervalContext + getIntervalProps: ( + props?: GetIntervalProps, + ) => Required & { key: string | number } + data?: Data | undefined +} +export interface DateHeaderProps { + style?: React.CSSProperties | undefined + className?: string | undefined + unit?: Unit | 'primaryHeader' | undefined + labelFormat?: + | string + | (( + [startTime, endTime]: [Dayjs, Dayjs], + unit: Unit, + labelWidth: number, + ) => string) + | undefined + intervalRenderer?: + | ((props?: IntervalRenderer) => React.ReactNode) + | undefined + headerData?: Data | undefined + children?: + | ((props: SidebarHeaderChildrenFnProps) => React.ReactNode) + | undefined + height?: number | undefined +} +export class DateHeader extends React.Component< + DateHeaderProps +> {} +export interface Interval { + startTime: Dayjs + endTime: Dayjs +} +export interface HeaderContext { + intervals: Array<{ startTime: Dayjs; endTime: Dayjs }> + unit: string +} +export interface CustomHeaderPropsChildrenFnProps { + timelineContext: TimelineContext + headerContext: HeaderContext + getIntervalProps: ( + props?: GetIntervalProps, + ) => Required & { key: string | number } + getRootProps: (propsToOverride?: { style: React.CSSProperties }) => { + style: React.CSSProperties + } + showPeriod: (startDate: Dayjs | number, endDate: Dayjs | number) => void + data: Data +} +export interface CustomHeaderProps { + unit?: Unit | undefined + headerData?: Data | undefined + height?: number | undefined + children: (props?: CustomHeaderPropsChildrenFnProps) => React.ReactNode +} +export class CustomHeader extends React.Component< + CustomHeaderProps +> {} + +// export const defaultKeys: TimelineKeys; +// export const defaultTimeSteps: TimelineTimeSteps; +// export const defaultHeaderFormats: LabelFormat; + +// export default class ReactCalendarTimeline< +// CustomItem extends TimelineItemBase = TimelineItemBase, +// CustomGroup extends TimelineGroupBase = TimelineGroupBase, +// > extends React.Component> {} diff --git a/src/lib/utility/calendar.js b/src/lib/utility/calendar.tsx similarity index 68% rename from src/lib/utility/calendar.js rename to src/lib/utility/calendar.tsx index 054896ce6..3aa1786a0 100644 --- a/src/lib/utility/calendar.js +++ b/src/lib/utility/calendar.tsx @@ -1,5 +1,19 @@ -import dayjs from 'dayjs' +import dayjs, { Dayjs } from 'dayjs' import { _get } from './generic' +import { Dimension, ItemDimension } from '../types/dimension' +import { + GroupedItem, + GroupOrders, + GroupStack, + TimelineGroupBase, + TimelineItemBase, + TimelineKeys, + TimelineTimeSteps, +} from '../types/main' +import { + ReactCalendarTimelineProps, + ReactCalendarTimelineState, +} from '../Timeline' /** * Calculate the ms / pixel ratio of the timeline state @@ -9,10 +23,10 @@ import { _get } from './generic' * @returns {number} */ export function coordinateToTimeRatio( - canvasTimeStart, - canvasTimeEnd, - canvasWidth -) { + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, +): number { return (canvasTimeEnd - canvasTimeStart) / canvasWidth } @@ -26,11 +40,11 @@ export function coordinateToTimeRatio( * @returns {number} */ export function calculateXPositionForTime( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - time -) { + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + time: number, +): number { const widthToZoomRatio = canvasWidth / (canvasTimeEnd - canvasTimeStart) const timeOffset = time - canvasTimeStart @@ -47,11 +61,11 @@ export function calculateXPositionForTime( * @returns {number} */ export function calculateTimeForXPosition( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - leftOffset -) { + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + leftOffset: number, +): number { const timeToPxRatio = (canvasTimeEnd - canvasTimeStart) / canvasWidth const timeFromCanvasTimeStart = timeToPxRatio * leftOffset @@ -59,16 +73,25 @@ export function calculateTimeForXPosition( return timeFromCanvasTimeStart + canvasTimeStart } -export function iterateTimes(start, end, unit, timeSteps, callback) { +export function iterateTimes( + start: number, + end: number, + unit: dayjs.UnitType, + timeSteps: Record, + callback: (time: Dayjs, nextTime: Dayjs) => void, +) { let time = dayjs(start).startOf(unit) if (timeSteps[unit] && timeSteps[unit] > 1) { let value = time.get(unit) - time.set(unit, value - value % timeSteps[unit]) + time.set(unit, value - (value % timeSteps[unit])) } while (time.valueOf() < end) { - let nextTime = dayjs(time).add(timeSteps[unit] || 1, `${unit}s`) + let nextTime = dayjs(time).add( + timeSteps[unit] || 1, + unit as dayjs.ManipulateType, + ) callback(time, nextTime) time = nextTime } @@ -91,18 +114,22 @@ export function iterateTimes(start, end, unit, timeSteps, callback) { // i think this is the distance between cell lines export const minCellWidth = 17 -export function getMinUnit(zoom, width, timeSteps) { +export function getMinUnit( + zoom: number, + width: number, + timeSteps: TimelineTimeSteps, +) { // for supporting weeks, its important to remember that each of these // units has a natural progression to the other. i.e. a year is 12 months // a month is 24 days, a day is 24 hours. // with weeks this isnt the case so weeks needs to be handled specially - let timeDividers = { + let timeDividers: Record = { second: 1000, minute: 60, hour: 60, day: 24, month: 30, - year: 12 + year: 12, } let minUnit = 'year' @@ -110,21 +137,25 @@ export function getMinUnit(zoom, width, timeSteps) { // this timespan is in ms initially let nextTimeSpanInUnitContext = zoom - Object.keys(timeDividers).some(unit => { + Object.keys(timeDividers).some((unit) => { + const unitKey = unit as keyof TimelineTimeSteps // converts previous time span to current unit // (e.g. milliseconds to seconds, seconds to minutes, etc) - nextTimeSpanInUnitContext = nextTimeSpanInUnitContext / timeDividers[unit] + nextTimeSpanInUnitContext = + nextTimeSpanInUnitContext / timeDividers[unitKey] // timeSteps is " // With what step to display different units. E.g. 15 for minute means only minutes 0, 15, 30 and 45 will be shown." // how many cells would be rendered given this time span, for this unit? // e.g. for time span of 60 minutes, and time step of 1, we would render 60 cells const cellsToBeRenderedForCurrentUnit = - nextTimeSpanInUnitContext / timeSteps[unit] + nextTimeSpanInUnitContext / timeSteps[unitKey] // what is happening here? why 3 if time steps are greater than 1?? const cellWidthToUse = - timeSteps[unit] && timeSteps[unit] > 1 ? 3 * minCellWidth : minCellWidth + timeSteps[unitKey] && timeSteps[unitKey] > 1 + ? 3 * minCellWidth + : minCellWidth // for the minWidth of a cell, how many cells would be rendered given // the current pixel width @@ -142,14 +173,14 @@ export function getMinUnit(zoom, width, timeSteps) { return minUnit } -export function getNextUnit(unit) { - let nextUnits = { +export function getNextUnit(unit: string) { + let nextUnits: Record = { second: 'minute', minute: 'hour', hour: 'day', day: 'month', month: 'year', - year: 'year' + year: 'year', } if (!nextUnits[unit]) { throw new Error(`unit ${unit} in not acceptable`) @@ -175,16 +206,28 @@ export function calculateInteractionNewTimes({ isDragging, isResizing, resizingEdge, - resizeTime -}) { + resizeTime, +}: { + itemTimeStart: number + itemTimeEnd: number + dragTime: number | null + isDragging: boolean + isResizing: boolean + resizingEdge: 'left' | 'right' | null + resizeTime: number | null +}): [number, number] { const originalItemRange = itemTimeEnd - itemTimeStart const itemStart = - isResizing && resizingEdge === 'left' ? resizeTime : itemTimeStart + isResizing && resizingEdge === 'left' && resizeTime + ? resizeTime + : itemTimeStart const itemEnd = - isResizing && resizingEdge === 'right' ? resizeTime : itemTimeEnd + isResizing && resizingEdge === 'right' && resizeTime + ? resizeTime + : itemTimeEnd return [ - isDragging ? dragTime : itemStart, - isDragging ? dragTime + originalItemRange : itemEnd + isDragging && dragTime ? dragTime : itemStart, + isDragging && dragTime ? dragTime + originalItemRange : itemEnd, ] } @@ -193,8 +236,14 @@ export function calculateDimensions({ itemTimeEnd, canvasTimeStart, canvasTimeEnd, - canvasWidth -}) { + canvasWidth, +}: { + itemTimeStart: number + itemTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number +}): Partial { const itemTimeRange = itemTimeEnd - itemTimeStart // restrict startTime and endTime to be bounded by canvasTimeStart and canvasTimeEnd @@ -205,13 +254,13 @@ export function calculateDimensions({ canvasTimeStart, canvasTimeEnd, canvasWidth, - effectiveStartTime + effectiveStartTime, ) const right = calculateXPositionForTime( canvasTimeStart, canvasTimeEnd, canvasWidth, - effectiveEndTime + effectiveEndTime, ) const itemWidth = right - left @@ -219,7 +268,7 @@ export function calculateDimensions({ left: left, width: Math.max(itemWidth, 3), collisionLeft: itemTimeStart, - collisionWidth: itemTimeRange + collisionWidth: itemTimeRange, } return dimensions @@ -231,12 +280,16 @@ export function calculateDimensions({ * @param {*} keys the keys object * @returns Ordered hash of objects with their array index and group */ -export function getGroupOrders(groups, keys) { +export function getGroupOrders( + groups: TimelineGroupBase[], + keys: TimelineKeys, +) { const { groupIdKey } = keys - let groupOrders = {} + let groupOrders: GroupOrders = {} for (let i = 0; i < groups.length; i++) { + // @ts-ignore //todo groupOrders[_get(groups[i], groupIdKey)] = { index: i, group: groups[i] } } @@ -248,8 +301,11 @@ export function getGroupOrders(groups, keys) { * @param {*} items list of all items * @param {*} groupOrders the result of getGroupOrders */ -export function getGroupedItems(items, groupOrders) { - var groupedItems = {} +export function getGroupedItems( + items: ItemDimension[], + groupOrders: GroupOrders, +) { + var groupedItems: Record = {} var keys = Object.keys(groupOrders) // Initialize with result object for each group for (let i = 0; i < keys.length; i++) { @@ -257,14 +313,17 @@ export function getGroupedItems(items, groupOrders) { groupedItems[i] = { index: groupOrder.index, group: groupOrder.group, - items: [] + items: [], } } // Populate groups for (let i = 0; i < items.length; i++) { - if (items[i].dimensions.order !== undefined) { - const groupItem = groupedItems[items[i].dimensions.order.index] + if ( + items[i].dimensions !== undefined && + items[i].dimensions?.order !== undefined + ) { + const groupItem = groupedItems[items[i].dimensions?.order.index ?? 0] //todo check if (groupItem) { groupItem.items.push(items[i]) } @@ -274,10 +333,18 @@ export function getGroupedItems(items, groupOrders) { return groupedItems } -export function getVisibleItems(items, canvasTimeStart, canvasTimeEnd, keys) { +export function getVisibleItems< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +>( + items: CustomItem[], + canvasTimeStart: number, + canvasTimeEnd: number, + keys: TimelineKeys, +) { const { itemTimeStartKey, itemTimeEndKey } = keys - return items.filter(item => { + return items.filter((item) => { return ( _get(item, itemTimeStartKey) <= canvasTimeEnd && _get(item, itemTimeEndKey) >= canvasTimeStart @@ -287,15 +354,21 @@ export function getVisibleItems(items, canvasTimeStart, canvasTimeEnd, keys) { const EPSILON = 0.001 -export function collision(a, b, lineHeight, collisionPadding = EPSILON) { +export function collision( + a: Dimension, + b: Dimension, + lineHeight: number, + collisionPadding: number = EPSILON, +) { // 2d collisions detection - https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection var verticalMargin = 0 return ( a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && a.collisionLeft + a.collisionWidth - collisionPadding > b.collisionLeft && - a.top - verticalMargin + collisionPadding < b.top + b.height && - a.top + a.height + verticalMargin - collisionPadding > b.top + (a.top ?? 0) - verticalMargin + collisionPadding < + (b.top ?? 0) + b.height && + (a.top ?? 0) + a.height + verticalMargin - collisionPadding > (b.top ?? 0) ) } @@ -304,17 +377,21 @@ export function collision(a, b, lineHeight, collisionPadding = EPSILON) { * is being stacked */ export function groupStack( - lineHeight, - item, - group, - groupHeight, - groupTop, - itemIndex -) { + lineHeight: number, + item: ItemDimension, + group: ItemDimension[], + groupHeight: number, + groupTop: number, + itemIndex: number, +): GroupStack { // calculate non-overlapping positions let curHeight = groupHeight - let verticalMargin = (lineHeight - item.dimensions.height) / 2 - if (item.dimensions.stack && item.dimensions.top === null) { + let verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 + if ( + item.dimensions && + item.dimensions.stack && + item.dimensions.top === null + ) { item.dimensions.top = groupTop + verticalMargin curHeight = Math.max(curHeight, lineHeight) do { @@ -323,6 +400,7 @@ export function groupStack( for (var j = itemIndex - 1, jj = 0; j >= jj; j--) { var other = group[j] if ( + other.dimensions && other.dimensions.top !== null && other.dimensions.stack && collision(item.dimensions, other.dimensions, lineHeight) @@ -334,12 +412,19 @@ export function groupStack( } } - if (collidingItem != null) { + if ( + collidingItem != null && + collidingItem.dimensions && + collidingItem.dimensions.top + ) { // There is a collision. Reposition the items above the colliding element item.dimensions.top = collidingItem.dimensions.top + lineHeight curHeight = Math.max( curHeight, - item.dimensions.top + item.dimensions.height + verticalMargin - groupTop + item.dimensions.top + + item.dimensions.height + + verticalMargin - + groupTop, ) } } while (collidingItem) @@ -347,34 +432,43 @@ export function groupStack( return { groupHeight: curHeight, verticalMargin, - itemTop: item.dimensions.top + itemTop: item.dimensions?.top ?? 0, } - } // Calculate the position of this item for a group that is not being stacked -export function groupNoStack(lineHeight, item, groupHeight, groupTop) { - let verticalMargin = (lineHeight - item.dimensions.height) / 2 - if (item.dimensions.top === null) { +export function groupNoStack( + lineHeight: number, + item: ItemDimension, + groupHeight: number, + groupTop: number, +): GroupStack { + let verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 + if (item.dimensions && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin groupHeight = Math.max(groupHeight, lineHeight) } - return { groupHeight, verticalMargin: 0, itemTop: item.dimensions.top } + return { groupHeight, verticalMargin: 0, itemTop: item.dimensions?.top ?? 0 } } -function sum(arr = []) { +function sum(arr: number[] = []) { return arr.reduce((acc, i) => acc + i, 0) } /** * Stack all groups - * @param {*} items items to be stacked + * @param itemsDimensions * @param {*} groupOrders the groupOrders object * @param {*} lineHeight * @param {*} stackItems should items be stacked? */ -export function stackAll(itemsDimensions, groupOrders, lineHeight, stackItems) { - var groupHeights = [] +export function stackAll( + itemsDimensions: ItemDimension[], + groupOrders: GroupOrders, + lineHeight: number, + stackItems: boolean, +) { + var groupHeights: number[] = [] var groupTops = [] var groupedItems = getGroupedItems(itemsDimensions, groupOrders) @@ -391,7 +485,7 @@ export function stackAll(itemsDimensions, groupOrders, lineHeight, stackItems) { itemsDimensions, isGroupStacked, lineHeight, - groupTop + groupTop, ) // If group height is overridden, push new height // Do this late as item position still needs to be calculated @@ -402,39 +496,47 @@ export function stackAll(itemsDimensions, groupOrders, lineHeight, stackItems) { groupHeights.push(Math.max(groupHeight, lineHeight)) } } - + return { height: sum(groupHeights), groupHeights, - groupTops + groupTops, } } /** - * - * @param {*} itemsDimensions - * @param {*} isGroupStacked - * @param {*} lineHeight - * @param {*} groupTop + * + * @param {*} itemsDimensions + * @param {*} isGroupStacked + * @param {*} lineHeight + * @param {*} groupTop */ -export function stackGroup(itemsDimensions, isGroupStacked, lineHeight, groupTop) { +export function stackGroup( + itemsDimensions: ItemDimension[], + isGroupStacked: boolean, + lineHeight: number, + groupTop: number, +) { var groupHeight = 0 var verticalMargin = 0 // Find positions for each item in group for (let itemIndex = 0; itemIndex < itemsDimensions.length; itemIndex++) { - let r = {} - if (isGroupStacked) { - r = groupStack( - lineHeight, - itemsDimensions[itemIndex], - itemsDimensions, - groupHeight, - groupTop, - itemIndex - ) - } else { - r = groupNoStack(lineHeight, itemsDimensions[itemIndex], groupHeight, groupTop) - } + let r = isGroupStacked + ? groupStack( + lineHeight, + itemsDimensions[itemIndex], + itemsDimensions, + groupHeight, + groupTop, + itemIndex, + ) + : groupNoStack( + lineHeight, + itemsDimensions[itemIndex], + groupHeight, + groupTop, + ) + groupHeight = r.groupHeight verticalMargin = r.verticalMargin } @@ -460,30 +562,33 @@ export function stackGroup(itemsDimensions, isGroupStacked, lineHeight, groupTop * @param {number} resizeTime * @param {number} newGroupOrder */ -export function stackTimelineItems( - items, - groups, - canvasWidth, - canvasTimeStart, - canvasTimeEnd, - keys, - lineHeight, - itemHeightRatio, - stackItems, - draggingItem, - resizingItem, - dragTime, - resizingEdge, - resizeTime, - newGroupOrder +export function stackTimelineItems< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +>( + items: CustomItem[], + groups: CustomGroup[], + canvasWidth: number, + canvasTimeStart: number, + canvasTimeEnd: number, + keys: TimelineKeys, + lineHeight: number, + itemHeightRatio: number, + stackItems: boolean, + draggingItem: CustomItem | null | undefined, + resizingItem: CustomItem | null | undefined, + dragTime: number | null, + resizingEdge: 'left' | 'right' | null, + resizeTime: number | null, + newGroupOrder: number, ) { const visibleItems = getVisibleItems( items, canvasTimeStart, canvasTimeEnd, - keys + keys, ) - const visibleItemsWithInteraction = visibleItems.map(item => + const visibleItemsWithInteraction = visibleItems.map((item) => getItemWithInteractions({ item, keys, @@ -493,8 +598,8 @@ export function stackTimelineItems( resizingEdge, resizeTime, groups, - newGroupOrder - }) + newGroupOrder, + }), ) // if there are no groups return an empty array of dimensions @@ -503,14 +608,14 @@ export function stackTimelineItems( dimensionItems: [], height: 0, groupHeights: [], - groupTops: [] + groupTops: [], } } // Get the order of groups based on their id key const groupOrders = getGroupOrders(groups, keys) let dimensionItems = visibleItemsWithInteraction - .map(item => + .map((item) => getItemDimensions({ item, keys, @@ -519,16 +624,16 @@ export function stackTimelineItems( canvasWidth, groupOrders, lineHeight, - itemHeightRatio - }) + itemHeightRatio, + }), ) - .filter(item => !!item) + .filter((item) => !!item) as ItemDimension[] // Get a new array of groupOrders holding the stacked items const { height, groupHeights, groupTops } = stackAll( dimensionItems, groupOrders, lineHeight, - stackItems + stackItems, ) return { dimensionItems, height, groupHeights, groupTops } } @@ -538,7 +643,7 @@ export function stackTimelineItems( * @param {*} width * @param {*} buffer */ -export function getCanvasWidth(width, buffer) { +export function getCanvasWidth(width: number, buffer: number) { return width * buffer } @@ -553,7 +658,7 @@ export function getCanvasWidth(width, buffer) { * @param {*} lineHeight * @param {*} itemHeightRatio */ -export function getItemDimensions({ +export function getItemDimensions>({ item, keys, canvasTimeStart, @@ -561,7 +666,16 @@ export function getItemDimensions({ canvasWidth, groupOrders, lineHeight, - itemHeightRatio + itemHeightRatio, +}: { + item: CustomItem + keys: TimelineKeys + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + groupOrders: any //todo + lineHeight: number + itemHeightRatio: number }) { const itemId = _get(item, keys.itemIdKey) let dimension = calculateDimensions({ @@ -569,7 +683,7 @@ export function getItemDimensions({ itemTimeEnd: _get(item, keys.itemTimeEndKey), canvasTimeStart, canvasTimeEnd, - canvasWidth + canvasWidth, }) if (dimension) { dimension.top = null @@ -578,8 +692,8 @@ export function getItemDimensions({ dimension.height = lineHeight * itemHeightRatio return { id: itemId, - dimensions: dimension - } + dimensions: dimension, + } as ItemDimension } } @@ -596,7 +710,10 @@ export function getItemDimensions({ * @param {*} groups * @param {*} newGroupOrder */ -export function getItemWithInteractions({ +export function getItemWithInteractions< + CustomItem extends TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +>({ item, keys, draggingItem, @@ -605,7 +722,17 @@ export function getItemWithInteractions({ resizingEdge, resizeTime, groups, - newGroupOrder + newGroupOrder, +}: { + item: CustomItem + keys: TimelineKeys + draggingItem: CustomItem | null | undefined + resizingItem: CustomItem | null | undefined + dragTime: number | null + resizingEdge: 'left' | 'right' | null + resizeTime: number | null + groups: CustomGroup[] + newGroupOrder: number }) { if (!resizingItem && !draggingItem) return item const itemId = _get(item, keys.itemIdKey) @@ -618,7 +745,7 @@ export function getItemWithInteractions({ isResizing, dragTime, resizingEdge, - resizeTime + resizeTime, }) const newItem = { ...item, @@ -626,7 +753,7 @@ export function getItemWithInteractions({ [keys.itemTimeEndKey]: itemTimeEnd, [keys.itemGroupKey]: isDragging ? _get(groups[newGroupOrder], keys.groupIdKey) - : _get(item, keys.itemGroupKey) + : _get(item, keys.itemGroupKey), } return newItem } @@ -635,15 +762,16 @@ export function getItemWithInteractions({ * get canvas start and end time from visible start and end time * @param {number} visibleTimeStart * @param {number} visibleTimeEnd + * @param buffer */ export function getCanvasBoundariesFromVisibleTime( - visibleTimeStart, - visibleTimeEnd, - buffer, + visibleTimeStart: number, + visibleTimeEnd: number, + buffer: number, ) { const zoom = visibleTimeEnd - visibleTimeStart // buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) - const canvasTimeStart = visibleTimeStart - (zoom * (buffer - 1 )/2) + const canvasTimeStart = visibleTimeStart - (zoom * (buffer - 1)) / 2 const canvasTimeEnd = canvasTimeStart + zoom * buffer return [canvasTimeStart, canvasTimeEnd] } @@ -661,20 +789,24 @@ export function getCanvasBoundariesFromVisibleTime( * @param {*} state */ export function calculateScrollCanvas( - visibleTimeStart, - visibleTimeEnd, - forceUpdateDimensions, - items, - groups, - props, - state + visibleTimeStart: number, + visibleTimeEnd: number, + forceUpdateDimensions: boolean, + items: any, + groups: any, + props: ReactCalendarTimelineProps, + state: ReactCalendarTimelineState, ) { - const buffer = props.buffer; + const buffer = props.buffer const oldCanvasTimeStart = state.canvasTimeStart const oldCanvasTimeEnd = state.canvasTimeEnd const oldZoom = state.visibleTimeEnd - state.visibleTimeStart const newZoom = visibleTimeEnd - visibleTimeStart - const newState = { visibleTimeStart, visibleTimeEnd } + const newState: ReactCalendarTimelineState = { + ...state, + visibleTimeStart, + visibleTimeEnd, + } // Check if the current canvas covers the new times const canKeepCanvas = @@ -688,13 +820,13 @@ export function calculateScrollCanvas( const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime( visibleTimeStart, visibleTimeEnd, - buffer + buffer, ) newState.canvasTimeStart = canvasTimeStart newState.canvasTimeEnd = canvasTimeEnd const mergedState = { ...state, - ...newState + ...newState, } const canvasWidth = getCanvasWidth(mergedState.width, props.buffer) @@ -717,8 +849,8 @@ export function calculateScrollCanvas( mergedState.dragTime, mergedState.resizingEdge, mergedState.resizeTime, - mergedState.newGroupOrder - ) + mergedState.newGroupOrder, + ), ) } return newState diff --git a/webpack.config.js b/webpack.config.js index fb8158178..02378a506 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -29,11 +29,12 @@ const config = { test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel-loader' - } + }, + { test: /\.tsx?$/, loader: 'ts-loader' }, ] }, resolve: { - extensions: ['.js', '.jsx'], + extensions: ['.js', '.jsx','.ts', '.tsx'], modules: [path.resolve('./demo'), 'node_modules'], alias: { '~': path.join(__dirname, './demo'), diff --git a/yarn.lock b/yarn.lock index 67a343ea4..4fe42127b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1730,6 +1730,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/lodash@^4.14.202": + version "4.14.202" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + "@types/mime@*": version "3.0.4" resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz" @@ -1774,17 +1779,17 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dom@^18.0.0": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": version "18.2.17" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz" integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== dependencies: "@types/react" "*" -"@types/react@*": - version "18.2.41" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz" - integrity sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw== +"@types/react@*", "@types/react@^18.2.42": + version "18.2.42" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz" + integrity sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3330,7 +3335,7 @@ encoding@^0.1.12, encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -enhanced-resolve@^5.15.0: +enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0: version "5.15.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== @@ -5607,7 +5612,7 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7109,6 +7114,11 @@ source-map@^0.7.3: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" @@ -7509,6 +7519,17 @@ ts-api-utils@^1.0.1: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== +ts-loader@^9.5.1: + version "9.5.1" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + tslib@^1.8.1: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" @@ -7620,10 +7641,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^5.2.2, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0: - version "5.3.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz" - integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== +typescript@*, typescript@^5.2.2, typescript@^5.3.3, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0: + version "5.3.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== unbox-primitive@^1.0.2: version "1.0.2" From 7e0afc88a88a405b95e406fd1dcbc6ebc77e7681 Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Wed, 13 Dec 2023 09:58:49 +0100 Subject: [PATCH 18/50] Renamed package name to react-calendar-timeline-4ef to avoid duplicates --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 11cb4eadb..42b9a6c5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "react-calendar-timeline", - "version": "0.28.0", + "name": "react-calendar-timeline-4ef", + "version": "1.0.0", "description": "react calendar timeline", "main": "lib/index.js", "scripts": { From 7ff45053b773f539dba3d0404f8c4d038108101a Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Fri, 15 Dec 2023 17:17:35 +0200 Subject: [PATCH 19/50] Types v1 --- .eslintrc.js | 31 - .eslintrc.json | 35 + CHANGELOG.md | 2 +- package.json | 4 + src/lib/Timeline.tsx | 90 +- .../{default-config.js => default-config.ts} | 30 +- ...stomDateHeader.js => CustomDateHeader.tsx} | 39 +- src/lib/headers/CustomHeader.js | 239 --- src/lib/headers/CustomHeader.tsx | 294 ++++ src/lib/headers/DateHeader.js | 160 -- src/lib/headers/DateHeader.tsx | 188 +++ .../{HeadersContext.js => HeadersContext.tsx} | 31 +- src/lib/headers/{Interval.js => Interval.tsx} | 49 +- src/lib/headers/SidebarHeader.js | 72 - src/lib/headers/SidebarHeader.tsx | 83 + ...TimelineHeaders.js => TimelineHeaders.tsx} | 83 +- ...tClickOnDrag.js => PreventClickOnDrag.tsx} | 24 +- src/lib/items/{Item.js => Item.tsx} | 1368 +++++++++-------- src/lib/items/{Items.js => Items.tsx} | 89 +- ...temRenderer.js => defaultItemRenderer.tsx} | 25 +- src/lib/items/{styles.js => styles.ts} | 44 +- src/lib/layout/Sidebar.tsx | 49 +- src/lib/markers/TimelineMarkersContext.tsx | 13 +- ...enderer.js => TimelineMarkersRenderer.tsx} | 2 +- .../markers/implementations/CursorMarker.tsx | 1 + src/lib/markers/markerType.ts | 20 +- .../{CursorMarker.js => CursorMarker.tsx} | 22 +- .../{CustomMarker.js => CustomMarker.tsx} | 24 +- ...{TimelineMarkers.js => TimelineMarkers.ts} | 7 +- src/lib/row/GroupRow.js | 47 - src/lib/row/GroupRow.tsx | 49 + src/lib/row/{GroupRows.js => GroupRows.tsx} | 43 +- .../{ScrollElement.js => ScrollElement.tsx} | 135 +- src/lib/timeline/TimelineStateContext.tsx | 14 +- src/lib/types/main.ts | 196 +-- src/lib/utility/calendar.tsx | 88 +- src/lib/utility/dom-helpers.js | 49 - src/lib/utility/dom-helpers.ts | 59 + src/lib/utility/events.js | 6 - src/lib/utility/events.ts | 9 + src/lib/utility/generic.js | 36 - src/lib/utility/generic.ts | 45 + src/resize-detector/container.js | 24 - src/resize-detector/container.ts | 36 + src/resize-detector/window.js | 15 - src/resize-detector/window.ts | 14 + tsconfig.json | 109 ++ yarn.lock | 122 +- 48 files changed, 2388 insertions(+), 1826 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 .eslintrc.json rename src/lib/{default-config.js => default-config.ts} (72%) rename src/lib/headers/{CustomDateHeader.js => CustomDateHeader.tsx} (50%) delete mode 100644 src/lib/headers/CustomHeader.js create mode 100644 src/lib/headers/CustomHeader.tsx delete mode 100644 src/lib/headers/DateHeader.js create mode 100644 src/lib/headers/DateHeader.tsx rename src/lib/headers/{HeadersContext.js => HeadersContext.tsx} (53%) rename src/lib/headers/{Interval.js => Interval.tsx} (57%) delete mode 100644 src/lib/headers/SidebarHeader.js create mode 100644 src/lib/headers/SidebarHeader.tsx rename src/lib/headers/{TimelineHeaders.js => TimelineHeaders.tsx} (64%) rename src/lib/interaction/{PreventClickOnDrag.js => PreventClickOnDrag.tsx} (54%) rename src/lib/items/{Item.js => Item.tsx} (58%) rename src/lib/items/{Items.js => Items.tsx} (71%) rename src/lib/items/{defaultItemRenderer.js => defaultItemRenderer.tsx} (59%) rename src/lib/items/{styles.js => styles.ts} (59%) rename src/lib/markers/{TimelineMarkersRenderer.js => TimelineMarkersRenderer.tsx} (97%) rename src/lib/markers/public/{CursorMarker.js => CursorMarker.tsx} (57%) rename src/lib/markers/public/{CustomMarker.js => CustomMarker.tsx} (63%) rename src/lib/markers/public/{TimelineMarkers.js => TimelineMarkers.ts} (78%) delete mode 100644 src/lib/row/GroupRow.js create mode 100644 src/lib/row/GroupRow.tsx rename src/lib/row/{GroupRows.js => GroupRows.tsx} (55%) rename src/lib/scroll/{ScrollElement.js => ScrollElement.tsx} (57%) delete mode 100644 src/lib/utility/dom-helpers.js create mode 100644 src/lib/utility/dom-helpers.ts delete mode 100644 src/lib/utility/events.js create mode 100644 src/lib/utility/events.ts delete mode 100644 src/lib/utility/generic.js create mode 100644 src/lib/utility/generic.ts delete mode 100644 src/resize-detector/container.js create mode 100644 src/resize-detector/container.ts delete mode 100644 src/resize-detector/window.js create mode 100644 src/resize-detector/window.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index bc970baad..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - plugins: ['react', 'jest', 'prettier'], - settings: { - react:{ - "version":"detect" - } - }, - env: { - 'jest/globals': true, - browser: true, - node: true, - es6: true, - }, - rules: { - - 'react/jsx-uses-vars': 2, - 'react/no-unused-prop-types': 2, - 'no-labels': 0, - 'arrow-parens': 0, - "react/jsx-uses-react": "off", - "react/react-in-jsx-scope": "off" - }, - extends: ['eslint:recommended', 'plugin:react/recommended',"plugin:react/jsx-runtime", 'prettier'], - parser: '@babel/eslint-parser', - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - sourceType: 'module', - }, -} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..e489b6773 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,35 @@ +{ + "env": { + "browser": true, + "jest/globals": true, + "node": true, + "es6": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint", + "react", + "jest", + "prettier" + ], + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "react/jsx-uses-vars": 2, + "react/no-children-prop": 0, + "react/no-unused-prop-types": 0, + "no-labels": 0, + "arrow-parens": 0, + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off" + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 03a23704b..3757096c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -393,7 +393,7 @@ from 'react-calendar-timeline' * added `stickyHeader` to disable/enable timeline header sticking on scroll. * removed `fullUpdate` prop and functionality. Labels rely on `position: sticky` to show for items that start before `visibleTimeStart`. This (should) greatly improve scroll performance. -* removed extraneous css such as `text-align: center` on `.rct-item`, `.rct-item-overflow` to simplify the dom structure of `Item.js` +* removed extraneous css such as `text-align: center` on `.rct-item`, `.rct-item-overflow` to simplify the dom structure of `Item.tsx` * added `headerRef` callback to receive a reference to the header element. Due to the change in how the header positioning is implemented (i.e. using `position: sticky`), there is a need to use a polyfill in [certain browsers](https://caniuse.com/#feat=css-sticky) that don't support `position: sticky`. With a reference to the header dom element, you can use a polyfill to apply sticky behavior. * `minimumWidthForItemContentVisibility` prop to control at what width inner item content is rendered. diff --git a/package.json b/package.json index 42b9a6c5c..f6097d627 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "react-component", "timeline" ], + "standard": { "parser": "babel-eslint" }, @@ -117,8 +118,11 @@ "@faker-js/faker": "^8.3.1", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", + "@types/element-resize-detector": "^1.1.6", "@types/react": "^18.2.42", "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", "babel-plugin-react-remove-properties": "^0.3.0", diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index da33e8572..3eced70fd 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -1,10 +1,10 @@ import PropTypes from 'prop-types' -import React, { Component } from 'react' +import React, { Component, MouseEvent } from 'react' import Items from './items/Items' import Sidebar from './layout/Sidebar' import Columns from './columns/Columns' -import GroupRows from './row/GroupRows' +import GroupRows, { GroupRowsProps, RowClickEvent } from './row/GroupRows' import ScrollElement from './scroll/ScrollElement' import MarkerCanvas from './markers/MarkerCanvas' import windowResizeDetector from '../resize-detector/window' @@ -18,7 +18,7 @@ import { stackTimelineItems, } from './utility/calendar' import { _get, _length } from './utility/generic' -import { defaultKeys, defaultTimeSteps } from './default-config' +import { defaultKeys } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' @@ -26,6 +26,7 @@ import TimelineHeaders from './headers/TimelineHeaders' import DateHeader from './headers/DateHeader' import { dateType, + ElementWithSecret, Id, OnItemDragObjectMove, OnItemDragObjectResize, @@ -40,6 +41,7 @@ import { } from './types/main' import { ItemDimension } from './types/dimension' import { Dayjs } from 'dayjs' +import { ItemProps, ResizeEdge } from './items/Item' export type ReactCalendarTimelineProps< CustomItem extends TimelineItemBase = TimelineItemBase, @@ -79,11 +81,7 @@ export type ReactCalendarTimelineProps< itemDragObject: OnItemDragObjectMove | OnItemDragObjectResize, ): void onItemMove?(itemId: Id, dragTime: number, newGroupOrder: number): void - onItemResize?( - itemId: Id, - endTimeOrStartTime: number, - edge: 'left' | 'right', - ): void + onItemResize?(itemId: Id, endTimeOrStartTime: number, edge: ResizeEdge): void onItemSelect?(itemId: Id, e: any, time: number): void onItemDeselect?(e: React.SyntheticEvent): void onItemClick?(itemId: Id, e: React.SyntheticEvent, time: number): void @@ -146,7 +144,7 @@ export type ReactCalendarTimelineState< visibleTimeEnd: number canvasTimeStart: dateType canvasTimeEnd: dateType - selectedItem: CustomItem | null + selectedItem: Id | null dragTime: number | null dragGroupTitle: string | null resizeTime: number | null @@ -364,7 +362,7 @@ export default class ReactCalendarTimeline extends Component< visibleTimeEnd, canvasTimeStart, canvasTimeEnd, - } + } as TimelineContext } getTimelineUnit = () => { @@ -475,7 +473,7 @@ export default class ReactCalendarTimeline extends Component< // This is a gross hack pushing items and groups in to state only to allow // For the forceUpdate check - let derivedState = { items, groups } + const derivedState = { items, groups } // if the items or groups have changed we must re-render const forceUpdate = items !== prevState.items || groups !== prevState.groups @@ -523,8 +521,8 @@ export default class ReactCalendarTimeline extends Component< return derivedState } - scrollComponent = React.createRef() - scrollHeaderRef = React.createRef() + scrollComponent: HTMLDivElement | null = null + scrollHeaderRef: HTMLDivElement | null = null componentDidUpdate( prevProps: ReactCalendarTimelineProps, @@ -562,8 +560,8 @@ export default class ReactCalendarTimeline extends Component< ) if (componentScrollLeft !== scrollLeft) { - this.scrollComponent.current?.scrollLeft = scrollLeft - this.scrollHeaderRef.scrollLeft = scrollLeft + this.scrollComponent!.scrollLeft = scrollLeft + this.scrollHeaderRef!.scrollLeft = scrollLeft } } @@ -571,7 +569,7 @@ export default class ReactCalendarTimeline extends Component< const { width: containerWidth } = this.container.current?.getBoundingClientRect() ?? { width: 0 } - let width = containerWidth - props.sidebarWidth - props.rightSidebarWidth + const width = containerWidth - props.sidebarWidth - props.rightSidebarWidth const canvasWidth = getCanvasWidth(width, props.buffer) const { dimensionItems, height, groupHeights, groupTops } = stackTimelineItems( @@ -604,8 +602,8 @@ export default class ReactCalendarTimeline extends Component< }) //initial scroll left is the buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) const scrollLeft = width * ((props.buffer - 1) / 2) - this.scrollComponent.scrollLeft = scrollLeft - this.scrollHeaderRef.scrollLeft = scrollLeft + this.scrollComponent!.scrollLeft = scrollLeft + this.scrollHeaderRef!.scrollLeft = scrollLeft } onScroll = (scrollX: number) => { @@ -676,10 +674,10 @@ export default class ReactCalendarTimeline extends Component< } showPeriod = (from: Dayjs, to: Dayjs) => { - let visibleTimeStart = from.valueOf() - let visibleTimeEnd = to.valueOf() + const visibleTimeStart = from.valueOf() + const visibleTimeEnd = to.valueOf() - let zoom = visibleTimeEnd - visibleTimeStart + const zoom = visibleTimeEnd - visibleTimeStart // can't zoom in more than to show one hour if (zoom < this.props.minZoom) { return @@ -693,7 +691,7 @@ export default class ReactCalendarTimeline extends Component< ) } - selectItem = (item: TimelineItemBase, clickType, e) => { + selectItem: ItemProps['onSelect'] = (item, clickType, e) => { if ( this.isItemSelected(item) || (this.props.itemTouchSendsClick && clickType === 'touch') @@ -713,14 +711,14 @@ export default class ReactCalendarTimeline extends Component< } } - doubleClickItem = (item, e) => { + doubleClickItem: ItemProps['onItemDoubleClick'] = (item, e) => { if (this.props.onItemDoubleClick) { const time = this.timeFromItemEvent(e) this.props.onItemDoubleClick(item, e, time) } } - contextMenuClickItem = (item, e) => { + contextMenuClickItem: ItemProps['onContextMenu'] = (item, e) => { if (this.props.onItemContextMenu) { const time = this.timeFromItemEvent(e) this.props.onItemContextMenu(item, e, time) @@ -730,7 +728,7 @@ export default class ReactCalendarTimeline extends Component< // TODO: this is very similar to timeFromItemEvent, aside from which element to get offsets // from. Look to consolidate the logic for determining coordinate to time // as well as generalizing how we get time from click on the canvas - getTimeFromRowClickEvent = (e) => { + getTimeFromRowClickEvent = (e: MouseEvent) => { const { dragSnap, buffer } = this.props const { width, canvasTimeStart, canvasTimeEnd } = this.state // this gives us distance from left of row element, so event is in @@ -753,8 +751,8 @@ export default class ReactCalendarTimeline extends Component< const { width, visibleTimeStart, visibleTimeEnd } = this.state const { dragSnap } = this.props - const scrollComponent = this.scrollComponent.current - const { left: scrollX } = scrollComponent?.getBoundingClientRect() + const scrollComponent = this.scrollComponent! + const { left: scrollX } = scrollComponent.getBoundingClientRect() const xRelativeToTimeline = e.clientX - scrollX @@ -768,8 +766,8 @@ export default class ReactCalendarTimeline extends Component< return time } - dragItem = (item, dragTime, newGroupOrder) => { - let newGroup = this.props.groups[newGroupOrder] + dragItem: ItemProps['onDrag'] = (item, dragTime, newGroupOrder) => { + const newGroup = this.props.groups[newGroupOrder] const keys = this.props.keys this.setState({ @@ -788,14 +786,14 @@ export default class ReactCalendarTimeline extends Component< }) } - dropItem = (item, dragTime, newGroupOrder) => { + dropItem: ItemProps['onDrop'] = (item, dragTime, newGroupOrder) => { this.setState({ draggingItem: null, dragTime: null, dragGroupTitle: null }) if (this.props.onItemMove) { this.props.onItemMove(item, dragTime, newGroupOrder) } } - resizingItem = (item, resizeTime, edge) => { + resizingItem: ItemProps['onResizing'] = (item, resizeTime, edge) => { this.setState({ resizingItem: item, resizingEdge: edge, @@ -810,7 +808,7 @@ export default class ReactCalendarTimeline extends Component< }) } - resizedItem = (item, resizeTime, edge, timeDelta) => { + resizedItem: ItemProps['onResized'] = (item, resizeTime, edge, timeDelta) => { this.setState({ resizingItem: null, resizingEdge: null, resizeTime: null }) if (this.props.onItemResize && timeDelta !== 0) { this.props.onItemResize(item, resizeTime, edge) @@ -827,7 +825,7 @@ export default class ReactCalendarTimeline extends Component< eventType: 'move' itemId: Id time: number - edge: 'left' | 'right' | undefined + edge: ResizeEdge newGroupOrder: number }) => { if (this.props.onItemDrag) { @@ -857,7 +855,7 @@ export default class ReactCalendarTimeline extends Component< ) } - handleRowClick = (e, rowIndex) => { + handleRowClick: RowClickEvent = (e, rowIndex) => { // shouldnt this be handled by the user, as far as when to deselect an item? if (this.hasSelectedItem()) { this.selectItem(null) @@ -873,7 +871,7 @@ export default class ReactCalendarTimeline extends Component< this.props.onCanvasClick(groupId, time, e) } - handleRowDoubleClick = (e, rowIndex) => { + handleRowDoubleClick: RowClickEvent = (e, rowIndex) => { if (this.props.onCanvasDoubleClick == null) return const time = this.getTimeFromRowClickEvent(e) @@ -884,7 +882,7 @@ export default class ReactCalendarTimeline extends Component< this.props.onCanvasDoubleClick(groupId, time, e) } - handleScrollContextMenu = (e, rowIndex) => { + handleScrollContextMenu: RowClickEvent = (e, rowIndex) => { if (this.props.onCanvasContextMenu == null) return const timePosition = this.getTimeFromRowClickEvent(e) @@ -900,7 +898,11 @@ export default class ReactCalendarTimeline extends Component< } } - rows(canvasWidth, groupHeights, groups) { + rows( + canvasWidth: number, + groupHeights: number[], + groups: TimelineGroupBase[], + ) { return ( { + handleHeaderRef = (el: HTMLDivElement) => { this.scrollHeaderRef = el this.props.headerRef(el) } - sidebar(height: number, groupHeights) { + sidebar(height: number, groupHeights: number[]) { const { sidebarWidth } = this.props return ( sidebarWidth && ( @@ -984,7 +986,7 @@ export default class ReactCalendarTimeline extends Component< ) } - rightSidebar(height, groupHeights) { + rightSidebar(height: number, groupHeights: number[]) { const { rightSidebarWidth } = this.props return ( rightSidebarWidth && ( @@ -1005,7 +1007,7 @@ export default class ReactCalendarTimeline extends Component< * check if child of type TimelineHeader * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types */ - isTimelineHeader = (child) => { + isTimelineHeader = (child: ElementWithSecret) => { if (child.type === undefined) return false return child.type.secretKey === TimelineHeaders.secretKey } @@ -1090,11 +1092,11 @@ export default class ReactCalendarTimeline extends Component< return this.props.selected.length > 0 } - isItemSelected(itemId) { + isItemSelected(itemId: string) { const selectedItems = this.getSelected() return selectedItems.some((i) => i === itemId) } - getScrollElementRef = (el) => { + getScrollElementRef = (el: HTMLDivElement) => { this.props.scrollRef(el) this.scrollComponent = el } @@ -1187,7 +1189,7 @@ export default class ReactCalendarTimeline extends Component< height={height} onZoom={this.changeZoom} onWheelZoom={this.handleWheelZoom} - traditionalZoom={traditionalZoom} + traditionalZoom={!!traditionalZoom} onScroll={this.onScroll} isInteractingWithItem={isInteractingWithItem} > diff --git a/src/lib/default-config.js b/src/lib/default-config.ts similarity index 72% rename from src/lib/default-config.js rename to src/lib/default-config.ts index 6447f81ad..33cdd0fbb 100644 --- a/src/lib/default-config.js +++ b/src/lib/default-config.ts @@ -1,3 +1,5 @@ +import { Unit } from './types/main' + export const defaultKeys = { groupIdKey: 'id', groupTitleKey: 'title', @@ -8,7 +10,7 @@ export const defaultKeys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start_time', - itemTimeEndKey: 'end_time' + itemTimeEndKey: 'end_time', } export const defaultTimeSteps = { @@ -17,39 +19,45 @@ export const defaultTimeSteps = { hour: 1, day: 1, month: 1, - year: 1 + year: 1, } -export const defaultHeaderFormats = { +type UnitValue = { + long: string + mediumLong: string + medium: string + short: string +} +export const defaultHeaderFormats: Record = { year: { long: 'YYYY', mediumLong: 'YYYY', medium: 'YYYY', - short: 'YY' + short: 'YY', }, month: { long: 'MMMM YYYY', mediumLong: 'MMMM', medium: 'MMMM', - short: 'MM/YY' + short: 'MM/YY', }, week: { long: 'w', mediumLong: 'w', medium: 'w', - short: 'w' + short: 'w', }, day: { long: 'dddd, LL', mediumLong: 'dddd, LL', medium: 'dd D', - short: 'D' + short: 'D', }, hour: { long: 'dddd, LL, HH:00', mediumLong: 'L, HH:00', medium: 'HH:00', - short: 'HH' + short: 'HH', }, minute: { long: 'HH:mm', @@ -58,9 +66,9 @@ export const defaultHeaderFormats = { short: 'mm', }, second: { - "long": 'mm:ss', + long: 'mm:ss', mediumLong: 'mm:ss', medium: 'mm:ss', - "short": 'ss' - } + short: 'ss', + }, } diff --git a/src/lib/headers/CustomDateHeader.js b/src/lib/headers/CustomDateHeader.tsx similarity index 50% rename from src/lib/headers/CustomDateHeader.js rename to src/lib/headers/CustomDateHeader.tsx index 860f4d411..ff960051e 100644 --- a/src/lib/headers/CustomDateHeader.js +++ b/src/lib/headers/CustomDateHeader.tsx @@ -1,6 +1,31 @@ -import React from 'react' +import React, { ComponentType } from 'react' import Interval from './Interval' -export function CustomDateHeader({ +import { Interval as IntervalType, IntervalRenderer } from '../types/main' +import { Dayjs } from 'dayjs' +import { SelectUnits } from '../utility/calendar' +export interface CustomDateHeaderProps { + headerContext: { + intervals: IntervalType[] + unit: SelectUnits + } + getRootProps: (props?: any) => any + getIntervalProps: (props?: any) => any + showPeriod: (start: Dayjs, end: Dayjs) => void + data: { + style: React.CSSProperties + intervalRenderer: ComponentType> + className?: string + getLabelFormat: ( + interval: [Dayjs, Dayjs], + unit: string, + labelWidth: number, + ) => string + unitProp?: 'primaryHeader' + headerData?: Data + } +} + +export function CustomDateHeader({ headerContext: { intervals, unit }, getRootProps, getIntervalProps, @@ -11,20 +36,20 @@ export function CustomDateHeader({ className, getLabelFormat, unitProp, - headerData - } -}) { + headerData, + }, +}: CustomDateHeaderProps) { return (
- {intervals.map(interval => { + {intervals.map((interval) => { const intervalText = getLabelFormat( [interval.startTime, interval.endTime], unit, - interval.labelWidth + interval.labelWidth, ) return ( { - const intervals = [] - iterateTimes( - canvasTimeStart, - canvasTimeEnd, - unit, - timeSteps, - (startTime, endTime) => { - const left = getLeftOffsetFromDate(startTime.valueOf()) - const right = getLeftOffsetFromDate(endTime.valueOf()) - const width = right - left - intervals.push({ - startTime, - endTime, - labelWidth: width, - left - }) - } - ) - return intervals - } - - getRootProps = (props = {}) => { - const { style } = props - return { - style: Object.assign({}, style ? style : {}, { - position: 'relative', - width: this.props.canvasWidth, - height: this.props.height, - }) - } - } - - getIntervalProps = (props = {}) => { - const { interval, style } = props - if (!interval) - throw new Error('you should provide interval to the prop getter') - const { startTime, labelWidth, left } = interval - return { - style: this.getIntervalStyle({ - style, - startTime, - labelWidth, - canvasTimeStart: this.props.canvasTimeStart, - unit: this.props.unit, - left - }), - key: `label-${startTime.valueOf()}` - } - } - - getIntervalStyle = ({ left, labelWidth, style }) => { - return { - ...style, - left, - width: labelWidth, - position: 'absolute' - } - } - - getStateAndHelpers = () => { - const { - canvasTimeStart, - canvasTimeEnd, - unit, - showPeriod, - timelineWidth, - visibleTimeStart, - visibleTimeEnd, - headerData, - } = this.props - //TODO: only evaluate on changing params - return { - timelineContext: { - timelineWidth, - visibleTimeStart, - visibleTimeEnd, - canvasTimeStart, - canvasTimeEnd - }, - headerContext: { - unit, - intervals: this.state.intervals - }, - getRootProps: this.getRootProps, - getIntervalProps: this.getIntervalProps, - showPeriod, - data: headerData, - } - } - - render() { - const props = this.getStateAndHelpers() - const Renderer = this.props.children - return - } -} - -const CustomHeaderWrapper = ({ children, unit, headerData, height }) => ( - - {({ getTimelineState, showPeriod, getLeftOffsetFromDate }) => { - const timelineState = getTimelineState() - return ( - - {({ timeSteps }) => ( - - )} - - ) - }} - -) - -CustomHeaderWrapper.propTypes = { - children: PropTypes.func.isRequired, - unit: PropTypes.string, - headerData: PropTypes.object, - height: PropTypes.number, -} - -CustomHeaderWrapper.defaultProps = { - height: 30, -} - -export default CustomHeaderWrapper diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx new file mode 100644 index 000000000..012e6b983 --- /dev/null +++ b/src/lib/headers/CustomHeader.tsx @@ -0,0 +1,294 @@ +import React, { ComponentType, CSSProperties, ReactNode } from 'react' +import PropTypes from 'prop-types' +import { TimelineHeadersConsumer } from './HeadersContext' +import { TimelineStateConsumer } from '../timeline/TimelineStateContext' +import { iterateTimes, SelectUnits } from '../utility/calendar' +import { Interval, TimelineContext } from '../types/main' +import { Dayjs, UnitType } from 'dayjs' +import { CustomDateHeaderProps } from './CustomDateHeader' + +export type CustomHeaderProps = { + children: (p: CustomDateHeaderProps) => ReactNode + unit: UnitType + timeSteps: any + visibleTimeStart: number + visibleTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + showPeriod: (start: Dayjs, end: Dayjs) => void + headerData?: Data + getLeftOffsetFromDate: (date: any) => number + height: number + timelineWidth: number +} + +type GetHeaderIntervalsParams = { + canvasTimeStart: number + canvasTimeEnd: number + unit: UnitType + timeSteps: any + getLeftOffsetFromDate: (date: any) => number +} + +type GetHeaderIntervalsFn = (params: GetHeaderIntervalsParams) => Interval[] + +type State = { + intervals: Interval[] +} + +type GetIntervalStyleParams = { + left: number + labelWidth: number + style?: CSSProperties +} + +export class CustomHeader extends React.Component< + CustomHeaderProps, + State +> { + /* static propTypes = { + //component props + children: PropTypes.func.isRequired, + unit: PropTypes.string.isRequired, + //Timeline context + timeSteps: PropTypes.object.isRequired, + visibleTimeStart: PropTypes.number.isRequired, + visibleTimeEnd: PropTypes.number.isRequired, + canvasTimeStart: PropTypes.number.isRequired, + canvasTimeEnd: PropTypes.number.isRequired, + canvasWidth: PropTypes.number.isRequired, + showPeriod: PropTypes.func.isRequired, + headerData: PropTypes.object, + getLeftOffsetFromDate: PropTypes.func.isRequired, + height: PropTypes.number.isRequired, + }*/ + constructor(props: CustomHeaderProps) { + super(props) + const { + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + } = props + + const intervals = this.getHeaderIntervals({ + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + }) + + this.state = { + intervals, + } + } + + shouldComponentUpdate(nextProps: CustomHeaderProps) { + if ( + nextProps.canvasTimeStart !== this.props.canvasTimeStart || + nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || + nextProps.canvasWidth !== this.props.canvasWidth || + nextProps.unit !== this.props.unit || + nextProps.timeSteps !== this.props.timeSteps || + nextProps.showPeriod !== this.props.showPeriod || + nextProps.children !== this.props.children || + nextProps.headerData !== this.props.headerData + ) { + return true + } + return false + } + + // todo - rework with "gdsfp" + // eslint-disable-next-line react/no-deprecated + componentWillReceiveProps(nextProps: CustomHeaderProps) { + if ( + nextProps.canvasTimeStart !== this.props.canvasTimeStart || + nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || + nextProps.canvasWidth !== this.props.canvasWidth || + nextProps.unit !== this.props.unit || + nextProps.timeSteps !== this.props.timeSteps || + nextProps.showPeriod !== this.props.showPeriod + ) { + const { + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + } = nextProps + + const intervals = this.getHeaderIntervals({ + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + }) + + this.setState({ intervals }) + } + } + + getHeaderIntervals: GetHeaderIntervalsFn = ({ + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + }) => { + const intervals: Interval[] = [] + iterateTimes( + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + (startTime, endTime) => { + const left = getLeftOffsetFromDate(startTime.valueOf()) + const right = getLeftOffsetFromDate(endTime.valueOf()) + const width = right - left + intervals.push({ + startTime, + endTime, + labelWidth: width, + left, + }) + }, + ) + return intervals + } + + getRootProps = (props: { style?: CSSProperties } = {}) => { + const { style } = props + return { + style: Object.assign({}, style ? style : {}, { + position: 'relative', + width: this.props.canvasWidth, + height: this.props.height, + }), + } + } + + getIntervalProps = ( + props: { interval?: Interval; style?: CSSProperties } = {}, + ) => { + const { interval, style } = props + if (!interval) + throw new Error('you should provide interval to the prop getter') + const { startTime, labelWidth, left } = interval + return { + style: this.getIntervalStyle({ + style, + labelWidth, + left, + }), + key: `label-${startTime.valueOf()}`, + } + } + + getIntervalStyle = ({ left, labelWidth, style }: GetIntervalStyleParams) => { + return { + ...style, + left, + width: labelWidth, + position: 'absolute', + } + } + + getStateAndHelpers = (): CustomHeaderWrapperChildrenParams => { + const { + canvasTimeStart, + canvasTimeEnd, + unit, + showPeriod, + timelineWidth, + visibleTimeStart, + visibleTimeEnd, + headerData, + } = this.props + //TODO: only evaluate on changing params + + return { + timelineContext: { + timelineWidth, + visibleTimeStart, + visibleTimeEnd, + canvasTimeStart, + canvasTimeEnd, + }, + headerContext: { + unit, + intervals: this.state.intervals, + }, + getRootProps: this.getRootProps, + getIntervalProps: this.getIntervalProps, + showPeriod, + data: headerData, + } + } + + render() { + const props = this.getStateAndHelpers() + const Renderer = this.props.children + return + } +} + +type CustomHeaderWrapperChildrenParams = { + getTimelineState: () => TimelineContext + showPeriod: (start: Dayjs, end: Dayjs) => void + getLeftOffsetFromDate: (date: any) => number +} +export type CustomHeaderWrapperProps = { + children: (p: CustomDateHeaderProps) => ReactNode + unit?: UnitType + headerData?: Data + height: number +} + +function CustomHeaderWrapper({ + children, + unit, + headerData, + height, +}: CustomHeaderWrapperProps) { + return ( + + {({ getTimelineState, showPeriod, getLeftOffsetFromDate }) => { + const timelineState = getTimelineState() + return ( + + {({ timeSteps }) => ( + + )} + + ) + }} + + ) +} + +CustomHeaderWrapper.propTypes = { + children: PropTypes.func.isRequired, + unit: PropTypes.string, + headerData: PropTypes.object, + height: PropTypes.number, +} + +CustomHeaderWrapper.defaultProps = { + height: 30, +} + +export default CustomHeaderWrapper diff --git a/src/lib/headers/DateHeader.js b/src/lib/headers/DateHeader.js deleted file mode 100644 index 44191e77a..000000000 --- a/src/lib/headers/DateHeader.js +++ /dev/null @@ -1,160 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { TimelineStateConsumer } from '../timeline/TimelineStateContext' -import CustomHeader from './CustomHeader' -import { getNextUnit } from '../utility/calendar' -import { defaultHeaderFormats } from '../default-config' -import memoize from 'memoize-one' -import { CustomDateHeader } from './CustomDateHeader' - -class DateHeader extends React.Component { - static propTypes = { - unit: PropTypes.string, - style: PropTypes.object, - className: PropTypes.string, - timelineUnit: PropTypes.string, - labelFormat: PropTypes.oneOfType([ - PropTypes.func, - PropTypes.objectOf(PropTypes.objectOf(PropTypes.string)), - PropTypes.string - ]).isRequired, - intervalRenderer: PropTypes.func, - headerData: PropTypes.object, - height: PropTypes.number - } - - getHeaderUnit = () => { - if (this.props.unit === 'primaryHeader') { - return getNextUnit(this.props.timelineUnit) - } else if (this.props.unit) { - return this.props.unit - } - return this.props.timelineUnit - } - - getRootStyle = memoize(style => { - return { - height: 30, - ...style - } - }) - - getLabelFormat = (interval, unit, labelWidth) => { - const { labelFormat } = this.props - if (typeof labelFormat === 'string') { - const startTime = interval[0] - return startTime.format(labelFormat) - } else if (typeof labelFormat === 'function') { - return labelFormat(interval, unit, labelWidth) - } else { - throw new Error('labelFormat should be function or string') - } - } - - getHeaderData = memoize( - ( - intervalRenderer, - style, - className, - getLabelFormat, - unitProp, - headerData - ) => { - return { - intervalRenderer, - style, - className, - getLabelFormat, - unitProp, - headerData - } - } - ) - - render() { - const unit = this.getHeaderUnit() - const { headerData, height } = this.props - return ( - - ) - } -} - -const DateHeaderWrapper = ({ - unit, - labelFormat, - style, - className, - intervalRenderer, - headerData, - height -}) => ( - - {({ getTimelineState }) => { - const timelineState = getTimelineState() - return ( - - ) - }} - -) - -DateHeaderWrapper.propTypes = { - style: PropTypes.object, - className: PropTypes.string, - unit: PropTypes.string, - labelFormat: PropTypes.oneOfType([ - PropTypes.func, - PropTypes.objectOf(PropTypes.objectOf(PropTypes.string)), - PropTypes.string - ]), - intervalRenderer: PropTypes.func, - headerData: PropTypes.object, - height: PropTypes.number -} - -DateHeaderWrapper.defaultProps = { - labelFormat: formatLabel -} - -function formatLabel( - [timeStart, timeEnd], - unit, - labelWidth, - formatOptions = defaultHeaderFormats -) { - let format - if (labelWidth >= 150) { - format = formatOptions[unit]['long'] - } else if (labelWidth >= 100) { - format = formatOptions[unit]['mediumLong'] - } else if (labelWidth >= 50) { - format = formatOptions[unit]['medium'] - } else { - format = formatOptions[unit]['short'] - } - return timeStart.format(format) -} - -export default DateHeaderWrapper diff --git a/src/lib/headers/DateHeader.tsx b/src/lib/headers/DateHeader.tsx new file mode 100644 index 000000000..7db9e2ee3 --- /dev/null +++ b/src/lib/headers/DateHeader.tsx @@ -0,0 +1,188 @@ +import React, { CSSProperties, ReactNode } from 'react' +import { TimelineStateConsumer } from '../timeline/TimelineStateContext' +import CustomHeader from './CustomHeader' +import { getNextUnit, SelectUnits } from '../utility/calendar' +import { defaultHeaderFormats } from '../default-config' +import memoize from 'memoize-one' +import { CustomDateHeader } from './CustomDateHeader' +import { IntervalRenderer, SidebarHeaderChildrenFnProps } from '../types/main' +import { Dayjs, UnitType } from 'dayjs' + +type GetHeaderData = ( + intervalRenderer: (p: IntervalRenderer) => ReactNode, + style: React.CSSProperties, + className: string | undefined, + getLabelFormat: ( + interval: [Dayjs, Dayjs], + unit: keyof typeof defaultHeaderFormats, + labelWidth: number, + ) => string, + unitProp: UnitType | 'primaryHeader' | undefined, + headerData: Data | undefined, +) => { + intervalRenderer?: IntervalRenderer + style: React.CSSProperties + className: string + getLabelFormat: ( + interval: [Dayjs, Dayjs], + unit: keyof typeof defaultHeaderFormats, + labelWidth: number, + ) => string + unitProp: UnitType | 'primaryHeader' | undefined + headerData: Data +} +export interface DateHeaderProps { + style?: CSSProperties | undefined + className?: string | undefined + unit?: UnitType | 'primaryHeader' | undefined + timelineUnit: SelectUnits + labelFormat?: + | string + | (( + [startTime, endTime]: [Dayjs, Dayjs], + unit: UnitType | 'primaryHeader', + labelWidth: number, + ) => string) + | undefined + intervalRenderer?: ((props: IntervalRenderer) => ReactNode) | undefined + headerData?: Data | undefined + children?: + | ((props: SidebarHeaderChildrenFnProps) => ReactNode) + | undefined + height?: number | undefined +} + +class DateHeader extends React.Component> { + getHeaderUnit = (): UnitType => { + if (this.props.unit === 'primaryHeader') { + return getNextUnit(this.props.timelineUnit) + } else if (this.props.unit) { + return this.props.unit + } + return this.props.timelineUnit + } + + getRootStyle = memoize((style) => { + return { + height: 30, + ...style, + } + }) + + getLabelFormat = ( + interval: [Dayjs, Dayjs], + unit: keyof typeof defaultHeaderFormats, + labelWidth: number, + ) => { + const { labelFormat } = this.props + if (typeof labelFormat === 'string') { + const startTime = interval[0] + return startTime.format(labelFormat) + } else if (typeof labelFormat === 'function') { + return labelFormat(interval, unit as UnitType, labelWidth) + } else { + throw new Error('labelFormat should be function or string') + } + } + + getHeaderData: GetHeaderData = memoize( + ( + intervalRenderer, + style, + className, + getLabelFormat, + unitProp, + headerData, + ) => { + return { + intervalRenderer, + style, + className, + getLabelFormat, + unitProp, + headerData, + } + }, + ) + + render() { + const unit = this.getHeaderUnit() + const { height } = this.props + return ( + + ) + } +} + +type DateHeaderWrapper = { + unit: UnitType | 'primaryHeader' | undefined + labelFormat?: typeof formatLabel + style: CSSProperties + className: string + intervalRenderer?: ((props?: IntervalRenderer) => ReactNode) | undefined + headerData: Data + height: number +} + +function DateHeaderWrapper({ + unit, + labelFormat, + style, + className, + intervalRenderer, + headerData, + height, +}: DateHeaderWrapper) { + return ( + + {({ getTimelineState }) => { + const timelineState = getTimelineState() + return ( + + ) + }} + + ) +} + +function formatLabel( + [timeStart]: [Dayjs, Dayjs], + unit: keyof typeof defaultHeaderFormats, + labelWidth: number, + formatOptions = defaultHeaderFormats, +) { + let format + if (labelWidth >= 150) { + format = formatOptions[unit]['long'] + } else if (labelWidth >= 100) { + format = formatOptions[unit]['mediumLong'] + } else if (labelWidth >= 50) { + format = formatOptions[unit]['medium'] + } else { + format = formatOptions[unit]['short'] + } + return timeStart.format(format) +} + +export default DateHeaderWrapper diff --git a/src/lib/headers/HeadersContext.js b/src/lib/headers/HeadersContext.tsx similarity index 53% rename from src/lib/headers/HeadersContext.js rename to src/lib/headers/HeadersContext.tsx index 47888462c..6a6cf6ed4 100644 --- a/src/lib/headers/HeadersContext.js +++ b/src/lib/headers/HeadersContext.tsx @@ -1,5 +1,4 @@ -import React from 'react' -import PropTypes from 'prop-types' +import React, { ReactNode } from 'react' import { noop } from '../utility/generic' const defaultContextState = { @@ -10,22 +9,22 @@ const defaultContextState = { }, rightSidebarWidth: 0, leftSidebarWidth: 150, - timeSteps: {} + timeSteps: {}, } -const { Consumer, Provider } = React.createContext(defaultContextState) - - -export class TimelineHeadersProvider extends React.Component { - static propTypes = { - children: PropTypes.element.isRequired, - rightSidebarWidth: PropTypes.number, - leftSidebarWidth: PropTypes.number.isRequired, - //TODO: maybe this should be skipped? - timeSteps: PropTypes.object.isRequired, - registerScroll: PropTypes.func.isRequired, - } +const { Consumer, Provider } = + React.createContext(defaultContextState) +export type TimelineHeadersProviderProps = { + children: ReactNode + rightSidebarWidth?: number + leftSidebarWidth: number + //TODO: maybe this should be skipped? + timeSteps: object + registerScroll: (e: HTMLDivElement) => void +} +export class TimelineHeadersProvider extends React.Component { + static propTypes = {} render() { const contextValue = { @@ -33,7 +32,7 @@ export class TimelineHeadersProvider extends React.Component { leftSidebarWidth: this.props.leftSidebarWidth, timeSteps: this.props.timeSteps, registerScroll: this.props.registerScroll, - } + } as typeof defaultContextState return {this.props.children} } } diff --git a/src/lib/headers/Interval.js b/src/lib/headers/Interval.tsx similarity index 57% rename from src/lib/headers/Interval.js rename to src/lib/headers/Interval.tsx index 25abef2ea..f9cf87bbe 100644 --- a/src/lib/headers/Interval.js +++ b/src/lib/headers/Interval.tsx @@ -1,9 +1,33 @@ -import React from 'react' +import React, { ComponentType, HTMLAttributes } from 'react' import PropTypes from 'prop-types' -import { getNextUnit } from '../utility/calendar' +import { getNextUnit, SelectUnits } from '../utility/calendar' import { composeEvents } from '../utility/events' +import { Dayjs } from 'dayjs' +import { + IntervalRenderer, + Interval as IntervalType, + GetIntervalProps, +} from '../types/main' -class Interval extends React.PureComponent { +type GetIntervalPropsParams = { + interval: IntervalType +} & HTMLAttributes + +export type IntervalProps = { + intervalRenderer: ComponentType> + unit: SelectUnits + interval: IntervalType + showPeriod: (startTime: Dayjs, endTime: Dayjs) => void + intervalText: string + primaryHeader: boolean + getIntervalProps: ( + props?: GetIntervalPropsParams, + ) => HTMLAttributes + + headerData?: Data +} + +class Interval extends React.PureComponent> { static propTypes = { intervalRenderer: PropTypes.func, unit: PropTypes.string.isRequired, @@ -12,7 +36,7 @@ class Interval extends React.PureComponent { intervalText: PropTypes.string.isRequired, primaryHeader: PropTypes.bool.isRequired, getIntervalProps: PropTypes.func.isRequired, - headerData: PropTypes.object + headerData: PropTypes.object, } onIntervalClick = () => { @@ -27,13 +51,15 @@ class Interval extends React.PureComponent { } } - getIntervalProps = (props = {}) => { + getIntervalProps = ( + props: GetIntervalProps = {}, + ): HTMLAttributes => { return { ...this.props.getIntervalProps({ interval: this.props.interval, - ...props + ...props, }), - onClick: composeEvents(this.onIntervalClick, props.onClick) + onClick: composeEvents(this.onIntervalClick, props.onClick), } } @@ -46,7 +72,7 @@ class Interval extends React.PureComponent { getIntervalProps={this.getIntervalProps} intervalContext={{ interval, - intervalText + intervalText, }} data={headerData} /> @@ -56,9 +82,10 @@ class Interval extends React.PureComponent { return (
{intervalText}
diff --git a/src/lib/headers/SidebarHeader.js b/src/lib/headers/SidebarHeader.js deleted file mode 100644 index 5087e538c..000000000 --- a/src/lib/headers/SidebarHeader.js +++ /dev/null @@ -1,72 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { TimelineHeadersConsumer } from './HeadersContext' -import { LEFT_VARIANT, RIGHT_VARIANT } from './constants' - -class SidebarHeader extends React.PureComponent { - static propTypes = { - children: PropTypes.func.isRequired, - rightSidebarWidth: PropTypes.number, - leftSidebarWidth: PropTypes.number.isRequired, - variant: PropTypes.string, - headerData: PropTypes.object - } - - getRootProps = (props = {}) => { - const { style } = props - const width = - this.props.variant === RIGHT_VARIANT - ? this.props.rightSidebarWidth - : this.props.leftSidebarWidth - return { - style: { - ...style, - width, - } - } - } - - getStateAndHelpers = () => { - return { - getRootProps: this.getRootProps, - data: this.props.headerData, - } - } - - render() { - const props = this.getStateAndHelpers() - const Renderer = this.props.children - return - } -} - -const SidebarWrapper = ({ children, variant, headerData }) => ( - - {({ leftSidebarWidth, rightSidebarWidth }) => { - return ( - - ) - }} - -) - -SidebarWrapper.propTypes = { - children: PropTypes.func.isRequired, - variant: PropTypes.string, - headerData: PropTypes.object -} - -SidebarWrapper.defaultProps = { - variant: LEFT_VARIANT, - children: ({ getRootProps }) =>
-} - -SidebarWrapper.secretKey = "SidebarHeader" - -export default SidebarWrapper diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx new file mode 100644 index 000000000..6806db577 --- /dev/null +++ b/src/lib/headers/SidebarHeader.tsx @@ -0,0 +1,83 @@ +import React, { + ComponentType, + CSSProperties, + HTMLAttributes, + PureComponent, +} from 'react' +import { TimelineHeadersConsumer } from './HeadersContext' +import { LEFT_VARIANT, RIGHT_VARIANT } from './constants' + +type SidebarHeaderProps = { + children: ComponentType<{ getRootProps: GetRootProps }> + rightSidebarWidth?: number + leftSidebarWidth: number + variant: typeof LEFT_VARIANT | typeof RIGHT_VARIANT + headerData?: any +} + +class SidebarHeader extends PureComponent { + getRootProps = (props: { style?: CSSProperties } = {}) => { + const { style } = props + const width = + this.props.variant === RIGHT_VARIANT + ? this.props.rightSidebarWidth + : this.props.leftSidebarWidth + return { + style: { + ...style, + width, + }, + } + } + + getStateAndHelpers = () => { + return { + getRootProps: this.getRootProps, + data: this.props.headerData, + } + } + + render() { + const props = this.getStateAndHelpers() + const Renderer = this.props.children + return + } +} + +type GetRootProps = () => HTMLAttributes + +type SidebarWrapperProps = { + children?: ComponentType<{ getRootProps: GetRootProps }> + variant?: typeof LEFT_VARIANT | typeof RIGHT_VARIANT + headerData?: any +} + +const defaultChildren: SidebarWrapperProps['children'] = ({ + getRootProps, +}: { + getRootProps: GetRootProps +}) =>
+ +const SidebarWrapper = (props: SidebarWrapperProps) => { + const { children, variant = LEFT_VARIANT, headerData } = props + return ( + + {({ leftSidebarWidth, rightSidebarWidth }) => { + return ( + + {children || defaultChildren} + + ) + }} + + ) +} + +SidebarWrapper.secretKey = 'SidebarHeader' + +export default SidebarWrapper diff --git a/src/lib/headers/TimelineHeaders.js b/src/lib/headers/TimelineHeaders.tsx similarity index 64% rename from src/lib/headers/TimelineHeaders.js rename to src/lib/headers/TimelineHeaders.tsx index 882780efa..b15662b4f 100644 --- a/src/lib/headers/TimelineHeaders.js +++ b/src/lib/headers/TimelineHeaders.tsx @@ -1,10 +1,29 @@ -import React from 'react' +import React, { + ReactNode, + Children, + ReactElement, + LegacyRef, + CSSProperties, +} from 'react' import classNames from 'classnames' import { TimelineHeadersConsumer } from './HeadersContext' import PropTypes from 'prop-types' import SidebarHeader from './SidebarHeader' import { RIGHT_VARIANT } from './constants' -class TimelineHeaders extends React.Component { +import { ElementWithSecret } from '../types/main' + +export type TimelineHeadersProps = { + registerScroll: LegacyRef + leftSidebarWidth: number + rightSidebarWidth: number + style?: React.CSSProperties + children?: ReactNode + className?: string + calendarHeaderStyle?: React.CSSProperties + calendarHeaderClassName?: string + headerRef?: (ref: HTMLElement | null) => void +} +class TimelineHeaders extends React.Component { static propTypes = { registerScroll: PropTypes.func.isRequired, leftSidebarWidth: PropTypes.number.isRequired, @@ -14,35 +33,28 @@ class TimelineHeaders extends React.Component { className: PropTypes.string, calendarHeaderStyle: PropTypes.object, calendarHeaderClassName: PropTypes.string, - headerRef: PropTypes.func - } - - constructor(props) { - super(props) + headerRef: PropTypes.func, } getRootStyle = () => { return { ...this.props.style, display: 'flex', - width: '100%' + width: '100%', } } getCalendarHeaderStyle = () => { - const { - leftSidebarWidth, - rightSidebarWidth, - calendarHeaderStyle - } = this.props + const { leftSidebarWidth, rightSidebarWidth, calendarHeaderStyle } = + this.props return { ...calendarHeaderStyle, overflow: 'hidden', - width: `calc(100% - ${leftSidebarWidth + rightSidebarWidth}px)` + width: `calc(100% - ${leftSidebarWidth + rightSidebarWidth}px)`, } } - handleRootRef = element => { + handleRootRef: LegacyRef = (element) => { if (this.props.headerRef) { this.props.headerRef(element) } @@ -50,23 +62,23 @@ class TimelineHeaders extends React.Component { /** * check if child of type SidebarHeader - * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types + * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types */ - isSidebarHeader = (child) => { - if(child.type === undefined) return false - return child.type.secretKey ===SidebarHeader.secretKey + isSidebarHeader = (child: ElementWithSecret) => { + if (child.type === undefined) return false + return child.type.secretKey === SidebarHeader.secretKey } render() { let rightSidebarHeader let leftSidebarHeader - let calendarHeaders = [] - const children = Array.isArray(this.props.children) - ? this.props.children.filter(c => c) + const calendarHeaders: ElementWithSecret[] = [] + const children: ElementWithSecret[] = Array.isArray(this.props.children) + ? this.props.children.filter((c) => c) : [this.props.children] - React.Children.map(children, child => { + React.Children.map(children, (child) => { if (this.isSidebarHeader(child)) { - if (child.props.variant === RIGHT_VARIANT) { + if (child?.props?.variant === RIGHT_VARIANT) { rightSidebarHeader = child } else { leftSidebarHeader = child @@ -94,7 +106,7 @@ class TimelineHeaders extends React.Component { style={this.getCalendarHeaderStyle()} className={classNames( 'rct-calendar-header', - this.props.calendarHeaderClassName + this.props.calendarHeaderClassName, )} data-testid="headerContainer" > @@ -106,13 +118,20 @@ class TimelineHeaders extends React.Component { } } +interface TimelineHeadersWrapperProps { + children: ReactNode + style?: CSSProperties + className?: string + calendarHeaderStyle?: CSSProperties + calendarHeaderClassName?: string +} const TimelineHeadersWrapper = ({ children, style, className, calendarHeaderStyle, - calendarHeaderClassName -}) => ( + calendarHeaderClassName, +}: TimelineHeadersWrapperProps) => ( {({ leftSidebarWidth, rightSidebarWidth, registerScroll }) => { return ( @@ -132,14 +151,6 @@ const TimelineHeadersWrapper = ({ ) -TimelineHeadersWrapper.propTypes = { - style: PropTypes.object, - children: PropTypes.node, - className: PropTypes.string, - calendarHeaderStyle: PropTypes.object, - calendarHeaderClassName: PropTypes.string -} - -TimelineHeadersWrapper.secretKey = "TimelineHeaders" +TimelineHeadersWrapper.secretKey = 'TimelineHeaders' export default TimelineHeadersWrapper diff --git a/src/lib/interaction/PreventClickOnDrag.js b/src/lib/interaction/PreventClickOnDrag.tsx similarity index 54% rename from src/lib/interaction/PreventClickOnDrag.js rename to src/lib/interaction/PreventClickOnDrag.tsx index 50d260698..e14e66d66 100644 --- a/src/lib/interaction/PreventClickOnDrag.js +++ b/src/lib/interaction/PreventClickOnDrag.tsx @@ -1,24 +1,22 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' +import React, { Component, MouseEventHandler } from 'react' -class PreventClickOnDrag extends Component { - static propTypes = { - children: PropTypes.element.isRequired, - onClick: PropTypes.func.isRequired, - clickTolerance: PropTypes.number.isRequired - } - - handleMouseDown = evt => { +type Props = { + children: React.ReactElement; + onClick: MouseEventHandler; + clickTolerance: number; +} +class PreventClickOnDrag extends Component { + handleMouseDown: MouseEventHandler = evt => { this.originClickX = evt.clientX } - handleMouseUp = evt => { + handleMouseUp: MouseEventHandler = evt => { if (Math.abs(this.originClickX - evt.clientX) > this.props.clickTolerance) { this.cancelClick = true } } - handleClick = evt => { + handleClick: MouseEventHandler = evt => { if (!this.cancelClick) { this.props.onClick(evt) } @@ -26,6 +24,8 @@ class PreventClickOnDrag extends Component { this.cancelClick = false this.originClickX = null } + private originClickX: any + private cancelClick: boolean = false render() { const childElement = React.Children.only(this.props.children) diff --git a/src/lib/items/Item.js b/src/lib/items/Item.tsx similarity index 58% rename from src/lib/items/Item.js rename to src/lib/items/Item.tsx index f2dc793e5..250c4819b 100644 --- a/src/lib/items/Item.js +++ b/src/lib/items/Item.tsx @@ -1,635 +1,733 @@ -import { Component } from 'react' -import PropTypes from 'prop-types' -import interact from 'interactjs' -import dayjs from "dayjs" -import utc from "dayjs/plugin/utc" -dayjs.extend(utc) - -import { _get, deepObjectCompare } from '../utility/generic' -import { composeEvents } from '../utility/events' -import { defaultItemRenderer } from './defaultItemRenderer' -import { coordinateToTimeRatio } from '../utility/calendar' -import { getSumScroll, getSumOffset } from '../utility/dom-helpers' -import { - overridableStyles, - selectedStyle, - selectedAndCanMove, - selectedAndCanResizeLeft, - selectedAndCanResizeLeftAndDragLeft, - selectedAndCanResizeRight, - selectedAndCanResizeRightAndDragRight, - leftResizeStyle, - rightResizeStyle -} from './styles' -export default class Item extends Component { - // removed prop type check for SPEED! - // they are coming from a trusted component anyway - // (this complicates performance debugging otherwise) - static propTypes = { - canvasTimeStart: PropTypes.number.isRequired, - canvasTimeEnd: PropTypes.number.isRequired, - canvasWidth: PropTypes.number.isRequired, - order: PropTypes.object, - - dragSnap: PropTypes.number, - minResizeWidth: PropTypes.number, - selected: PropTypes.bool, - - canChangeGroup: PropTypes.bool.isRequired, - canMove: PropTypes.bool.isRequired, - canResizeLeft: PropTypes.bool.isRequired, - canResizeRight: PropTypes.bool.isRequired, - - keys: PropTypes.object.isRequired, - item: PropTypes.object.isRequired, - - onSelect: PropTypes.func, - onDrag: PropTypes.func, - onDrop: PropTypes.func, - onResizing: PropTypes.func, - onResized: PropTypes.func, - onContextMenu: PropTypes.func, - itemRenderer: PropTypes.func, - - itemProps: PropTypes.object, - canSelect: PropTypes.bool, - dimensions: PropTypes.object, - groupTops: PropTypes.array, - useResizeHandle: PropTypes.bool, - moveResizeValidator: PropTypes.func, - onItemDoubleClick: PropTypes.func, - - scrollRef: PropTypes.object - } - - static defaultProps = { - selected: false, - itemRenderer: defaultItemRenderer - } - - static contextTypes = { - getTimelineContext: PropTypes.func - } - - constructor(props) { - super(props) - - this.cacheDataFromProps(props) - - this.state = { - interactMounted: false, - - dragging: null, - dragStart: null, - preDragPosition: null, - dragTime: null, - dragGroupDelta: null, - - resizing: null, - resizeEdge: null, - resizeStart: null, - resizeTime: null - } - } - - shouldComponentUpdate(nextProps, nextState) { - var shouldUpdate = - nextState.dragging !== this.state.dragging || - nextState.dragTime !== this.state.dragTime || - nextState.dragGroupDelta !== this.state.dragGroupDelta || - nextState.resizing !== this.state.resizing || - nextState.resizeTime !== this.state.resizeTime || - nextProps.keys !== this.props.keys || - !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || - nextProps.selected !== this.props.selected || - nextProps.item !== this.props.item || - nextProps.canvasTimeStart !== this.props.canvasTimeStart || - nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || - nextProps.canvasWidth !== this.props.canvasWidth || - (nextProps.order ? nextProps.order.index : undefined) !== - (this.props.order ? this.props.order.index : undefined) || - nextProps.dragSnap !== this.props.dragSnap || - nextProps.minResizeWidth !== this.props.minResizeWidth || - nextProps.canChangeGroup !== this.props.canChangeGroup || - nextProps.canSelect !== this.props.canSelect || - nextProps.canMove !== this.props.canMove || - nextProps.canResizeLeft !== this.props.canResizeLeft || - nextProps.canResizeRight !== this.props.canResizeRight || - nextProps.dimensions !== this.props.dimensions - return shouldUpdate - } - - cacheDataFromProps(props) { - this.itemId = _get(props.item, props.keys.itemIdKey) - this.itemTitle = _get(props.item, props.keys.itemTitleKey) - this.itemDivTitle = props.keys.itemDivTitleKey - ? _get(props.item, props.keys.itemDivTitleKey) - : this.itemTitle - this.itemTimeStart = _get(props.item, props.keys.itemTimeStartKey) - this.itemTimeEnd = _get(props.item, props.keys.itemTimeEndKey) - } - - getTimeRatio() { - const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props - return coordinateToTimeRatio(canvasTimeStart, canvasTimeEnd, canvasWidth) - } - - dragTimeSnap(dragTime, considerOffset) { - const { dragSnap } = this.props - if (dragSnap) { - const offset = considerOffset ? dayjs().utcOffset() * 60 * 1000 : 0 - return Math.round(dragTime / dragSnap) * dragSnap - offset % dragSnap - } else { - return dragTime - } - } - - resizeTimeSnap(dragTime) { - const { dragSnap } = this.props - if (dragSnap) { - const endTime = this.itemTimeEnd % dragSnap - return Math.round((dragTime - endTime) / dragSnap) * dragSnap + endTime - } else { - return dragTime - } - } - - dragTime(e) { - const startTime = dayjs(this.itemTimeStart) - - if (this.state.dragging) { - return this.dragTimeSnap(this.timeFor(e) + this.state.dragStart.offset, true) - } else { - return startTime - } - } - - timeFor(e) { - const ratio = coordinateToTimeRatio(this.props.canvasTimeStart, this.props.canvasTimeEnd, this.props.canvasWidth) - - const offset = getSumOffset(this.props.scrollRef).offsetLeft - const scrolls = getSumScroll(this.props.scrollRef) - - return (e.pageX - offset + scrolls.scrollLeft) * ratio + this.props.canvasTimeStart; - } - - dragGroupDelta(e) { - const { groupTops, order } = this.props - if (this.state.dragging) { - if (!this.props.canChangeGroup) { - return 0 - } - let groupDelta = 0 - - const offset = getSumOffset(this.props.scrollRef).offsetTop - const scrolls = getSumScroll(this.props.scrollRef) - - for (var key of Object.keys(groupTops)) { - var groupTop = groupTops[key] - if (e.pageY - offset + scrolls.scrollTop > groupTop) { - groupDelta = parseInt(key, 10) - order.index - } else { - break - } - } - - if (this.props.order.index + groupDelta < 0) { - return 0 - this.props.order.index - } else { - return groupDelta - } - } else { - return 0 - } - } - - resizeTimeDelta(e, resizeEdge) { - const length = this.itemTimeEnd - this.itemTimeStart - const timeDelta = this.dragTimeSnap( - (e.pageX - this.state.resizeStart) * this.getTimeRatio() - ) - - if ( - length + (resizeEdge === 'left' ? -timeDelta : timeDelta) < - (this.props.dragSnap || 1000) - ) { - if (resizeEdge === 'left') { - return length - (this.props.dragSnap || 1000) - } else { - return (this.props.dragSnap || 1000) - length - } - } else { - return timeDelta - } - } - - mountInteract() { - const leftResize = this.props.useResizeHandle ? ".rct-item-handler-resize-left" : true - const rightResize = this.props.useResizeHandle ? ".rct-item-handler-resize-right" : true - - interact(this.item) - .resizable({ - edges: { - left: this.canResizeLeft() && leftResize, - right: this.canResizeRight() && rightResize, - top: false, - bottom: false - }, - enabled: - this.props.selected && (this.canResizeLeft() || this.canResizeRight()) - }) - .draggable({ - enabled: this.props.selected && this.canMove() - }) - .styleCursor(false) - .on('dragstart', e => { - if (this.props.selected) { - const clickTime = this.timeFor(e); - this.setState({ - dragging: true, - dragStart: { - x: e.pageX, - y: e.pageY, - offset: this.itemTimeStart - clickTime }, - preDragPosition: { x: e.target.offsetLeft, y: e.target.offsetTop }, - dragTime: this.itemTimeStart, - dragGroupDelta: 0 - }) - } else { - return false - } - }) - .on('dragmove', e => { - if (this.state.dragging) { - let dragTime = this.dragTime(e) - let dragGroupDelta = this.dragGroupDelta(e) - if (this.props.moveResizeValidator) { - dragTime = this.props.moveResizeValidator( - 'move', - this.props.item, - dragTime - ) - } - - if (this.props.onDrag) { - this.props.onDrag( - this.itemId, - dragTime, - this.props.order.index + dragGroupDelta - ) - } - - this.setState({ - dragTime: dragTime, - dragGroupDelta: dragGroupDelta - }) - } - }) - .on('dragend', e => { - if (this.state.dragging) { - if (this.props.onDrop) { - let dragTime = this.dragTime(e) - - if (this.props.moveResizeValidator) { - dragTime = this.props.moveResizeValidator( - 'move', - this.props.item, - dragTime - ) - } - - this.props.onDrop( - this.itemId, - dragTime, - this.props.order.index + this.dragGroupDelta(e) - ) - } - - this.setState({ - dragging: false, - dragStart: null, - preDragPosition: null, - dragTime: null, - dragGroupDelta: null - }) - } - }) - .on('resizestart', e => { - if (this.props.selected) { - this.setState({ - resizing: true, - resizeEdge: null, // we don't know yet - resizeStart: e.pageX, - resizeTime: 0 - }) - } else { - return false - } - }) - .on('resizemove', e => { - if (this.state.resizing) { - let resizeEdge = this.state.resizeEdge - - if (!resizeEdge) { - resizeEdge = e.deltaRect.left !== 0 ? 'left' : 'right' - this.setState({ resizeEdge }) - } - let resizeTime = this.resizeTimeSnap(this.timeFor(e)) - - if (this.props.moveResizeValidator) { - resizeTime = this.props.moveResizeValidator( - 'resize', - this.props.item, - resizeTime, - resizeEdge - ) - } - - if (this.props.onResizing) { - this.props.onResizing(this.itemId, resizeTime, resizeEdge) - } - - this.setState({ - resizeTime - }) - } - }) - .on('resizeend', e => { - if (this.state.resizing) { - const { resizeEdge } = this.state - let resizeTime = this.resizeTimeSnap(this.timeFor(e)) - - if (this.props.moveResizeValidator) { - resizeTime = this.props.moveResizeValidator( - 'resize', - this.props.item, - resizeTime, - resizeEdge - ) - } - - if (this.props.onResized) { - this.props.onResized( - this.itemId, - resizeTime, - resizeEdge, - this.resizeTimeDelta(e, resizeEdge) - ) - } - this.setState({ - resizing: null, - resizeStart: null, - resizeEdge: null, - resizeTime: null - }) - } - }) - .on('tap', e => { - this.actualClick(e, e.pointerType === 'mouse' ? 'click' : 'touch') - }) - - this.setState({ - interactMounted: true - }) - } - - canResizeLeft(props = this.props) { - if (!props.canResizeLeft) { - return false - } - let width = parseInt(props.dimensions.width, 10) - return width >= props.minResizeWidth - } - - canResizeRight(props = this.props) { - if (!props.canResizeRight) { - return false - } - let width = parseInt(props.dimensions.width, 10) - return width >= props.minResizeWidth - } - - canMove(props = this.props) { - return !!props.canMove - } - - componentDidUpdate(prevProps) { - this.cacheDataFromProps(this.props) - let { interactMounted } = this.state - const couldDrag = prevProps.selected && this.canMove(prevProps) - const couldResizeLeft = - prevProps.selected && this.canResizeLeft(prevProps) - const couldResizeRight = - prevProps.selected && this.canResizeRight(prevProps) - const willBeAbleToDrag = this.props.selected && this.canMove(this.props) - const willBeAbleToResizeLeft = - this.props.selected && this.canResizeLeft(this.props) - const willBeAbleToResizeRight = - this.props.selected && this.canResizeRight(this.props) - - if(!!this.item){ - if (this.props.selected && !interactMounted) { - this.mountInteract() - interactMounted = true - } - if ( - interactMounted && - (couldResizeLeft !== willBeAbleToResizeLeft || - couldResizeRight !== willBeAbleToResizeRight) - ) { - const leftResize = this.props.useResizeHandle ? this.dragLeft : true - const rightResize = this.props.useResizeHandle ? this.dragRight : true - - interact(this.item).resizable({ - enabled: willBeAbleToResizeLeft || willBeAbleToResizeRight, - edges: { - top: false, - bottom: false, - left: willBeAbleToResizeLeft && leftResize, - right: willBeAbleToResizeRight && rightResize - } - }) - } - if (interactMounted && couldDrag !== willBeAbleToDrag) { - interact(this.item).draggable({ enabled: willBeAbleToDrag }) - } - } - else{ - interactMounted= false; - } - this.setState({ - interactMounted, - }) - - } - - onMouseDown = e => { - if (!this.state.interactMounted) { - e.preventDefault() - this.startedClicking = true - } - } - - onMouseUp = e => { - if (!this.state.interactMounted && this.startedClicking) { - this.startedClicking = false - this.actualClick(e, 'click') - } - } - - onTouchStart = e => { - if (!this.state.interactMounted) { - e.preventDefault() - this.startedTouching = true - } - } - - onTouchEnd = e => { - if (!this.state.interactMounted && this.startedTouching) { - this.startedTouching = false - this.actualClick(e, 'touch') - } - } - - handleDoubleClick = e => { - e.stopPropagation() - if (this.props.onItemDoubleClick) { - this.props.onItemDoubleClick(this.itemId, e) - } - } - - handleContextMenu = e => { - if (this.props.onContextMenu) { - e.preventDefault() - e.stopPropagation() - this.props.onContextMenu(this.itemId, e) - } - } - - actualClick(e, clickType) { - if (this.props.canSelect && this.props.onSelect) { - this.props.onSelect(this.itemId, clickType, e) - } - } - - getItemRef = el => (this.item = el) - getDragLeftRef = el => (this.dragLeft = el) - getDragRightRef = el => (this.dragRight = el) - - getItemProps = (props = {}) => { - //TODO: maybe shouldnt include all of these classes - const classNames = - 'rct-item' + - (this.props.item.className ? ` ${this.props.item.className}` : '') - - return { - key: this.itemId, - ref: this.getItemRef, - title: this.itemDivTitle, - className: classNames + ` ${props.className ? props.className : ''}`, - onMouseDown: composeEvents(this.onMouseDown, props.onMouseDown), - onMouseUp: composeEvents(this.onMouseUp, props.onMouseUp), - onTouchStart: composeEvents(this.onTouchStart, props.onTouchStart), - onTouchEnd: composeEvents(this.onTouchEnd, props.onTouchEnd), - onDoubleClick: composeEvents(this.handleDoubleClick, props.onDoubleClick), - onContextMenu: composeEvents(this.handleContextMenu, props.onContextMenu), - style: Object.assign({}, this.getItemStyle(props)) - } - } - - getResizeProps = (props = {}) => { - let leftName = "rct-item-handler rct-item-handler-left rct-item-handler-resize-left" - if (props.leftClassName) { - leftName += ` ${props.leftClassName}` - } - - let rightName = "rct-item-handler rct-item-handler-right rct-item-handler-resize-right" - if (props.rightClassName) { - rightName += ` ${props.rightClassName}` - } - return { - left: { - ref: this.getDragLeftRef, - className: leftName, - style: Object.assign({}, leftResizeStyle, props.leftStyle) - }, - right: { - ref: this.getDragRightRef, - className: rightName, - style: Object.assign({}, rightResizeStyle, props.rightStyle) - } - } - } - - getItemStyle(props) { - const dimensions = this.props.dimensions - - const baseStyles = { - position: 'absolute', - boxSizing: 'border-box', - left: `${dimensions.left}px`, - top: `${dimensions.top}px`, - width: `${dimensions.width}px`, - height: `${dimensions.height}px`, - lineHeight: `${dimensions.height}px` - } - - const finalStyle = Object.assign( - {}, - overridableStyles, - this.props.selected ? selectedStyle : {}, - this.props.selected & this.canMove(this.props) ? selectedAndCanMove : {}, - this.props.selected & this.canResizeLeft(this.props) - ? selectedAndCanResizeLeft - : {}, - this.props.selected & this.canResizeLeft(this.props) & this.state.dragging - ? selectedAndCanResizeLeftAndDragLeft - : {}, - this.props.selected & this.canResizeRight(this.props) - ? selectedAndCanResizeRight - : {}, - this.props.selected & - this.canResizeRight(this.props) & - this.state.dragging - ? selectedAndCanResizeRightAndDragRight - : {}, - props.style, - baseStyles - ) - return finalStyle - } - - render() { - if (typeof this.props.order === 'undefined' || this.props.order === null) { - return null - } - - const timelineContext = this.context.getTimelineContext() - const itemContext = { - dimensions: this.props.dimensions, - useResizeHandle: this.props.useResizeHandle, - title: this.itemTitle, - canMove: this.canMove(this.props), - canResizeLeft: this.canResizeLeft(this.props), - canResizeRight: this.canResizeRight(this.props), - selected: this.props.selected, - dragging: this.state.dragging, - dragStart: this.state.dragStart, - dragTime: this.state.dragTime, - dragGroupDelta: this.state.dragGroupDelta, - resizing: this.state.resizing, - resizeEdge: this.state.resizeEdge, - resizeStart: this.state.resizeStart, - resizeTime: this.state.resizeTime, - width: this.props.dimensions.width - } - - return this.props.itemRenderer({ - item: this.props.item, - timelineContext, - itemContext, - getItemProps: this.getItemProps, - getResizeProps: this.getResizeProps - }) - } -} +import { + Component, + CSSProperties, + MouseEventHandler, + ReactNode, + TouchEventHandler, + MouseEvent, + TouchEvent, + HTMLAttributes, + LegacyRef, +} from 'react' +import interact from 'interactjs' +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc' + +dayjs.extend(utc) + +import { _get, deepObjectCompare } from '../utility/generic' +import { composeEvents } from '../utility/events' +import { defaultItemRenderer } from './defaultItemRenderer' +import { coordinateToTimeRatio } from '../utility/calendar' +import { getSumScroll, getSumOffset } from '../utility/dom-helpers' +import { + overridableStyles, + selectedStyle, + selectedAndCanMove, + selectedAndCanResizeLeft, + selectedAndCanResizeLeftAndDragLeft, + selectedAndCanResizeRight, + selectedAndCanResizeRightAndDragRight, + leftResizeStyle, + rightResizeStyle, +} from './styles' +import { Id, ItemContext, TimelineItemBase, TimelineKeys } from '../types/main' + +export type ResizeEdge = 'left' | 'right' + +type OnSelect = ( + itemId: string, + clickType: 'click' | 'touch', + event: MouseEvent | TouchEvent, +) => void + +export type ItemProps = { + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + minResizeWidth?: number + order: { index: number } + dragSnap?: number + itemProps?: HTMLAttributes + onDrag: (itemId: string, dragTime: number, newGroupOrder: number) => void + onDrop: (itemId: string, dragTime: number, newGroupOrder: number) => void + onResizing: ( + itemId: string, + time: number, + resizeEdge: ResizeEdge | null, + ) => void + onResized: ( + itemId: string, + time: number, + resizeEdge: ResizeEdge | null, + delta: number, + ) => void + moveResizeValidator: ( + action: 'move' | 'resize', + item: TimelineItemBase, + time: number, + resizeEdge?: ResizeEdge | null, + ) => number + itemRenderer?: (props: ItemRendererProps) => ReactNode + selected: boolean + canChangeGroup?: boolean + canMove?: boolean + canSelect?: boolean + dimensions?: ItemContext['dimensions'] + useResizeHandle?: boolean + canResizeLeft: any + canResizeRight: any + + keys: TimelineKeys + item: TimelineItemBase + + onSelect: OnSelect + onContextMenu: (i: Id, e: MouseEvent) => void + groupTops: any + onItemDoubleClick: (i: Id, e: MouseEvent) => void + scrollRef: HTMLElement +} + +type DragProps = { offset: number; x: number; y: number } + +interface ItemState { + interactMounted: boolean + dragging: boolean + dragStart: null | DragProps + preDragPosition: { x: number; y: number } | null + dragTime: null | number + dragGroupDelta: null | number + resizing: boolean + resizeEdge: null | 'left' | 'right' + resizeStart: null | number + resizeTime: null | number +} + +interface TimelineContext { + // Define your timeline context types here +} + +export type GetItemPropsParams = HTMLAttributes & { + leftClassName?: string + rightClassName?: string + leftStyle?: CSSProperties + rightStyle?: CSSProperties +} + +export interface ItemRendererProps { + item: TimelineItemBase + timelineContext: TimelineContext + itemContext: ItemContext + getItemProps: (params: GetItemPropsParams) => HTMLAttributes + getResizeProps: GetResizeProps +} +type GetResizePropsDirection = { + ref: LegacyRef + className: string + style: CSSProperties +} +export type GetResizeProps = (params?: GetItemPropsParams) => { + right: GetResizePropsDirection + left: GetResizePropsDirection +} + +export default class Item extends Component { + static defaultProps = { + selected: false, + itemRenderer: defaultItemRenderer, + } + + state: ItemState = { + interactMounted: false, + + dragging: false, + dragStart: null, + preDragPosition: null, + dragTime: null, + dragGroupDelta: null, + + resizing: false, + resizeEdge: null, + resizeStart: null, + resizeTime: null, + } + private itemId: string = '' + private itemTitle: string = '' + private itemDivTitle?: string + private itemTimeStart?: number + private itemTimeEnd?: number + private item?: HTMLElement + private dragLeft?: HTMLElement + private dragRight?: HTMLElement + private startedClicking: boolean = false + private startedTouching: boolean = false + + constructor(props: ItemProps) { + super(props) + + this.cacheDataFromProps(props) + } + + shouldComponentUpdate(nextProps: ItemProps, nextState: ItemState) { + const shouldUpdate = + nextState.dragging !== this.state.dragging || + nextState.dragTime !== this.state.dragTime || + nextState.dragGroupDelta !== this.state.dragGroupDelta || + nextState.resizing !== this.state.resizing || + nextState.resizeTime !== this.state.resizeTime || + nextProps.keys !== this.props.keys || + !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || + nextProps.selected !== this.props.selected || + nextProps.item !== this.props.item || + nextProps.canvasTimeStart !== this.props.canvasTimeStart || + nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || + nextProps.canvasWidth !== this.props.canvasWidth || + (nextProps.order ? nextProps.order.index : undefined) !== + (this.props.order ? this.props.order.index : undefined) || + nextProps.dragSnap !== this.props.dragSnap || + nextProps.minResizeWidth !== this.props.minResizeWidth || + nextProps.canChangeGroup !== this.props.canChangeGroup || + nextProps.canSelect !== this.props.canSelect || + nextProps.canMove !== this.props.canMove || + nextProps.canResizeLeft !== this.props.canResizeLeft || + nextProps.canResizeRight !== this.props.canResizeRight || + nextProps.dimensions !== this.props.dimensions + return shouldUpdate + } + + cacheDataFromProps(props: ItemProps) { + this.itemId = _get(props.item, props.keys.itemIdKey) + this.itemTitle = _get(props.item, props.keys.itemTitleKey) + this.itemDivTitle = props.keys.itemDivTitleKey + ? _get(props.item, props.keys.itemDivTitleKey) + : this.itemTitle + this.itemTimeStart = _get(props.item, props.keys.itemTimeStartKey) + this.itemTimeEnd = _get(props.item, props.keys.itemTimeEndKey) + } + + getTimeRatio() { + const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props + return coordinateToTimeRatio(canvasTimeStart, canvasTimeEnd, canvasWidth) + } + + dragTimeSnap(dragTime: number, considerOffset?: boolean) { + const { dragSnap } = this.props + if (dragSnap) { + const offset = considerOffset ? dayjs().utcOffset() * 60 * 1000 : 0 + return Math.round(dragTime / dragSnap) * dragSnap - (offset % dragSnap) + } else { + return dragTime + } + } + + resizeTimeSnap(dragTime: number) { + const { dragSnap } = this.props + if (dragSnap) { + const endTime = this.itemTimeEnd! % dragSnap + return Math.round((dragTime - endTime) / dragSnap) * dragSnap + endTime + } else { + return dragTime + } + } + + dragTime(e: MouseEvent) { + const startTime = dayjs(this.itemTimeStart) + + if (this.state.dragging) { + return this.dragTimeSnap( + this.timeFor(e) + this.state.dragStart!.offset, + true, + ) + } else { + return startTime.valueOf() + } + } + + timeFor(e: MouseEvent) { + const ratio = coordinateToTimeRatio( + this.props.canvasTimeStart, + this.props.canvasTimeEnd, + this.props.canvasWidth, + ) + + const offset = getSumOffset(this.props.scrollRef).offsetLeft + const scrolls = getSumScroll(this.props.scrollRef) + + return ( + (e.pageX - offset + scrolls.scrollLeft) * ratio + + this.props.canvasTimeStart + ) + } + + dragGroupDelta(e: MouseEvent) { + const { groupTops, order } = this.props + if (this.state.dragging) { + if (!this.props.canChangeGroup) { + return 0 + } + let groupDelta = 0 + + const offset = getSumOffset(this.props.scrollRef).offsetTop + const scrolls = getSumScroll(this.props.scrollRef) + + for (const key of Object.keys(groupTops)) { + const groupTop = groupTops[key] + if (e.pageY - offset + scrolls.scrollTop > groupTop) { + groupDelta = parseInt(key, 10) - order!.index + } else { + break + } + } + + if (this.props.order!.index + groupDelta < 0) { + return 0 - this.props.order.index + } else { + return groupDelta + } + } else { + return 0 + } + } + + resizeTimeDelta(e: MouseEvent, resizeEdge: ResizeEdge | null) { + const length = this.itemTimeEnd! - this.itemTimeStart! + const timeDelta = this.dragTimeSnap( + (e.pageX - this.state.resizeStart!) * this.getTimeRatio(), + ) + + if ( + length + (resizeEdge === 'left' ? -timeDelta : timeDelta) < + (this.props.dragSnap || 1000) + ) { + if (resizeEdge === 'left') { + return length - (this.props.dragSnap || 1000) + } else { + return (this.props.dragSnap || 1000) - length + } + } else { + return timeDelta + } + } + + mountInteract() { + const leftResize = this.props.useResizeHandle + ? '.rct-item-handler-resize-left' + : true + const rightResize = this.props.useResizeHandle + ? '.rct-item-handler-resize-right' + : true + + interact(this.item!) + .resizable({ + edges: { + left: this.canResizeLeft() && leftResize, + right: this.canResizeRight() && rightResize, + top: false, + bottom: false, + }, + enabled: + this.props.selected && + (this.canResizeLeft() || this.canResizeRight()), + }) + .draggable({ + enabled: this.props.selected && this.canMove(), + }) + .styleCursor(false) + .on('dragstart', (e) => { + if (this.props.selected) { + const clickTime = this.timeFor(e) + this.setState({ + dragging: true, + dragStart: { + x: e.pageX, + y: e.pageY, + offset: this.itemTimeStart! - clickTime, + }, + preDragPosition: { x: e.target.offsetLeft, y: e.target.offsetTop }, + dragTime: this.itemTimeStart!, + dragGroupDelta: 0, + }) + } else { + return false + } + }) + .on('dragmove', (e) => { + if (this.state.dragging) { + let dragTime = this.dragTime(e) + const dragGroupDelta = this.dragGroupDelta(e) + if (this.props.moveResizeValidator) { + dragTime = this.props.moveResizeValidator( + 'move', + this.props.item, + dragTime, + ) + } + + if (this.props.onDrag) { + this.props.onDrag( + this.itemId!, + dragTime, + this.props.order.index + dragGroupDelta, + ) + } + + this.setState({ + dragTime: dragTime, + dragGroupDelta: dragGroupDelta, + }) + } + }) + .on('dragend', (e) => { + if (this.state.dragging) { + if (this.props.onDrop) { + let dragTime = this.dragTime(e) + + if (this.props.moveResizeValidator) { + dragTime = this.props.moveResizeValidator( + 'move', + this.props.item, + dragTime, + ) + } + + this.props.onDrop( + this.itemId!, + dragTime, + this.props.order.index + this.dragGroupDelta(e), + ) + } + + this.setState({ + dragging: false, + dragStart: null, + preDragPosition: null, + dragTime: null, + dragGroupDelta: null, + }) + } + }) + .on('resizestart', (e) => { + if (this.props.selected) { + this.setState({ + resizing: true, + resizeEdge: null, // we don't know yet + resizeStart: e.pageX, + resizeTime: 0, + }) + } else { + return false + } + }) + .on('resizemove', (e) => { + if (this.state.resizing) { + let resizeEdge = this.state.resizeEdge + + if (!resizeEdge) { + resizeEdge = e.deltaRect.left !== 0 ? 'left' : 'right' + this.setState({ resizeEdge }) + } + let resizeTime = this.resizeTimeSnap(this.timeFor(e)) + + if (this.props.moveResizeValidator) { + resizeTime = this.props.moveResizeValidator( + 'resize', + this.props.item, + resizeTime, + resizeEdge, + ) + } + + if (this.props.onResizing) { + this.props.onResizing(this.itemId, resizeTime, resizeEdge) + } + + this.setState({ + resizeTime, + }) + } + }) + .on('resizeend', (e) => { + if (this.state.resizing) { + const { resizeEdge } = this.state + let resizeTime = this.resizeTimeSnap(this.timeFor(e)) + + if (this.props.moveResizeValidator) { + resizeTime = this.props.moveResizeValidator( + 'resize', + this.props.item, + resizeTime, + resizeEdge, + ) + } + + if (this.props.onResized) { + this.props.onResized( + this.itemId, + resizeTime, + resizeEdge, + this.resizeTimeDelta(e, resizeEdge), + ) + } + this.setState({ + resizing: false, + resizeStart: null, + resizeEdge: null, + resizeTime: null, + }) + } + }) + .on('tap', (e) => { + this.actualClick(e, e.pointerType === 'mouse' ? 'click' : 'touch') + }) + + this.setState({ + interactMounted: true, + }) + } + + canResizeLeft(props = this.props) { + if (!props.canResizeLeft || props.minResizeWidth === undefined) { + return false + } + const width = parseInt(props.dimensions!.width?.toString(), 10) + return width >= props.minResizeWidth + } + + canResizeRight(props = this.props) { + if (!props.canResizeRight || props.minResizeWidth === undefined) { + return false + } + const width = parseInt(props.dimensions!.width?.toString(), 10) + return width >= props.minResizeWidth + } + + canMove(props = this.props) { + return !!props.canMove + } + + componentDidUpdate(prevProps: ItemProps) { + this.cacheDataFromProps(this.props) + let { interactMounted } = this.state + const couldDrag = prevProps.selected && this.canMove(prevProps) + const couldResizeLeft = prevProps.selected && this.canResizeLeft(prevProps) + const couldResizeRight = + prevProps.selected && this.canResizeRight(prevProps) + const willBeAbleToDrag = this.props.selected && this.canMove(this.props) + const willBeAbleToResizeLeft = + this.props.selected && this.canResizeLeft(this.props) + const willBeAbleToResizeRight = + this.props.selected && this.canResizeRight(this.props) + + if (this.item) { + if (this.props.selected && !interactMounted) { + this.mountInteract() + interactMounted = true + } + if ( + interactMounted && + (couldResizeLeft !== willBeAbleToResizeLeft || + couldResizeRight !== willBeAbleToResizeRight) + ) { + const leftResize = this.props.useResizeHandle ? this.dragLeft : true + const rightResize = this.props.useResizeHandle ? this.dragRight : true + + interact(this.item).resizable({ + enabled: willBeAbleToResizeLeft || willBeAbleToResizeRight, + edges: { + top: false, + bottom: false, + left: willBeAbleToResizeLeft && leftResize, + right: willBeAbleToResizeRight && rightResize, + }, + }) + } + if (interactMounted && couldDrag !== willBeAbleToDrag) { + interact(this.item).draggable({ enabled: willBeAbleToDrag }) + } + } else { + interactMounted = false + } + this.setState({ + interactMounted, + }) + } + + onMouseDown: MouseEventHandler = (e) => { + if (!this.state.interactMounted) { + e.preventDefault() + this.startedClicking = true + } + } + + onMouseUp: MouseEventHandler = (e) => { + if (!this.state.interactMounted && this.startedClicking) { + this.startedClicking = false + this.actualClick(e, 'click') + } + } + + onTouchStart: TouchEventHandler = (e) => { + if (!this.state.interactMounted) { + e.preventDefault() + this.startedTouching = true + } + } + + onTouchEnd: TouchEventHandler = (e) => { + if (!this.state.interactMounted && this.startedTouching) { + this.startedTouching = false + this.actualClick(e, 'touch') + } + } + + handleDoubleClick: MouseEventHandler = (e) => { + e.stopPropagation() + if (this.props.onItemDoubleClick) { + this.props.onItemDoubleClick(this.itemId, e) + } + } + + handleContextMenu: MouseEventHandler = (e) => { + if (this.props.onContextMenu) { + e.preventDefault() + e.stopPropagation() + this.props.onContextMenu(this.itemId, e) + } + } + + actualClick( + e: MouseEvent | TouchEvent, + clickType: 'click' | 'touch', + ) { + if (this.props.canSelect && this.props.onSelect) { + this.props.onSelect(this.itemId!, clickType, e) + } + } + + getItemRef = (el: HTMLElement) => (this.item = el) + getDragLeftRef = (el: HTMLElement) => (this.dragLeft = el) + getDragRightRef = (el: HTMLElement) => (this.dragRight = el) + + getItemProps = (props: GetItemPropsParams = {}) => { + //TODO: maybe shouldnt include all of these classes + const classNames = + 'rct-item' + + (this.props.item.className ? ` ${this.props.item.className}` : '') + + return { + key: this.itemId, + ref: this.getItemRef, + title: this.itemDivTitle, + className: classNames + ` ${props.className ? props.className : ''}`, + onMouseDown: composeEvents(this.onMouseDown, props.onMouseDown), + onMouseUp: composeEvents(this.onMouseUp, props.onMouseUp), + onTouchStart: composeEvents(this.onTouchStart, props.onTouchStart), + onTouchEnd: composeEvents(this.onTouchEnd, props.onTouchEnd), + onDoubleClick: composeEvents(this.handleDoubleClick, props.onDoubleClick), + onContextMenu: composeEvents(this.handleContextMenu, props.onContextMenu), + style: Object.assign({}, this.getItemStyle(props)), + } + } + + getResizeProps = (props: GetItemPropsParams = {} as GetItemPropsParams) => { + let leftName = + 'rct-item-handler rct-item-handler-left rct-item-handler-resize-left' + if (props.leftClassName) { + leftName += ` ${props.leftClassName}` + } + + let rightName = + 'rct-item-handler rct-item-handler-right rct-item-handler-resize-right' + if (props.rightClassName) { + rightName += ` ${props.rightClassName}` + } + return { + left: { + ref: this.getDragLeftRef, + className: leftName, + style: Object.assign({}, leftResizeStyle, props.leftStyle), + }, + right: { + ref: this.getDragRightRef, + className: rightName, + style: Object.assign({}, rightResizeStyle, props.rightStyle), + }, + } as ReturnType + } + + getItemStyle(props: GetItemPropsParams) { + const dimensions = this.props.dimensions! + + const baseStyles = { + position: 'absolute', + boxSizing: 'border-box', + left: `${dimensions.left}px`, + top: `${dimensions.top}px`, + width: `${dimensions.width}px`, + height: `${dimensions.height}px`, + lineHeight: `${dimensions.height}px`, + } + + const finalStyle = Object.assign( + {}, + overridableStyles, + this.props.selected ? selectedStyle : {}, + this.props.selected && this.canMove(this.props) ? selectedAndCanMove : {}, + this.props.selected && this.canResizeLeft(this.props) + ? selectedAndCanResizeLeft + : {}, + this.props.selected && + this.canResizeLeft(this.props) && + this.state.dragging + ? selectedAndCanResizeLeftAndDragLeft + : {}, + this.props.selected && this.canResizeRight(this.props) + ? selectedAndCanResizeRight + : {}, + this.props.selected && + this.canResizeRight(this.props) && + this.state.dragging + ? selectedAndCanResizeRightAndDragRight + : {}, + props.style, + baseStyles, + ) + return finalStyle + } + + render() { + if (typeof this.props.order === 'undefined' || this.props.order === null) { + return null + } + + //todo context is not defined + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + const timelineContext = this.context?.getTimelineContext?.() + const itemContext: ItemContext = { + dimensions: this.props.dimensions!, + useResizeHandle: !!this.props.useResizeHandle, + title: this.itemTitle, + canMove: this.canMove(this.props), + canResizeLeft: this.canResizeLeft(this.props), + canResizeRight: this.canResizeRight(this.props), + selected: this.props.selected, + dragging: this.state.dragging, + dragStart: this.state.dragStart, + dragTime: this.state.dragTime, + dragGroupDelta: this.state.dragGroupDelta, + resizing: this.state.resizing, + resizeEdge: this.state.resizeEdge, + resizeStart: this.state.resizeStart, + resizeTime: this.state.resizeTime, + } + + return this.props?.itemRenderer?.({ + item: this.props.item, + timelineContext, + itemContext, + getItemProps: this.getItemProps, + getResizeProps: this.getResizeProps, + }) + } +} diff --git a/src/lib/items/Items.js b/src/lib/items/Items.tsx similarity index 71% rename from src/lib/items/Items.js rename to src/lib/items/Items.tsx index 87173f895..493acb703 100644 --- a/src/lib/items/Items.js +++ b/src/lib/items/Items.tsx @@ -1,25 +1,70 @@ -import PropTypes from 'prop-types' import React, { Component } from 'react' -import Item from './Item' +import Item, { ItemProps } from './Item' // import ItemGroup from './ItemGroup' import { _get, arraysEqual, keyBy } from '../utility/generic' import { getGroupOrders, getVisibleItems } from '../utility/calendar' +import { + TimelineGroupBase, + TimelineItemBase, + TimelineKeys, +} from '../types/main' + +type CustomItem = TimelineItemBase +type CanResize = true | false | 'left' | 'right' | 'both' +type ItemsProps = { + groups: TimelineGroupBase[] + items: CustomItem[] + // todo + dimensionItems: any[] + selected: (string | number)[] + + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + + dragSnap?: number + minResizeWidth?: number + selectedItem?: string | number + + canChangeGroup: boolean + canMove: boolean + canResize?: CanResize + canSelect?: boolean + keys: TimelineKeys + moveResizeValidator: ItemProps['moveResizeValidator'] + itemSelect: ItemProps['onSelect'] + itemDrag: ItemProps['onDrag'] + itemDrop: ItemProps['onDrop'] + itemResizing: ItemProps['onResizing'] + itemResized: ItemProps['onResized'] + onItemDoubleClick: ItemProps['onItemDoubleClick'] + onItemContextMenu: ItemProps['onContextMenu'] + itemRenderer: ItemProps['itemRenderer'] + groupTops: boolean + useResizeHandle: boolean + scrollRef: HTMLElement + // Add more props if needed +} + +type ItemsState = { + // Define your state properties here +} -const canResizeLeft = (item, canResize) => { +const canResizeLeft = (item: CustomItem, canResize?: CanResize) => { const value = _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize return value === 'left' || value === 'both' } -const canResizeRight = (item, canResize) => { +const canResizeRight = (item: CustomItem, canResize?: CanResize) => { const value = _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize return value === 'right' || value === 'both' || value === true } -export default class Items extends Component { - static propTypes = { +export default class Items extends Component { + /*static propTypes = { groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, @@ -59,9 +104,9 @@ export default class Items extends Component { static defaultProps = { selected: [] - } + }*/ - shouldComponentUpdate(nextProps) { + shouldComponentUpdate(nextProps: ItemsProps) { return !( arraysEqual(nextProps.groups, this.props.groups) && arraysEqual(nextProps.items, this.props.items) && @@ -77,49 +122,41 @@ export default class Items extends Component { nextProps.canChangeGroup === this.props.canChangeGroup && nextProps.canMove === this.props.canMove && nextProps.canResize === this.props.canResize && - nextProps.canSelect === this.props.canSelect + nextProps.canSelect === this.props.canSelect ) } - isSelected(item, itemIdKey) { + isSelected(item: CustomItem, itemIdKey: string) { if (!this.props.selected) { return this.props.selectedItem === _get(item, itemIdKey) } else { - let target = _get(item, itemIdKey) + const target = _get(item, itemIdKey) as string | number return this.props.selected.includes(target) } } - getVisibleItems(canvasTimeStart, canvasTimeEnd) { + getVisibleItems(canvasTimeStart: number, canvasTimeEnd: number) { const { keys, items } = this.props return getVisibleItems(items, canvasTimeStart, canvasTimeEnd, keys) } render() { - const { - canvasTimeStart, - canvasTimeEnd, - dimensionItems, - keys, - groups - } = this.props + const { canvasTimeStart, canvasTimeEnd, dimensionItems, keys, groups } = + this.props const { itemIdKey, itemGroupKey } = keys const groupOrders = getGroupOrders(groups, keys) - const visibleItems = this.getVisibleItems( - canvasTimeStart, - canvasTimeEnd, - groupOrders - ) + const visibleItems = this.getVisibleItems(canvasTimeStart, canvasTimeEnd) const sortedDimensionItems = keyBy(dimensionItems, 'id') return (
{visibleItems - .filter(item => sortedDimensionItems[_get(item, itemIdKey)]) - .map(item => ( + .filter((item) => sortedDimensionItems[_get(item, itemIdKey)]) + .map((item) => ( HTMLAttributes + getResizeProps: GetResizeProps +} export const defaultItemRenderer = ({ item, itemContext, getItemProps, - getResizeProps -}) => { + getResizeProps, +}: Props) => { const { left: leftResizeProps, right: rightResizeProps } = getResizeProps() return (
@@ -23,12 +31,3 @@ export const defaultItemRenderer = ({
) } - -// TODO: update this to actual prop types. Too much to change before release -// future me, forgive me. -defaultItemRenderer.propTypes = { - item: PropTypes.any, - itemContext: PropTypes.any, - getItemProps: PropTypes.any, - getResizeProps: PropTypes.any -} diff --git a/src/lib/items/styles.js b/src/lib/items/styles.ts similarity index 59% rename from src/lib/items/styles.js rename to src/lib/items/styles.ts index 7c247e882..a202ae1ac 100644 --- a/src/lib/items/styles.js +++ b/src/lib/items/styles.ts @@ -1,4 +1,4 @@ - export const overridableStyles = { +export const overridableStyles = { fontSize: 12, color: 'white', cursor: 'pointer', @@ -28,26 +28,26 @@ export const selectedAndCanResizeRightAndDragRight = { } export const leftResizeStyle = { - position: "absolute", - width: 24, - maxWidth: "20%", - minWidth: 2, - height: "100%", - top: 0, - left: 0, - cursor: "pointer", - zIndex: 88, - } + position: 'absolute', + width: 24, + maxWidth: '20%', + minWidth: 2, + height: '100%', + top: 0, + left: 0, + cursor: 'pointer', + zIndex: 88 +} - export const rightResizeStyle = { - position: "absolute", - width: 24, - maxWidth: "20%", - minWidth: 2, - height: "100%", - top: 0, - right: 0, - cursor: "pointer", - zIndex: 88, - } +export const rightResizeStyle = { + position: 'absolute', + width: 24, + maxWidth: '20%', + minWidth: 2, + height: '100%', + top: 0, + right: 0, + cursor: 'pointer', + zIndex: 88 +} diff --git a/src/lib/layout/Sidebar.tsx b/src/lib/layout/Sidebar.tsx index 0a0c2aff9..73871840e 100644 --- a/src/lib/layout/Sidebar.tsx +++ b/src/lib/layout/Sidebar.tsx @@ -1,23 +1,24 @@ -import React, { Component } from 'react' +import React, { Component, FC } from 'react' import { _get, arraysEqual } from '../utility/generic' -import {ReactCalendarGroupRendererProps, TimelineGroupBase, TimelineKeys} from "../types/main"; - - +import { + ReactCalendarGroupRendererProps, + TimelineGroupBase, + TimelineKeys, +} from '../types/main' type Props = { - groups:CustomGroup[] - width:number - height:number - groupHeights:number[] - keys:TimelineKeys, - groupRenderer:React.ComponentType; //TODO Check - isRightSidebar:boolean + groups: CustomGroup[] + width: number + height: number + groupHeights: number[] + keys: TimelineKeys + groupRenderer?: FC //TODO Check + isRightSidebar: boolean } export default class Sidebar extends Component { - - shouldComponentUpdate(nextProps:Props) { + shouldComponentUpdate(nextProps: Props) { return !( nextProps.keys === this.props.keys && nextProps.width === this.props.width && @@ -27,11 +28,16 @@ export default class Sidebar extends Component { ) } - renderGroupContent(group:TimelineGroupBase, isRightSidebar:boolean, groupTitleKey:string, groupRightTitleKey:string) { + renderGroupContent( + group: TimelineGroupBase, + isRightSidebar: boolean, + groupTitleKey: string, + groupRightTitleKey: string, + ) { if (this.props.groupRenderer) { return React.createElement(this.props.groupRenderer, { group, - isRightSidebar + isRightSidebar, }) } else { return _get(group, isRightSidebar ? groupRightTitleKey : groupTitleKey) @@ -45,24 +51,25 @@ export default class Sidebar extends Component { const sidebarStyle = { width: `${width}px`, - height: `${height}px` + height: `${height}px`, } const groupsStyle = { - width: `${width}px` + width: `${width}px`, } - let groupLines = this.props.groups.map((group, index) => { + const groupLines = this.props.groups.map((group, index) => { const elementStyle = { height: `${groupHeights[index]}px`, - lineHeight: `${groupHeights[index]}px` + lineHeight: `${groupHeights[index]}px`, } return (
@@ -70,7 +77,7 @@ export default class Sidebar extends Component { group, isRightSidebar, groupTitleKey, - groupRightTitleKey + groupRightTitleKey, )}
) diff --git a/src/lib/markers/TimelineMarkersContext.tsx b/src/lib/markers/TimelineMarkersContext.tsx index 69eb879f0..66738c1e9 100644 --- a/src/lib/markers/TimelineMarkersContext.tsx +++ b/src/lib/markers/TimelineMarkersContext.tsx @@ -2,9 +2,13 @@ import React, { PropsWithChildren } from 'react' import { noop } from '../utility/generic' import { MarkerType } from './markerType' +export type SubscribeReturn = { + unsubscribe: () => void + getMarker: () => MarkerType +} type TimelineMarkersContextValue = { markers: MarkerType[] - subscribeMarker: (newe: MarkerType) => void + subscribeMarker: (newe: MarkerType) => SubscribeReturn; updateMarker: (upd: MarkerType) => void } @@ -13,7 +17,10 @@ const defaultContextState: TimelineMarkersContextValue = { subscribeMarker: () => { // eslint-disable-next-line console.warn('default subscribe marker used') - return noop + return { + unsubscribe: noop, + getMarker: noop + } as SubscribeReturn }, updateMarker: () => { // eslint-disable-next-line @@ -36,7 +43,7 @@ export class TimelineMarkersProvider extends React.Component< PropsWithChildren, TimelineMarkersContextValue > { - handleSubscribeToMarker = (newMarker: MarkerType) => { + handleSubscribeToMarker = (newMarker: MarkerType): SubscribeReturn => { newMarker = { ...newMarker, // REVIEW: in the event that we accept id to be passed to the Marker components, this line would override those diff --git a/src/lib/markers/TimelineMarkersRenderer.js b/src/lib/markers/TimelineMarkersRenderer.tsx similarity index 97% rename from src/lib/markers/TimelineMarkersRenderer.js rename to src/lib/markers/TimelineMarkersRenderer.tsx index 4a7686974..4487bf365 100644 --- a/src/lib/markers/TimelineMarkersRenderer.js +++ b/src/lib/markers/TimelineMarkersRenderer.tsx @@ -24,7 +24,7 @@ const TimelineMarkersRenderer = () => { key={marker.id} getLeftOffsetFromDate={getLeftOffsetFromDate} renderer={marker.renderer} - interval={marker.interval} + interval={marker.interval!} /> ) case TimelineMarkerType.Custom: diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index 99fdd6640..5e04ce807 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -9,6 +9,7 @@ import { MarkerCanvasConsumer } from '../MarkerCanvasContext' const defaultRenderer = createDefaultRenderer('default-cursor-marker') type CursorMarkerWrapperProps = { + getLeftOffsetFromDate: (date: number) => number renderer: ({ styles, date, diff --git a/src/lib/markers/markerType.ts b/src/lib/markers/markerType.ts index 4484ffd76..ee1d07416 100644 --- a/src/lib/markers/markerType.ts +++ b/src/lib/markers/markerType.ts @@ -1,22 +1,20 @@ import React from 'react' -export const TimelineMarkerType = { - Today: 'Today', - Custom: 'Custom', - Cursor: 'Cursor', +export enum TimelineMarkerType { + Today = 'Today', + Custom = 'Custom', + Cursor = 'Cursor', } export type MarkerType = { - type: typeof TimelineMarkerType + date?: number, + type: TimelineMarkerType renderer: MarkerRendererType - interval: number - id: number + interval?: number + id?: number } -export type MarkerRendererType = ({ - styles, - date, -}: { +export type MarkerRendererType = ({styles,date}: { styles: React.CSSProperties date: number }) => React.JSX.Element diff --git a/src/lib/markers/public/CursorMarker.js b/src/lib/markers/public/CursorMarker.tsx similarity index 57% rename from src/lib/markers/public/CursorMarker.js rename to src/lib/markers/public/CursorMarker.tsx index ef4318272..7466d74c3 100644 --- a/src/lib/markers/public/CursorMarker.js +++ b/src/lib/markers/public/CursorMarker.tsx @@ -1,14 +1,13 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { TimelineMarkersConsumer } from '../TimelineMarkersContext' -import { TimelineMarkerType } from '../markerType' - -class CursorMarker extends React.Component { - static propTypes = { - subscribeMarker: PropTypes.func.isRequired, - children: PropTypes.func - } +import React, { Component } from 'react' +import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' +import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' +type CursorMarkerProps = { + subscribeMarker: (m: MarkerType) => SubscribeReturn + children: MarkerRendererType +} +class CursorMarker extends Component { + private unsubscribe: (() => void) | null = null componentDidMount() { const { unsubscribe } = this.props.subscribeMarker({ type: TimelineMarkerType.Cursor, @@ -29,7 +28,8 @@ class CursorMarker extends React.Component { } // TODO: turn into HOC? -const CursorMarkerWrapper = props => { + +const CursorMarkerWrapper = (props: Pick) => { return ( {({ subscribeMarker }) => ( diff --git a/src/lib/markers/public/CustomMarker.js b/src/lib/markers/public/CustomMarker.tsx similarity index 63% rename from src/lib/markers/public/CustomMarker.js rename to src/lib/markers/public/CustomMarker.tsx index bf2b0fcf3..373c90e84 100644 --- a/src/lib/markers/public/CustomMarker.js +++ b/src/lib/markers/public/CustomMarker.tsx @@ -1,17 +1,27 @@ -import React from 'react' +import React, { Component } from 'react' import PropTypes from 'prop-types' -import { TimelineMarkersConsumer } from '../TimelineMarkersContext' -import { TimelineMarkerType } from '../markerType' +import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' +import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' -class CustomMarker extends React.Component { +type noop = () => any + +type CustomMarkerProps = { + date: number + children: MarkerRendererType; + updateMarker: (marker: any) => void + subscribeMarker: (newe: MarkerType) => SubscribeReturn +} +class CustomMarker extends Component { static propTypes = { subscribeMarker: PropTypes.func.isRequired, updateMarker: PropTypes.func.isRequired, children: PropTypes.func, date: PropTypes.number.isRequired } + private unsubscribe: noop | null = null + private getMarker: noop | null = null - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: CustomMarkerProps) { if (prevProps.date !== this.props.date && this.getMarker) { const marker = this.getMarker() this.props.updateMarker({ ...marker, date: this.props.date }) @@ -40,8 +50,10 @@ class CustomMarker extends React.Component { } } +type Props = Pick + // TODO: turn into HOC? -const CustomMarkerWrapper = props => { +const CustomMarkerWrapper = (props: Props) => { return ( {({ subscribeMarker, updateMarker }) => ( diff --git a/src/lib/markers/public/TimelineMarkers.js b/src/lib/markers/public/TimelineMarkers.ts similarity index 78% rename from src/lib/markers/public/TimelineMarkers.js rename to src/lib/markers/public/TimelineMarkers.ts index bbc6377b6..bf9538740 100644 --- a/src/lib/markers/public/TimelineMarkers.js +++ b/src/lib/markers/public/TimelineMarkers.ts @@ -12,8 +12,13 @@ */ +import { ReactNode } from 'react' + +type Props = { + children?: ReactNode +} // If we decide to pass in props to TimelineMarkers, then yes, this is necessary. -const TimelineMarkers = props => { +const TimelineMarkers = (props: Props) => { return props.children || null } diff --git a/src/lib/row/GroupRow.js b/src/lib/row/GroupRow.js deleted file mode 100644 index 65aaa7ff3..000000000 --- a/src/lib/row/GroupRow.js +++ /dev/null @@ -1,47 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import PreventClickOnDrag from '../interaction/PreventClickOnDrag' - -class GroupRow extends Component { - static propTypes = { - onClick: PropTypes.func.isRequired, - onDoubleClick: PropTypes.func.isRequired, - onContextMenu: PropTypes.func.isRequired, - isEvenRow: PropTypes.bool.isRequired, - style: PropTypes.object.isRequired, - clickTolerance: PropTypes.number.isRequired, - group: PropTypes.object.isRequired, - horizontalLineClassNamesForGroup: PropTypes.func - } - - render() { - const { - onContextMenu, - onDoubleClick, - isEvenRow, - style, - onClick, - clickTolerance, - horizontalLineClassNamesForGroup, - group - } = this.props - - let classNamesForGroup = []; - if (horizontalLineClassNamesForGroup) { - classNamesForGroup = horizontalLineClassNamesForGroup(group); - } - - return ( - -
- - ) - } -} - -export default GroupRow diff --git a/src/lib/row/GroupRow.tsx b/src/lib/row/GroupRow.tsx new file mode 100644 index 000000000..88d40fd7b --- /dev/null +++ b/src/lib/row/GroupRow.tsx @@ -0,0 +1,49 @@ +import React, { Component, MouseEventHandler } from 'react' +import PreventClickOnDrag from '../interaction/PreventClickOnDrag' + +interface GroupRowProps { + onClick: MouseEventHandler + onDoubleClick?: MouseEventHandler + onContextMenu?: MouseEventHandler + isEvenRow?: boolean + style?: React.CSSProperties + clickTolerance: number + group: T + horizontalLineClassNamesForGroup?: (group: T) => string[] +} + +class GroupRow extends Component> { + render() { + const { + onContextMenu, + onDoubleClick, + isEvenRow, + style, + onClick, + clickTolerance, + horizontalLineClassNamesForGroup, + group, + } = this.props + + let classNamesForGroup: string[] = [] + if (horizontalLineClassNamesForGroup) { + classNamesForGroup = horizontalLineClassNamesForGroup(group) + } + + return ( + +
+ + ) + } +} + +export default GroupRow diff --git a/src/lib/row/GroupRows.js b/src/lib/row/GroupRows.tsx similarity index 55% rename from src/lib/row/GroupRows.js rename to src/lib/row/GroupRows.tsx index b7b1ae1d4..6c0134a25 100644 --- a/src/lib/row/GroupRows.js +++ b/src/lib/row/GroupRows.tsx @@ -1,21 +1,24 @@ -import PropTypes from 'prop-types' import React, { Component } from 'react' import GroupRow from './GroupRow' -export default class GroupRows extends Component { - static propTypes = { - canvasWidth: PropTypes.number.isRequired, - lineCount: PropTypes.number.isRequired, - groupHeights: PropTypes.array.isRequired, - onRowClick: PropTypes.func.isRequired, - onRowDoubleClick: PropTypes.func.isRequired, - clickTolerance: PropTypes.number.isRequired, - groups: PropTypes.array.isRequired, - horizontalLineClassNamesForGroup: PropTypes.func, - onRowContextClick: PropTypes.func.isRequired, - } +export type RowClickEvent = ( + evt: React.MouseEvent, + index: number, +) => void - shouldComponentUpdate(nextProps) { +export interface GroupRowsProps { + canvasWidth: number + lineCount: number + groupHeights: number[] + onRowClick: RowClickEvent + onRowDoubleClick: RowClickEvent + clickTolerance: number + groups: T[] + horizontalLineClassNamesForGroup?: (group: T) => string[] + onRowContextClick: RowClickEvent +} +export default class GroupRows extends Component> { + shouldComponentUpdate(nextProps: GroupRowsProps) { return !( nextProps.canvasWidth === this.props.canvasWidth && nextProps.lineCount === this.props.lineCount && @@ -36,24 +39,24 @@ export default class GroupRows extends Component { horizontalLineClassNamesForGroup, onRowContextClick, } = this.props - let lines = [] + const lines = [] for (let i = 0; i < lineCount; i++) { lines.push( onRowContextClick(evt, i)} - onClick={evt => onRowClick(evt, i)} - onDoubleClick={evt => onRowDoubleClick(evt, i)} + onContextMenu={(evt) => onRowContextClick(evt, i)} + onClick={(evt) => onRowClick(evt, i)} + onDoubleClick={(evt) => onRowDoubleClick(evt, i)} key={`horizontal-line-${i}`} isEvenRow={i % 2 === 0} group={groups[i]} horizontalLineClassNamesForGroup={horizontalLineClassNamesForGroup} style={{ width: `${canvasWidth}px`, - height: `${groupHeights[i]}px` + height: `${groupHeights[i]}px`, }} - /> + />, ) } diff --git a/src/lib/scroll/ScrollElement.js b/src/lib/scroll/ScrollElement.tsx similarity index 57% rename from src/lib/scroll/ScrollElement.js rename to src/lib/scroll/ScrollElement.tsx index 5f79ae6cd..a0a2c744c 100644 --- a/src/lib/scroll/ScrollElement.js +++ b/src/lib/scroll/ScrollElement.tsx @@ -1,24 +1,41 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' +import { + Component, + CSSProperties, + MouseEventHandler, + ReactNode, + TouchEventHandler, +} from 'react' import { getParentPosition } from '../utility/dom-helpers' -class ScrollElement extends Component { - static propTypes = { - children: PropTypes.element.isRequired, - width: PropTypes.number.isRequired, - height: PropTypes.number.isRequired, - traditionalZoom: PropTypes.bool.isRequired, - scrollRef: PropTypes.func.isRequired, - isInteractingWithItem: PropTypes.bool.isRequired, - onZoom: PropTypes.func.isRequired, - onWheelZoom: PropTypes.func.isRequired, - onScroll: PropTypes.func.isRequired - } +type Props = { + children: ReactNode + width: number + height: number + traditionalZoom: boolean + scrollRef: (e: HTMLDivElement) => void + isInteractingWithItem: boolean + onZoom: (n: number, m: number) => void + onWheelZoom: (speed: number, xPosition: number, deltaY: number) => void + onScroll: (n: number) => void +} - constructor() { - super() +type State = { + isDragging: boolean +} + +class ScrollElement extends Component { + scrollComponent: HTMLDivElement | null = null + private dragStartPosition: number | null = null + private dragLastPosition: number | null = null + private lastTouchDistance: number | null = null + private singleTouchStart: { x: number; y: number; screenY: number } | null = + null + private lastSingleTouch: { x: number; y: number; screenY: number } | null = + null + constructor(props: Props) { + super(props) this.state = { - isDragging: false + isDragging: false, } } @@ -26,28 +43,25 @@ class ScrollElement extends Component { * needed to handle scrolling with trackpad */ handleScroll = () => { - const scrollX = this.scrollComponent.scrollLeft + const scrollX = this.scrollComponent!.scrollLeft this.props.onScroll(scrollX) } - refHandler = el => { + refHandler = (el: HTMLDivElement) => { this.scrollComponent = el this.props.scrollRef(el) - if(el){ - el.addEventListener('wheel', this.handleWheel, {passive: false}); + if (el) { + el.addEventListener('wheel', this.handleWheel, { passive: false }) } } - - - handleWheel = e => { - const { traditionalZoom } = this.props - + handleWheel = (e: WheelEvent) => { + //const { traditionalZoom } = this.props // zoom in the time dimension if (e.ctrlKey || e.metaKey || e.altKey) { e.preventDefault() - const parentPosition = getParentPosition(e.currentTarget) + const parentPosition = getParentPosition(e.currentTarget as HTMLElement) const xPosition = e.clientX - parentPosition.x const speed = e.ctrlKey ? 10 : e.metaKey ? 3 : 1 @@ -57,26 +71,30 @@ class ScrollElement extends Component { } else if (e.shiftKey) { e.preventDefault() // shift+scroll event from a touchpad has deltaY property populated; shift+scroll event from a mouse has deltaX - this.props.onScroll(this.scrollComponent.scrollLeft + (e.deltaY || e.deltaX)) + this.props.onScroll( + this.scrollComponent!.scrollLeft + (e.deltaY || e.deltaX), + ) // no modifier pressed? we prevented the default event, so scroll or zoom as needed } } - handleMouseDown = e => { + handleMouseDown: MouseEventHandler = (e) => { if (e.button === 0) { this.dragStartPosition = e.pageX this.dragLastPosition = e.pageX this.setState({ - isDragging: true + isDragging: true, }) } } - handleMouseMove = e => { + handleMouseMove: MouseEventHandler = (e) => { // this.props.onMouseMove(e) //why is interacting with item important? if (this.state.isDragging && !this.props.isInteractingWithItem) { - this.props.onScroll(this.scrollComponent.scrollLeft + this.dragLastPosition - e.pageX) + this.props.onScroll( + this.scrollComponent!.scrollLeft + this.dragLastPosition! - e.pageX, + ) this.dragLastPosition = e.pageX } } @@ -86,7 +104,7 @@ class ScrollElement extends Component { this.dragLastPosition = null this.setState({ - isDragging: false + isDragging: false, }) } @@ -95,24 +113,24 @@ class ScrollElement extends Component { this.dragStartPosition = null this.dragLastPosition = null this.setState({ - isDragging: false + isDragging: false, }) } - handleTouchStart = e => { + handleTouchStart: TouchEventHandler = (e) => { if (e.touches.length === 2) { e.preventDefault() this.lastTouchDistance = Math.abs( - e.touches[0].screenX - e.touches[1].screenX + e.touches[0].screenX - e.touches[1].screenX, ) this.singleTouchStart = null this.lastSingleTouch = null } else if (e.touches.length === 1) { e.preventDefault() - let x = e.touches[0].clientX - let y = e.touches[0].clientY + const x = e.touches[0].clientX + const y = e.touches[0].clientY this.lastTouchDistance = null this.singleTouchStart = { x: x, y: y, screenY: window.pageYOffset } @@ -120,7 +138,7 @@ class ScrollElement extends Component { } } - handleTouchMove = e => { + handleTouchMove: TouchEventHandler = (e) => { const { isInteractingWithItem, width, onZoom } = this.props if (isInteractingWithItem) { e.preventDefault() @@ -128,9 +146,11 @@ class ScrollElement extends Component { } if (this.lastTouchDistance && e.touches.length === 2) { e.preventDefault() - let touchDistance = Math.abs(e.touches[0].screenX - e.touches[1].screenX) - let parentPosition = getParentPosition(e.currentTarget) - let xPosition = + const touchDistance = Math.abs( + e.touches[0].screenX - e.touches[1].screenX, + ) + const parentPosition = getParentPosition(e.currentTarget as HTMLElement) + const xPosition = (e.touches[0].screenX + e.touches[1].screenX) / 2 - parentPosition.x if (touchDistance !== 0 && this.lastTouchDistance !== 0) { onZoom(this.lastTouchDistance / touchDistance, xPosition / width) @@ -138,21 +158,21 @@ class ScrollElement extends Component { } } else if (this.lastSingleTouch && e.touches.length === 1) { e.preventDefault() - let x = e.touches[0].clientX - let y = e.touches[0].clientY - let deltaX = x - this.lastSingleTouch.x - let deltaX0 = x - this.singleTouchStart.x - let deltaY0 = y - this.singleTouchStart.y - this.lastSingleTouch = { x: x, y: y } - let moveX = Math.abs(deltaX0) * 3 > Math.abs(deltaY0) - let moveY = Math.abs(deltaY0) * 3 > Math.abs(deltaX0) + const x = e.touches[0].clientX + const y = e.touches[0].clientY + const deltaX = x - this.lastSingleTouch.x + const deltaX0 = x - this.singleTouchStart!.x + const deltaY0 = y - this.singleTouchStart!.y + this.lastSingleTouch = { x: x, y: y, screenY: window.pageYOffset } + const moveX = Math.abs(deltaX0) * 3 > Math.abs(deltaY0) + const moveY = Math.abs(deltaY0) * 3 > Math.abs(deltaX0) if (deltaX !== 0 && moveX) { - this.props.onScroll(this.scrollComponent.scrollLeft - deltaX) + this.props.onScroll(this.scrollComponent!.scrollLeft - deltaX) } if (moveY) { window.scrollTo( window.pageXOffset, - this.singleTouchStart.screenY - deltaY0 + this.singleTouchStart!.screenY - deltaY0, ) } } @@ -168,9 +188,9 @@ class ScrollElement extends Component { } } - componentWillUnmount(){ - if(this.scrollComponent){ - this.scrollComponent.removeEventListener('wheel', this.handleWheel); + componentWillUnmount() { + if (this.scrollComponent) { + this.scrollComponent.removeEventListener('wheel', this.handleWheel) } } @@ -178,11 +198,11 @@ class ScrollElement extends Component { const { width, height, children } = this.props const { isDragging } = this.state - const scrollComponentStyle = { + const scrollComponentStyle: CSSProperties = { width: `${width}px`, height: `${height + 20}px`, //20px to push the scroll element down off screen...? cursor: isDragging ? 'move' : 'default', - position: 'relative' + position: 'relative', } return ( @@ -202,7 +222,6 @@ class ScrollElement extends Component { > {children}
- ) } } diff --git a/src/lib/timeline/TimelineStateContext.tsx b/src/lib/timeline/TimelineStateContext.tsx index b2d5fe898..82adac9b0 100644 --- a/src/lib/timeline/TimelineStateContext.tsx +++ b/src/lib/timeline/TimelineStateContext.tsx @@ -15,7 +15,7 @@ import { Dayjs } from 'dayjs' */ /* eslint-disable no-console */ -const defaultContextState: timelineContextType = { +const defaultContextState: TimelineContextType = { getTimelineState: () => { console.warn('"getTimelineState" default func is being used') return {} as TimelineContextValue @@ -35,9 +35,9 @@ const defaultContextState: timelineContextType = { /* eslint-enable */ const { Consumer, Provider } = - React.createContext(defaultContextState) + React.createContext(defaultContextState) -type TimelineStarteProps = { +type TimelineStartProps = { visibleTimeStart: number visibleTimeEnd: number canvasTimeStart: number @@ -47,7 +47,7 @@ type TimelineStarteProps = { timelineUnit: string //todo timelineWidth: number } -type timelineContextType = { +type TimelineContextType = { getTimelineState: () => TimelineContextValue getLeftOffsetFromDate: (date: number) => number getDateFromLeftOffsetPosition: (leftOffset: number) => number @@ -55,14 +55,14 @@ type timelineContextType = { } type TimelineState = { - timelineContext: timelineContextType + timelineContext: TimelineContextType } export class TimelineStateProvider extends React.Component< - PropsWithChildren, + PropsWithChildren, TimelineState > { - constructor(props: any) { + constructor(props: PropsWithChildren) { super(props) this.state = { diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 95c2bccfa..9ece6e8fb 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -1,19 +1,32 @@ -import { Dayjs } from 'dayjs' -import * as React from 'react' -import reactCalendarTimeline from '../../../index' +import { Dayjs, UnitType } from 'dayjs' +import { + ReactElement, + ReactNode, + CSSProperties, + HTMLAttributes, + MouseEventHandler, + ReactEventHandler, + Ref, + Component, + TouchEventHandler, +} from 'react' +// import reactCalendarTimeline from '../../../index' import { Dimension, ItemDimension } from './dimension' -import { number } from 'prop-types' +import { ReactElementLike, string } from 'prop-types' +import { ItemProps, ResizeEdge } from '../items/Item' +import { SelectUnits } from '../utility/calendar' export type Id = number | string export interface TimelineGroupBase { id: Id - title: React.ReactNode - rightTitle?: React.ReactNode | undefined + title: ReactNode + rightTitle?: ReactNode | undefined height?: number | undefined stackItems?: boolean | undefined dimensions?: Dimension | undefined } + export type GroupOrders = Record< Id, { index: number; group: TimelineGroupBase } @@ -28,15 +41,15 @@ export type GroupedItem = { export interface TimelineItemBase { id: Id group: Id - title?: React.ReactNode | undefined + title?: ReactNode | undefined start_time: DateType end_time: DateType canMove?: boolean | undefined canResize?: boolean | 'left' | 'right' | 'both' | undefined canChangeGroup?: boolean | undefined className?: string | undefined - style?: React.CSSProperties | undefined - itemProps?: React.HTMLAttributes | undefined + style?: CSSProperties | undefined + itemProps?: HTMLAttributes isOverlay?: boolean | undefined dimensions?: Dimension | undefined } @@ -55,7 +68,7 @@ export interface TimelineContext { canvasTimeStart: number canvasTimeEnd: number canvasWidth: number - timelineUnit: string + timelineUnit: SelectUnits } export type GroupStack = { @@ -63,6 +76,7 @@ export type GroupStack = { verticalMargin: number itemTop: number } + export interface ItemContext { dimensions: { collisionLeft: number @@ -91,14 +105,13 @@ export interface ItemContext { dragStart: { x: number y: number - } - dragTime: number - dragGroupDelta: number + } | null + dragTime: number | null + dragGroupDelta: number | null resizing: boolean - resizeEdge: 'left' | 'right' - resizeStart: number - resizeTime: number - width: boolean + resizeEdge: 'left' | 'right' | null + resizeStart: number | null + resizeTime: number | null } export interface TimeFormat { @@ -119,15 +132,15 @@ export interface LabelFormat { export interface ItemRendererGetItemPropsReturnType { key: Id - ref: React.Ref + ref: Ref className: string - onMouseDown: React.MouseEventHandler - onMouseUp: React.MouseEventHandler - onTouchStart: React.TouchEventHandler - onTouchEnd: React.TouchEventHandler - onDoubleClick: React.MouseEventHandler - onContextMenu: React.ReactEventHandler - style: React.CSSProperties + onMouseDown: MouseEventHandler + onMouseUp: MouseEventHandler + onTouchStart: TouchEventHandler + onTouchEnd: TouchEventHandler + onDoubleClick: MouseEventHandler + onContextMenu: ReactEventHandler + style: CSSProperties } export type GetItemsProps = Partial< @@ -137,23 +150,23 @@ export type GetItemsProps = Partial< export interface ItemRendererGetResizePropsReturnType { left?: | { - ref: React.Ref + ref: Ref className: string - style: React.CSSProperties + style: CSSProperties } | undefined right?: | { - ref: React.Ref + ref: Ref className: string - style: React.CSSProperties + style: CSSProperties } | undefined } export type GetResizeProps = { - leftStyle?: React.CSSProperties | undefined - rightStyle?: React.CSSProperties | undefined + leftStyle?: CSSProperties | undefined + rightStyle?: CSSProperties | undefined leftClassName?: string | undefined rightClassName?: string | undefined } @@ -165,15 +178,15 @@ export interface ReactCalendarItemRendererProps< itemContext: ItemContext getItemProps: (props: GetItemsProps) => { key: Id - ref: React.Ref + ref: Ref className: string - onMouseDown: React.MouseEventHandler - onMouseUp: React.MouseEventHandler - onTouchStart: React.TouchEventHandler - onTouchEnd: React.TouchEventHandler - onDoubleClick: React.MouseEventHandler - onContextMenu: React.ReactEventHandler - style: React.CSSProperties + onMouseDown: MouseEventHandler + onMouseUp: MouseEventHandler + onTouchStart: TouchEventHandler + onTouchEnd: TouchEventHandler + onDoubleClick: MouseEventHandler + onContextMenu: ReactEventHandler + style: CSSProperties } getResizeProps: ( propsOverride?: GetResizeProps, @@ -200,7 +213,7 @@ export interface OnItemDragObjectMove extends OnItemDragObjectBase { export interface OnItemDragObjectResize extends OnItemDragObjectBase { eventType: 'resize' - edge?: 'left' | 'right' | undefined + edge?: ResizeEdge | undefined } export interface TimelineKeys { @@ -214,6 +227,7 @@ export interface TimelineKeys { itemTimeStartKey: string itemTimeEndKey: string } + export type dateType = number //| undefined; export interface TimelineTimeSteps { @@ -225,42 +239,46 @@ export interface TimelineTimeSteps { year: number } -export class TimelineMarkers extends React.Component {} +export class TimelineMarkers extends Component {} export interface CustomMarkerChildrenProps { - styles: React.CSSProperties + styles: CSSProperties date: number } + export interface MarkerProps { date: Date | number - children?: ((props: CustomMarkerChildrenProps) => React.ReactNode) | undefined + children?: ((props: CustomMarkerChildrenProps) => ReactNode) | undefined } -export class CustomMarker extends React.Component {} +export class CustomMarker extends Component {} export interface TodayMarkerProps extends MarkerProps { interval?: number | undefined } -export class TodayMarker extends React.Component {} + +export class TodayMarker extends Component {} export type CursorMarkerProps = Omit -export class CursorMarker extends React.Component {} + +export class CursorMarker extends Component {} export interface TimelineHeadersProps { - children?: React.ReactNode - style?: React.CSSProperties | undefined + children?: ReactNode + style?: CSSProperties | undefined className?: string | undefined - calendarHeaderStyle?: React.CSSProperties | undefined + calendarHeaderStyle?: CSSProperties | undefined calendarHeaderClassName?: string | undefined - headerRef?: React.Ref | undefined + headerRef?: Ref | undefined } -export class TimelineHeaders extends React.Component {} + +export class TimelineHeaders extends Component {} export type TimelineHeaderProps = TimelineHeadersProps export interface SidebarHeaderChildrenFnProps { - getRootProps: (propsToOverride?: { style: React.CSSProperties }) => { - style: React.CSSProperties + getRootProps: (propsToOverride?: { style: CSSProperties }) => { + style: CSSProperties } data: Data } @@ -268,9 +286,10 @@ export interface SidebarHeaderChildrenFnProps { export interface SidebarHeaderProps { variant?: 'left' | 'right' | undefined headerData?: Data | undefined - children: (props: SidebarHeaderChildrenFnProps) => React.ReactNode + children: (props: SidebarHeaderChildrenFnProps) => ReactNode } -export class SidebarHeader extends React.Component< + +export class SidebarHeader extends Component< SidebarHeaderProps > {} @@ -285,77 +304,55 @@ export type Unit = | 'year' export interface IntervalContext { - interval: { - startTime: number - endTime: number - labelWidth: number - left: number - } + interval: Interval intervalText: string } + export interface GetIntervalProps { interval?: Interval | undefined - style?: React.CSSProperties | undefined - onClick?: React.MouseEventHandler | undefined + style?: CSSProperties | undefined + onClick?: MouseEventHandler | undefined } + export interface IntervalRenderer { intervalContext: IntervalContext - getIntervalProps: ( - props?: GetIntervalProps, - ) => Required & { key: string | number } + getIntervalProps: (props?: GetIntervalProps) => HTMLAttributes data?: Data | undefined } -export interface DateHeaderProps { - style?: React.CSSProperties | undefined - className?: string | undefined - unit?: Unit | 'primaryHeader' | undefined - labelFormat?: - | string - | (( - [startTime, endTime]: [Dayjs, Dayjs], - unit: Unit, - labelWidth: number, - ) => string) - | undefined - intervalRenderer?: - | ((props?: IntervalRenderer) => React.ReactNode) - | undefined - headerData?: Data | undefined - children?: - | ((props: SidebarHeaderChildrenFnProps) => React.ReactNode) - | undefined - height?: number | undefined -} -export class DateHeader extends React.Component< - DateHeaderProps -> {} + export interface Interval { startTime: Dayjs endTime: Dayjs + labelWidth: number + left: number } + export interface HeaderContext { intervals: Array<{ startTime: Dayjs; endTime: Dayjs }> unit: string } + export interface CustomHeaderPropsChildrenFnProps { timelineContext: TimelineContext headerContext: HeaderContext getIntervalProps: ( props?: GetIntervalProps, ) => Required & { key: string | number } - getRootProps: (propsToOverride?: { style: React.CSSProperties }) => { - style: React.CSSProperties + getRootProps: (propsToOverride?: { style: CSSProperties }) => { + style: CSSProperties } showPeriod: (startDate: Dayjs | number, endDate: Dayjs | number) => void data: Data } + export interface CustomHeaderProps { unit?: Unit | undefined headerData?: Data | undefined height?: number | undefined - children: (props?: CustomHeaderPropsChildrenFnProps) => React.ReactNode + children: (props?: CustomHeaderPropsChildrenFnProps) => ReactNode } -export class CustomHeader extends React.Component< + +export class CustomHeader extends Component< CustomHeaderProps > {} @@ -366,4 +363,13 @@ export class CustomHeader extends React.Component< // export default class ReactCalendarTimeline< // CustomItem extends TimelineItemBase = TimelineItemBase, // CustomGroup extends TimelineGroupBase = TimelineGroupBase, -// > extends React.Component> {} +// > extends Component> {} + +export type ElementWithSecret = ReactElementLike & { + props: { + variant: string + } + type: { + secretKey: string + } +} diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 3aa1786a0..340628cfd 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -1,4 +1,4 @@ -import dayjs, { Dayjs } from 'dayjs' +import dayjs, { Dayjs, UnitType } from 'dayjs' import { _get } from './generic' import { Dimension, ItemDimension } from '../types/dimension' import { @@ -76,19 +76,19 @@ export function calculateTimeForXPosition( export function iterateTimes( start: number, end: number, - unit: dayjs.UnitType, + unit: UnitType, timeSteps: Record, callback: (time: Dayjs, nextTime: Dayjs) => void, ) { let time = dayjs(start).startOf(unit) if (timeSteps[unit] && timeSteps[unit] > 1) { - let value = time.get(unit) + const value = time.get(unit) time.set(unit, value - (value % timeSteps[unit])) } while (time.valueOf() < end) { - let nextTime = dayjs(time).add( + const nextTime = dayjs(time).add( timeSteps[unit] || 1, unit as dayjs.ManipulateType, ) @@ -123,7 +123,7 @@ export function getMinUnit( // units has a natural progression to the other. i.e. a year is 12 months // a month is 24 days, a day is 24 hours. // with weeks this isnt the case so weeks needs to be handled specially - let timeDividers: Record = { + const timeDividers: Record = { second: 1000, minute: 60, hour: 60, @@ -173,19 +173,29 @@ export function getMinUnit( return minUnit } -export function getNextUnit(unit: string) { - let nextUnits: Record = { - second: 'minute', - minute: 'hour', - hour: 'day', - day: 'month', - month: 'year', - year: 'year', - } - if (!nextUnits[unit]) { - throw new Error(`unit ${unit} in not acceptable`) +export type SelectUnits = + | 'second' + | 'minute' + | 'hour' + | 'day' + | 'month' + | 'year' +export type SelectUnitsRes = Exclude + +export const NEXT_UNITS: Record = { + second: 'minute', + minute: 'hour', + hour: 'day', + day: 'month', + month: 'year', + year: 'year', +} + +export function getNextUnit(unit: SelectUnits): SelectUnitsRes { + if (!NEXT_UNITS[unit]) { + throw new Error(`unit ${unit} is not acceptable`) } - return nextUnits[unit] + return NEXT_UNITS[unit] } /** @@ -286,11 +296,13 @@ export function getGroupOrders( ) { const { groupIdKey } = keys - let groupOrders: GroupOrders = {} + const groupOrders: GroupOrders = {} for (let i = 0; i < groups.length; i++) { - // @ts-ignore //todo - groupOrders[_get(groups[i], groupIdKey)] = { index: i, group: groups[i] } + groupOrders[_get(groups[i], groupIdKey) as string] = { + index: i, + group: groups[i], + } } return groupOrders @@ -305,8 +317,8 @@ export function getGroupedItems( items: ItemDimension[], groupOrders: GroupOrders, ) { - var groupedItems: Record = {} - var keys = Object.keys(groupOrders) + const groupedItems: Record = {} + const keys = Object.keys(groupOrders) // Initialize with result object for each group for (let i = 0; i < keys.length; i++) { const groupOrder = groupOrders[keys[i]] @@ -335,7 +347,7 @@ export function getGroupedItems( export function getVisibleItems< CustomItem extends TimelineItemBase = TimelineItemBase, - CustomGroup extends TimelineGroupBase = TimelineGroupBase, + // CustomGroup extends TimelineGroupBase = TimelineGroupBase, >( items: CustomItem[], canvasTimeStart: number, @@ -361,7 +373,7 @@ export function collision( collisionPadding: number = EPSILON, ) { // 2d collisions detection - https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection - var verticalMargin = 0 + const verticalMargin = 0 return ( a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && @@ -386,7 +398,7 @@ export function groupStack( ): GroupStack { // calculate non-overlapping positions let curHeight = groupHeight - let verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 + const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 if ( item.dimensions && item.dimensions.stack && @@ -394,11 +406,11 @@ export function groupStack( ) { item.dimensions.top = groupTop + verticalMargin curHeight = Math.max(curHeight, lineHeight) + let collidingItem = null do { - var collidingItem = null //Items are placed from i=0 onwards, only check items with index < i - for (var j = itemIndex - 1, jj = 0; j >= jj; j--) { - var other = group[j] + for (let j = itemIndex - 1, jj = 0; j >= jj; j--) { + const other = group[j] if ( other.dimensions && other.dimensions.top !== null && @@ -443,7 +455,7 @@ export function groupNoStack( groupHeight: number, groupTop: number, ): GroupStack { - let verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 + const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 if (item.dimensions && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin groupHeight = Math.max(groupHeight, lineHeight) @@ -468,12 +480,12 @@ export function stackAll( lineHeight: number, stackItems: boolean, ) { - var groupHeights: number[] = [] - var groupTops = [] + const groupHeights: number[] = [] + const groupTops = [] - var groupedItems = getGroupedItems(itemsDimensions, groupOrders) + const groupedItems = getGroupedItems(itemsDimensions, groupOrders) - for (var index in groupedItems) { + for (const index in groupedItems) { const groupItems = groupedItems[index] const { items: itemsDimensions, group } = groupItems const groupTop = sum(groupHeights) @@ -517,11 +529,11 @@ export function stackGroup( lineHeight: number, groupTop: number, ) { - var groupHeight = 0 - var verticalMargin = 0 + let groupHeight = 0 + let verticalMargin = 0 // Find positions for each item in group for (let itemIndex = 0; itemIndex < itemsDimensions.length; itemIndex++) { - let r = isGroupStacked + const r = isGroupStacked ? groupStack( lineHeight, itemsDimensions[itemIndex], @@ -614,7 +626,7 @@ export function stackTimelineItems< // Get the order of groups based on their id key const groupOrders = getGroupOrders(groups, keys) - let dimensionItems = visibleItemsWithInteraction + const dimensionItems = visibleItemsWithInteraction .map((item) => getItemDimensions({ item, @@ -678,7 +690,7 @@ export function getItemDimensions>({ itemHeightRatio: number }) { const itemId = _get(item, keys.itemIdKey) - let dimension = calculateDimensions({ + const dimension = calculateDimensions({ itemTimeStart: _get(item, keys.itemTimeStartKey), itemTimeEnd: _get(item, keys.itemTimeEndKey), canvasTimeStart, diff --git a/src/lib/utility/dom-helpers.js b/src/lib/utility/dom-helpers.js deleted file mode 100644 index 127355f6c..000000000 --- a/src/lib/utility/dom-helpers.js +++ /dev/null @@ -1,49 +0,0 @@ -// TODO: can we use getBoundingClientRect instead?? -// last place this is used is in "handleWheel" in ScrollElement -export function getParentPosition(element) { - var xPosition = 0 - var yPosition = 0 - var first = true - - while (element) { - if ( - !element.offsetParent && - element.tagName === 'BODY' && - element.scrollLeft === 0 && - element.scrollTop === 0 - ) { - element = document.scrollingElement || element - } - xPosition += - element.offsetLeft - (first ? 0 : element.scrollLeft) + element.clientLeft - yPosition += - element.offsetTop - (first ? 0 : element.scrollTop) + element.clientTop - element = element.offsetParent - first = false - } - return { x: xPosition, y: yPosition } -} - -export function getSumScroll(node) { - if (node === document.body) { - return {scrollLeft: 0, scrollTop: 0} - } else { - const parent = getSumScroll(node.parentNode) - return ({ - scrollLeft: node.scrollLeft + parent.scrollLeft, - scrollTop: node.scrollTop + parent.scrollTop - }) - } -} - -export function getSumOffset(node) { - if (node === document.body || !node.offsetParent) { - return {offsetLeft: 0, offsetTop: 0} - } else { - const parent = getSumOffset(node.offsetParent) - return ({ - offsetLeft: node.offsetLeft + parent.offsetLeft, - offsetTop: node.offsetTop + parent.offsetTop - }) - } -} diff --git a/src/lib/utility/dom-helpers.ts b/src/lib/utility/dom-helpers.ts new file mode 100644 index 000000000..58539f869 --- /dev/null +++ b/src/lib/utility/dom-helpers.ts @@ -0,0 +1,59 @@ +// TODO: can we use getBoundingClientRect instead?? +// last place this is used is in "handleWheel" in ScrollElement +export function getParentPosition(element: HTMLElement) { + let xPosition = 0 + let yPosition = 0 + let first = true + + while (element) { + if ( + !element.offsetParent && + element.tagName === 'BODY' && + element.scrollLeft === 0 && + element.scrollTop === 0 + ) { + element = document.scrollingElement as HTMLElement || element + } + xPosition += + element.offsetLeft - (first ? 0 : element.scrollLeft) + element.clientLeft + yPosition += + element.offsetTop - (first ? 0 : element.scrollTop) + element.clientTop + element = element.offsetParent as HTMLElement + first = false + } + return { x: xPosition, y: yPosition } +} + +interface ScrollPosition { + scrollLeft: number; + scrollTop: number; +} + +export function getSumScroll(node: HTMLElement): ScrollPosition { + if (node === document.body) { + return { scrollLeft: 0, scrollTop: 0 }; + } else { + const parent = getSumScroll(node.parentNode as HTMLElement); + return { + scrollLeft: node.scrollLeft + parent.scrollLeft, + scrollTop: node.scrollTop + parent.scrollTop, + }; + } +} + +interface OffsetPosition { + offsetLeft: number; + offsetTop: number; +} + +export function getSumOffset(node: HTMLElement): OffsetPosition { + if (node === document.body || !node.offsetParent) { + return { offsetLeft: 0, offsetTop: 0 }; + } else { + const parent = getSumOffset(node.offsetParent as HTMLElement); + return { + offsetLeft: node.offsetLeft + parent.offsetLeft, + offsetTop: node.offsetTop + parent.offsetTop, + }; + } +} diff --git a/src/lib/utility/events.js b/src/lib/utility/events.js deleted file mode 100644 index 66856153f..000000000 --- a/src/lib/utility/events.js +++ /dev/null @@ -1,6 +0,0 @@ -export function composeEvents(...fns) { - return (event, ...args) => { - event.preventDefault() - fns.forEach(fn => fn && fn(event, ...args)) - } -} \ No newline at end of file diff --git a/src/lib/utility/events.ts b/src/lib/utility/events.ts new file mode 100644 index 000000000..ddc302df7 --- /dev/null +++ b/src/lib/utility/events.ts @@ -0,0 +1,9 @@ +import { SyntheticEvent } from 'react' + +type Fn = (event: T, ...args: any) => void +export function composeEvents>(...fns: (Fn | undefined)[]) { + return (event: T, ...args: any ) => { + event.preventDefault() + fns.forEach(fn => fn && fn(event, ...args)) + } +} diff --git a/src/lib/utility/generic.js b/src/lib/utility/generic.js deleted file mode 100644 index ab48b35aa..000000000 --- a/src/lib/utility/generic.js +++ /dev/null @@ -1,36 +0,0 @@ -import isEqual from 'lodash/isEqual' - -// so we could use both immutable.js objects and regular objects - -export function _get(object, key) { - return typeof object.get === 'function' ? object.get(key) : object[key] -} - -export function _length(object) { - return typeof object.count === 'function' ? object.count() : object.length -} - -export function arraysEqual(array1, array2) { - return ( - _length(array1) === _length(array2) && - array1.every((element, index) => { - return element === _get(array2, index) - }) - ) -} - -export function deepObjectCompare(obj1, obj2) { - return isEqual(obj1, obj2) -} - -export function keyBy(value, key) { - let obj = {} - - value.forEach(function(element) { - obj[element[key]] = element - }) - - return obj -} - -export function noop() {} diff --git a/src/lib/utility/generic.ts b/src/lib/utility/generic.ts new file mode 100644 index 000000000..4dd6b504c --- /dev/null +++ b/src/lib/utility/generic.ts @@ -0,0 +1,45 @@ +import isEqual from 'lodash/isEqual' + +// so we could use both immutable.js objects and regular objects + +type GetObject = { + get?: (key: string) => any + [key: string]: any +} + +export function _get(object: GetObject, key: string) { + return typeof object.get === 'function' ? object.get(key) : object[key] +} + +interface CountObject { + count?(): number; + length?: number; +} +export function _length(object: CountObject) { + return typeof object.count === 'function' ? object.count() : object.length +} + +export function arraysEqual(array1: T[], array2: T[]): boolean { + return ( + _length(array1) === _length(array2) && + array1.every((element, index) => { + return element === _get(array2, index.toString()); + }) + ); +} + +export function deepObjectCompare(obj1: any, obj2: any): boolean { + return isEqual(obj1, obj2); +} + +export function keyBy(value: T[], key: keyof T): Record { + const obj: Record = {}; + + value.forEach((element) => { + obj[element[key] as string] = element; + }); + + return obj; +} + +export function noop() {} diff --git a/src/resize-detector/container.js b/src/resize-detector/container.js deleted file mode 100644 index 0adfc67cf..000000000 --- a/src/resize-detector/container.js +++ /dev/null @@ -1,24 +0,0 @@ -import elementResizeDetectorMaker from 'element-resize-detector' - -function addListener(component) { - component._erd = elementResizeDetectorMaker({ - strategy: 'scroll' - }) - - component._erdWidth = component.container.offsetWidth - - component._erd.listenTo(component.container, element => { - var width = element.offsetWidth - - if (component._erdWidth !== width) { - component.resize(component.props) - component._erdWidth = width - } - }) -} - -function removeListener(component) { - component._erd.removeAllListeners(component.container) -} - -export default { addListener, removeListener } diff --git a/src/resize-detector/container.ts b/src/resize-detector/container.ts new file mode 100644 index 000000000..5dbd9c643 --- /dev/null +++ b/src/resize-detector/container.ts @@ -0,0 +1,36 @@ + +import elementResizeDetectorMaker from 'element-resize-detector' + +function addListener(component: ListenerParam) { + component._erd = elementResizeDetectorMaker({ + strategy: 'scroll' + }) + + component._erdWidth = component.container.offsetWidth + + component._erd.listenTo(component.container, (element: HTMLElement) => { + const width = element.offsetWidth + + if (component._erdWidth !== width) { + component.resize(component.props) + component._erdWidth = width + } + }) +} + +export type ListenerParam = { + _erd: { + listenTo: (container: HTMLElement, callback: (element: HTMLElement) => void) => void + removeAllListeners: (container: HTMLElement) => void + }, + props: T, + resize: (props: T) => void, + _erdWidth: number, + container: HTMLElement +} + +function removeListener(component: ListenerParam) { + component._erd.removeAllListeners(component.container) +} + +export default { addListener, removeListener } diff --git a/src/resize-detector/window.js b/src/resize-detector/window.js deleted file mode 100644 index 078769ca8..000000000 --- a/src/resize-detector/window.js +++ /dev/null @@ -1,15 +0,0 @@ -function addListener(component) { - component._resizeEventListener = { - handleEvent: () => { - component.resize() - } - } - - window.addEventListener('resize', component._resizeEventListener) -} - -function removeListener(component) { - window.removeEventListener('resize', component._resizeEventListener) -} - -export default { addListener, removeListener } diff --git a/src/resize-detector/window.ts b/src/resize-detector/window.ts new file mode 100644 index 000000000..ec86123c4 --- /dev/null +++ b/src/resize-detector/window.ts @@ -0,0 +1,14 @@ +function addListener(component: { + _resizeEventListener?: (e: UIEvent) => void + resize: () => void +}) { + component._resizeEventListener = () => component.resize() + + window.addEventListener('resize', component._resizeEventListener) +} + +function removeListener(component: Record) { + window.removeEventListener('resize', component._resizeEventListener!) +} + +export default { addListener, removeListener } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..b80a2a617 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/yarn.lock b/yarn.lock index 4fe42127b..88be5edf4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1053,14 +1053,14 @@ resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -1647,6 +1647,11 @@ dependencies: "@types/node" "*" +"@types/element-resize-detector@^1.1.6": + version "1.1.6" + resolved "https://registry.npmjs.org/@types/element-resize-detector/-/element-resize-detector-1.1.6.tgz" + integrity sha512-hj0o+gfpKB3XFdMwPBxyMxKkpUpjxI2CctMeaC7gelAsnRfqluiynlM5BOCxv27HnndVWh+utrXlqo1PLyW2Sg== + "@types/eslint-scope@^3.7.3": version "3.7.3" resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz" @@ -1725,10 +1730,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/lodash@^4.14.202": version "4.14.202" @@ -1805,7 +1810,7 @@ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/semver@^7.3.12": +"@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.6" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== @@ -1857,15 +1862,32 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/parser@^6.7.5": - version "6.13.2" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz" - integrity sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg== +"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz" + integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/type-utils" "6.14.0" + "@typescript-eslint/utils" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.14.0", "@typescript-eslint/parser@^6.7.5": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz" + integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA== dependencies: - "@typescript-eslint/scope-manager" "6.13.2" - "@typescript-eslint/types" "6.13.2" - "@typescript-eslint/typescript-estree" "6.13.2" - "@typescript-eslint/visitor-keys" "6.13.2" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -1876,23 +1898,33 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.13.2": - version "6.13.2" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz" - integrity sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA== +"@typescript-eslint/scope-manager@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz" + integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== + dependencies: + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" + +"@typescript-eslint/type-utils@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz" + integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== dependencies: - "@typescript-eslint/types" "6.13.2" - "@typescript-eslint/visitor-keys" "6.13.2" + "@typescript-eslint/typescript-estree" "6.14.0" + "@typescript-eslint/utils" "6.14.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.13.2": - version "6.13.2" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz" - integrity sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg== +"@typescript-eslint/types@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz" + integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -1907,13 +1939,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.13.2": - version "6.13.2" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz" - integrity sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w== +"@typescript-eslint/typescript-estree@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz" + integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== dependencies: - "@typescript-eslint/types" "6.13.2" - "@typescript-eslint/visitor-keys" "6.13.2" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/visitor-keys" "6.14.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -1934,6 +1966,19 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz" + integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.14.0" + "@typescript-eslint/types" "6.14.0" + "@typescript-eslint/typescript-estree" "6.14.0" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" @@ -1942,12 +1987,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.13.2": - version "6.13.2" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz" - integrity sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw== +"@typescript-eslint/visitor-keys@6.14.0": + version "6.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz" + integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== dependencies: - "@typescript-eslint/types" "6.13.2" + "@typescript-eslint/types" "6.14.0" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -3962,11 +4007,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" From 6aca27fdbd0bf965ba5e2636f0b920c37619d68c Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Thu, 21 Dec 2023 17:39:32 +0200 Subject: [PATCH 20/50] types v2 --- demo/app/index.jsx | 88 +- package.json | 14 +- src/index.ts | 10 +- src/lib/Timeline.tsx | 234 +- src/lib/columns/Columns.tsx | 15 +- src/lib/headers/CustomDateHeader.tsx | 6 +- src/lib/headers/CustomHeader.tsx | 59 +- src/lib/headers/DateHeader.tsx | 30 +- src/lib/headers/HeadersContext.tsx | 2 - src/lib/headers/Interval.tsx | 18 +- src/lib/headers/TimelineHeaders.tsx | 21 +- src/lib/interaction/PreventClickOnDrag.tsx | 19 +- src/lib/items/Item.tsx | 16 +- src/lib/items/Items.tsx | 65 +- src/lib/layout/Sidebar.tsx | 4 +- src/lib/markers/MarkerCanvas.tsx | 26 +- src/lib/markers/MarkerCanvasContext.ts | 15 +- src/lib/markers/TimelineMarkersRenderer.tsx | 79 +- .../markers/implementations/CursorMarker.tsx | 6 - src/lib/markers/markerType.ts | 7 +- src/lib/markers/public/CustomMarker.tsx | 26 +- src/lib/markers/public/TodayMarker.tsx | 36 +- src/lib/row/GroupRow.tsx | 2 +- src/lib/row/GroupRows.tsx | 2 +- src/lib/types/main.ts | 2 +- src/lib/utility/calendar.tsx | 17 +- tsconfig.json | 1 + yarn.lock | 8186 ----------------- 28 files changed, 340 insertions(+), 8666 deletions(-) delete mode 100644 yarn.lock diff --git a/demo/app/index.jsx b/demo/app/index.jsx index 6b9e02e6a..6340f3876 100644 --- a/demo/app/index.jsx +++ b/demo/app/index.jsx @@ -4,40 +4,46 @@ import './styles.scss' import { Component } from 'react' import PropTypes from 'prop-types' // -import { HashRouter as Router, Route, Link, useLocation, Routes } from 'react-router-dom' +import { + HashRouter as Router, + Route, + Link, + useLocation, + Routes, +} from 'react-router-dom' // -import DemoMain from "./demo-main" -import DemoPerformance from "./demo-performance" +import DemoMain from './demo-main' +import DemoPerformance from './demo-performance' import DemoTreePGroups from './demo-tree-groups' - import LinkedTimelines from './demo-linked-timelines'; - import ElementResize from './demo-element-resize'; - import Renderers from './demo-renderers'; - import VerticalClasses from './demo-vertical-classes'; - import CustomItems from './demo-custom-items'; - import CustomHeaders from './demo-headers'; - import CustomInfoLabel from './demo-custom-info-label'; - import ControledSelect from './demo-controlled-select'; - import ControlledScrolling from './demo-controlled-scrolling'; +import LinkedTimelines from './demo-linked-timelines' +import ElementResize from './demo-element-resize' +import Renderers from './demo-renderers' +import VerticalClasses from './demo-vertical-classes' +import CustomItems from './demo-custom-items' +import CustomHeaders from './demo-headers' +import CustomInfoLabel from './demo-custom-info-label' +import ControledSelect from './demo-controlled-select' +import ControlledScrolling from './demo-controlled-scrolling' const demos = { - main: , - performance: , + main: , + performance: , treeGroups: DemoTreePGroups, - linkedTimelines: , - elementResize: , - renderers: , - verticalClasses: , - customItems: , - customHeaders: , - customInfoLabel: , - controledSelect: , - controlledScrolling: , + linkedTimelines: , + elementResize: , + renderers: , + verticalClasses: , + customItems: , + customHeaders: , + customInfoLabel: , + controledSelect: , + controlledScrolling: , } // // A simple component that shows the pathname of the current location class Menu extends Component { static propTypes = { - location: PropTypes.object.isRequired + location: PropTypes.object.isRequired, } render() { @@ -52,9 +58,10 @@ class Menu extends Component { className={`demo-row${ pathname.indexOf('sticky') >= 0 ? ' sticky' : '' }`} - >Loc:{pathname} + > + Loc:{pathname} Choose the demo: - {Object.keys(demos).map(key => ( + {Object.keys(demos).map((key) => ( { -// const location = useLocation() - return ( - -
- -
- - - {Object.keys(demos).map(key => ( + // const location = useLocation() + return ( + +
+ +
+ + + {Object.keys(demos).map((key) => ( ))} - -
+
-
- ) - } - +
+ + ) +} export default App diff --git a/package.json b/package.json index f6097d627..cc79e2788 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "1.0.0", "description": "react calendar timeline", "main": "lib/index.js", + "packageManager": "npm@8.19.2", "scripts": { + "build-vite": "tsc && vite build", "build": "npm run build:lib", "build:demo": "echo '!!! Building Demo' && cross-env NODE_ENV=production webpack --progress", "build:lib": "echo '!!! Building Library' && rimraf lib && cross-env NODE_ENV=production babel src --out-dir lib && node-sass src/lib/Timeline.scss lib/Timeline.css && sed -i'.bak' 's/Timeline\\.scss/Timeline\\.css/g' lib/lib/Timeline.js && rm lib/lib/Timeline.js.bak", @@ -14,6 +16,12 @@ "test": "jest", "test:watch": "jest --watch" }, + "exports": { + ".": { + "import": "./dist/main.es.js", + "require": "./dist/main.cjs.js" + } + }, "files": [ "lib", "src" @@ -64,7 +72,6 @@ "react-component", "timeline" ], - "standard": { "parser": "babel-eslint" }, @@ -102,7 +109,6 @@ "peerDependencies": { "dayjs": "*", "interactjs": "^1.10.24", - "prop-types": "^15.8.1", "react": ">=18.2", "react-dom": ">=18.2" }, @@ -123,6 +129,7 @@ "@types/react-dom": "^18.2.17", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react-swc": "^3.5.0", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", "babel-plugin-react-remove-properties": "^0.3.0", @@ -142,7 +149,6 @@ "node-sass": "^9.0.0", "prettier": "^3.1.0", "prettier-eslint-cli": "^8.0.1", - "prop-types": "^15.8.1", "randomcolor": "^0.6.2", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -153,6 +159,8 @@ "style-loader": "^3.3.3", "ts-loader": "^9.5.1", "typescript": "^5.3.3", + "vite-plugin-dts": "^3.6.4", + "vite-plugin-lib-inject-css": "^1.3.0", "webpack": "^5.89.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1" diff --git a/src/index.ts b/src/index.ts index 1c1233da9..e1682fe29 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,13 +1,11 @@ import Timeline from './lib/Timeline' -export { - default as TimelineMarkers -} from './lib/markers/public/TimelineMarkers' +export { default as TimelineMarkers } from './lib/markers/public/TimelineMarkers' export { default as TodayMarker } from './lib/markers/public/TodayMarker' export { default as CustomMarker } from './lib/markers/public/CustomMarker' export { default as CursorMarker } from './lib/markers/public/CursorMarker' export { default as TimelineHeaders } from './lib/headers/TimelineHeaders' -export {default as SidebarHeader} from './lib/headers/SidebarHeader' -export {default as CustomHeader} from './lib/headers/CustomHeader' -export {default as DateHeader} from './lib/headers/DateHeader' +export { default as SidebarHeader } from './lib/headers/SidebarHeader' +export { default as CustomHeader } from './lib/headers/CustomHeader' +export { default as DateHeader } from './lib/headers/DateHeader' export default Timeline diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 3eced70fd..b8f2fc0c1 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -1,10 +1,8 @@ -import PropTypes from 'prop-types' import React, { Component, MouseEvent } from 'react' - -import Items from './items/Items' +import Items, { CanResize } from './items/Items' import Sidebar from './layout/Sidebar' import Columns from './columns/Columns' -import GroupRows, { GroupRowsProps, RowClickEvent } from './row/GroupRows' +import GroupRows, { RowClickEvent } from './row/GroupRows' import ScrollElement from './scroll/ScrollElement' import MarkerCanvas from './markers/MarkerCanvas' import windowResizeDetector from '../resize-detector/window' @@ -17,13 +15,13 @@ import { getCanvasWidth, stackTimelineItems, } from './utility/calendar' -import { _get, _length } from './utility/generic' +import { _get } from './utility/generic' import { defaultKeys } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' import TimelineHeaders from './headers/TimelineHeaders' -import DateHeader from './headers/DateHeader' +import { DateHeader } from './headers/DateHeader' import { dateType, ElementWithSecret, @@ -31,7 +29,6 @@ import { OnItemDragObjectMove, OnItemDragObjectResize, ReactCalendarGroupRendererProps, - ReactCalendarItemRendererProps, TimelineContext, TimelineGroupBase, TimelineItemBase, @@ -60,7 +57,7 @@ export type ReactCalendarTimelineProps< sidebarContent?: React.ReactNode | undefined rightSidebarWidth: number rightSidebarContent?: React.ReactNode | undefined - dragSnap: number + dragSnap?: number minResizeWidth?: number | undefined lineHeight: number itemHeightRatio: number @@ -69,14 +66,14 @@ export type ReactCalendarTimelineProps< clickTolerance?: number | undefined canMove?: boolean | undefined canChangeGroup?: boolean | undefined - canResize?: false | true | 'left' | 'right' | 'both' | undefined + canResize?: CanResize useResizeHandle?: boolean | undefined canSelect?: boolean stackItems: boolean traditionalZoom?: boolean | undefined itemTouchSendsClick?: boolean | undefined timeSteps: TimelineTimeSteps - scrollRef?: React.Ref | undefined + scrollRef?: (el: HTMLDivElement) => void onItemDrag?( itemDragObject: OnItemDragObjectMove | OnItemDragObjectResize, ): void @@ -91,12 +88,7 @@ export type ReactCalendarTimelineProps< onCanvasDoubleClick?(groupId: Id, time: number, e: React.SyntheticEvent): void onCanvasContextMenu?(groupId: Id, time: number, e: React.SyntheticEvent): void onZoom?(timelineContext: TimelineContext, unit: Unit): void - moveResizeValidator?( - action: 'move' | 'resize', - itemId: Id, - time: number, - resizeEdge: 'left' | 'right', - ): number + moveResizeValidator?: ItemProps['moveResizeValidator'] onTimeChange?( visibleTimeStart: number, visibleTimeEnd: number, @@ -110,9 +102,7 @@ export type ReactCalendarTimelineProps< unit: Unit, ): any onBoundsChange?(canvasTimeStart: number, canvasTimeEnd: number): any - itemRenderer?: - | ((props: ReactCalendarItemRendererProps) => React.ReactNode) - | undefined + itemRenderer?: ItemProps['itemRenderer'] groupRenderer?: | ((props: ReactCalendarGroupRendererProps) => React.ReactNode) | undefined @@ -122,15 +112,13 @@ export type ReactCalendarTimelineProps< removeListener: (x: any) => void } | undefined - verticalLineClassNamesForTime?: - | ((start: number, end: number) => string[] | undefined) - | undefined + verticalLineClassNamesForTime?: (start: number, end: number) => string[] horizontalLineClassNamesForGroup?: | ((group: CustomGroup) => string[]) | undefined buffer: number // Fields that are in propTypes but not documented - headerRef?: React.Ref | undefined + headerRef?: (el: HTMLDivElement) => void className?: string style?: React.CSSProperties } @@ -148,11 +136,11 @@ export type ReactCalendarTimelineState< dragTime: number | null dragGroupTitle: string | null resizeTime: number | null - resizingItem: CustomItem | null + resizingItem: Id | null resizingEdge: 'left' | 'right' | null items?: CustomItem[] groups?: CustomGroup[] - draggingItem?: CustomItem | null + draggingItem?: Id | null newGroupOrder: number dimensionItems: ItemDimension[] height: number @@ -164,101 +152,6 @@ export default class ReactCalendarTimeline extends Component< ReactCalendarTimelineProps, ReactCalendarTimelineState > { - // static propTypes = { - // groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - // items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - // sidebarWidth: PropTypes.number,/ - // rightSidebarWidth: PropTypes.number, - // dragSnap: PropTypes.number, - // minResizeWidth: PropTypes.num÷ber, - // lineHeight: PropTypes.number, - // itemHeightRatio: PropTypes.number, - - // minZoom: PropTypes.number, - // maxZoom: PropTypes.number, - // buffer: PropTypes.number, - // - // clickTolerance: PropTypes.number, - - // canChangeGroup: PropTypes.bool, - // canMove: PropTypes.bool, - // canResize: PropTypes.oneOf([true, false, 'left', 'right', 'both']), - // useResizeHandle: PropTypes.bool, - // canSelect: PropTypes.bool, - // - // stackItems: PropTypes.bool, - // - // traditionalZoom: PropTypes.bool, - // - // itemTouchSendsClick: PropTypes.bool, - // - // horizontalLineClassNamesForGroup: PropTypes.func, - // - // onItemMove: PropTypes.func, - // onItemResize: PropTypes.func, - // onItemClick: PropTypes.func, - // onItemSelect: PropTypes.func, - // onItemDeselect: PropTypes.func, - // onCanvasClick: PropTypes.func, - // onItemDoubleClick: PropTypes.func, - // onItemContextMenu: PropTypes.func, - // onCanvasDoubleClick: PropTypes.func, - // onCanvasContextMenu: PropTypes.func, - // onZoom: PropTypes.func, - // onItemDrag: PropTypes.func, - // - // moveResizeValidator: PropTypes.func, - // - // itemRenderer: PropTypes.func, - // groupRenderer: PropTypes.func, - // - // className: PropTypes.string, - // style: PropTypes.object, - // - // keys: PropTypes.shape({ - // groupIdKey: PropTypes.string, - // groupTitleKey: PropTypes.string, - // groupLabelKey: PropTypes.string, - // groupRightTitleKey: PropTypes.string, - // itemIdKey: PropTypes.string, - // itemTitleKey: PropTypes.string, - // itemDivTitleKey: PropTypes.string, - // itemGroupKey: PropTypes.string, - // itemTimeStartKey: PropTypes.string, - // itemTimeEndKey: PropTypes.string - // }), - // headerRef: PropTypes.func, - // scrollRef: PropTypes.func, - // - // timeSteps: PropTypes.shape({ - // second: PropTypes.number, - // minute: PropTypes.number, - // hour: PropTypes.number, - // day: PropTypes.number, - // month: PropTypes.number, - // year: PropTypes.number - // }), - // - // defaultTimeStart: PropTypes.object, - // defaultTimeEnd: PropTypes.object, - // - // visibleTimeStart: PropTypes.number, - // visibleTimeEnd: PropTypes.number, - // onTimeChange: PropTypes.func, - // onBoundsChange: PropTypes.func, - // - // selected: PropTypes.array, - // - // resizeDetector: PropTypes.shape({ - // addListener: PropTypes.func, - // removeListener: PropTypes.func - // }), - // - // verticalLineClassNamesForTime: PropTypes.func, - // - // children: PropTypes.node - // } - public static defaultProps = { sidebarWidth: 150, rightSidebarWidth: 0, @@ -335,10 +228,6 @@ export default class ReactCalendarTimeline extends Component< selected: null, } - public static childContextTypes = { - getTimelineContext: PropTypes.func, - } - getChildContext() { return { getTimelineContext: () => { @@ -697,13 +586,13 @@ export default class ReactCalendarTimeline extends Component< (this.props.itemTouchSendsClick && clickType === 'touch') ) { if (item && this.props.onItemClick) { - const time = this.timeFromItemEvent(e) + const time = this.timeFromItemEvent(e as MouseEvent) this.props.onItemClick(item, e, time) } } else { this.setState({ selectedItem: item }) if (item && this.props.onItemSelect) { - const time = this.timeFromItemEvent(e) + const time = this.timeFromItemEvent(e as MouseEvent) this.props.onItemSelect(item, e, time) } else if (item === null && this.props.onItemDeselect) { this.props.onItemDeselect(e) // this isnt in the docs. Is this function even used? @@ -729,7 +618,7 @@ export default class ReactCalendarTimeline extends Component< // from. Look to consolidate the logic for determining coordinate to time // as well as generalizing how we get time from click on the canvas getTimeFromRowClickEvent = (e: MouseEvent) => { - const { dragSnap, buffer } = this.props + const { dragSnap = 1, buffer } = this.props const { width, canvasTimeStart, canvasTimeEnd } = this.state // this gives us distance from left of row element, so event is in // context of the row element, not client or page @@ -747,9 +636,9 @@ export default class ReactCalendarTimeline extends Component< return time } - timeFromItemEvent = (e) => { + timeFromItemEvent = (e: MouseEvent) => { const { width, visibleTimeStart, visibleTimeEnd } = this.state - const { dragSnap } = this.props + const { dragSnap = 1 } = this.props const scrollComponent = this.scrollComponent! const { left: scrollX } = scrollComponent.getBoundingClientRect() @@ -781,7 +670,6 @@ export default class ReactCalendarTimeline extends Component< eventType: 'move', itemId: item, time: dragTime, - undefined, //todo newGroupOrder, }) } @@ -804,14 +692,14 @@ export default class ReactCalendarTimeline extends Component< eventType: 'resize', itemId: item, time: resizeTime, - edge, + edge: edge || undefined, }) } resizedItem: ItemProps['onResized'] = (item, resizeTime, edge, timeDelta) => { this.setState({ resizingItem: null, resizingEdge: null, resizeTime: null }) if (this.props.onItemResize && timeDelta !== 0) { - this.props.onItemResize(item, resizeTime, edge) + this.props.onItemResize(item, resizeTime, edge!) } } @@ -822,14 +710,28 @@ export default class ReactCalendarTimeline extends Component< edge, newGroupOrder, }: { - eventType: 'move' + eventType: 'move' | 'resize' itemId: Id time: number - edge: ResizeEdge - newGroupOrder: number + edge?: ResizeEdge + newGroupOrder?: number }) => { if (this.props.onItemDrag) { - this.props.onItemDrag({ eventType, itemId, time, edge, newGroupOrder }) + if (eventType === 'move') { + this.props.onItemDrag({ + eventType, + itemId, + time, + newGroupOrder: newGroupOrder!, + }) + } else { + this.props.onItemDrag({ + eventType, + itemId, + time, + edge, + }) + } } } @@ -837,7 +739,7 @@ export default class ReactCalendarTimeline extends Component< canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, - minUnit: string, + minUnit: keyof TimelineTimeSteps, timeSteps: TimelineTimeSteps, height: number, ) { @@ -846,7 +748,7 @@ export default class ReactCalendarTimeline extends Component< canvasTimeStart={canvasTimeStart} canvasTimeEnd={canvasTimeEnd} canvasWidth={canvasWidth} - lineCount={_length(this.props.groups)} + lineCount={this.props.groups?.length || 0} minUnit={minUnit} timeSteps={timeSteps} height={height} @@ -858,7 +760,7 @@ export default class ReactCalendarTimeline extends Component< handleRowClick: RowClickEvent = (e, rowIndex) => { // shouldnt this be handled by the user, as far as when to deselect an item? if (this.hasSelectedItem()) { - this.selectItem(null) + this.selectItem(null, 'click', e) } if (this.props.onCanvasClick == null) return @@ -907,7 +809,7 @@ export default class ReactCalendarTimeline extends Component< { this.scrollHeaderRef = el - this.props.headerRef(el) + if (this.props.headerRef) { + this.props.headerRef(el) + } } sidebar(height: number, groupHeights: number[]) { @@ -1013,17 +917,17 @@ export default class ReactCalendarTimeline extends Component< } childrenWithProps( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - dimensionItems, - groupHeights, - groupTops, - height, - visibleTimeStart, - visibleTimeEnd, - minUnit, - timeSteps, + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + dimensionItems: any[], + groupHeights: number[], + groupTops: number[], + height: number, + visibleTimeStart: number, + visibleTimeEnd: number, + minUnit: keyof TimelineTimeSteps, + timeSteps: TimelineTimeSteps, ) { if (!this.props.children) { return null @@ -1065,7 +969,7 @@ export default class ReactCalendarTimeline extends Component< if (this.props.children) { let headerRenderer React.Children.map(this.props.children, (child) => { - if (this.isTimelineHeader(child)) { + if (this.isTimelineHeader(child as ElementWithSecret)) { headerRenderer = child } }) @@ -1092,12 +996,14 @@ export default class ReactCalendarTimeline extends Component< return this.props.selected.length > 0 } - isItemSelected(itemId: string) { + isItemSelected(itemId: string | null) { const selectedItems = this.getSelected() return selectedItems.some((i) => i === itemId) } getScrollElementRef = (el: HTMLDivElement) => { - this.props.scrollRef(el) + if (this.props.scrollRef) { + this.props.scrollRef(el) + } this.scrollComponent = el } diff --git a/src/lib/columns/Columns.tsx b/src/lib/columns/Columns.tsx index 863d5f862..cb023ca36 100644 --- a/src/lib/columns/Columns.tsx +++ b/src/lib/columns/Columns.tsx @@ -3,16 +3,17 @@ import React, { Component, FC } from 'react' import { iterateTimes } from '../utility/calendar' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' import { UnitType } from 'dayjs' +import { TimelineTimeSteps } from '../types/main' type WrapperColumnsProps = { canvasTimeStart: number canvasTimeEnd: number canvasWidth: number lineCount: number - minUnit: UnitType - timeSteps: Record + minUnit: keyof TimelineTimeSteps + timeSteps: TimelineTimeSteps height: number - verticalLineClassNamesForTime: (a: number, b: number) => number[] + verticalLineClassNamesForTime?: (a: number, b: number) => string[] } type ColumnsProps = WrapperColumnsProps & { @@ -38,16 +39,16 @@ class Columns extends Component { const { canvasTimeStart, canvasTimeEnd, - canvasWidth, + // canvasWidth, minUnit, timeSteps, height, verticalLineClassNamesForTime, getLeftOffsetFromDate, } = this.props - const ratio = canvasWidth / (canvasTimeEnd - canvasTimeStart) + //const ratio = canvasWidth / (canvasTimeEnd - canvasTimeStart) - let lines: React.JSX.Element[] = [] + const lines: React.JSX.Element[] = [] iterateTimes( canvasTimeStart, @@ -58,7 +59,7 @@ class Columns extends Component { const minUnitValue = time.get(minUnit === 'day' ? 'date' : minUnit) const firstOfType = minUnitValue === (minUnit === 'day' ? 1 : 0) - let classNamesForTime: number[] = [] + let classNamesForTime: string[] = [] if (verticalLineClassNamesForTime) { classNamesForTime = verticalLineClassNamesForTime( time.unix() * 1000, // turn into ms, which is what verticalLineClassNamesForTime expects diff --git a/src/lib/headers/CustomDateHeader.tsx b/src/lib/headers/CustomDateHeader.tsx index ff960051e..a357e871f 100644 --- a/src/lib/headers/CustomDateHeader.tsx +++ b/src/lib/headers/CustomDateHeader.tsx @@ -1,4 +1,4 @@ -import React, { ComponentType } from 'react' +import React from 'react' import Interval from './Interval' import { Interval as IntervalType, IntervalRenderer } from '../types/main' import { Dayjs } from 'dayjs' @@ -13,7 +13,7 @@ export interface CustomDateHeaderProps { showPeriod: (start: Dayjs, end: Dayjs) => void data: { style: React.CSSProperties - intervalRenderer: ComponentType> + intervalRenderer: (props: IntervalRenderer) => React.ReactNode className?: string getLabelFormat: ( interval: [Dayjs, Dayjs], @@ -60,7 +60,7 @@ export function CustomDateHeader({ intervalText={intervalText} primaryHeader={unitProp === 'primaryHeader'} getIntervalProps={getIntervalProps} - intervalRenderer={intervalRenderer} + intervalRenderer={intervalRenderer as any} headerData={headerData} /> ) diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index 012e6b983..2e56b712e 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -1,15 +1,14 @@ -import React, { ComponentType, CSSProperties, ReactNode } from 'react' -import PropTypes from 'prop-types' +import React, { CSSProperties, ReactNode } from 'react' import { TimelineHeadersConsumer } from './HeadersContext' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' -import { iterateTimes, SelectUnits } from '../utility/calendar' -import { Interval, TimelineContext } from '../types/main' -import { Dayjs, UnitType } from 'dayjs' +import { iterateTimes } from '../utility/calendar' +import { Interval, TimelineTimeSteps } from '../types/main' +import { Dayjs } from 'dayjs' import { CustomDateHeaderProps } from './CustomDateHeader' export type CustomHeaderProps = { children: (p: CustomDateHeaderProps) => ReactNode - unit: UnitType + unit: keyof TimelineTimeSteps timeSteps: any visibleTimeStart: number visibleTimeEnd: number @@ -26,7 +25,7 @@ export type CustomHeaderProps = { type GetHeaderIntervalsParams = { canvasTimeStart: number canvasTimeEnd: number - unit: UnitType + unit: keyof TimelineTimeSteps timeSteps: any getLeftOffsetFromDate: (date: any) => number } @@ -47,22 +46,6 @@ export class CustomHeader extends React.Component< CustomHeaderProps, State > { - /* static propTypes = { - //component props - children: PropTypes.func.isRequired, - unit: PropTypes.string.isRequired, - //Timeline context - timeSteps: PropTypes.object.isRequired, - visibleTimeStart: PropTypes.number.isRequired, - visibleTimeEnd: PropTypes.number.isRequired, - canvasTimeStart: PropTypes.number.isRequired, - canvasTimeEnd: PropTypes.number.isRequired, - canvasWidth: PropTypes.number.isRequired, - showPeriod: PropTypes.func.isRequired, - headerData: PropTypes.object, - getLeftOffsetFromDate: PropTypes.func.isRequired, - height: PropTypes.number.isRequired, - }*/ constructor(props: CustomHeaderProps) { super(props) const { @@ -198,27 +181,27 @@ export class CustomHeader extends React.Component< } } - getStateAndHelpers = (): CustomHeaderWrapperChildrenParams => { + getStateAndHelpers = (): CustomDateHeaderProps => { const { - canvasTimeStart, - canvasTimeEnd, + /* canvasTimeStart, + canvasTimeEnd,*/ unit, showPeriod, - timelineWidth, + /* timelineWidth, visibleTimeStart, - visibleTimeEnd, + visibleTimeEnd,*/ headerData, } = this.props //TODO: only evaluate on changing params return { - timelineContext: { + /*timelineContext: { timelineWidth, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd, - }, + },*/ headerContext: { unit, intervals: this.state.intervals, @@ -226,7 +209,7 @@ export class CustomHeader extends React.Component< getRootProps: this.getRootProps, getIntervalProps: this.getIntervalProps, showPeriod, - data: headerData, + data: headerData as any, } } @@ -237,14 +220,9 @@ export class CustomHeader extends React.Component< } } -type CustomHeaderWrapperChildrenParams = { - getTimelineState: () => TimelineContext - showPeriod: (start: Dayjs, end: Dayjs) => void - getLeftOffsetFromDate: (date: any) => number -} export type CustomHeaderWrapperProps = { children: (p: CustomDateHeaderProps) => ReactNode - unit?: UnitType + unit?: keyof TimelineTimeSteps headerData?: Data height: number } @@ -280,13 +258,6 @@ function CustomHeaderWrapper({ ) } -CustomHeaderWrapper.propTypes = { - children: PropTypes.func.isRequired, - unit: PropTypes.string, - headerData: PropTypes.object, - height: PropTypes.number, -} - CustomHeaderWrapper.defaultProps = { height: 30, } diff --git a/src/lib/headers/DateHeader.tsx b/src/lib/headers/DateHeader.tsx index 7db9e2ee3..c40ea0be3 100644 --- a/src/lib/headers/DateHeader.tsx +++ b/src/lib/headers/DateHeader.tsx @@ -5,7 +5,11 @@ import { getNextUnit, SelectUnits } from '../utility/calendar' import { defaultHeaderFormats } from '../default-config' import memoize from 'memoize-one' import { CustomDateHeader } from './CustomDateHeader' -import { IntervalRenderer, SidebarHeaderChildrenFnProps } from '../types/main' +import { + IntervalRenderer, + SidebarHeaderChildrenFnProps, + TimelineTimeSteps, +} from '../types/main' import { Dayjs, UnitType } from 'dayjs' type GetHeaderData = ( @@ -34,7 +38,7 @@ type GetHeaderData = ( export interface DateHeaderProps { style?: CSSProperties | undefined className?: string | undefined - unit?: UnitType | 'primaryHeader' | undefined + unit?: keyof TimelineTimeSteps | 'primaryHeader' | undefined timelineUnit: SelectUnits labelFormat?: | string @@ -52,8 +56,10 @@ export interface DateHeaderProps { height?: number | undefined } -class DateHeader extends React.Component> { - getHeaderUnit = (): UnitType => { +export class DateHeaderInner extends React.Component< + DateHeaderProps +> { + getHeaderUnit = (): keyof TimelineTimeSteps => { if (this.props.unit === 'primaryHeader') { return getNextUnit(this.props.timelineUnit) } else if (this.props.unit) { @@ -127,16 +133,16 @@ class DateHeader extends React.Component> { } type DateHeaderWrapper = { - unit: UnitType | 'primaryHeader' | undefined + unit?: keyof TimelineTimeSteps | 'primaryHeader' labelFormat?: typeof formatLabel - style: CSSProperties - className: string + style?: CSSProperties + className?: string intervalRenderer?: ((props?: IntervalRenderer) => ReactNode) | undefined - headerData: Data - height: number + headerData?: Data + height?: number } -function DateHeaderWrapper({ +export function DateHeader({ unit, labelFormat, style, @@ -150,7 +156,7 @@ function DateHeaderWrapper({ {({ getTimelineState }) => { const timelineState = getTimelineState() return ( - void } export class TimelineHeadersProvider extends React.Component { - static propTypes = {} - render() { const contextValue = { rightSidebarWidth: this.props.rightSidebarWidth, diff --git a/src/lib/headers/Interval.tsx b/src/lib/headers/Interval.tsx index f9cf87bbe..15fbf7bff 100644 --- a/src/lib/headers/Interval.tsx +++ b/src/lib/headers/Interval.tsx @@ -1,5 +1,4 @@ -import React, { ComponentType, HTMLAttributes } from 'react' -import PropTypes from 'prop-types' +import React, { HTMLAttributes, ReactNode } from 'react' import { getNextUnit, SelectUnits } from '../utility/calendar' import { composeEvents } from '../utility/events' import { Dayjs } from 'dayjs' @@ -13,8 +12,8 @@ type GetIntervalPropsParams = { interval: IntervalType } & HTMLAttributes -export type IntervalProps = { - intervalRenderer: ComponentType> +export type IntervalProps = { + intervalRenderer: (p: IntervalRenderer) => ReactNode unit: SelectUnits interval: IntervalType showPeriod: (startTime: Dayjs, endTime: Dayjs) => void @@ -28,17 +27,6 @@ export type IntervalProps = { } class Interval extends React.PureComponent> { - static propTypes = { - intervalRenderer: PropTypes.func, - unit: PropTypes.string.isRequired, - interval: PropTypes.object.isRequired, - showPeriod: PropTypes.func.isRequired, - intervalText: PropTypes.string.isRequired, - primaryHeader: PropTypes.bool.isRequired, - getIntervalProps: PropTypes.func.isRequired, - headerData: PropTypes.object, - } - onIntervalClick = () => { const { primaryHeader, interval, unit, showPeriod } = this.props if (primaryHeader) { diff --git a/src/lib/headers/TimelineHeaders.tsx b/src/lib/headers/TimelineHeaders.tsx index b15662b4f..3e2bd99ab 100644 --- a/src/lib/headers/TimelineHeaders.tsx +++ b/src/lib/headers/TimelineHeaders.tsx @@ -1,13 +1,6 @@ -import React, { - ReactNode, - Children, - ReactElement, - LegacyRef, - CSSProperties, -} from 'react' +import React, { ReactNode, LegacyRef, CSSProperties } from 'react' import classNames from 'classnames' import { TimelineHeadersConsumer } from './HeadersContext' -import PropTypes from 'prop-types' import SidebarHeader from './SidebarHeader' import { RIGHT_VARIANT } from './constants' import { ElementWithSecret } from '../types/main' @@ -24,18 +17,6 @@ export type TimelineHeadersProps = { headerRef?: (ref: HTMLElement | null) => void } class TimelineHeaders extends React.Component { - static propTypes = { - registerScroll: PropTypes.func.isRequired, - leftSidebarWidth: PropTypes.number.isRequired, - rightSidebarWidth: PropTypes.number.isRequired, - style: PropTypes.object, - children: PropTypes.node, - className: PropTypes.string, - calendarHeaderStyle: PropTypes.object, - calendarHeaderClassName: PropTypes.string, - headerRef: PropTypes.func, - } - getRootStyle = () => { return { ...this.props.style, diff --git a/src/lib/interaction/PreventClickOnDrag.tsx b/src/lib/interaction/PreventClickOnDrag.tsx index e14e66d66..792b2042c 100644 --- a/src/lib/interaction/PreventClickOnDrag.tsx +++ b/src/lib/interaction/PreventClickOnDrag.tsx @@ -1,22 +1,25 @@ import React, { Component, MouseEventHandler } from 'react' type Props = { - children: React.ReactElement; - onClick: MouseEventHandler; - clickTolerance: number; + children: React.ReactElement + onClick: MouseEventHandler + clickTolerance?: number } class PreventClickOnDrag extends Component { - handleMouseDown: MouseEventHandler = evt => { + handleMouseDown: MouseEventHandler = (evt) => { this.originClickX = evt.clientX } - handleMouseUp: MouseEventHandler = evt => { - if (Math.abs(this.originClickX - evt.clientX) > this.props.clickTolerance) { + handleMouseUp: MouseEventHandler = (evt) => { + if ( + this.props.clickTolerance !== undefined && + Math.abs(this.originClickX - evt.clientX) > this.props.clickTolerance + ) { this.cancelClick = true } } - handleClick: MouseEventHandler = evt => { + handleClick: MouseEventHandler = (evt) => { if (!this.cancelClick) { this.props.onClick(evt) } @@ -32,7 +35,7 @@ class PreventClickOnDrag extends Component { return React.cloneElement(childElement, { onMouseDown: this.handleMouseDown, onMouseUp: this.handleMouseUp, - onClick: this.handleClick + onClick: this.handleClick, }) } } diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index 250c4819b..75fee537a 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -36,7 +36,7 @@ import { Id, ItemContext, TimelineItemBase, TimelineKeys } from '../types/main' export type ResizeEdge = 'left' | 'right' type OnSelect = ( - itemId: string, + itemId: string | null, clickType: 'click' | 'touch', event: MouseEvent | TouchEvent, ) => void @@ -62,7 +62,7 @@ export type ItemProps = { resizeEdge: ResizeEdge | null, delta: number, ) => void - moveResizeValidator: ( + moveResizeValidator?: ( action: 'move' | 'resize', item: TimelineItemBase, time: number, @@ -82,10 +82,10 @@ export type ItemProps = { item: TimelineItemBase onSelect: OnSelect - onContextMenu: (i: Id, e: MouseEvent) => void + onContextMenu?: (i: Id, e: MouseEvent) => void groupTops: any onItemDoubleClick: (i: Id, e: MouseEvent) => void - scrollRef: HTMLElement + scrollRef: HTMLElement | null } type DragProps = { offset: number; x: number; y: number } @@ -250,8 +250,8 @@ export default class Item extends Component { this.props.canvasWidth, ) - const offset = getSumOffset(this.props.scrollRef).offsetLeft - const scrolls = getSumScroll(this.props.scrollRef) + const offset = getSumOffset(this.props.scrollRef!).offsetLeft + const scrolls = getSumScroll(this.props.scrollRef!) return ( (e.pageX - offset + scrolls.scrollLeft) * ratio + @@ -267,8 +267,8 @@ export default class Item extends Component { } let groupDelta = 0 - const offset = getSumOffset(this.props.scrollRef).offsetTop - const scrolls = getSumScroll(this.props.scrollRef) + const offset = getSumOffset(this.props.scrollRef!).offsetTop + const scrolls = getSumScroll(this.props.scrollRef!) for (const key of Object.keys(groupTops)) { const groupTop = groupTops[key] diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index 493acb703..b8e9cd762 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -5,19 +5,20 @@ import Item, { ItemProps } from './Item' import { _get, arraysEqual, keyBy } from '../utility/generic' import { getGroupOrders, getVisibleItems } from '../utility/calendar' import { + Id, TimelineGroupBase, TimelineItemBase, TimelineKeys, } from '../types/main' type CustomItem = TimelineItemBase -type CanResize = true | false | 'left' | 'right' | 'both' +export type CanResize = true | false | 'left' | 'right' | 'both' type ItemsProps = { groups: TimelineGroupBase[] items: CustomItem[] // todo dimensionItems: any[] - selected: (string | number)[] + selected?: Id[] canvasTimeStart: number canvasTimeEnd: number @@ -25,25 +26,25 @@ type ItemsProps = { dragSnap?: number minResizeWidth?: number - selectedItem?: string | number + selectedItem?: Id - canChangeGroup: boolean - canMove: boolean + canChangeGroup?: boolean + canMove?: boolean canResize?: CanResize canSelect?: boolean keys: TimelineKeys - moveResizeValidator: ItemProps['moveResizeValidator'] + moveResizeValidator?: ItemProps['moveResizeValidator'] itemSelect: ItemProps['onSelect'] itemDrag: ItemProps['onDrag'] itemDrop: ItemProps['onDrop'] itemResizing: ItemProps['onResizing'] itemResized: ItemProps['onResized'] onItemDoubleClick: ItemProps['onItemDoubleClick'] - onItemContextMenu: ItemProps['onContextMenu'] - itemRenderer: ItemProps['itemRenderer'] - groupTops: boolean - useResizeHandle: boolean - scrollRef: HTMLElement + onItemContextMenu?: ItemProps['onContextMenu'] + itemRenderer?: ItemProps['itemRenderer'] + groupTops: number[] + useResizeHandle?: boolean + scrollRef: HTMLElement | null // Add more props if needed } @@ -64,48 +65,6 @@ const canResizeRight = (item: CustomItem, canResize?: CanResize) => { } export default class Items extends Component { - /*static propTypes = { - groups: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired, - - canvasTimeStart: PropTypes.number.isRequired, - canvasTimeEnd: PropTypes.number.isRequired, - canvasWidth: PropTypes.number.isRequired, - - dragSnap: PropTypes.number, - minResizeWidth: PropTypes.number, - selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - - canChangeGroup: PropTypes.bool.isRequired, - canMove: PropTypes.bool.isRequired, - canResize: PropTypes.oneOf([true, false, 'left', 'right', 'both']), - canSelect: PropTypes.bool, - - keys: PropTypes.object.isRequired, - - moveResizeValidator: PropTypes.func, - itemSelect: PropTypes.func, - itemDrag: PropTypes.func, - itemDrop: PropTypes.func, - itemResizing: PropTypes.func, - itemResized: PropTypes.func, - - onItemDoubleClick: PropTypes.func, - onItemContextMenu: PropTypes.func, - - itemRenderer: PropTypes.func, - selected: PropTypes.array, - - dimensionItems: PropTypes.array, - groupTops: PropTypes.array, - useResizeHandle: PropTypes.bool, - scrollRef: PropTypes.object - } - - static defaultProps = { - selected: [] - }*/ - shouldComponentUpdate(nextProps: ItemsProps) { return !( arraysEqual(nextProps.groups, this.props.groups) && diff --git a/src/lib/layout/Sidebar.tsx b/src/lib/layout/Sidebar.tsx index 73871840e..7bc27797c 100644 --- a/src/lib/layout/Sidebar.tsx +++ b/src/lib/layout/Sidebar.tsx @@ -14,7 +14,7 @@ type Props = { groupHeights: number[] keys: TimelineKeys groupRenderer?: FC //TODO Check - isRightSidebar: boolean + isRightSidebar?: boolean } export default class Sidebar extends Component { @@ -30,7 +30,7 @@ export default class Sidebar extends Component { renderGroupContent( group: TimelineGroupBase, - isRightSidebar: boolean, + isRightSidebar: boolean = false, groupTitleKey: string, groupRightTitleKey: string, ) { diff --git a/src/lib/markers/MarkerCanvas.tsx b/src/lib/markers/MarkerCanvas.tsx index ce29d553b..6ee91e2c9 100644 --- a/src/lib/markers/MarkerCanvas.tsx +++ b/src/lib/markers/MarkerCanvas.tsx @@ -1,5 +1,8 @@ -import React, { PropsWithChildren } from 'react' -import { MarkerCanvasProvider } from './MarkerCanvasContext' +import React, { MouseEventHandler, PropsWithChildren } from 'react' +import { + MarkerCanvasContext, + MarkerCanvasProvider, +} from './MarkerCanvasContext' import TimelineMarkersRenderer from './TimelineMarkersRenderer' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' @@ -23,8 +26,8 @@ type MarkerCanvasProps = { class MarkerCanvas extends React.Component< PropsWithChildren > { - handleMouseMove = (evt) => { - if (this.subscription != null) { + handleMouseMove: MouseEventHandler = (evt) => { + if (this.subscription !== null) { const { pageX } = evt // FIXME: dont use getBoundingClientRect. Use passed in scroll amount const { left: containerLeft } = @@ -47,25 +50,28 @@ class MarkerCanvas extends React.Component< } } - handleMouseLeave = () => { - if (this.subscription != null) { + handleMouseLeave: MouseEventHandler = () => { + if (this.subscription !== null) { // tell subscriber that we're not on canvas this.subscription({ leftOffset: 0, date: 0, isCursorOverCanvas: false }) } } - handleMouseMoveSubscribe = (sub) => { + handleMouseMoveSubscribe: MarkerCanvasContext['subscribeToMouseOver'] = ( + sub, + ) => { this.subscription = sub return () => { this.subscription = null } } - state = { + state: MarkerCanvasContext = { subscribeToMouseOver: this.handleMouseMoveSubscribe, } containerEl = React.createRef() + private subscription: ((s: any) => void) | null = null render() { return ( @@ -84,7 +90,9 @@ class MarkerCanvas extends React.Component< } } -const MarkerCanvasWrapper = (props) => ( +const MarkerCanvasWrapper = ( + props: Omit, +) => ( {({ getDateFromLeftOffsetPosition }) => ( { console.warn('"subscribeToMouseOver" default func is being used') - } + return () => {} + }, +} + +type Params = { + leftOffset: number + date: number + isCursorOverCanvas: boolean } /* eslint-enable */ +export type MarkerCanvasContext = { + subscribeToMouseOver: (p: (params: Params) => void) => void +} -const { Consumer, Provider } = React.createContext(defaultContextState) +const { Consumer, Provider } = + React.createContext(defaultContextState) export const MarkerCanvasProvider = Provider export const MarkerCanvasConsumer = Consumer diff --git a/src/lib/markers/TimelineMarkersRenderer.tsx b/src/lib/markers/TimelineMarkersRenderer.tsx index 4487bf365..49ca93dad 100644 --- a/src/lib/markers/TimelineMarkersRenderer.tsx +++ b/src/lib/markers/TimelineMarkersRenderer.tsx @@ -13,43 +13,54 @@ const TimelineMarkersRenderer = () => { {({ getLeftOffsetFromDate, getTimelineState }) => ( {({ markers }) => { - const timelineState = getTimelineState(); - return markers - .map(marker => { - switch (marker.type) { - case TimelineMarkerType.Today: - if(!( (new Date()).valueOf() >= timelineState.canvasTimeStart && (new Date()).valueOf() <= timelineState.canvasTimeEnd)) return null; - return ( - + const timelineState = getTimelineState() + return markers.map((marker) => { + switch (marker.type) { + case TimelineMarkerType.Today: + if ( + !( + new Date().valueOf() >= timelineState.canvasTimeStart && + new Date().valueOf() <= timelineState.canvasTimeEnd ) - case TimelineMarkerType.Custom: - //filter out cursors outside canvas start/end - if(!(marker.date >= timelineState.canvasTimeStart && marker.date <= timelineState.canvasTimeEnd)) return null; - return ( - - ) - case TimelineMarkerType.Cursor: - return ( - + ) + return null + return ( + + ) + case TimelineMarkerType.Custom: + //filter out cursors outside canvas start/end + if ( + !( + marker.date! >= timelineState.canvasTimeStart && + marker.date! <= timelineState.canvasTimeEnd ) - default: + ) return null - } - }) + return ( + + ) + case TimelineMarkerType.Cursor: + return ( + + ) + default: + return null + } + }) }} )} diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index 5e04ce807..52314f66e 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -1,5 +1,4 @@ import React from 'react' -import PropTypes from 'prop-types' import { createMarkerStylesWithLeftOffset, createDefaultRenderer, @@ -54,11 +53,6 @@ class CursorMarker extends React.Component< CursorMarkerProps, CursorMarkerStat > { - static propTypes = { - subscribeToCanvasMouseOver: PropTypes.func.isRequired, - renderer: PropTypes.func, - } - public static defaultProps = { renderer: defaultRenderer, } diff --git a/src/lib/markers/markerType.ts b/src/lib/markers/markerType.ts index ee1d07416..277591890 100644 --- a/src/lib/markers/markerType.ts +++ b/src/lib/markers/markerType.ts @@ -7,14 +7,17 @@ export enum TimelineMarkerType { } export type MarkerType = { - date?: number, + date?: number type: TimelineMarkerType renderer: MarkerRendererType interval?: number id?: number } -export type MarkerRendererType = ({styles,date}: { +export type MarkerRendererType = ({ + styles, + date, +}: { styles: React.CSSProperties date: number }) => React.JSX.Element diff --git a/src/lib/markers/public/CustomMarker.tsx b/src/lib/markers/public/CustomMarker.tsx index 373c90e84..947fd0c65 100644 --- a/src/lib/markers/public/CustomMarker.tsx +++ b/src/lib/markers/public/CustomMarker.tsx @@ -1,23 +1,23 @@ import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' -import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' +import { + SubscribeReturn, + TimelineMarkersConsumer, +} from '../TimelineMarkersContext' +import { + MarkerRendererType, + MarkerType, + TimelineMarkerType, +} from '../markerType' type noop = () => any type CustomMarkerProps = { date: number - children: MarkerRendererType; - updateMarker: (marker: any) => void + children: MarkerRendererType + updateMarker: (marker: MarkerType) => void subscribeMarker: (newe: MarkerType) => SubscribeReturn } class CustomMarker extends Component { - static propTypes = { - subscribeMarker: PropTypes.func.isRequired, - updateMarker: PropTypes.func.isRequired, - children: PropTypes.func, - date: PropTypes.number.isRequired - } private unsubscribe: noop | null = null private getMarker: noop | null = null @@ -32,7 +32,7 @@ class CustomMarker extends Component { const { unsubscribe, getMarker } = this.props.subscribeMarker({ type: TimelineMarkerType.Custom, renderer: this.props.children, - date: this.props.date + date: this.props.date, }) this.unsubscribe = unsubscribe this.getMarker = getMarker @@ -50,7 +50,7 @@ class CustomMarker extends Component { } } -type Props = Pick +type Props = Pick // TODO: turn into HOC? const CustomMarkerWrapper = (props: Props) => { diff --git a/src/lib/markers/public/TodayMarker.tsx b/src/lib/markers/public/TodayMarker.tsx index 823680ae0..f64420a32 100644 --- a/src/lib/markers/public/TodayMarker.tsx +++ b/src/lib/markers/public/TodayMarker.tsx @@ -1,23 +1,27 @@ import React, { PropsWithChildren } from 'react' -import PropTypes from 'prop-types' -import { TimelineMarkersConsumer } from '../TimelineMarkersContext' -import { TimelineMarkerType } from '../markerType' +import { + SubscribeReturn, + TimelineMarkersConsumer, +} from '../TimelineMarkersContext' +import { + MarkerRendererType, + MarkerType, + TimelineMarkerType, +} from '../markerType' -type TodayMarkerProps = { +type TodayMarkerProps = PropsWithChildren<{ interval: number - updateMarker: () => void - subscribeMarker: () => void -} - -class TodayMarker extends React.Component> { - static propTypes = { - subscribeMarker: PropTypes.func.isRequired, - updateMarker: PropTypes.func.isRequired, - } + updateMarker: (marker: MarkerType) => void + subscribeMarker: (m: MarkerType) => SubscribeReturn + children: MarkerRendererType +}> +class TodayMarker extends React.Component { static defaultProps = { interval: 1000 * 10, // default to ten seconds } + private unsubscribe: (() => void) | null = null + private getMarker: (() => MarkerType) | null = null componentDidMount() { const { unsubscribe, getMarker } = this.props.subscribeMarker({ @@ -36,7 +40,7 @@ class TodayMarker extends React.Component> { } } - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: TodayMarkerProps) { if (prevProps.interval !== this.props.interval && this.getMarker) { const marker = this.getMarker() this.props.updateMarker({ @@ -52,7 +56,9 @@ class TodayMarker extends React.Component> { } // TODO: turn into HOC? -const TodayMarkerWrapper = (props) => { +const TodayMarkerWrapper = ( + props: Omit, +) => { return ( {({ subscribeMarker, updateMarker }) => ( diff --git a/src/lib/row/GroupRow.tsx b/src/lib/row/GroupRow.tsx index 88d40fd7b..312aaaafc 100644 --- a/src/lib/row/GroupRow.tsx +++ b/src/lib/row/GroupRow.tsx @@ -7,7 +7,7 @@ interface GroupRowProps { onContextMenu?: MouseEventHandler isEvenRow?: boolean style?: React.CSSProperties - clickTolerance: number + clickTolerance?: number group: T horizontalLineClassNamesForGroup?: (group: T) => string[] } diff --git a/src/lib/row/GroupRows.tsx b/src/lib/row/GroupRows.tsx index 6c0134a25..8b42202e1 100644 --- a/src/lib/row/GroupRows.tsx +++ b/src/lib/row/GroupRows.tsx @@ -12,7 +12,7 @@ export interface GroupRowsProps { groupHeights: number[] onRowClick: RowClickEvent onRowDoubleClick: RowClickEvent - clickTolerance: number + clickTolerance?: number groups: T[] horizontalLineClassNamesForGroup?: (group: T) => string[] onRowContextClick: RowClickEvent diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 9ece6e8fb..8b2ad7409 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -201,7 +201,6 @@ export interface ReactCalendarGroupRendererProps< } export interface OnItemDragObjectBase { - eventType: 'move' | 'resize' itemId: Id time: number } @@ -219,6 +218,7 @@ export interface OnItemDragObjectResize extends OnItemDragObjectBase { export interface TimelineKeys { groupIdKey: string groupTitleKey: string + groupLabelKey: string groupRightTitleKey: string itemIdKey: string itemTitleKey: string diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 340628cfd..e860bd31e 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -5,6 +5,7 @@ import { GroupedItem, GroupOrders, GroupStack, + Id, TimelineGroupBase, TimelineItemBase, TimelineKeys, @@ -76,8 +77,8 @@ export function calculateTimeForXPosition( export function iterateTimes( start: number, end: number, - unit: UnitType, - timeSteps: Record, + unit: keyof TimelineTimeSteps, + timeSteps: TimelineTimeSteps, callback: (time: Dayjs, nextTime: Dayjs) => void, ) { let time = dayjs(start).startOf(unit) @@ -132,7 +133,7 @@ export function getMinUnit( year: 12, } - let minUnit = 'year' + let minUnit: keyof TimelineTimeSteps = 'year' // this timespan is in ms initially let nextTimeSpanInUnitContext = zoom @@ -165,7 +166,7 @@ export function getMinUnit( if (cellsToBeRenderedForCurrentUnit < minimumCellsToRenderUnit) { // for the current zoom, the number of cells we'd need to render all parts of this unit // is less than the minimum number of cells needed at minimum cell width - minUnit = unit + minUnit = unit as keyof TimelineTimeSteps return true } }) @@ -587,8 +588,8 @@ export function stackTimelineItems< lineHeight: number, itemHeightRatio: number, stackItems: boolean, - draggingItem: CustomItem | null | undefined, - resizingItem: CustomItem | null | undefined, + draggingItem: Id | null | undefined, + resizingItem: Id | null | undefined, dragTime: number | null, resizingEdge: 'left' | 'right' | null, resizeTime: number | null, @@ -738,8 +739,8 @@ export function getItemWithInteractions< }: { item: CustomItem keys: TimelineKeys - draggingItem: CustomItem | null | undefined - resizingItem: CustomItem | null | undefined + draggingItem: Id | null | undefined + resizingItem: Id | null | undefined dragTime: number | null resizingEdge: 'left' | 'right' | null resizeTime: number | null diff --git a/tsconfig.json b/tsconfig.json index b80a2a617..aefb930a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,5 @@ { + "include": ["src", "lib"], "compilerOptions": { /* Visit https://aka.ms/tsconfig to read more about this file */ diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 88be5edf4..000000000 --- a/yarn.lock +++ /dev/null @@ -1,8186 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@adobe/css-tools@^4.3.1": - version "4.3.2" - resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz" - integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/cli@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz" - integrity sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - commander "^4.0.1" - convert-source-map "^2.0.0" - fs-readdir-recursive "^1.1.0" - glob "^7.2.0" - make-dir "^2.1.0" - slash "^2.0.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - chokidar "^3.4.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.23.5", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz" - integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.5" - "@babel/parser" "^7.23.5" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.5" - "@babel/types" "^7.23.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/eslint-parser@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz" - integrity sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.23.5", "@babel/generator@^7.7.2": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz" - integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== - dependencies: - "@babel/types" "^7.23.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.22.15": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz" - integrity sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@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.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz" - integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.5" - "@babel/types" "^7.23.5" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz" - integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - 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.23.3.tgz" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz" - integrity sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - 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.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - 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.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - 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.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - 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.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - 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.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz" - integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz" - integrity sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz" - integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz" - integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz" - integrity sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz" - integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.15" - -"@babel/plugin-transform-destructuring@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz" - integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz" - integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz" - integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz" - integrity sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz" - integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz" - integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz" - integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz" - integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz" - integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz" - integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz" - integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz" - integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz" - integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== - dependencies: - "@babel/compat-data" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.23.3" - -"@babel/plugin-transform-object-super@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz" - integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.20" - -"@babel/plugin-transform-optional-catch-binding@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz" - integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz" - integrity sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz" - integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz" - integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz" - integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-display-name@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz" - integrity sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz" - integrity sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-shorthand-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz" - integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz" - integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz" - integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz" - integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz" - integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz" - integrity sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.3" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@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.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@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-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.4" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.5" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.3" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.3" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.23.4" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.23.3": - version "7.23.3" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz" - integrity sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-react-display-name" "^7.23.3" - "@babel/plugin-transform-react-jsx" "^7.22.15" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.23.3" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz" - integrity sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz" - integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.5" - "@babel/types" "^7.23.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz" - integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.55.0": - version "8.55.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz" - integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== - -"@faker-js/faker@^8.3.1": - version "8.3.1" - resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-8.3.1.tgz" - integrity sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw== - -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - -"@interactjs/types@1.10.24": - version "1.10.24" - resolved "https://registry.npmjs.org/@interactjs/types/-/types-1.10.24.tgz" - integrity sha512-AZ0pElgSyu21RaSjNq0PkO2XfEDGHcj+zZhQztDnDQNo4lh1FTEm1lhqqOxyvcbP1tgFBTMX1jnnB+AcirgKmw== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0", "@jest/globals@>= 28": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.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.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - -"@messageformat/core@^3.2.0": - version "3.3.0" - resolved "https://registry.npmjs.org/@messageformat/core/-/core-3.3.0.tgz" - integrity sha512-YcXd3remTDdeMxAlbvW6oV9d/01/DZ8DHUFwSttO3LMzIZj3iO0NRw+u1xlsNNORFI+u0EQzD52ZX3+Udi0T3g== - dependencies: - "@messageformat/date-skeleton" "^1.0.0" - "@messageformat/number-skeleton" "^1.0.0" - "@messageformat/parser" "^5.1.0" - "@messageformat/runtime" "^3.0.1" - make-plural "^7.0.0" - safe-identifier "^0.4.1" - -"@messageformat/date-skeleton@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@messageformat/date-skeleton/-/date-skeleton-1.0.1.tgz" - integrity sha512-jPXy8fg+WMPIgmGjxSlnGJn68h/2InfT0TNSkVx0IGXgp4ynnvYkbZ51dGWmGySEK+pBiYUttbQdu5XEqX5CRg== - -"@messageformat/number-skeleton@^1.0.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@messageformat/number-skeleton/-/number-skeleton-1.2.0.tgz" - integrity sha512-xsgwcL7J7WhlHJ3RNbaVgssaIwcEyFkBqxHdcdaiJzwTZAWEOD8BuUFxnxV9k5S0qHN3v/KzUpq0IUpjH1seRg== - -"@messageformat/parser@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.0.tgz" - integrity sha512-jKlkls3Gewgw6qMjKZ9SFfHUpdzEVdovKFtW1qRhJ3WI4FW5R/NnGDqr8SDGz+krWDO3ki94boMmQvGke1HwUQ== - dependencies: - moo "^0.5.1" - -"@messageformat/runtime@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@messageformat/runtime/-/runtime-3.0.1.tgz" - integrity sha512-6RU5ol2lDtO8bD9Yxe6CZkl0DArdv0qkuoZC+ZwowU+cdRlVE1157wjCmlA5Rsf1Xc/brACnsZa5PZpEDfTFFg== - dependencies: - make-plural "^7.0.0" - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" - integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== - -"@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" - 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.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@prettier/eslint@npm:prettier-eslint@^16.1.0": - version "16.1.2" - resolved "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.1.2.tgz" - integrity sha512-mGFGZQbAh11FSnwW3H1zngzQYR2QMmHO8vdfgnAuzOFhnDeUZHYtwpqQvOMOMT0k818Dr1X+J4a/sVE0r34RKQ== - dependencies: - "@typescript-eslint/parser" "^6.7.5" - common-tags "^1.4.0" - dlv "^1.1.0" - eslint "^8.7.0" - indent-string "^4.0.0" - lodash.merge "^4.6.0" - loglevel-colored-level-prefix "^1.0.0" - prettier "^3.0.1" - pretty-format "^29.7.0" - require-relative "^0.8.7" - typescript "^5.2.2" - vue-eslint-parser "^9.1.0" - -"@remix-run/router@1.13.1": - version "1.13.1" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz" - integrity sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@testing-library/dom@^9.0.0": - version "9.3.3" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" - integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.1.3" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/jest-dom@^6.1.5": - version "6.1.5" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz" - integrity sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g== - dependencies: - "@adobe/css-tools" "^4.3.1" - "@babel/runtime" "^7.9.2" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^14.1.2": - version "14.1.2" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz" - integrity sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" - "@types/react-dom" "^18.0.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@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.7" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz" - integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.4" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz" - integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== - dependencies: - "@babel/types" "^7.20.7" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== - dependencies: - "@types/node" "*" - -"@types/connect-history-api-fallback@^1.3.5": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/element-resize-detector@^1.1.6": - version "1.1.6" - resolved "https://registry.npmjs.org/@types/element-resize-detector/-/element-resize-detector-1.1.6.tgz" - integrity sha512-hj0o+gfpKB3XFdMwPBxyMxKkpUpjxI2CctMeaC7gelAsnRfqluiynlM5BOCxv27HnndVWh+utrXlqo1PLyW2Sg== - -"@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.4.2" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz" - integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^1.0.0": - version "1.0.5" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.28" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.13" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/http-proxy@^1.17.8": - version "1.17.9" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" - integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.14.202" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== - -"@types/mime@*": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== - -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/node-forge@^1.3.0": - version "1.3.10" - resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz" - integrity sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "20.10.2" - resolved "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz" - integrity sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/prop-types@*": - version "15.7.11" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz" - integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.17": - version "18.2.17" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz" - integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^18.2.42": - version "18.2.42" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz" - integrity sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/scheduler@*": - version "0.16.8" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.5" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" - -"@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0", "@typescript-eslint/eslint-plugin@^6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz" - integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/type-utils" "6.14.0" - "@typescript-eslint/utils" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.14.0", "@typescript-eslint/parser@^6.7.5": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz" - integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA== - dependencies: - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/typescript-estree" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz" - integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== - dependencies: - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - -"@typescript-eslint/type-utils@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz" - integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== - dependencies: - "@typescript-eslint/typescript-estree" "6.14.0" - "@typescript-eslint/utils" "6.14.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz" - integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz" - integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== - dependencies: - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/utils@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz" - integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/typescript-estree" "6.14.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.14.0": - version "6.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz" - integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== - dependencies: - "@typescript-eslint/types" "6.14.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - -"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== - -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== - -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - 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.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== - -agent-base@^6.0.2, agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" - -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.5.0" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" - integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0: - version "8.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.8.2, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-escapes@^6.0.0: - version "6.2.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz" - integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== - dependencies: - type-fest "^3.0.0" - -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^5.0.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.1.6: - version "3.1.7" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz" - integrity sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA== - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.6" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz" - integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.33.1" - -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - -babel-plugin-react-remove-properties@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/babel-plugin-react-remove-properties/-/babel-plugin-react-remove-properties-0.3.0.tgz" - integrity sha512-vbxegtXGyVcUkCvayLzftU95vuvpYFV85pRpeMpohMHeEY46Qe0VNWfkVVcCbaZ12CXHzDFOj0esumATcW83ng== - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@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-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - integrity sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg== - -batch-processor@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz" - integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - 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.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz" - integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== - dependencies: - array-flatten "^2.1.2" - dns-equal "^1.0.0" - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.4" - -boolify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz" - integrity sha512-ma2q0Tc760dW54CdOyJjhrg/a54317o1zYADQJFgperNGKIKgAUGIcKnuMiff8z57+yGlrGNEt4lPgZfCgTJgA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1, "browserslist@>= 4.21.0": - version "4.22.2" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz" - integrity sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase-keys@^9.1.0: - version "9.1.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-9.1.2.tgz" - integrity sha512-nFhquwz7p3nWSHeVYoIkefNPdR2Rt4EuKs9/gaqx3DhJL6HkNHIEcsH+D6N4NvW/MHxc4TT+rp0rc4K7E7x9hw== - dependencies: - camelcase "^8.0.0" - map-obj "5.0.0" - quick-lru "^6.1.1" - type-fest "^4.3.2" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz" - integrity sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA== - -caniuse-lite@^1.0.30001565: - version "1.0.30001565" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz" - integrity sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w== - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== - -chokidar@^3.4.0, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -classnames@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz" - integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== - dependencies: - color-name "^1.1.1" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@^1.1.1, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colorette@^2.0.10, colorette@^2.0.14: - version "2.0.16" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -common-tags@^1.4.0, common-tags@^1.8.2: - version "1.8.2" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz" - integrity sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow== - dependencies: - browserslist "^4.22.1" - -core-js@^3.33.0: - version "3.33.3" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz" - integrity sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw== - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -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.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-loader@^6.8.1: - version "6.8.1" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" - integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.21" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.8" - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssstyle@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz" - integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== - dependencies: - rrweb-cssom "^0.6.0" - -csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -data-urls@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz" - integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== - dependencies: - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - -dayjs@^1.11.10: - version "1.11.10" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decimal.js@^10.4.3: - version "10.4.3" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - -deep-equal@^2.0.5: - version "2.2.3" - resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz" - integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.5" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.2" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - 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.5.1" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.13" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz" - integrity sha512-Jlk9xvkTDGXwZiIDyoM7+3AsuvJVoyOpRupvEVy9nX3YO3/ieZxhlgh8GpLNZ8AY7HjO6y2YwpMSh1ejhu3uIw== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dlv@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== - -dns-packet@^5.2.2: - version "5.3.1" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz" - integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.601: - version "1.4.601" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz" - integrity sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA== - -element-resize-detector@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz" - integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg== - dependencies: - batch-processor "1.0.0" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.12, encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.7.3: - version "7.11.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz" - integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - 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.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-iterator-helpers@^1.0.12: - version "1.0.15" - resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" - -es-module-lexer@^1.2.1: - version "1.4.1" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz" - integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - 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.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz" - integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^2.5.0: - version "2.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz" - integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== - dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" - -eslint-plugin-promise@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" - integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== - -eslint-plugin-react@^7.33.2: - version "7.33.2" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - 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.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-scope@^5.1.1, eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^3.4.1: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -"eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.51.0, eslint@^8.55.0, eslint@^8.7.0, eslint@>=6.0.0, eslint@>=7.0.0: - version "8.55.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" - integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.55.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - integrity sha512-UUPPULqkyAV+M3Shodis7l8D+IyX6V8SbaBnTb449jf3fMTd8+UOZI1Q70NbZVOQkcR91yYgdHsJiMMMVmYshg== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -express@^4.17.3: - version "4.18.1" - resolved "https://registry.npmjs.org/express/-/express-4.18.1.tgz" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.0" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.10.3" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -follow-redirects@^1.0.0: - version "1.15.1" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.1, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== - -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^10.3.10: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^10.3.7: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.1: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@~7.1.1: - version "7.1.2" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.23.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz" - integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globule@^1.0.0: - version "1.2.1" - resolved "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - 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.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz" - integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== - dependencies: - whatwg-encoding "^3.1.1" - -html-entities@^2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@~1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz" - integrity sha512-STnYGcKMXL9CGdtpeTFnLmgMSHTTNQJSHxiC4DETHKf934Q160Ht5pljrNeH24S0O9xUN+9vsDJZdZtk5js6Ww== - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-parser-js@>=0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz" - integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== - dependencies: - agent-base "^7.0.2" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -iconv-lite@^0.6.2, iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -interactjs@^1.10.24: - version "1.10.24" - resolved "https://registry.npmjs.org/interactjs/-/interactjs-1.10.24.tgz" - integrity sha512-vLuxezTaCzcrEwVkKpAh07h7wG1Qt3FgLJ7MOo1qznNV6qPocIAmygmgQQ4R1CuFYYkV03iI1PqF67g/ANP4vg== - dependencies: - "@interactjs/types" "1.10.24" - -internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -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" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0, is-core-module@^2.5.0: - version "2.13.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.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.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-map@^2.0.1, is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.1, is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - 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" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^21.0.0: - version "21.2.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz" - integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.0.0, jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@*, jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watch-typeahead@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.2.tgz" - integrity sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ== - dependencies: - ansi-escapes "^6.0.0" - chalk "^5.2.0" - jest-regex-util "^29.0.0" - jest-watcher "^29.0.0" - slash "^5.0.0" - string-length "^5.0.1" - strip-ansi "^7.0.1" - -jest-watcher@^29.0.0, jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@*, "jest@^27.0.0 || ^28.0.0 || ^29.0.0", jest@^29.7.0, "jest@>= 28": - version "29.7.0" - resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-base64@^2.4.9: - version "2.6.4" - resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz" - integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^23.0.1: - version "23.0.1" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz" - integrity sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ== - dependencies: - cssstyle "^3.0.0" - data-urls "^5.0.0" - decimal.js "^10.4.3" - form-data "^4.0.0" - html-encoding-sniffer "^4.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.2" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.7" - parse5 "^7.1.2" - rrweb-cssom "^0.6.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.3" - w3c-xmlserializer "^5.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^3.1.1" - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - ws "^8.14.2" - xml-name-validator "^5.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.5" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.0, lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21, lodash@~4.17.10: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel-colored-level-prefix@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz" - integrity sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA== - dependencies: - chalk "^1.1.3" - loglevel "^1.4.1" - -loglevel@^1.4.1: - version "1.8.1" - resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-fetch-happen@^10.0.4: - version "10.2.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - -make-plural@^7.0.0: - version "7.3.0" - resolved "https://registry.npmjs.org/make-plural/-/make-plural-7.3.0.tgz" - integrity sha512-/K3BC0KIsO+WK2i94LkMPv3wslMrazrQhfi5We9fMbLlLjzoOSJWr7TAdupLlDWaJcWxwoNosBkhFDejiu5VDw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -map-obj@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz" - integrity sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.4.3: - version "3.4.4" - resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz" - integrity sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA== - dependencies: - fs-monkey "1.0.3" - -memoize-one@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz" - integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@~3.0.2: - version "3.0.8" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" - integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: - version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moo@^0.5.1: - version "0.5.2" - resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" - integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== - -ms@^2.0.0, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns@^7.2.4: - version "7.2.5" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -nan@^2.17.0: - version "2.18.0" - resolved "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz" - integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@^0.6.2, negotiator@^0.6.3, negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -node-forge@^1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-gyp@^8.4.1: - version "8.4.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -"node-sass@^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", node-sass@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz" - integrity sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg== - dependencies: - async-foreach "^0.1.3" - chalk "^4.1.2" - cross-spawn "^7.0.3" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - lodash "^4.17.15" - make-fetch-happen "^10.0.4" - meow "^9.0.0" - nan "^2.17.0" - node-gyp "^8.4.1" - sass-graph "^4.0.1" - stdout-stream "^1.4.0" - "true-case-path" "^2.2.1" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nwsapi@^2.2.7: - version "2.2.7" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" - integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.5" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.7" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.fromentries@^2.0.6: - version "2.0.7" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.values@^1.1.6: - version "1.1.7" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.9: - version "8.4.0" - resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - 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.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - -p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.10" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.1.0, postcss@^8.4.21: - version "8.4.32" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz" - integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-eslint-cli@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/prettier-eslint-cli/-/prettier-eslint-cli-8.0.1.tgz" - integrity sha512-jru4JUDHzWEtM/SOxqagU7hQTVP8BVrxO2J0qNauWZuPRld6Ea2eyNaEzIGx6I+yjmOLCsjNM+vU1AJgaW1ZSQ== - dependencies: - "@messageformat/core" "^3.2.0" - "@prettier/eslint" "npm:prettier-eslint@^16.1.0" - arrify "^2.0.1" - boolify "^1.0.1" - camelcase-keys "^9.1.0" - chalk "^4.1.2" - common-tags "^1.8.2" - core-js "^3.33.0" - eslint "^8.51.0" - find-up "^5.0.0" - get-stdin "^8.0.0" - glob "^10.3.10" - ignore "^5.2.4" - indent-string "^4.0.0" - lodash.memoize "^4.1.2" - loglevel-colored-level-prefix "^1.0.0" - rxjs "^7.8.1" - yargs "^17.7.2" - -prettier@^3.0.1, prettier@^3.1.0, "prettier@>= 0.11.0": - version "3.1.0" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz" - integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -quick-lru@^6.1.1: - version "6.1.2" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz" - integrity sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomcolor@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/randomcolor/-/randomcolor-0.6.2.tgz" - integrity sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A== - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.8: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-router-dom@^6.20.1: - version "6.20.1" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz" - integrity sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw== - dependencies: - "@remix-run/router" "1.13.1" - react-router "6.20.1" - -react-router@6.20.1: - version "6.20.1" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz" - integrity sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA== - dependencies: - "@remix-run/router" "1.13.1" - -react@^18.0.0, react@^18.2.0, react@>=16.8: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.1: - version "2.3.6" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-relative@^0.8.7: - version "0.8.7" - resolved "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz" - integrity sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: - version "1.22.8" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4: - version "2.0.0-next.5" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" - integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== - dependencies: - glob "^10.3.7" - -rrweb-cssom@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" - integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.8.1: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-identifier@^0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz" - integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== - -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" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-graph@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz" - integrity sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA== - dependencies: - glob "^7.0.0" - lodash "^4.17.11" - scss-tokenizer "^0.4.3" - yargs "^17.2.1" - -sass-loader@^13.3.2: - version "13.3.2" - resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz" - integrity sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg== - dependencies: - neo-async "^2.6.2" - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -scss-tokenizer@^0.4.3: - version "0.4.3" - resolved "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz" - integrity sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw== - dependencies: - js-base64 "^2.4.9" - source-map "^0.7.3" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver@^5.6.0: - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.4: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.5: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.6: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.7: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.8: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.3: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.5.4: - version "7.5.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz" - integrity sha512-9jphSf3UbIgpOX/RKvX02iw/rN2TKdusnsPpGfO/rkcsrd+IRqgHZb4VGnmL0Cynps8Nj2hN45wsi30BzrHDIw== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" - integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.7.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== - dependencies: - ip "^2.0.0" - smart-buffer "^4.2.0" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - 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.16" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -"statuses@>= 1.3.1 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz" - integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - dependencies: - readable-stream "^2.0.1" - -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" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - 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.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-length@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" - integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== - dependencies: - char-regex "^2.0.0" - strip-ansi "^7.0.1" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - 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.8: - version "4.0.10" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-loader@^3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -terser-webpack-plugin@^5.3.7: - version "5.3.9" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.8" - -terser@^5.16.8: - version "5.25.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.25.0.tgz" - integrity sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz" - integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== - dependencies: - punycode "^2.3.1" - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-loader@^9.5.1: - version "9.5.1" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz" - integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - source-map "^0.7.4" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.1.0: - version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^3.0.0: - version "3.13.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" - integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== - -type-fest@^4.3.2: - version "4.8.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz" - integrity sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -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" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript@*, typescript@^5.2.2, typescript@^5.3.3, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", typescript@>=4.2.0: - version "5.3.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - 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.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" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -unpipe@~1.0.0, unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vue-eslint-parser@^9.1.0: - version "9.3.2" - resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz" - integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -w3c-xmlserializer@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz" - integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== - dependencies: - xml-name-validator "^5.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-cli@^5.1.4, webpack-cli@5.x.x: - version "5.1.4" - resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^5.7.3" - -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.15.1: - version "4.15.1" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" - -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.89.0, webpack@>=5, webpack@5.x.x: - version "5.89.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz" - integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" - 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.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz" - integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - -whatwg-url@^14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz" - integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== - dependencies: - tr46 "^5.0.0" - webidl-conversions "^7.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - 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-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: - version "1.1.13" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@^8.13.0, ws@^8.14.2: - version "8.14.2" - resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" - integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== - -xml-name-validator@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz" - integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.2.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== From 296eb6c004db302464942039573fc3ca22867d1e Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Thu, 21 Dec 2023 18:46:51 +0200 Subject: [PATCH 21/50] build working --- .eslintrc.json | 1 + package.json | 11 +- src/lib/Timeline.tsx | 35 +++--- src/lib/columns/Columns.tsx | 1 - src/lib/default-config.ts | 2 - src/lib/headers/SidebarHeader.tsx | 2 +- src/lib/items/Items.tsx | 2 +- src/lib/items/defaultItemRenderer.tsx | 2 +- src/lib/markers/TimelineMarkersRenderer.tsx | 1 - src/lib/markers/public/CursorMarker.tsx | 15 ++- src/lib/markers/public/CustomMarker.tsx | 2 +- src/lib/scroll/ScrollElement.tsx | 1 + src/lib/types/main.ts | 9 +- src/lib/utility/calendar.tsx | 5 +- tsconfig.json | 129 ++++---------------- tsconfig.node.json | 10 ++ vite.config.ts | 20 +++ 17 files changed, 101 insertions(+), 147 deletions(-) create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eslintrc.json b/.eslintrc.json index e489b6773..80d6c6975 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,6 +23,7 @@ "prettier" ], "rules": { + "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-explicit-any": "off", "react/jsx-uses-vars": 2, "react/no-children-prop": 0, diff --git a/package.json b/package.json index cc79e2788..f5a2b3e23 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ }, "exports": { ".": { - "import": "./dist/main.es.js", - "require": "./dist/main.cjs.js" + "import": "./lib/main.mjs" } }, "files": [ @@ -125,7 +124,7 @@ "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", "@types/element-resize-detector": "^1.1.6", - "@types/react": "^18.2.42", + "@types/react": "^18.2.43", "@types/react-dom": "^18.2.17", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", @@ -142,6 +141,8 @@ "eslint-plugin-prettier": "^2.5.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", "interactjs": "^1.10.24", "jest": "^29.7.0", "jest-watch-typeahead": "^2.2.2", @@ -155,10 +156,12 @@ "react-router-dom": "^6.20.1", "regenerator-runtime": "^0.14.0", "rimraf": "^5.0.5", + "sass": "^1.69.5", "sass-loader": "^13.3.2", "style-loader": "^3.3.3", "ts-loader": "^9.5.1", - "typescript": "^5.3.3", + "typescript": "^5.2.2", + "vite": "^5.0.8", "vite-plugin-dts": "^3.6.4", "vite-plugin-lib-inject-css": "^1.3.0", "webpack": "^5.89.0", diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index b8f2fc0c1..8003150da 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -39,6 +39,7 @@ import { import { ItemDimension } from './types/dimension' import { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' +import './Timeline.scss' export type ReactCalendarTimelineProps< CustomItem extends TimelineItemBase = TimelineItemBase, @@ -414,7 +415,7 @@ export default class ReactCalendarTimeline extends Component< scrollHeaderRef: HTMLDivElement | null = null componentDidUpdate( - prevProps: ReactCalendarTimelineProps, + _: ReactCalendarTimelineProps, prevState: ReactCalendarTimelineState, ) { const newZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart @@ -822,16 +823,19 @@ export default class ReactCalendarTimeline extends Component< ) } - items( - canvasTimeStart: number, - zoom: number, - canvasTimeEnd: number, - canvasWidth: number, - minUnit: keyof TimelineTimeSteps, - dimensionItems: any[], - groupHeights: number[], - groupTops: number[], - ) { + items({ + canvasTimeStart, + canvasTimeEnd, + canvasWidth, + dimensionItems, + groupTops, + }: { + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + dimensionItems: any[] + groupTops: number[] + }) { return ( i === itemId) } + getScrollElementRef = (el: HTMLDivElement) => { if (this.props.scrollRef) { this.props.scrollRef(el) @@ -1008,6 +1013,7 @@ export default class ReactCalendarTimeline extends Component< } container = React.createRef() + render() { const { items, @@ -1109,16 +1115,13 @@ export default class ReactCalendarTimeline extends Component< height, )} {this.rows(canvasWidth, groupHeights, groups)} - {this.items( + {this.items({ canvasTimeStart, - zoom, canvasTimeEnd, canvasWidth, - minUnit, dimensionItems, - groupHeights, groupTops, - )} + })} {this.childrenWithProps( canvasTimeStart, canvasTimeEnd, diff --git a/src/lib/columns/Columns.tsx b/src/lib/columns/Columns.tsx index cb023ca36..d0fc74358 100644 --- a/src/lib/columns/Columns.tsx +++ b/src/lib/columns/Columns.tsx @@ -2,7 +2,6 @@ import React, { Component, FC } from 'react' import { iterateTimes } from '../utility/calendar' import { TimelineStateConsumer } from '../timeline/TimelineStateContext' -import { UnitType } from 'dayjs' import { TimelineTimeSteps } from '../types/main' type WrapperColumnsProps = { diff --git a/src/lib/default-config.ts b/src/lib/default-config.ts index 33cdd0fbb..464575d67 100644 --- a/src/lib/default-config.ts +++ b/src/lib/default-config.ts @@ -1,5 +1,3 @@ -import { Unit } from './types/main' - export const defaultKeys = { groupIdKey: 'id', groupTitleKey: 'title', diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx index 6806db577..f2d8e837a 100644 --- a/src/lib/headers/SidebarHeader.tsx +++ b/src/lib/headers/SidebarHeader.tsx @@ -1,4 +1,4 @@ -import React, { +import { ComponentType, CSSProperties, HTMLAttributes, diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index b8e9cd762..ec1ba1f4c 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import { Component } from 'react' import Item, { ItemProps } from './Item' // import ItemGroup from './ItemGroup' diff --git a/src/lib/items/defaultItemRenderer.tsx b/src/lib/items/defaultItemRenderer.tsx index 0732ed9ba..ca72cb5f9 100644 --- a/src/lib/items/defaultItemRenderer.tsx +++ b/src/lib/items/defaultItemRenderer.tsx @@ -1,4 +1,4 @@ -import React, { HTMLAttributes } from 'react' +import { HTMLAttributes } from 'react' import { GetItemPropsParams, GetResizeProps, ItemProps } from './Item' import { ItemContext } from '../types/main' diff --git a/src/lib/markers/TimelineMarkersRenderer.tsx b/src/lib/markers/TimelineMarkersRenderer.tsx index 49ca93dad..5e29368c2 100644 --- a/src/lib/markers/TimelineMarkersRenderer.tsx +++ b/src/lib/markers/TimelineMarkersRenderer.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { TimelineMarkersConsumer } from './TimelineMarkersContext' import { TimelineMarkerType } from './markerType' import TodayMarker from './implementations/TodayMarker' diff --git a/src/lib/markers/public/CursorMarker.tsx b/src/lib/markers/public/CursorMarker.tsx index 7466d74c3..85da82246 100644 --- a/src/lib/markers/public/CursorMarker.tsx +++ b/src/lib/markers/public/CursorMarker.tsx @@ -1,6 +1,13 @@ -import React, { Component } from 'react' -import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' -import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' +import { Component } from 'react' +import { + SubscribeReturn, + TimelineMarkersConsumer, +} from '../TimelineMarkersContext' +import { + MarkerRendererType, + MarkerType, + TimelineMarkerType, +} from '../markerType' type CursorMarkerProps = { subscribeMarker: (m: MarkerType) => SubscribeReturn @@ -11,7 +18,7 @@ class CursorMarker extends Component { componentDidMount() { const { unsubscribe } = this.props.subscribeMarker({ type: TimelineMarkerType.Cursor, - renderer: this.props.children + renderer: this.props.children, }) this.unsubscribe = unsubscribe } diff --git a/src/lib/markers/public/CustomMarker.tsx b/src/lib/markers/public/CustomMarker.tsx index 947fd0c65..fa707e0f5 100644 --- a/src/lib/markers/public/CustomMarker.tsx +++ b/src/lib/markers/public/CustomMarker.tsx @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import { Component } from 'react' import { SubscribeReturn, TimelineMarkersConsumer, diff --git a/src/lib/scroll/ScrollElement.tsx b/src/lib/scroll/ScrollElement.tsx index a0a2c744c..7668e4279 100644 --- a/src/lib/scroll/ScrollElement.tsx +++ b/src/lib/scroll/ScrollElement.tsx @@ -25,6 +25,7 @@ type State = { class ScrollElement extends Component { scrollComponent: HTMLDivElement | null = null + // @ts-ignore private dragStartPosition: number | null = null private dragLastPosition: number | null = null private lastTouchDistance: number | null = null diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 8b2ad7409..4c53b556f 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -1,6 +1,5 @@ -import { Dayjs, UnitType } from 'dayjs' +import { Dayjs } from 'dayjs' import { - ReactElement, ReactNode, CSSProperties, HTMLAttributes, @@ -9,11 +8,11 @@ import { Ref, Component, TouchEventHandler, + ReactElement, } from 'react' // import reactCalendarTimeline from '../../../index' import { Dimension, ItemDimension } from './dimension' -import { ReactElementLike, string } from 'prop-types' -import { ItemProps, ResizeEdge } from '../items/Item' +import { ResizeEdge } from '../items/Item' import { SelectUnits } from '../utility/calendar' export type Id = number | string @@ -365,7 +364,7 @@ export class CustomHeader extends Component< // CustomGroup extends TimelineGroupBase = TimelineGroupBase, // > extends Component> {} -export type ElementWithSecret = ReactElementLike & { +export type ElementWithSecret = ReactElement & { props: { variant: string } diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index e860bd31e..0bbb10d8c 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -1,4 +1,4 @@ -import dayjs, { Dayjs, UnitType } from 'dayjs' +import dayjs, { Dayjs } from 'dayjs' import { _get } from './generic' import { Dimension, ItemDimension } from '../types/dimension' import { @@ -370,7 +370,6 @@ const EPSILON = 0.001 export function collision( a: Dimension, b: Dimension, - lineHeight: number, collisionPadding: number = EPSILON, ) { // 2d collisions detection - https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection @@ -416,7 +415,7 @@ export function groupStack( other.dimensions && other.dimensions.top !== null && other.dimensions.stack && - collision(item.dimensions, other.dimensions, lineHeight) + collision(item.dimensions, other.dimensions) ) { collidingItem = other break diff --git a/tsconfig.json b/tsconfig.json index aefb930a6..a7fc6fbf2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,110 +1,25 @@ { - "include": ["src", "lib"], "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..2bfcc9450 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' +import { resolve } from 'path' +import dts from 'vite-plugin-dts' +import { libInjectCss } from 'vite-plugin-lib-inject-css' + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + copyPublicDir: false, + outDir: 'lib', + lib: { + entry: resolve(__dirname, 'src/index.ts'), + name: 'react-calendar-timeline', + fileName: 'react-calendar-timeline', + formats: ['es'], + }, + }, + plugins: [react(), libInjectCss(), dts({ include: ['src'] })], +}) From a9c390e04bf2aceea8885ceca7719e701c9c7c0e Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Fri, 22 Dec 2023 16:27:14 +0200 Subject: [PATCH 22/50] changes --- demo/.eslintrc.cjs | 19 + demo/.gitignore | 24 + demo/README.md | 30 + demo/app/generate-fake-data.js | 45 - demo/app/index.jsx | 97 - demo/index.html | 26 +- demo/index.jsx | 16 - demo/package.json | 33 + demo/public/vite.svg | 1 + demo/src/App.tsx | 105 + demo/src/assets/react.svg | 1 + .../demo-controlled-scrolling/index.jsx} | 0 .../demo-controlled-select/index.jsx} | 0 .../CustomInfoLabel.jsx} | 0 .../demo-custom-info-label/index.jsx} | 0 .../demo-custom-items/index.jsx} | 468 ++-- .../demo-element-resize/index.jsx} | 0 .../index.js => src/demo-headers/index.jsx} | 0 .../demo-linked-timelines/index.jsx} | 0 demo/src/demo-main/groups.json | 70 + demo/{app => src}/demo-main/index.jsx | 82 +- demo/src/demo-main/items.json | 1971 +++++++++++++++++ .../demo-performance/index.jsx} | 0 .../index.js => src/demo-renderers/index.jsx} | 86 +- .../demo-tree-groups/index.jsx} | 0 .../demo-vertical-classes/index.jsx} | 89 +- demo/src/generate-fake-data.js | 70 + demo/src/main.tsx | 10 + demo/{app => src}/styles.scss | 0 demo/src/vite-env.d.ts | 1 + demo/tsconfig.json | 32 + demo/tsconfig.node.json | 12 + demo/vite.config.ts | 13 + index.js | 2 +- src/lib/Timeline.tsx | 90 +- src/lib/items/Items.tsx | 4 +- src/lib/utility/calendar.tsx | 18 +- vite.config.ts => vite.config.mts | 6 +- 38 files changed, 2830 insertions(+), 591 deletions(-) create mode 100644 demo/.eslintrc.cjs create mode 100644 demo/.gitignore create mode 100644 demo/README.md delete mode 100644 demo/app/generate-fake-data.js delete mode 100644 demo/app/index.jsx delete mode 100644 demo/index.jsx create mode 100644 demo/package.json create mode 100644 demo/public/vite.svg create mode 100644 demo/src/App.tsx create mode 100644 demo/src/assets/react.svg rename demo/{app/demo-controlled-scrolling/index.js => src/demo-controlled-scrolling/index.jsx} (100%) rename demo/{app/demo-controlled-select/index.js => src/demo-controlled-select/index.jsx} (100%) rename demo/{app/demo-custom-info-label/CustomInfoLabel.js => src/demo-custom-info-label/CustomInfoLabel.jsx} (100%) rename demo/{app/demo-custom-info-label/index.js => src/demo-custom-info-label/index.jsx} (100%) rename demo/{app/demo-custom-items/index.js => src/demo-custom-items/index.jsx} (96%) rename demo/{app/demo-element-resize/index.js => src/demo-element-resize/index.jsx} (100%) rename demo/{app/demo-headers/index.js => src/demo-headers/index.jsx} (100%) rename demo/{app/demo-linked-timelines/index.js => src/demo-linked-timelines/index.jsx} (100%) create mode 100644 demo/src/demo-main/groups.json rename demo/{app => src}/demo-main/index.jsx (75%) create mode 100644 demo/src/demo-main/items.json rename demo/{app/demo-performance/index.js => src/demo-performance/index.jsx} (100%) rename demo/{app/demo-renderers/index.js => src/demo-renderers/index.jsx} (78%) rename demo/{app/demo-tree-groups/index.js => src/demo-tree-groups/index.jsx} (100%) rename demo/{app/demo-vertical-classes/index.js => src/demo-vertical-classes/index.jsx} (50%) create mode 100644 demo/src/generate-fake-data.js create mode 100644 demo/src/main.tsx rename demo/{app => src}/styles.scss (100%) create mode 100644 demo/src/vite-env.d.ts create mode 100644 demo/tsconfig.json create mode 100644 demo/tsconfig.node.json create mode 100644 demo/vite.config.ts rename vite.config.ts => vite.config.mts (89%) diff --git a/demo/.eslintrc.cjs b/demo/.eslintrc.cjs new file mode 100644 index 000000000..f2495cffd --- /dev/null +++ b/demo/.eslintrc.cjs @@ -0,0 +1,19 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + '@typescript-eslint/no-explicit-any': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/demo/.gitignore b/demo/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/demo/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/demo/README.md b/demo/README.md new file mode 100644 index 000000000..0d6babedd --- /dev/null +++ b/demo/README.md @@ -0,0 +1,30 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/demo/app/generate-fake-data.js b/demo/app/generate-fake-data.js deleted file mode 100644 index d38ff8c62..000000000 --- a/demo/app/generate-fake-data.js +++ /dev/null @@ -1,45 +0,0 @@ -import { faker } from '@faker-js/faker'; -import randomColor from 'randomcolor' -import dayjs from 'dayjs' - -export default function (groupCount = 30, itemCount = 1000, daysInPast = 30) { - let randomSeed = Math.floor(Math.random() * 1000) - let groups = [] - for (let i = 0; i < groupCount; i++) { - groups.push({ - id: `${i + 1}`, - title: faker.person.firstName(), - rightTitle: faker.person.lastName(), - label: `Label ${faker.person.firstName()}`, - bgColor: randomColor({ luminosity: 'light', seed: randomSeed + i }) - }) - } - - let items = [] - for (let i = 0; i < itemCount; i++) { - const startDate = faker.date.recent({daysInPast}).valueOf() + (daysInPast * 0.3) * 86400 * 1000 - const startValue = Math.floor(dayjs(startDate).valueOf() / 10000000) * 10000000 - const endValue = dayjs(startDate + faker.number.int({min: 2, max: 20}) * 15 * 60 * 1000).valueOf() - - items.push({ - id: i + '', - group: faker.number.int({ min: 1, max: groups.length }) + '', - title: faker.hacker.phrase(), - start: startValue, - end: endValue, - canMove: startValue > new Date().getTime(), - canResize: startValue > new Date().getTime() ? (endValue > new Date().getTime() ? 'both' : 'left') : (endValue > new Date().getTime() ? 'right' : false), - className: (dayjs(startDate).day() === 6 || dayjs(startDate).day() === 0) ? 'item-weekend' : '', - bgColor: randomColor({ luminosity: 'light', seed: randomSeed + i, format:'rgba', alpha:0.6 }), - selectedBgColor: randomColor({ luminosity: 'light', seed: randomSeed + i, format:'rgba', alpha:1 }), - color: randomColor({ luminosity: 'dark', seed: randomSeed + i }), - itemProps: { - 'data-tip': faker.hacker.phrase(), - } - }) - } - - items = items.sort((a, b) => b - a) - - return { groups, items } -} diff --git a/demo/app/index.jsx b/demo/app/index.jsx deleted file mode 100644 index 6340f3876..000000000 --- a/demo/app/index.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import React from 'react' -import './styles.scss' - -import { Component } from 'react' -import PropTypes from 'prop-types' -// -import { - HashRouter as Router, - Route, - Link, - useLocation, - Routes, -} from 'react-router-dom' -// -import DemoMain from './demo-main' -import DemoPerformance from './demo-performance' -import DemoTreePGroups from './demo-tree-groups' -import LinkedTimelines from './demo-linked-timelines' -import ElementResize from './demo-element-resize' -import Renderers from './demo-renderers' -import VerticalClasses from './demo-vertical-classes' -import CustomItems from './demo-custom-items' -import CustomHeaders from './demo-headers' -import CustomInfoLabel from './demo-custom-info-label' -import ControledSelect from './demo-controlled-select' -import ControlledScrolling from './demo-controlled-scrolling' - -const demos = { - main: , - performance: , - treeGroups: DemoTreePGroups, - linkedTimelines: , - elementResize: , - renderers: , - verticalClasses: , - customItems: , - customHeaders: , - customInfoLabel: , - controledSelect: , - controlledScrolling: , -} -// -// A simple component that shows the pathname of the current location -class Menu extends Component { - static propTypes = { - location: PropTypes.object.isRequired, - } - - render() { - let pathname = (this.props.location || {}).pathname - - if (!pathname || pathname === '/') { - pathname = `/${Object.keys(demos)[0]}` - } - - return ( -
= 0 ? ' sticky' : '' - }`} - > - Loc:{pathname} - Choose the demo: - {Object.keys(demos).map((key) => ( - - {key} - - ))} -
- ) - } -} - -const App = () => { - // const location = useLocation() - return ( - -
- -
- - - {Object.keys(demos).map((key) => ( - - ))} - -
-
-
- ) -} - -export default App diff --git a/demo/index.html b/demo/index.html index 2219c2d44..3de6909d5 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,17 +1,15 @@ - - - - - - - react-calendar-timeline - - - -
- - - + + + + + + + Vite + React + TS + + +
+ + diff --git a/demo/index.jsx b/demo/index.jsx deleted file mode 100644 index b0659fcc1..000000000 --- a/demo/index.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import 'react-calendar-timeline-css' -import App from './app' -import { createRoot } from 'react-dom/client'; -const container = document.getElementById('root'); -const root = createRoot(container); // createRoot(container!) if you use TypeScript -root.render(); - - -if (module.hot) { - module.hot.accept('./app', () => { - const NextApp = require('./app').default - - root.render(NextApp) - }) -} diff --git a/demo/package.json b/demo/package.json new file mode 100644 index 000000000..8a0fc164e --- /dev/null +++ b/demo/package.json @@ -0,0 +1,33 @@ +{ + "name": "react-calendar-timeline-demos", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint react-calendar-timeline-demos --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "packageManager": "npm@8.19.2", + "resolutions": { + "react-calendar-timeline": "../src/index.ts" + }, + "devDependencies": { + "@types/randomcolor": "^0.5.9", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } +} diff --git a/demo/public/vite.svg b/demo/public/vite.svg new file mode 100644 index 000000000..ee9fadaf9 --- /dev/null +++ b/demo/public/vite.svg @@ -0,0 +1 @@ + diff --git a/demo/src/App.tsx b/demo/src/App.tsx new file mode 100644 index 000000000..fb1a835a2 --- /dev/null +++ b/demo/src/App.tsx @@ -0,0 +1,105 @@ +import { ComponentType } from 'react' +import { + createBrowserRouter, + Link, + RouteObject, + RouterProvider, +} from 'react-router-dom' + +import DemoMain from './demo-main' +/*import DemoPerformance from './demo-performance' +import DemoTreePGroups from './demo-tree-groups' +import LinkedTimelines from './demo-linked-timelines' +import ElementResize from './demo-element-resize' +import Renderers from './demo-renderers' +import VerticalClasses from './demo-vertical-classes' +import CustomItems from './demo-custom-items' +import CustomHeaders from './demo-headers' +import CustomInfoLabel from './demo-custom-info-label' +import ControledSelect from './demo-controlled-select' +import ControlledScrolling from './demo-controlled-scrolling'*/ + +const routes: RouteObject[] = [ + { + path: '/', + Component: withLayout(DemoMain), + loader: () => 'loading', + }, + /* { + path: '/DemoPerformance', + Component: withLayout(DemoPerformance), + loader: () => 'loading', + }, + { + path: '/DemoTreePGroups', + Component: withLayout(DemoTreePGroups), + loader: () => 'loading', + }, + { + path: '/LinkedTimelines', + Component: withLayout(LinkedTimelines), + }, + { + path: '/ElementResize', + Component: withLayout(ElementResize), + }, + { + path: '/Renderers', + Component: withLayout(Renderers), + }, + { + path: '/VerticalClasses', + Component: withLayout(VerticalClasses), + }, + { + path: '/CustomItems', + Component: withLayout(CustomItems), + }, + { + path: '/CustomHeaders', + Component: withLayout(CustomHeaders), + }, + { + path: '/CustomInfoLabel', + Component: withLayout(CustomInfoLabel), + }, + { + path: '/ControledSelect', + Component: withLayout(ControledSelect), + }, + { + path: '/ControlledScrolling', + Component: withLayout(ControlledScrolling), + },*/ +] + +function Menu() { + return ( +
+ Choose the demo: + {routes.map((key) => ( + + {key.path!.replace('/', '')} + + ))} +
+ ) +} + +function withLayout(Component: ComponentType) { + return function Layout() { + return ( +
+ +
{/* */}
+
+ ) + } +} + +function App() { + // return + return +} + +export default App diff --git a/demo/src/assets/react.svg b/demo/src/assets/react.svg new file mode 100644 index 000000000..8e0e0f15c --- /dev/null +++ b/demo/src/assets/react.svg @@ -0,0 +1 @@ + diff --git a/demo/app/demo-controlled-scrolling/index.js b/demo/src/demo-controlled-scrolling/index.jsx similarity index 100% rename from demo/app/demo-controlled-scrolling/index.js rename to demo/src/demo-controlled-scrolling/index.jsx diff --git a/demo/app/demo-controlled-select/index.js b/demo/src/demo-controlled-select/index.jsx similarity index 100% rename from demo/app/demo-controlled-select/index.js rename to demo/src/demo-controlled-select/index.jsx diff --git a/demo/app/demo-custom-info-label/CustomInfoLabel.js b/demo/src/demo-custom-info-label/CustomInfoLabel.jsx similarity index 100% rename from demo/app/demo-custom-info-label/CustomInfoLabel.js rename to demo/src/demo-custom-info-label/CustomInfoLabel.jsx diff --git a/demo/app/demo-custom-info-label/index.js b/demo/src/demo-custom-info-label/index.jsx similarity index 100% rename from demo/app/demo-custom-info-label/index.js rename to demo/src/demo-custom-info-label/index.jsx diff --git a/demo/app/demo-custom-items/index.js b/demo/src/demo-custom-items/index.jsx similarity index 96% rename from demo/app/demo-custom-items/index.js rename to demo/src/demo-custom-items/index.jsx index 051923c55..e563e0013 100644 --- a/demo/app/demo-custom-items/index.js +++ b/demo/src/demo-custom-items/index.jsx @@ -1,234 +1,234 @@ -import React, { Component } from 'react' -import dayjs from 'dayjs' - -import Timeline from 'react-calendar-timeline' -// import containerResizeDetector from 'react-calendar-timeline/lib/resize-detector/container' - -import generateFakeData from '../generate-fake-data' - -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() - -var keys = { - groupIdKey: 'id', - groupTitleKey: 'title', - groupRightTitleKey: 'rightTitle', - itemIdKey: 'id', - itemTitleKey: 'title', - itemDivTitleKey: 'title', - itemGroupKey: 'group', - itemTimeStartKey: 'start', - itemTimeEndKey: 'end' -} - -export default class App extends Component { - constructor(props) { - super(props) - - const { groups, items } = generateFakeData() - const defaultTimeStart = dayjs() - .startOf('day') - .toDate() - const defaultTimeEnd = dayjs() - .startOf('day') - .add(1, 'day') - .toDate() - - this.state = { - groups, - items, - defaultTimeStart, - defaultTimeEnd - } - } - - handleCanvasClick = (groupId, time, event) => { - console.log('Canvas clicked', groupId, dayjs(time).format()) - } - - handleCanvasContextMenu = (group, time, e) => { - console.log('Canvas context menu', group, dayjs(time).format()) - } - - handleItemClick = (itemId, _, time) => { - console.log('Clicked: ' + itemId, dayjs(time).format()) - } - - handleItemSelect = (itemId, _, time) => { - console.log('Selected: ' + itemId, dayjs(time).format()) - } - - handleItemDoubleClick = (itemId, _, time) => { - console.log('Double Click: ' + itemId, dayjs(time).format()) - } - - handleItemContextMenu = (itemId, _, time) => { - console.log('Context Menu: ' + itemId, dayjs(time).format()) - } - - handleItemMove = (itemId, dragTime, newGroupOrder) => { - const { items, groups } = this.state - - const group = groups[newGroupOrder] - - this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) - }) - - console.log('Moved', itemId, dragTime, newGroupOrder) - } - - handleItemResize = (itemId, time, edge) => { - const { items } = this.state - - this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) - }) - - console.log('Resized', itemId, time, edge) - } - - // this limits the timeline to -6 months ... +6 months - handleTimeChange = (visibleTimeStart, visibleTimeEnd, updateScrollCanvas) => { - if (visibleTimeStart < minTime && visibleTimeEnd > maxTime) { - updateScrollCanvas(minTime, maxTime) - } else if (visibleTimeStart < minTime) { - updateScrollCanvas(minTime, minTime + (visibleTimeEnd - visibleTimeStart)) - } else if (visibleTimeEnd > maxTime) { - updateScrollCanvas(maxTime - (visibleTimeEnd - visibleTimeStart), maxTime) - } else { - updateScrollCanvas(visibleTimeStart, visibleTimeEnd) - } - } - - moveResizeValidator = (action, item, time, resizeEdge) => { - if (time < new Date().getTime()) { - var newTime = - Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) - return newTime - } - - return time - } - - itemRenderer = ({ - item, - timelineContext, - itemContext, - getItemProps, - getResizeProps, - }) => { - const { left: leftResizeProps, right: rightResizeProps } = getResizeProps() - const backgroundColor = itemContext.selected ? itemContext.dragging ? 'red' : item.selectedBgColor : item.bgColor; - const borderColor = itemContext.resizing ? 'red' : item.color; - return ( -
- {itemContext.useResizeHandle ? ( -
- ) : null} - -
- {itemContext.title} -
- - - {itemContext.useResizeHandle ? ( -
- ) : null} -
- ) - } - - // groupRenderer = ({ group }) => { - // return ( - //
- // {group.title} - //
- // ) - // } - - render() { - const { groups, items, defaultTimeStart, defaultTimeEnd } = this.state - console.log("render") - return ( - Above The Left
} - // rightSidebarWidth={150} - // rightSidebarContent={
Above The Right
} - - canMove - canResize="right" - canSelect - itemsSorted - itemTouchSendsClick={false} - stackItems - itemHeightRatio={0.75} - lineHeight={40} - showCursorLine - // resizeDetector={containerResizeDetector} - - defaultTimeStart={defaultTimeStart} - defaultTimeEnd={defaultTimeEnd} - itemRenderer={this.itemRenderer} - // groupRenderer={this.groupRenderer} - - onCanvasClick={this.handleCanvasClick} - onCanvasContextMenu={this.handleCanvasContextMenu} - onItemClick={this.handleItemClick} - onItemSelect={this.handleItemSelect} - onItemContextMenu={this.handleItemContextMenu} - onItemMove={this.handleItemMove} - onItemResize={this.handleItemResize} - onItemDoubleClick={this.handleItemDoubleClick} - onTimeChange={this.handleTimeChange} - moveResizeValidator={this.moveResizeValidator} - /> - ) - } -} +import React, { Component } from 'react' +import dayjs from 'dayjs' + +import Timeline from 'react-calendar-timeline' +// import containerResizeDetector from 'react-calendar-timeline/lib/resize-detector/container' + +import generateFakeData from '../generate-fake-data' + +var minTime = dayjs() + .add(-6, 'months') + .valueOf() +var maxTime = dayjs() + .add(6, 'months') + .valueOf() + +var keys = { + groupIdKey: 'id', + groupTitleKey: 'title', + groupRightTitleKey: 'rightTitle', + itemIdKey: 'id', + itemTitleKey: 'title', + itemDivTitleKey: 'title', + itemGroupKey: 'group', + itemTimeStartKey: 'start', + itemTimeEndKey: 'end' +} + +export default class App extends Component { + constructor(props) { + super(props) + + const { groups, items } = generateFakeData() + const defaultTimeStart = dayjs() + .startOf('day') + .toDate() + const defaultTimeEnd = dayjs() + .startOf('day') + .add(1, 'day') + .toDate() + + this.state = { + groups, + items, + defaultTimeStart, + defaultTimeEnd + } + } + + handleCanvasClick = (groupId, time, event) => { + console.log('Canvas clicked', groupId, dayjs(time).format()) + } + + handleCanvasContextMenu = (group, time, e) => { + console.log('Canvas context menu', group, dayjs(time).format()) + } + + handleItemClick = (itemId, _, time) => { + console.log('Clicked: ' + itemId, dayjs(time).format()) + } + + handleItemSelect = (itemId, _, time) => { + console.log('Selected: ' + itemId, dayjs(time).format()) + } + + handleItemDoubleClick = (itemId, _, time) => { + console.log('Double Click: ' + itemId, dayjs(time).format()) + } + + handleItemContextMenu = (itemId, _, time) => { + console.log('Context Menu: ' + itemId, dayjs(time).format()) + } + + handleItemMove = (itemId, dragTime, newGroupOrder) => { + const { items, groups } = this.state + + const group = groups[newGroupOrder] + + this.setState({ + items: items.map( + item => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id + }) + : item + ) + }) + + console.log('Moved', itemId, dragTime, newGroupOrder) + } + + handleItemResize = (itemId, time, edge) => { + const { items } = this.state + + this.setState({ + items: items.map( + item => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time + }) + : item + ) + }) + + console.log('Resized', itemId, time, edge) + } + + // this limits the timeline to -6 months ... +6 months + handleTimeChange = (visibleTimeStart, visibleTimeEnd, updateScrollCanvas) => { + if (visibleTimeStart < minTime && visibleTimeEnd > maxTime) { + updateScrollCanvas(minTime, maxTime) + } else if (visibleTimeStart < minTime) { + updateScrollCanvas(minTime, minTime + (visibleTimeEnd - visibleTimeStart)) + } else if (visibleTimeEnd > maxTime) { + updateScrollCanvas(maxTime - (visibleTimeEnd - visibleTimeStart), maxTime) + } else { + updateScrollCanvas(visibleTimeStart, visibleTimeEnd) + } + } + + moveResizeValidator = (action, item, time, resizeEdge) => { + if (time < new Date().getTime()) { + var newTime = + Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) + return newTime + } + + return time + } + + itemRenderer = ({ + item, + timelineContext, + itemContext, + getItemProps, + getResizeProps, + }) => { + const { left: leftResizeProps, right: rightResizeProps } = getResizeProps() + const backgroundColor = itemContext.selected ? itemContext.dragging ? 'red' : item.selectedBgColor : item.bgColor; + const borderColor = itemContext.resizing ? 'red' : item.color; + return ( +
+ {itemContext.useResizeHandle ? ( +
+ ) : null} + +
+ {itemContext.title} +
+ + + {itemContext.useResizeHandle ? ( +
+ ) : null} +
+ ) + } + + // groupRenderer = ({ group }) => { + // return ( + //
+ // {group.title} + //
+ // ) + // } + + render() { + const { groups, items, defaultTimeStart, defaultTimeEnd } = this.state + console.log("render") + return ( + Above The Left
} + // rightSidebarWidth={150} + // rightSidebarContent={
Above The Right
} + + canMove + canResize="right" + canSelect + itemsSorted + itemTouchSendsClick={false} + stackItems + itemHeightRatio={0.75} + lineHeight={40} + showCursorLine + // resizeDetector={containerResizeDetector} + + defaultTimeStart={defaultTimeStart} + defaultTimeEnd={defaultTimeEnd} + itemRenderer={this.itemRenderer} + // groupRenderer={this.groupRenderer} + + onCanvasClick={this.handleCanvasClick} + onCanvasContextMenu={this.handleCanvasContextMenu} + onItemClick={this.handleItemClick} + onItemSelect={this.handleItemSelect} + onItemContextMenu={this.handleItemContextMenu} + onItemMove={this.handleItemMove} + onItemResize={this.handleItemResize} + onItemDoubleClick={this.handleItemDoubleClick} + onTimeChange={this.handleTimeChange} + moveResizeValidator={this.moveResizeValidator} + /> + ) + } +} diff --git a/demo/app/demo-element-resize/index.js b/demo/src/demo-element-resize/index.jsx similarity index 100% rename from demo/app/demo-element-resize/index.js rename to demo/src/demo-element-resize/index.jsx diff --git a/demo/app/demo-headers/index.js b/demo/src/demo-headers/index.jsx similarity index 100% rename from demo/app/demo-headers/index.js rename to demo/src/demo-headers/index.jsx diff --git a/demo/app/demo-linked-timelines/index.js b/demo/src/demo-linked-timelines/index.jsx similarity index 100% rename from demo/app/demo-linked-timelines/index.js rename to demo/src/demo-linked-timelines/index.jsx diff --git a/demo/src/demo-main/groups.json b/demo/src/demo-main/groups.json new file mode 100644 index 000000000..3a18a49d5 --- /dev/null +++ b/demo/src/demo-main/groups.json @@ -0,0 +1,70 @@ +[ + { + "id": 10, + "title": "U.S. President" + }, + { + "id": 20, + "title": "Windows" + }, + { + "id": 21, + "title": "Android" + }, + { + "id": 22, + "title": "RPG Maker" + }, + { + "id": 40, + "title": "Pokemon game" + }, + { + "id": 30, + "title": "Nintendo console" + }, + { + "id": 31, + "title": "Nintendo handheld" + }, + { + "id": 32, + "title": "Sony console" + }, + { + "id": 33, + "title": "Sony handheld" + }, + { + "id": 34, + "title": "Microsoft console" + }, + { + "id": 35, + "title": "Sega console" + }, + { + "id": 41, + "title": "Mario game" + }, + { + "id": 42, + "title": "Zelda game" + }, + { + "id": 49, + "title": "GTA game" + }, + { + "id": 50, + "title": "Best Picture" + }, + { + "id": 51, + "title": "Star Wars movies" + }, + { + "id": 52, + "title": "Marvel movies (MCU)" + } +] diff --git a/demo/app/demo-main/index.jsx b/demo/src/demo-main/index.jsx similarity index 75% rename from demo/app/demo-main/index.jsx rename to demo/src/demo-main/index.jsx index b8493d3d5..135eba014 100644 --- a/demo/app/demo-main/index.jsx +++ b/demo/src/demo-main/index.jsx @@ -1,5 +1,4 @@ import React from 'react' -/* eslint-disable no-console */ import { Component } from 'react' import dayjs from 'dayjs' @@ -11,13 +10,11 @@ import Timeline, { } from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' +import groups from './groups' +import items from './items' -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() +var minTime = dayjs().add(-6, 'months').valueOf() +var maxTime = dayjs().add(6, 'months').valueOf() var keys = { groupIdKey: 'id', @@ -27,19 +24,17 @@ var keys = { itemTitleKey: 'title', itemDivTitleKey: 'title', itemGroupKey: 'group', - itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeStartKey: 'start_time', + itemTimeEndKey: 'end_time', } export default class App extends Component { constructor(props) { super(props) - const { groups, items } = generateFakeData() - const defaultTimeStart = dayjs() - .startOf('day') - .toDate() - const defaultTimeEnd = dayjs() + // const { groups, items } = generateFakeData(2, 4) + const defaultTimeStart = dayjs(items[0].start_time).startOf('day').toDate() + const defaultTimeEnd = dayjs(items[0].end_time) .startOf('day') .add(1, 'day') .toDate() @@ -48,7 +43,7 @@ export default class App extends Component { groups, items, defaultTimeStart, - defaultTimeEnd + defaultTimeEnd, } } @@ -86,16 +81,15 @@ export default class App extends Component { const group = groups[newGroupOrder] this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id, + }) + : item, + ), }) console.log('Moved', itemId, dragTime, newGroupOrder) @@ -105,15 +99,14 @@ export default class App extends Component { const { items } = this.state this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time, + }) + : item, + ), }) console.log('Resized', itemId, time, edge) @@ -163,8 +156,8 @@ export default class App extends Component { itemTouchSendsClick={false} stackItems itemHeightRatio={0.75} - defaultTimeStart={defaultTimeStart} - defaultTimeEnd={defaultTimeEnd} + //defaultTimeStart={defaultTimeStart} + //defaultTimeEnd={defaultTimeEnd} onCanvasClick={this.handleCanvasClick} onCanvasDoubleClick={this.handleCanvasDoubleClick} onCanvasContextMenu={this.handleCanvasContextMenu} @@ -178,22 +171,17 @@ export default class App extends Component { onZoom={this.handleZoom} moveResizeValidator={this.moveResizeValidator} buffer={3} + minZoom={365.24 * 86400 * 1000} // 1 year + maxZoom={365.24 * 86400 * 1000 * 20} // 20 years + defaultTimeStart={dayjs().add(-20, 'year')} + defaultTimeEnd={dayjs()} > - + {({ styles }) => { const newStyles = { ...styles, backgroundColor: 'blue' } return
diff --git a/demo/src/demo-main/items.json b/demo/src/demo-main/items.json new file mode 100644 index 000000000..0b41fe033 --- /dev/null +++ b/demo/src/demo-main/items.json @@ -0,0 +1,1971 @@ +[ + { + "title": "Windows NT 3.1", + "start_time": "1993-06-30T21:00:00.000Z", + "id": 1, + "group": 20, + "canMove": false, + "end_time": "1996-05-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9c2fc" + } + } + }, + { + "title": "Windows NT 4.0", + "start_time": "1996-05-31T21:00:00.000Z", + "id": 2, + "group": 20, + "canMove": false, + "end_time": "2000-01-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9c2fc" + } + } + }, + { + "title": "Windows 2000", + "start_time": "2000-01-31T22:00:00.000Z", + "id": 3, + "group": 20, + "canMove": false, + "end_time": "2001-07-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcc8c7" + } + } + }, + { + "title": "Windows XP", + "start_time": "2001-07-31T21:00:00.000Z", + "id": 4, + "group": 20, + "canMove": false, + "end_time": "2009-09-30T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcaebd" + } + } + }, + { + "title": "Windows 7", + "start_time": "2009-09-30T21:00:00.000Z", + "id": 5, + "group": 20, + "canMove": false, + "end_time": "2012-09-30T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#72eace" + } + } + }, + { + "title": "Windows 8", + "start_time": "2012-09-30T21:00:00.000Z", + "id": 6, + "group": 20, + "canMove": false, + "end_time": "2015-06-30T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#8af5f7" + } + } + }, + { + "title": "Windows 10", + "start_time": "2015-06-30T21:00:00.000Z", + "id": 7, + "group": 20, + "canMove": false, + "end_time": "2023-12-22T14:00:45.112Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4dd73" + } + } + }, + { + "title": "RPG Maker 95", + "start_time": "1996-12-31T22:00:00.000Z", + "id": 8, + "group": 22, + "canMove": false, + "end_time": "1999-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ddfc8f" + } + } + }, + { + "title": "RPG Maker 2000", + "start_time": "1999-12-31T22:00:00.000Z", + "id": 9, + "group": 22, + "canMove": false, + "end_time": "2002-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#84cbf4" + } + } + }, + { + "title": "RPG Maker 2003", + "start_time": "2002-12-31T22:00:00.000Z", + "id": 10, + "group": 22, + "canMove": false, + "end_time": "2004-06-21T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#afaaef" + } + } + }, + { + "title": "RPG Maker XP", + "start_time": "2004-06-21T21:00:00.000Z", + "id": 11, + "group": 22, + "canMove": false, + "end_time": "2008-02-28T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ccf7ff" + } + } + }, + { + "title": "RPG Maker VX", + "start_time": "2008-02-28T22:00:00.000Z", + "id": 12, + "group": 22, + "canMove": false, + "end_time": "2012-03-14T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e6c7fc" + } + } + }, + { + "title": "RPG Maker VX Ace", + "start_time": "2012-03-14T22:00:00.000Z", + "id": 13, + "group": 22, + "canMove": false, + "end_time": "2015-10-22T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a6c0ed" + } + } + }, + { + "title": "RPG Maker MV", + "start_time": "2015-10-22T21:00:00.000Z", + "id": 14, + "group": 22, + "canMove": false, + "end_time": "2020-08-19T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7ced76" + } + } + }, + { + "title": "RPG Maker MZ", + "start_time": "2020-08-19T21:00:00.000Z", + "id": 15, + "group": 22, + "canMove": false, + "end_time": "2023-12-22T14:00:45.112Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a4f9f2" + } + } + }, + { + "title": "George W. Bush", + "start_time": "2000-10-31T22:00:00.000Z", + "id": 16, + "group": 10, + "canMove": false, + "end_time": "2008-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#efa27c" + } + } + }, + { + "title": "Barack Obama", + "start_time": "2008-10-31T22:00:00.000Z", + "id": 17, + "group": 10, + "canMove": false, + "end_time": "2016-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#bc91ea" + } + } + }, + { + "title": "Donald Trump", + "start_time": "2016-10-31T22:00:00.000Z", + "color": "red", + "id": 18, + "group": 10, + "canMove": false, + "end_time": "2020-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c7f0fc" + } + } + }, + { + "title": "Joe Biden", + "start_time": "2020-10-31T22:00:00.000Z", + "color": "red", + "id": 19, + "group": 10, + "canMove": false, + "end_time": "2023-12-22T14:00:45.112Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcdca4" + } + } + }, + { + "title": "Pokemon Red and Blue", + "start_time": "1995-12-31T22:00:00.000Z", + "id": 20, + "group": 40, + "canMove": false, + "end_time": "1998-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ccf9a4" + } + } + }, + { + "title": "Pokemon Gold and Silver", + "start_time": "1998-12-31T22:00:00.000Z", + "id": 21, + "group": 40, + "canMove": false, + "end_time": "2001-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9869a" + } + } + }, + { + "title": "Pokemon Ruby and Sapphire", + "start_time": "2001-12-31T22:00:00.000Z", + "id": 22, + "group": 40, + "canMove": false, + "end_time": "2005-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4a69a" + } + } + }, + { + "title": "Pokemon Diamond and Pearl", + "start_time": "2005-12-31T22:00:00.000Z", + "id": 23, + "group": 40, + "canMove": false, + "end_time": "2009-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f2fcae" + } + } + }, + { + "title": "Pokemon Black and White", + "start_time": "2009-12-31T22:00:00.000Z", + "id": 24, + "group": 40, + "canMove": false, + "end_time": "2012-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ec9bf7" + } + } + }, + { + "title": "Pokemon X and Y", + "start_time": "2012-12-31T22:00:00.000Z", + "id": 25, + "group": 40, + "canMove": false, + "end_time": "2015-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#79fcad" + } + } + }, + { + "title": "Pokemon Sun and Moon", + "start_time": "2015-12-31T22:00:00.000Z", + "id": 26, + "group": 40, + "canMove": false, + "end_time": "2018-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e8736a" + } + } + }, + { + "title": "Pokemon Sword and Shield", + "start_time": "2018-12-31T22:00:00.000Z", + "id": 27, + "group": 40, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#83f276" + } + } + }, + { + "title": "NES", + "start_time": "1985-09-30T21:00:00.000Z", + "id": 28, + "group": 30, + "canMove": false, + "end_time": "1991-07-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#70f496" + } + } + }, + { + "title": "SNES", + "start_time": "1991-07-31T21:00:00.000Z", + "id": 29, + "group": 30, + "canMove": false, + "end_time": "1996-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b0a6f4" + } + } + }, + { + "title": "N64", + "start_time": "1996-10-31T22:00:00.000Z", + "id": 30, + "group": 30, + "canMove": false, + "end_time": "2001-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#9ce1fc" + } + } + }, + { + "title": "GameCube", + "start_time": "2001-10-31T22:00:00.000Z", + "id": 31, + "group": 30, + "canMove": false, + "end_time": "2006-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#80d5fc" + } + } + }, + { + "title": "Wii", + "start_time": "2006-10-31T22:00:00.000Z", + "id": 32, + "group": 30, + "canMove": false, + "end_time": "2012-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f99d72" + } + } + }, + { + "title": "Wii U", + "start_time": "2012-10-31T22:00:00.000Z", + "id": 33, + "group": 30, + "canMove": false, + "end_time": "2017-02-28T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a784f9" + } + } + }, + { + "title": "Nintendo Switch", + "start_time": "2017-02-28T22:00:00.000Z", + "id": 34, + "group": 30, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#9dc6ea" + } + } + }, + { + "title": "Game Boy", + "start_time": "1988-12-31T21:00:00.000Z", + "id": 35, + "group": 31, + "canMove": false, + "end_time": "1997-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#8ef9d2" + } + } + }, + { + "title": "Game Boy Color", + "start_time": "1997-12-31T22:00:00.000Z", + "id": 36, + "group": 31, + "canMove": false, + "end_time": "2000-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9d1a2" + } + } + }, + { + "title": "Game Boy Advance", + "start_time": "2000-12-31T22:00:00.000Z", + "id": 37, + "group": 31, + "canMove": false, + "end_time": "2002-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e1fcae" + } + } + }, + { + "title": "Game Boy Advance SP", + "start_time": "2002-12-31T22:00:00.000Z", + "id": 38, + "group": 31, + "canMove": false, + "end_time": "2003-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcc5c4" + } + } + }, + { + "title": "Nintendo DS", + "start_time": "2003-12-31T22:00:00.000Z", + "id": 39, + "group": 31, + "canMove": false, + "end_time": "2008-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a5b1ef" + } + } + }, + { + "title": "Nintendo DSi", + "start_time": "2008-12-31T22:00:00.000Z", + "id": 40, + "group": 31, + "canMove": false, + "end_time": "2010-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9c2fc" + } + } + }, + { + "title": "Nintendo 3DS", + "start_time": "2010-12-31T22:00:00.000Z", + "id": 41, + "group": 31, + "canMove": false, + "end_time": "2017-02-28T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7773f4" + } + } + }, + { + "title": "Nintendo Switch", + "start_time": "2017-02-28T22:00:00.000Z", + "id": 42, + "group": 31, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#9dc6ea" + } + } + }, + { + "title": "PlayStation", + "start_time": "1993-12-31T22:00:00.000Z", + "id": 43, + "group": 32, + "canMove": false, + "end_time": "2000-06-30T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ee71f7" + } + } + }, + { + "title": "PlayStation 2", + "start_time": "2000-06-30T21:00:00.000Z", + "id": 44, + "group": 32, + "canMove": false, + "end_time": "2005-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcd19c" + } + } + }, + { + "title": "PlayStation 3", + "start_time": "2005-12-31T22:00:00.000Z", + "id": 45, + "group": 32, + "canMove": false, + "end_time": "2013-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fce8a1" + } + } + }, + { + "title": "PlayStation 4", + "start_time": "2013-10-31T22:00:00.000Z", + "id": 46, + "group": 32, + "canMove": false, + "end_time": "2020-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9fcae" + } + } + }, + { + "title": "PlayStation 5", + "start_time": "2020-10-31T22:00:00.000Z", + "id": 47, + "group": 32, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e7fcae" + } + } + }, + { + "title": "PlayStation Portable", + "start_time": "2005-03-23T22:00:00.000Z", + "id": 48, + "group": 33, + "canMove": false, + "end_time": "2012-02-14T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f7a8ac" + } + } + }, + { + "title": "PlayStation Vita", + "start_time": "2012-02-14T22:00:00.000Z", + "end_time": "2019-02-28T22:00:00.000Z", + "id": 49, + "group": 33, + "canMove": false, + "itemProps": { + "style": { + "color": "black", + "background": "#dff791" + } + } + }, + { + "title": "Xbox", + "start_time": "2001-10-31T22:00:00.000Z", + "id": 50, + "group": 34, + "canMove": false, + "end_time": "2005-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4adf3" + } + } + }, + { + "title": "Xbox 360", + "start_time": "2005-10-31T22:00:00.000Z", + "id": 51, + "group": 34, + "canMove": false, + "end_time": "2013-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d0f271" + } + } + }, + { + "title": "Xbox One", + "start_time": "2013-10-31T22:00:00.000Z", + "id": 52, + "group": 34, + "canMove": false, + "end_time": "2020-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a19df2" + } + } + }, + { + "title": "Xbox Series X/S", + "start_time": "2020-10-31T22:00:00.000Z", + "id": 53, + "group": 34, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c396e8" + } + } + }, + { + "title": "Sega Master System", + "start_time": "1985-12-31T21:00:00.000Z", + "id": 54, + "group": 35, + "canMove": false, + "end_time": "1989-07-31T20:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#8ae5ea" + } + } + }, + { + "title": "Sega Genesis", + "start_time": "1989-07-31T20:00:00.000Z", + "id": 55, + "group": 35, + "canMove": false, + "end_time": "1992-09-30T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#88f7c3" + } + } + }, + { + "title": "Sega CD", + "start_time": "1992-09-30T22:00:00.000Z", + "id": 56, + "group": 35, + "canMove": false, + "end_time": "1994-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f6fc9f" + } + } + }, + { + "title": "32X", + "start_time": "1994-10-31T22:00:00.000Z", + "id": 57, + "group": 35, + "canMove": false, + "end_time": "1995-04-30T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#bf8bf9" + } + } + }, + { + "title": "Sega Saturn", + "start_time": "1995-04-30T21:00:00.000Z", + "id": 58, + "group": 35, + "canMove": false, + "end_time": "1999-08-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d8ed6f" + } + } + }, + { + "title": "Dreamcast", + "start_time": "1999-08-31T21:00:00.000Z", + "end_time": "2000-12-31T22:00:00.000Z", + "id": 59, + "group": 35, + "canMove": false, + "itemProps": { + "style": { + "color": "black", + "background": "#bb9ced" + } + } + }, + { + "title": "Super Mario Bros.", + "start_time": "1984-12-31T21:00:00.000Z", + "id": 60, + "group": 41, + "canMove": false, + "end_time": "1987-12-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ef77c7" + } + } + }, + { + "title": "Super Mario Bros. 2", + "start_time": "1987-12-31T21:00:00.000Z", + "id": 61, + "group": 41, + "canMove": false, + "end_time": "1988-05-31T20:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9f59d" + } + } + }, + { + "title": "Super Mario Bros. 3", + "start_time": "1988-05-31T20:00:00.000Z", + "id": 62, + "group": 41, + "canMove": false, + "end_time": "1990-10-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e5f79e" + } + } + }, + { + "title": "World", + "start_time": "1990-10-31T21:00:00.000Z", + "id": 63, + "group": 41, + "canMove": false, + "end_time": "1994-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4a4c0" + } + } + }, + { + "title": "World 2: Yoshi's Island", + "start_time": "1994-12-31T22:00:00.000Z", + "id": 64, + "group": 41, + "canMove": false, + "end_time": "1995-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9ee86" + } + } + }, + { + "title": "Super Mario 64", + "start_time": "1995-12-31T22:00:00.000Z", + "id": 65, + "group": 41, + "canMove": false, + "end_time": "2001-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcce92" + } + } + }, + { + "title": "Sunshine", + "start_time": "2001-12-31T22:00:00.000Z", + "id": 66, + "group": 41, + "canMove": false, + "end_time": "2006-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcc7e7" + } + } + }, + { + "title": "Galaxy", + "start_time": "2006-12-31T22:00:00.000Z", + "id": 67, + "group": 41, + "canMove": false, + "end_time": "2009-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7564d6" + } + } + }, + { + "title": "Galaxy 2", + "start_time": "2009-12-31T22:00:00.000Z", + "id": 68, + "group": 41, + "canMove": false, + "end_time": "2012-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f49aaf" + } + } + }, + { + "title": "3D World", + "start_time": "2012-12-31T22:00:00.000Z", + "id": 69, + "group": 41, + "canMove": false, + "end_time": "2014-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f490a6" + } + } + }, + { + "title": "Maker", + "start_time": "2014-12-31T22:00:00.000Z", + "id": 70, + "group": 41, + "canMove": false, + "end_time": "2017-10-26T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4a8af" + } + } + }, + { + "title": "Odyssey", + "start_time": "2017-10-26T21:00:00.000Z", + "id": 71, + "group": 41, + "canMove": false, + "end_time": "2019-06-27T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#eefc9f" + } + } + }, + { + "title": "Maker 2", + "start_time": "2019-06-27T21:00:00.000Z", + "id": 72, + "group": 41, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b0f276" + } + } + }, + { + "title": "Grand Theft Auto", + "start_time": "1996-12-31T22:00:00.000Z", + "id": 73, + "canMove": false, + "end_time": "1998-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9bbe0" + } + } + }, + { + "title": "GTA 2", + "start_time": "1998-12-31T22:00:00.000Z", + "id": 74, + "canMove": false, + "end_time": "2000-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d2fca9" + } + } + }, + { + "title": "GTA III", + "start_time": "2000-12-31T22:00:00.000Z", + "id": 75, + "canMove": false, + "end_time": "2001-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4a1a7" + } + } + }, + { + "title": "GTA: Vice City", + "start_time": "2001-12-31T22:00:00.000Z", + "id": 76, + "canMove": false, + "end_time": "2003-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c4a3ed" + } + } + }, + { + "title": "GTA: San Andreas", + "start_time": "2003-12-31T22:00:00.000Z", + "id": 77, + "canMove": false, + "end_time": "2007-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7cf9ac" + } + } + }, + { + "title": "GTA IV", + "start_time": "2007-12-31T22:00:00.000Z", + "id": 78, + "canMove": false, + "end_time": "2012-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#adcbf4" + } + } + }, + { + "title": "GTA V", + "start_time": "2012-12-31T22:00:00.000Z", + "id": 79, + "canMove": false, + "end_time": "2023-12-22T14:00:45.113Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b8b0f4" + } + } + }, + { + "title": "1.5 Cupcake", + "start_time": "2009-04-26T21:00:00.000Z", + "id": 80, + "group": 21, + "canMove": false, + "end_time": "2009-09-14T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b1f99d" + } + } + }, + { + "title": "1.6 Donut", + "start_time": "2009-09-14T21:00:00.000Z", + "id": 81, + "group": 21, + "canMove": false, + "end_time": "2009-10-25T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d2fc9c" + } + } + }, + { + "title": "2.0 Eclair", + "start_time": "2009-10-25T22:00:00.000Z", + "id": 82, + "group": 21, + "canMove": false, + "end_time": "2010-05-19T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f389f4" + } + } + }, + { + "title": "2.2 Froyo", + "start_time": "2010-05-19T21:00:00.000Z", + "id": 83, + "group": 21, + "canMove": false, + "end_time": "2010-12-05T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b8ffb2" + } + } + }, + { + "title": "2.3 Gingerbread", + "start_time": "2010-12-05T22:00:00.000Z", + "id": 84, + "group": 21, + "canMove": false, + "end_time": "2011-02-21T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c38fe8" + } + } + }, + { + "title": "3.0 Honeycomb", + "start_time": "2011-02-21T22:00:00.000Z", + "id": 85, + "group": 21, + "canMove": false, + "end_time": "2011-10-17T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#81f9c3" + } + } + }, + { + "title": "4.0 Ice Cream Sandwich", + "start_time": "2011-10-17T21:00:00.000Z", + "id": 86, + "group": 21, + "canMove": false, + "end_time": "2012-07-08T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e9c4fc" + } + } + }, + { + "title": "4.1 Jelly Bean", + "start_time": "2012-07-08T21:00:00.000Z", + "id": 87, + "group": 21, + "canMove": false, + "end_time": "2013-10-30T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f287a9" + } + } + }, + { + "title": "4.4 KitKat", + "start_time": "2013-10-30T22:00:00.000Z", + "id": 88, + "group": 21, + "canMove": false, + "end_time": "2014-11-11T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#e5ccff" + } + } + }, + { + "title": "5.0 Lollipop", + "start_time": "2014-11-11T22:00:00.000Z", + "id": 89, + "group": 21, + "canMove": false, + "end_time": "2015-10-04T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ffccd8" + } + } + }, + { + "title": "6.0 Marshmallow", + "start_time": "2015-10-04T21:00:00.000Z", + "id": 90, + "group": 21, + "canMove": false, + "end_time": "2016-09-02T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#70a7f4" + } + } + }, + { + "title": "7.0 Nougat", + "start_time": "2016-09-02T21:00:00.000Z", + "id": 91, + "group": 21, + "canMove": false, + "end_time": "2017-08-20T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c3ef70" + } + } + }, + { + "title": "8.0 Oreo", + "start_time": "2017-08-20T21:00:00.000Z", + "id": 92, + "group": 21, + "canMove": false, + "end_time": "2018-08-05T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a4bdf4" + } + } + }, + { + "title": "9.0 Pie", + "start_time": "2018-08-05T21:00:00.000Z", + "id": 93, + "group": 21, + "canMove": false, + "end_time": "2019-09-02T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f785c4" + } + } + }, + { + "title": "10", + "start_time": "2019-09-02T21:00:00.000Z", + "id": 94, + "group": 21, + "canMove": false, + "end_time": "2020-09-07T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9bb84" + } + } + }, + { + "title": "11", + "start_time": "2020-09-07T21:00:00.000Z", + "id": 95, + "group": 21, + "canMove": false, + "end_time": "2023-12-22T14:00:45.114Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f7d891" + } + } + }, + { + "title": "The Legend of Zelda", + "start_time": "1987-10-31T21:00:00.000Z", + "id": 96, + "group": 42, + "canMove": false, + "end_time": "1988-10-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a0f7bf" + } + } + }, + { + "title": "Zelda II", + "start_time": "1988-10-31T21:00:00.000Z", + "id": 97, + "group": 42, + "canMove": false, + "end_time": "1991-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcdfc2" + } + } + }, + { + "title": "A Link to the Past", + "start_time": "1991-10-31T22:00:00.000Z", + "id": 98, + "group": 42, + "canMove": false, + "end_time": "1998-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ef77c7" + } + } + }, + { + "title": "Ocarina of Time", + "start_time": "1998-10-31T22:00:00.000Z", + "id": 99, + "group": 42, + "canMove": false, + "end_time": "2000-03-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcd588" + } + } + }, + { + "title": "Majora's Mask", + "start_time": "2000-03-31T21:00:00.000Z", + "id": 100, + "group": 42, + "canMove": false, + "end_time": "2002-11-30T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#94f7c5" + } + } + }, + { + "title": "The Wind Waker", + "start_time": "2002-11-30T22:00:00.000Z", + "id": 101, + "group": 42, + "canMove": false, + "end_time": "2006-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7ef7ed" + } + } + }, + { + "title": "Twilight Princess", + "start_time": "2006-10-31T22:00:00.000Z", + "id": 102, + "group": 42, + "canMove": false, + "end_time": "2011-10-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b0d4fc" + } + } + }, + { + "title": "Skyward Sword", + "start_time": "2011-10-31T22:00:00.000Z", + "id": 103, + "group": 42, + "canMove": false, + "end_time": "2017-02-28T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9bca7" + } + } + }, + { + "title": "Breath of the Wild", + "start_time": "2017-02-28T22:00:00.000Z", + "id": 104, + "group": 42, + "canMove": false, + "end_time": "2023-12-22T14:00:45.114Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9de98" + } + } + }, + { + "title": "Star Wars", + "start_time": "1977-05-24T21:00:00.000Z", + "id": 105, + "group": 51, + "canMove": false, + "end_time": "1980-05-20T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a9f995" + } + } + }, + { + "title": "The Empire Strikes Back", + "start_time": "1980-05-20T21:00:00.000Z", + "id": 106, + "group": 51, + "canMove": false, + "end_time": "1983-05-24T20:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f9eaa7" + } + } + }, + { + "title": "Return of the Jedi", + "start_time": "1983-05-24T20:00:00.000Z", + "id": 107, + "group": 51, + "canMove": false, + "end_time": "2023-12-22T14:00:45.114Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ea6e70" + } + } + }, + { + "title": "Titanic", + "start_time": "1996-12-31T22:00:00.000Z", + "id": 108, + "group": 50, + "canMove": false, + "end_time": "1997-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d7b2f4" + } + } + }, + { + "title": "Shakespeare in Love", + "start_time": "1997-12-31T22:00:00.000Z", + "id": 109, + "group": 50, + "canMove": false, + "end_time": "1998-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#8b91e5" + } + } + }, + { + "title": "American Beauty", + "start_time": "1998-12-31T22:00:00.000Z", + "id": 110, + "group": 50, + "canMove": false, + "end_time": "1999-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ed8c7d" + } + } + }, + { + "title": "Gladiator", + "start_time": "1999-12-31T22:00:00.000Z", + "id": 111, + "group": 50, + "canMove": false, + "end_time": "2000-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f779ea" + } + } + }, + { + "title": "A Beautiful Mind", + "start_time": "2000-12-31T22:00:00.000Z", + "id": 112, + "group": 50, + "canMove": false, + "end_time": "2001-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#ed8c7d" + } + } + }, + { + "title": "Chicago", + "start_time": "2001-12-31T22:00:00.000Z", + "id": 113, + "group": 50, + "canMove": false, + "end_time": "2002-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b9e0f7" + } + } + }, + { + "title": "The Return of the King", + "start_time": "2002-12-31T22:00:00.000Z", + "id": 114, + "group": 50, + "canMove": false, + "end_time": "2003-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b2fca9" + } + } + }, + { + "title": "Million Dollar Baby", + "start_time": "2003-12-31T22:00:00.000Z", + "id": 115, + "group": 50, + "canMove": false, + "end_time": "2004-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f7b7af" + } + } + }, + { + "title": "Crash", + "start_time": "2004-12-31T22:00:00.000Z", + "id": 116, + "group": 50, + "canMove": false, + "end_time": "2005-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcc6bd" + } + } + }, + { + "title": "The Departed", + "start_time": "2005-12-31T22:00:00.000Z", + "id": 117, + "group": 50, + "canMove": false, + "end_time": "2006-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c3f99d" + } + } + }, + { + "title": "No Country for Old Men", + "start_time": "2006-12-31T22:00:00.000Z", + "id": 118, + "group": 50, + "canMove": false, + "end_time": "2007-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f990ac" + } + } + }, + { + "title": "Slumdog Millionaire", + "start_time": "2007-12-31T22:00:00.000Z", + "id": 119, + "group": 50, + "canMove": false, + "end_time": "2008-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f7e4af" + } + } + }, + { + "title": "The Hurt Locker", + "start_time": "2008-12-31T22:00:00.000Z", + "id": 120, + "group": 50, + "canMove": false, + "end_time": "2009-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d7f99f" + } + } + }, + { + "title": "The King's Speech", + "start_time": "2009-12-31T22:00:00.000Z", + "id": 121, + "group": 50, + "canMove": false, + "end_time": "2010-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fca197" + } + } + }, + { + "title": "The Artist", + "start_time": "2010-12-31T22:00:00.000Z", + "id": 122, + "group": 50, + "canMove": false, + "end_time": "2011-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcfc99" + } + } + }, + { + "title": "Argo", + "start_time": "2011-12-31T22:00:00.000Z", + "id": 123, + "group": 50, + "canMove": false, + "end_time": "2012-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f7b4e5" + } + } + }, + { + "title": "12 Years a Slave", + "start_time": "2012-12-31T22:00:00.000Z", + "id": 124, + "group": 50, + "canMove": false, + "end_time": "2013-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#7489f2" + } + } + }, + { + "title": "Birdman", + "start_time": "2013-12-31T22:00:00.000Z", + "id": 125, + "group": 50, + "canMove": false, + "end_time": "2014-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4ef86" + } + } + }, + { + "title": "Spotlight", + "start_time": "2014-12-31T22:00:00.000Z", + "id": 126, + "group": 50, + "canMove": false, + "end_time": "2015-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#90f9be" + } + } + }, + { + "title": "Moonlight", + "start_time": "2015-12-31T22:00:00.000Z", + "id": 127, + "group": 50, + "canMove": false, + "end_time": "2016-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f28cd0" + } + } + }, + { + "title": "The Shape of Water", + "start_time": "2016-12-31T22:00:00.000Z", + "id": 128, + "group": 50, + "canMove": false, + "end_time": "2017-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#8bf4b7" + } + } + }, + { + "title": "Green Book", + "start_time": "2017-12-31T22:00:00.000Z", + "id": 129, + "group": 50, + "canMove": false, + "end_time": "2018-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcd3c2" + } + } + }, + { + "title": "Parasite", + "start_time": "2018-12-31T22:00:00.000Z", + "id": 130, + "group": 50, + "canMove": false, + "end_time": "2023-12-22T14:00:45.114Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcdeae" + } + } + }, + { + "title": "Iron Man", + "start_time": "2008-05-01T21:00:00.000Z", + "id": 131, + "group": 52, + "canMove": false, + "end_time": "2009-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#f4b077" + } + } + }, + { + "title": "Iron Man 2", + "start_time": "2009-12-31T22:00:00.000Z", + "id": 132, + "group": 52, + "canMove": false, + "end_time": "2012-05-03T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#93f99a" + } + } + }, + { + "title": "The Avengers", + "start_time": "2012-05-03T21:00:00.000Z", + "id": 133, + "group": 52, + "canMove": false, + "end_time": "2012-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#fcaeb7" + } + } + }, + { + "title": "Iron Man 3", + "start_time": "2012-12-31T22:00:00.000Z", + "id": 134, + "group": 52, + "canMove": false, + "end_time": "2014-07-31T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#9df9ba" + } + } + }, + { + "title": "Guardians of the Galaxy", + "start_time": "2014-07-31T21:00:00.000Z", + "id": 135, + "group": 52, + "canMove": false, + "end_time": "2014-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#b790f9" + } + } + }, + { + "title": "Avengers: Age of Ultron", + "start_time": "2014-12-31T22:00:00.000Z", + "id": 136, + "group": 52, + "canMove": false, + "end_time": "2016-11-03T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#cff771" + } + } + }, + { + "title": "Dr. Strange", + "start_time": "2016-11-03T22:00:00.000Z", + "id": 137, + "group": 52, + "canMove": false, + "end_time": "2016-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#9ff9da" + } + } + }, + { + "title": "Guardians of the Galaxy Vol. 2", + "start_time": "2016-12-31T22:00:00.000Z", + "id": 138, + "group": 52, + "canMove": false, + "end_time": "2017-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#c1fc9c" + } + } + }, + { + "title": "Black Panther", + "start_time": "2017-12-31T22:00:00.000Z", + "id": 139, + "group": 52, + "canMove": false, + "end_time": "2018-04-26T21:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#a1f984" + } + } + }, + { + "title": "Avengers: Infinity War", + "start_time": "2018-04-26T21:00:00.000Z", + "id": 140, + "group": 52, + "canMove": false, + "end_time": "2018-12-31T22:00:00.000Z", + "itemProps": { + "style": { + "color": "black", + "background": "#6fe8e8" + } + } + }, + { + "title": "Avengers: Endgame", + "start_time": "2018-12-31T22:00:00.000Z", + "id": 141, + "group": 52, + "canMove": false, + "end_time": "2023-12-22T14:00:45.114Z", + "itemProps": { + "style": { + "color": "black", + "background": "#d3f9a4" + } + } + } +] diff --git a/demo/app/demo-performance/index.js b/demo/src/demo-performance/index.jsx similarity index 100% rename from demo/app/demo-performance/index.js rename to demo/src/demo-performance/index.jsx diff --git a/demo/app/demo-renderers/index.js b/demo/src/demo-renderers/index.jsx similarity index 78% rename from demo/app/demo-renderers/index.js rename to demo/src/demo-renderers/index.jsx index b065701bd..265308a78 100644 --- a/demo/app/demo-renderers/index.js +++ b/demo/src/demo-renderers/index.jsx @@ -1,19 +1,16 @@ /* eslint-disable no-console */ -import React, { Component } from 'react' +import { Component } from 'react' import dayjs from 'dayjs' import Timeline from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() +const minTime = dayjs().add(-6, 'months').valueOf() +const maxTime = dayjs().add(6, 'months').valueOf() -var keys = { +const keys = { + groupLabelKey: 'title', groupIdKey: 'id', groupTitleKey: 'title', groupRightTitleKey: 'rightTitle', @@ -22,13 +19,22 @@ var keys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeEndKey: 'end', } class GroupRenderer extends Component { render() { // console.log("heading rendering"); - return
NameMetadata
; + return ( + + + + + + + +
NameMetadata
+ ) } } @@ -37,18 +43,14 @@ export default class App extends Component { super(props) const { groups, items } = generateFakeData(100, 5000) - const visibleTimeStart = dayjs() - .startOf('month') - .toDate().valueOf() - const visibleTimeEnd = dayjs() - .endOf('month') - .toDate().valueOf() + const visibleTimeStart = dayjs().startOf('month').toDate().valueOf() + const visibleTimeEnd = dayjs().endOf('month').toDate().valueOf() this.state = { groups, items, visibleTimeStart, - visibleTimeEnd + visibleTimeEnd, } } @@ -82,16 +84,15 @@ export default class App extends Component { const group = groups[newGroupOrder] this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id, + }) + : item, + ), }) console.log('Moved', itemId, dragTime, newGroupOrder) @@ -101,15 +102,14 @@ export default class App extends Component { const { items } = this.state this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time, + }) + : item, + ), }) console.log('Resized', itemId, time, edge) @@ -117,11 +117,10 @@ export default class App extends Component { // this limits the timeline to -6 months ... +6 months handleTimeChange = (visibleTimeStart, visibleTimeEnd, updateScrollCanvas) => { - if (visibleTimeStart < minTime && visibleTimeEnd > maxTime) { this.setState({ visibleTimeStart: minTime, - visibleTimeEnd: maxTime + visibleTimeEnd: maxTime, }) //updateScrollCanvas(minTime, maxTime) } else if (visibleTimeStart < minTime) { @@ -131,8 +130,8 @@ export default class App extends Component { } else { this.setState({ visibleTimeStart, - visibleTimeEnd - }); + visibleTimeEnd, + }) //updateScrollCanvas(visibleTimeStart, visibleTimeEnd) } } @@ -179,13 +178,11 @@ export default class App extends Component { keys={keys} sidebarWidth={150} sidebarContent={} - // rightSidebarWidth={150} - // rightSidebarContent={
Above The Right
} - + rightSidebarWidth={150} + rightSidebarContent={
Above The Right
} canMove canResize="right" canSelect - itemsSorted itemTouchSendsClick={false} stackItems itemHeightRatio={0.75} @@ -195,7 +192,6 @@ export default class App extends Component { visibleTimeEnd={visibleTimeEnd} // itemRenderer={this.itemRenderer} groupRenderer={this.groupRenderer} - onCanvasClick={this.handleCanvasClick} onCanvasContextMenu={this.handleCanvasContextMenu} onItemClick={this.handleItemClick} diff --git a/demo/app/demo-tree-groups/index.js b/demo/src/demo-tree-groups/index.jsx similarity index 100% rename from demo/app/demo-tree-groups/index.js rename to demo/src/demo-tree-groups/index.jsx diff --git a/demo/app/demo-vertical-classes/index.js b/demo/src/demo-vertical-classes/index.jsx similarity index 50% rename from demo/app/demo-vertical-classes/index.js rename to demo/src/demo-vertical-classes/index.jsx index 4c62c1665..472989c29 100644 --- a/demo/app/demo-vertical-classes/index.js +++ b/demo/src/demo-vertical-classes/index.jsx @@ -1,16 +1,30 @@ -import dayjs from "dayjs"; -import React, {Component} from "react"; +import dayjs from 'dayjs' +import React, { Component } from 'react' import generateFakeData from '../generate-fake-data' -import Timeline from "react-calendar-timeline"; - -const format = "DD.MM.YYYY" -const holidays = [dayjs("01.01.2018", format), dayjs("06.01.2018", format), dayjs("30.03.2018", format), - dayjs("01.04.2018", format), dayjs("02.04.2018", format), dayjs("01.05.2018", format), - dayjs("10.05.2018", format), dayjs("20.05.2018", format), dayjs("21.05.2018", format), - dayjs("31.05.2018", format), dayjs("15.08.2018", format), dayjs("26.10.2018", format), - dayjs("01.11.2018", format), dayjs("08.12.2018", format), dayjs("24.12.2018", format), - dayjs("25.12.2018", format), dayjs("26.12.2018", format), dayjs("31.12.2018", format)] +import Timeline from 'react-calendar-timeline' + +const format = 'DD.MM.YYYY' +const holidays = [ + dayjs('01.01.2018', format), + dayjs('06.01.2018', format), + dayjs('30.03.2018', format), + dayjs('01.04.2018', format), + dayjs('02.04.2018', format), + dayjs('01.05.2018', format), + dayjs('10.05.2018', format), + dayjs('20.05.2018', format), + dayjs('21.05.2018', format), + dayjs('31.05.2018', format), + dayjs('15.08.2018', format), + dayjs('26.10.2018', format), + dayjs('01.11.2018', format), + dayjs('08.12.2018', format), + dayjs('24.12.2018', format), + dayjs('25.12.2018', format), + dayjs('26.12.2018', format), + dayjs('31.12.2018', format), +] const keys = { groupIdKey: 'id', @@ -21,66 +35,68 @@ const keys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeEndKey: 'end', } export default class App extends Component { - constructor(props) { super(props) - const {groups, items} = generateFakeData() - const defaultTimeStart = dayjs() - .startOf('day') - .toDate() - const defaultTimeEnd = dayjs() - .startOf('day') - .add(1, 'day') - .toDate() + const { groups, items } = generateFakeData() + const defaultTimeStart = dayjs().startOf('day').toDate() + const defaultTimeEnd = dayjs().startOf('day').add(1, 'day').toDate() this.state = { groups, items, defaultTimeStart, - defaultTimeEnd + defaultTimeEnd, } } getMinutesOfDay = (date) => { - return date.hours() * 60 + date.minutes() + return date.hour() * 60 + date.minute() } verticalLineClassNamesForTime = (timeStart, timeEnd) => { const currentTimeStart = dayjs(timeStart) const currentTimeEnd = dayjs(timeEnd) - let classes = []; + let classes = [] // check for public holidays for (let holiday of holidays) { - if (holiday.isSame(currentTimeStart, "day") && holiday.isSame(currentTimeEnd, "day")) { - classes.push("holiday") + if ( + holiday.isSame(currentTimeStart, 'day') && + holiday.isSame(currentTimeEnd, 'day') + ) { + classes.push('holiday') } } // highlight lunch break (12:00-13:00) - const lunchStart = dayjs().hours(12).minutes(0).seconds(0); - const lunchEnd = dayjs().hours(13).minutes(0).seconds(0); - if (this.getMinutesOfDay(currentTimeStart) >= this.getMinutesOfDay(lunchStart) && - this.getMinutesOfDay(currentTimeEnd) <= this.getMinutesOfDay(lunchEnd)) { - classes.push("lunch"); + const lunchStart = dayjs().hour(12).minute(0).second(0) + const lunchEnd = dayjs().hour(13).minute(0).second(0) + if ( + this.getMinutesOfDay(currentTimeStart) >= + this.getMinutesOfDay(lunchStart) && + this.getMinutesOfDay(currentTimeEnd) <= this.getMinutesOfDay(lunchEnd) + ) { + classes.push('lunch') } - return classes; + return classes } render() { - const {groups, items, defaultTimeStart, defaultTimeEnd} = this.state + const { groups, items, defaultTimeStart, defaultTimeEnd } = this.state return (
- In this example we have public holidays we want to highlight.
- Also we want to visually highlight a blocking range (e.g. lunch break).
+ In this example we have public holidays we want to highlight. +
+ Also we want to visually highlight a blocking range (e.g. lunch break). +

- ) + ) } - } diff --git a/demo/src/generate-fake-data.js b/demo/src/generate-fake-data.js new file mode 100644 index 000000000..9b3ba414c --- /dev/null +++ b/demo/src/generate-fake-data.js @@ -0,0 +1,70 @@ +import { faker } from '@faker-js/faker' +import randomColor from 'randomcolor' +import dayjs from 'dayjs' + +export default function (groupCount = 30, itemCount = 1000, daysInPast = 30) { + let randomSeed = Math.floor(Math.random() * 1000) + let groups = [] + for (let i = 0; i < groupCount; i++) { + groups.push({ + id: `${i + 1}`, + title: faker.person.firstName(), + rightTitle: faker.person.lastName(), + label: `Label ${faker.person.firstName()}`, + bgColor: randomColor({ luminosity: 'light', seed: randomSeed + i }), + }) + } + + let items = [] + for (let i = 0; i < itemCount; i++) { + const startDate = + faker.date.recent({ days: daysInPast }).valueOf() + + daysInPast * 0.3 * 86400 * 1000 + const startValue = + Math.floor(dayjs(startDate).valueOf() / 10000000) * 10000000 + const endValue = dayjs( + startDate + faker.number.int({ min: 2, max: 20 }) * 15 * 60 * 1000, + ).valueOf() + + items.push({ + id: i + '', + group: faker.number.int({ min: 1, max: groups.length }) + '', + title: faker.hacker.phrase(), + start: startValue, + end: endValue, + canMove: startValue > new Date().getTime(), + canResize: + startValue > new Date().getTime() + ? endValue > new Date().getTime() + ? 'both' + : 'left' + : endValue > new Date().getTime() + ? 'right' + : false, + className: + dayjs(startDate).day() === 6 || dayjs(startDate).day() === 0 + ? 'item-weekend' + : '', + bgColor: randomColor({ + luminosity: 'light', + seed: randomSeed + i, + format: 'rgba', + alpha: 0.6, + }), + selectedBgColor: randomColor({ + luminosity: 'light', + seed: randomSeed + i, + format: 'rgba', + alpha: 1, + }), + color: randomColor({ luminosity: 'dark', seed: randomSeed + i }), + itemProps: { + 'data-tip': faker.hacker.phrase(), + }, + }) + } + + items = items.sort((a, b) => b - a) + + return { groups, items } +} diff --git a/demo/src/main.tsx b/demo/src/main.tsx new file mode 100644 index 000000000..e6f5579d3 --- /dev/null +++ b/demo/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './styles.scss' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/demo/app/styles.scss b/demo/src/styles.scss similarity index 100% rename from demo/app/styles.scss rename to demo/src/styles.scss diff --git a/demo/src/vite-env.d.ts b/demo/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/demo/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/demo/tsconfig.json b/demo/tsconfig.json new file mode 100644 index 000000000..b9166fcc2 --- /dev/null +++ b/demo/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "paths": { + "react-calendar-timeline": ["../src/index.ts"] + }, + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "allowJs": true, + "noImplicitAny": false, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src" + ], + "references": [{ "path": "./tsconfig.node.json"}] +} diff --git a/demo/tsconfig.node.json b/demo/tsconfig.node.json new file mode 100644 index 000000000..b5a343184 --- /dev/null +++ b/demo/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts" + ] +} diff --git a/demo/vite.config.ts b/demo/vite.config.ts new file mode 100644 index 000000000..85f75086f --- /dev/null +++ b/demo/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' +import { resolve } from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + resolve: { + alias: { + 'react-calendar-timeline': resolve(__dirname, '../src'), + }, + }, + plugins: [react()], +}) diff --git a/index.js b/index.js index 6e92639c6..c65a9409e 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,3 @@ -import Timeline from './lib/lib/Timeline' +import Timeline from './lib/index.mjs' export default Timeline diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 8003150da..048d78767 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -16,7 +16,7 @@ import { stackTimelineItems, } from './utility/calendar' import { _get } from './utility/generic' -import { defaultKeys } from './default-config' +import { defaultKeys, defaultTimeSteps } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' @@ -41,6 +41,19 @@ import { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' import './Timeline.scss' +export type OnTimeChange = ( + visibleTimeStart: number, + visibleTimeEnd: number, + updateScrollCanvas: ( + start: dateType, + end: dateType, + forceUpdateDimensions: boolean, + items: CustomItem[], + groups: CustomGroup[], + ) => void, + unit: Unit, +) => any + export type ReactCalendarTimelineProps< CustomItem extends TimelineItemBase = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase, @@ -90,18 +103,7 @@ export type ReactCalendarTimelineProps< onCanvasContextMenu?(groupId: Id, time: number, e: React.SyntheticEvent): void onZoom?(timelineContext: TimelineContext, unit: Unit): void moveResizeValidator?: ItemProps['moveResizeValidator'] - onTimeChange?( - visibleTimeStart: number, - visibleTimeEnd: number, - updateScrollCanvas: ( - start: dateType, - end: dateType, - forceUpdateDimensions: boolean, - items: CustomItem[], - groups: CustomGroup[], - ) => void, - unit: Unit, - ): any + onTimeChange?: OnTimeChange onBoundsChange?(canvasTimeStart: number, canvasTimeEnd: number): any itemRenderer?: ItemProps['itemRenderer'] groupRenderer?: @@ -196,7 +198,7 @@ export default class ReactCalendarTimeline extends Component< dayBackground: null, - // defaultTimeStart: null, + defaultTimeStart: null, defaultTimeEnd: null, itemTouchSendsClick: false, @@ -204,7 +206,7 @@ export default class ReactCalendarTimeline extends Component< style: {}, className: '', keys: defaultKeys, - //timeSteps: defaultTimeSteps, + timeSteps: defaultTimeSteps, headerRef: () => {}, scrollRef: () => {}, @@ -266,7 +268,9 @@ export default class ReactCalendarTimeline extends Component< return minUnit as Unit } - constructor(props: any) { + state: ReactCalendarTimelineState + + constructor(props: ReactCalendarTimelineProps) { super(props) this.getSelected = this.getSelected.bind(this) @@ -294,28 +298,7 @@ export default class ReactCalendarTimeline extends Component< visibleTimeEnd, props.buffer, ) - const canvasWidth = getCanvasWidth(this.state.width, props.buffer) - - const { dimensionItems, height, groupHeights, groupTops } = - stackTimelineItems( - props.items, - props.groups, - canvasWidth, - this.state.canvasTimeStart, - this.state.canvasTimeEnd, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - this.state.draggingItem, - this.state.resizingItem, - this.state.dragTime, - this.state.resizingEdge, - this.state.resizeTime, - this.state.newGroupOrder, - ) - - this.state = { + const state: Partial = { width: 1000, visibleTimeStart: visibleTimeStart, visibleTimeEnd: visibleTimeEnd, @@ -328,11 +311,32 @@ export default class ReactCalendarTimeline extends Component< resizingItem: null, resizingEdge: null, newGroupOrder: 0, //CHECK - groupHeights: groupHeights, - height: height, - groupTops: groupTops, - dimensionItems: dimensionItems, } + const canvasWidth = getCanvasWidth(state.width!, props.buffer) + const { dimensionItems, height, groupHeights, groupTops } = + stackTimelineItems( + props.items, + props.groups, + canvasWidth, + state.canvasTimeStart!, + state.canvasTimeEnd!, + props.keys, + props.lineHeight, + props.itemHeightRatio, + props.stackItems, + state.draggingItem, + state.resizingItem, + state.dragTime!, + state.resizingEdge!, + state.resizeTime!, + state.newGroupOrder!, + ) + + state.dimensionItems = dimensionItems + state.height = height + state.groupHeights = groupHeights + state.groupTops = groupTops + this.state = state as ReactCalendarTimelineState } componentDidMount() { @@ -833,7 +837,7 @@ export default class ReactCalendarTimeline extends Component< canvasTimeStart: number canvasTimeEnd: number canvasWidth: number - dimensionItems: any[] + dimensionItems: ItemDimension[] groupTops: number[] }) { return ( diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index ec1ba1f4c..b559ce4cb 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -10,14 +10,14 @@ import { TimelineItemBase, TimelineKeys, } from '../types/main' +import { ItemDimension } from '../types/dimension.ts' type CustomItem = TimelineItemBase export type CanResize = true | false | 'left' | 'right' | 'both' type ItemsProps = { groups: TimelineGroupBase[] items: CustomItem[] - // todo - dimensionItems: any[] + dimensionItems: ItemDimension[] selected?: Id[] canvasTimeStart: number diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 0bbb10d8c..44c78fd9b 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -358,10 +358,10 @@ export function getVisibleItems< const { itemTimeStartKey, itemTimeEndKey } = keys return items.filter((item) => { - return ( - _get(item, itemTimeStartKey) <= canvasTimeEnd && - _get(item, itemTimeEndKey) >= canvasTimeStart - ) + const afterStart = _get(item, itemTimeStartKey) <= canvasTimeEnd + const beforeEnd = _get(item, itemTimeEndKey) >= canvasTimeStart + + return afterStart && beforeEnd }) } @@ -433,7 +433,7 @@ export function groupStack( item.dimensions.top = collidingItem.dimensions.top + lineHeight curHeight = Math.max( curHeight, - item.dimensions.top + + item.dimensions.top! + item.dimensions.height + verticalMargin - groupTop, @@ -481,7 +481,7 @@ export function stackAll( stackItems: boolean, ) { const groupHeights: number[] = [] - const groupTops = [] + const groupTops: number[] = [] const groupedItems = getGroupedItems(itemsDimensions, groupOrders) @@ -688,7 +688,7 @@ export function getItemDimensions>({ groupOrders: any //todo lineHeight: number itemHeightRatio: number -}) { +}): ItemDimension | undefined { const itemId = _get(item, keys.itemIdKey) const dimension = calculateDimensions({ itemTimeStart: _get(item, keys.itemTimeStartKey), @@ -704,8 +704,8 @@ export function getItemDimensions>({ dimension.height = lineHeight * itemHeightRatio return { id: itemId, - dimensions: dimension, - } as ItemDimension + dimensions: dimension as Dimension, + } } } diff --git a/vite.config.ts b/vite.config.mts similarity index 89% rename from vite.config.ts rename to vite.config.mts index 2bfcc9450..75302243a 100644 --- a/vite.config.ts +++ b/vite.config.mts @@ -6,15 +6,19 @@ import { libInjectCss } from 'vite-plugin-lib-inject-css' // https://vitejs.dev/config/ export default defineConfig({ + build: { copyPublicDir: false, outDir: 'lib', lib: { entry: resolve(__dirname, 'src/index.ts'), name: 'react-calendar-timeline', - fileName: 'react-calendar-timeline', + fileName: 'index', formats: ['es'], }, }, + server: { + port: 3000, + }, plugins: [react(), libInjectCss(), dts({ include: ['src'] })], }) From 83a0d3b3ea4ec243051c77940acfd6b2de085703 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Mon, 8 Jan 2024 18:10:53 +0200 Subject: [PATCH 23/50] Fix loop --- demo/package.json | 4 +- demo/src/App.tsx | 24 +-- demo/src/demo-controlled-scrolling/index.jsx | 192 +++++++++---------- demo/src/demo-main/index.jsx | 14 +- demo/src/demo-performance/index.jsx | 71 ++++--- demo/src/styles.scss | 3 + src/lib/Timeline.tsx | 8 +- src/lib/items/Item.tsx | 8 +- src/lib/utility/calendar.tsx | 18 +- 9 files changed, 165 insertions(+), 177 deletions(-) diff --git a/demo/package.json b/demo/package.json index 8a0fc164e..7d4266545 100644 --- a/demo/package.json +++ b/demo/package.json @@ -11,7 +11,9 @@ }, "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "6.21.1", + "react-router": "^6.21.1" }, "packageManager": "npm@8.19.2", "resolutions": { diff --git a/demo/src/App.tsx b/demo/src/App.tsx index fb1a835a2..184bfb751 100644 --- a/demo/src/App.tsx +++ b/demo/src/App.tsx @@ -7,7 +7,7 @@ import { } from 'react-router-dom' import DemoMain from './demo-main' -/*import DemoPerformance from './demo-performance' +import DemoPerformance from './demo-performance' import DemoTreePGroups from './demo-tree-groups' import LinkedTimelines from './demo-linked-timelines' import ElementResize from './demo-element-resize' @@ -17,23 +17,22 @@ import CustomItems from './demo-custom-items' import CustomHeaders from './demo-headers' import CustomInfoLabel from './demo-custom-info-label' import ControledSelect from './demo-controlled-select' -import ControlledScrolling from './demo-controlled-scrolling'*/ - +import ControlledScrolling from './demo-controlled-scrolling' +const loader = () => 'loading' const routes: RouteObject[] = [ { path: '/', Component: withLayout(DemoMain), - loader: () => 'loading', + loader, }, - /* { + { path: '/DemoPerformance', Component: withLayout(DemoPerformance), - loader: () => 'loading', + loader, }, { path: '/DemoTreePGroups', Component: withLayout(DemoTreePGroups), - loader: () => 'loading', }, { path: '/LinkedTimelines', @@ -70,7 +69,7 @@ const routes: RouteObject[] = [ { path: '/ControlledScrolling', Component: withLayout(ControlledScrolling), - },*/ + }, ] function Menu() { @@ -79,7 +78,7 @@ function Menu() { Choose the demo: {routes.map((key) => ( - {key.path!.replace('/', '')} + {key.path === '/' ? 'Home' : key.path!.replace('/', '')} ))}
@@ -91,15 +90,16 @@ function withLayout(Component: ComponentType) { return (
-
{/* */}
+
+ +
) } } function App() { - // return - return + return } export default App diff --git a/demo/src/demo-controlled-scrolling/index.jsx b/demo/src/demo-controlled-scrolling/index.jsx index ca172c554..4c657e9f7 100644 --- a/demo/src/demo-controlled-scrolling/index.jsx +++ b/demo/src/demo-controlled-scrolling/index.jsx @@ -10,17 +10,13 @@ import Timeline, { CursorMarker, CustomHeader, SidebarHeader, - DateHeader + DateHeader, } from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() +var minTime = dayjs().add(-6, 'months').valueOf() +var maxTime = dayjs().add(6, 'months').valueOf() var keys = { groupIdKey: 'id', @@ -31,7 +27,7 @@ var keys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeEndKey: 'end', } export default class App extends Component { @@ -39,19 +35,14 @@ export default class App extends Component { super(props) const { groups, items } = generateFakeData() - const visibleTimeStart = dayjs() - .startOf('day') - .valueOf() - const visibleTimeEnd = dayjs() - .startOf('day') - .add(1, 'day') - .valueOf() + const visibleTimeStart = dayjs().startOf('day').valueOf() + const visibleTimeEnd = dayjs().startOf('day').add(1, 'day').valueOf() this.state = { groups, items, visibleTimeStart, - visibleTimeEnd + visibleTimeEnd, } } @@ -89,16 +80,15 @@ export default class App extends Component { const group = groups[newGroupOrder] this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id, + }) + : item, + ), }) console.log('Moved', itemId, dragTime, newGroupOrder) @@ -108,15 +98,14 @@ export default class App extends Component { const { items } = this.state this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time, + }) + : item, + ), }) console.log('Resized', itemId, time, edge) @@ -146,87 +135,78 @@ export default class App extends Component { } onPrevClick = () => { - this.setState(state => { - const zoom = state.visibleTimeEnd - state.visibleTimeStart; - return({ - visibleTimeStart: state.visibleTimeStart - zoom, - visibleTimeEnd: state.visibleTimeEnd - zoom - }) - }); - }; + this.setState((state) => { + const zoom = state.visibleTimeEnd - state.visibleTimeStart + return { + visibleTimeStart: state.visibleTimeStart - zoom, + visibleTimeEnd: state.visibleTimeEnd - zoom, + } + }) + } onNextClick = () => { - this.setState(state => { - const zoom = state.visibleTimeEnd - state.visibleTimeStart; - console.log(({ - visibleTimeStart: state.visibleTimeStart + zoom, - visibleTimeEnd: state.visibleTimeEnd + zoom - })); - return ({ + this.setState((state) => { + const zoom = state.visibleTimeEnd - state.visibleTimeStart + console.log({ visibleTimeStart: state.visibleTimeStart + zoom, - visibleTimeEnd: state.visibleTimeEnd + zoom + visibleTimeEnd: state.visibleTimeEnd + zoom, }) - }); - }; + return { + visibleTimeStart: state.visibleTimeStart + zoom, + visibleTimeEnd: state.visibleTimeEnd + zoom, + } + }) + } render() { const { groups, items, visibleTimeStart, visibleTimeEnd } = this.state return (
- - - Above The Left
} - canMove - canResize="right" - canSelect - itemsSorted - itemTouchSendsClick={false} - stackItems - itemHeightRatio={0.75} - visibleTimeStart={visibleTimeStart} - visibleTimeEnd={visibleTimeEnd} - onCanvasClick={this.handleCanvasClick} - onCanvasDoubleClick={this.handleCanvasDoubleClick} - onCanvasContextMenu={this.handleCanvasContextMenu} - onItemClick={this.handleItemClick} - onItemSelect={this.handleItemSelect} - onItemContextMenu={this.handleItemContextMenu} - onItemMove={this.handleItemMove} - onItemResize={this.handleItemResize} - onItemDoubleClick={this.handleItemDoubleClick} - buffer={1} - onTimeChange={this.handleTimeChange} - // moveResizeValidator={this.moveResizeValidator} - > - - - - - {({ styles }) => { - const newStyles = { ...styles, backgroundColor: 'blue' } - return
- }} - - - - + + + Above The Left
} + canMove + canResize="right" + canSelect + itemsSorted + itemTouchSendsClick={false} + stackItems + itemHeightRatio={0.75} + visibleTimeStart={visibleTimeStart} + visibleTimeEnd={visibleTimeEnd} + onCanvasClick={this.handleCanvasClick} + onCanvasDoubleClick={this.handleCanvasDoubleClick} + onCanvasContextMenu={this.handleCanvasContextMenu} + onItemClick={this.handleItemClick} + onItemSelect={this.handleItemSelect} + onItemContextMenu={this.handleItemContextMenu} + onItemMove={this.handleItemMove} + onItemResize={this.handleItemResize} + onItemDoubleClick={this.handleItemDoubleClick} + buffer={1} + onTimeChange={this.handleTimeChange} + // moveResizeValidator={this.moveResizeValidator} + > + + + + + {({ styles }) => { + const newStyles = { ...styles, backgroundColor: 'blue' } + return
+ }} + + + +
) } diff --git a/demo/src/demo-main/index.jsx b/demo/src/demo-main/index.jsx index 135eba014..15c3dd381 100644 --- a/demo/src/demo-main/index.jsx +++ b/demo/src/demo-main/index.jsx @@ -41,7 +41,13 @@ export default class App extends Component { this.state = { groups, - items, + items: items.map((item) => { + return { + ...item, + start_time: dayjs(item.start_time).valueOf(), + end_time: dayjs(item.end_time).valueOf(), + } + }), defaultTimeStart, defaultTimeEnd, } @@ -156,8 +162,6 @@ export default class App extends Component { itemTouchSendsClick={false} stackItems itemHeightRatio={0.75} - //defaultTimeStart={defaultTimeStart} - //defaultTimeEnd={defaultTimeEnd} onCanvasClick={this.handleCanvasClick} onCanvasDoubleClick={this.handleCanvasDoubleClick} onCanvasContextMenu={this.handleCanvasContextMenu} @@ -173,8 +177,8 @@ export default class App extends Component { buffer={3} minZoom={365.24 * 86400 * 1000} // 1 year maxZoom={365.24 * 86400 * 1000 * 20} // 20 years - defaultTimeStart={dayjs().add(-20, 'year')} - defaultTimeEnd={dayjs()} + defaultTimeStart={dayjs().add(-20, 'year').valueOf()} + defaultTimeEnd={dayjs().valueOf()} > diff --git a/demo/src/demo-performance/index.jsx b/demo/src/demo-performance/index.jsx index 8db0e9988..aa4a515f2 100644 --- a/demo/src/demo-performance/index.jsx +++ b/demo/src/demo-performance/index.jsx @@ -6,12 +6,8 @@ import Timeline from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() +var minTime = dayjs().add(-6, 'months').valueOf() +var maxTime = dayjs().add(6, 'months').valueOf() var keys = { groupIdKey: 'id', @@ -22,7 +18,7 @@ var keys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeEndKey: 'end', } export default class App extends Component { @@ -30,20 +26,22 @@ export default class App extends Component { super(props) const { groups, items } = generateFakeData(100, 10000) - const defaultTimeStart = dayjs() - .startOf('month') - .toDate() - const defaultTimeEnd = dayjs() - .endOf('month') - .toDate() - - groups[0].stackItems = false; - groups[0].height = 300; + const defaultTimeStart = dayjs().startOf('month').valueOf() + const defaultTimeEnd = dayjs().endOf('month').valueOf() + + groups[0].stackItems = false + groups[0].height = 300 this.state = { groups, - items, + items: items.map((item) => { + return { + ...item, + start: dayjs(item.start).valueOf(), + end: dayjs(item.end).valueOf(), + } + }), defaultTimeStart, - defaultTimeEnd + defaultTimeEnd, } } @@ -77,16 +75,15 @@ export default class App extends Component { const group = groups[newGroupOrder] this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id, + }) + : item, + ), }) console.log('Moved', itemId, dragTime, newGroupOrder) @@ -96,15 +93,14 @@ export default class App extends Component { const { items } = this.state this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time, + }) + : item, + ), }) console.log('Resized', itemId, time, edge) @@ -176,7 +172,6 @@ export default class App extends Component { defaultTimeEnd={defaultTimeEnd} // itemRenderer={this.itemRenderer} // groupRenderer={this.groupRenderer} - onCanvasClick={this.handleCanvasClick} onCanvasContextMenu={this.handleCanvasContextMenu} onItemClick={this.handleItemClick} diff --git a/demo/src/styles.scss b/demo/src/styles.scss index c80509aec..0acc45c6d 100644 --- a/demo/src/styles.scss +++ b/demo/src/styles.scss @@ -2,6 +2,9 @@ body { font-family: 'Lato'; margin: 0; font-size: 13px; + min-height: 100vh; + display: flex; + flex-direction: column; } .react-calendar-timeline .rct-item.item-weekend { diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 048d78767..6b9ef1794 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -496,8 +496,12 @@ export default class ReactCalendarTimeline extends Component< }) //initial scroll left is the buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) const scrollLeft = width * ((props.buffer - 1) / 2) - this.scrollComponent!.scrollLeft = scrollLeft - this.scrollHeaderRef!.scrollLeft = scrollLeft + if (this.scrollComponent) { + this.scrollComponent.scrollLeft = scrollLeft + } + if (this.scrollHeaderRef) { + this.scrollHeaderRef.scrollLeft = scrollLeft + } } onScroll = (scrollX: number) => { diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index 75fee537a..f052fe1c7 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -547,9 +547,11 @@ export default class Item extends Component { } else { interactMounted = false } - this.setState({ - interactMounted, - }) + if (interactMounted !== this.state.interactMounted) { + this.setState({ + interactMounted, + }) + } } onMouseDown: MouseEventHandler = (e) => { diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 44c78fd9b..a6e16a1e8 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -358,8 +358,10 @@ export function getVisibleItems< const { itemTimeStartKey, itemTimeEndKey } = keys return items.filter((item) => { - const afterStart = _get(item, itemTimeStartKey) <= canvasTimeEnd - const beforeEnd = _get(item, itemTimeEndKey) >= canvasTimeStart + const afterStart = + dayjs(_get(item, itemTimeStartKey)).valueOf() <= canvasTimeEnd + const beforeEnd = + dayjs(_get(item, itemTimeEndKey)).valueOf() >= canvasTimeStart return afterStart && beforeEnd }) @@ -415,7 +417,7 @@ export function groupStack( other.dimensions && other.dimensions.top !== null && other.dimensions.stack && - collision(item.dimensions, other.dimensions) + collision(item.dimensions, other.dimensions, lineHeight) ) { collidingItem = other break @@ -424,16 +426,12 @@ export function groupStack( } } - if ( - collidingItem != null && - collidingItem.dimensions && - collidingItem.dimensions.top - ) { + if (collidingItem != null) { // There is a collision. Reposition the items above the colliding element - item.dimensions.top = collidingItem.dimensions.top + lineHeight + item.dimensions.top = collidingItem.dimensions.top! + lineHeight curHeight = Math.max( curHeight, - item.dimensions.top! + + item.dimensions.top + item.dimensions.height + verticalMargin - groupTop, From 0301e43f6a9da4ef1e9ca29e844b53b5924fc6d0 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 9 Jan 2024 14:47:21 +0200 Subject: [PATCH 24/50] Fix todos --- .prettierrc | 1 + demo/src/demo-main/index.jsx | 14 +++++----- src/lib/headers/CustomHeader.tsx | 19 ++++++-------- src/lib/items/Item.tsx | 17 ++++++------ src/lib/markers/MarkerCanvasContext.ts | 12 +++++---- .../markers/implementations/CursorMarker.tsx | 26 +++++++------------ src/lib/timeline/TimelineStateContext.tsx | 8 +++--- src/lib/types/dimension.ts | 9 ++----- src/lib/types/main.ts | 13 +++------- src/lib/utility/calendar.tsx | 4 +-- 10 files changed, 54 insertions(+), 69 deletions(-) diff --git a/.prettierrc b/.prettierrc index fd496a820..d55174a83 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { + "printWidth": 1200, "singleQuote": true, "semi": false } diff --git a/demo/src/demo-main/index.jsx b/demo/src/demo-main/index.jsx index 15c3dd381..237ca84aa 100644 --- a/demo/src/demo-main/index.jsx +++ b/demo/src/demo-main/index.jsx @@ -10,8 +10,6 @@ import Timeline, { } from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' -import groups from './groups' -import items from './items' var minTime = dayjs().add(-6, 'months').valueOf() var maxTime = dayjs().add(6, 'months').valueOf() @@ -32,12 +30,16 @@ export default class App extends Component { constructor(props) { super(props) - // const { groups, items } = generateFakeData(2, 4) - const defaultTimeStart = dayjs(items[0].start_time).startOf('day').toDate() + const { groups, items } = generateFakeData() + const defaultTimeStart = dayjs(items[0].start_time) + .startOf('day') + .toDate() + .valueOf() const defaultTimeEnd = dayjs(items[0].end_time) .startOf('day') .add(1, 'day') .toDate() + .valueOf() this.state = { groups, @@ -177,8 +179,8 @@ export default class App extends Component { buffer={3} minZoom={365.24 * 86400 * 1000} // 1 year maxZoom={365.24 * 86400 * 1000 * 20} // 20 years - defaultTimeStart={dayjs().add(-20, 'year').valueOf()} - defaultTimeEnd={dayjs().valueOf()} + defaultTimeStart={defaultTimeStart} + defaultTimeEnd={defaultTimeEnd} > diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index 2e56b712e..1cadedd10 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -84,17 +84,14 @@ export class CustomHeader extends React.Component< } return false } - - // todo - rework with "gdsfp" - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps: CustomHeaderProps) { + componentDidUpdate(prevProps: CustomHeaderProps) { if ( - nextProps.canvasTimeStart !== this.props.canvasTimeStart || - nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || - nextProps.canvasWidth !== this.props.canvasWidth || - nextProps.unit !== this.props.unit || - nextProps.timeSteps !== this.props.timeSteps || - nextProps.showPeriod !== this.props.showPeriod + prevProps.canvasTimeStart !== this.props.canvasTimeStart || + prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || + prevProps.canvasWidth !== this.props.canvasWidth || + prevProps.unit !== this.props.unit || + prevProps.timeSteps !== this.props.timeSteps || + prevProps.showPeriod !== this.props.showPeriod ) { const { canvasTimeStart, @@ -102,7 +99,7 @@ export class CustomHeader extends React.Component< unit, timeSteps, getLeftOffsetFromDate, - } = nextProps + } = this.props const intervals = this.getHeaderIntervals({ canvasTimeStart, diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index f052fe1c7..d1395ab1f 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -32,6 +32,10 @@ import { rightResizeStyle, } from './styles' import { Id, ItemContext, TimelineItemBase, TimelineKeys } from '../types/main' +import { + TimelineContext, + TimelineContextType, +} from '../timeline/TimelineStateContext.tsx' export type ResizeEdge = 'left' | 'right' @@ -103,10 +107,6 @@ interface ItemState { resizeTime: null | number } -interface TimelineContext { - // Define your timeline context types here -} - export type GetItemPropsParams = HTMLAttributes & { leftClassName?: string rightClassName?: string @@ -116,7 +116,7 @@ export type GetItemPropsParams = HTMLAttributes & { export interface ItemRendererProps { item: TimelineItemBase - timelineContext: TimelineContext + timelineContext: TimelineContextType itemContext: ItemContext getItemProps: (params: GetItemPropsParams) => HTMLAttributes getResizeProps: GetResizeProps @@ -136,6 +136,8 @@ export default class Item extends Component { selected: false, itemRenderer: defaultItemRenderer, } + declare context: TimelineContextType + static contextType = TimelineContext state: ItemState = { interactMounted: false, @@ -702,10 +704,7 @@ export default class Item extends Component { return null } - //todo context is not defined - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const timelineContext = this.context?.getTimelineContext?.() + const timelineContext = this.context const itemContext: ItemContext = { dimensions: this.props.dimensions!, useResizeHandle: !!this.props.useResizeHandle, diff --git a/src/lib/markers/MarkerCanvasContext.ts b/src/lib/markers/MarkerCanvasContext.ts index 0d86ce25f..3b93f62d0 100644 --- a/src/lib/markers/MarkerCanvasContext.ts +++ b/src/lib/markers/MarkerCanvasContext.ts @@ -1,6 +1,5 @@ import React from 'react' -/* eslint-disable no-console */ const defaultContextState = { subscribeToMouseOver: () => { console.warn('"subscribeToMouseOver" default func is being used') @@ -8,14 +7,17 @@ const defaultContextState = { }, } -type Params = { +export type HandleCanvasMouseOver = ({ + leftOffset, + date, + isCursorOverCanvas, +}: { leftOffset: number date: number isCursorOverCanvas: boolean -} -/* eslint-enable */ +}) => void export type MarkerCanvasContext = { - subscribeToMouseOver: (p: (params: Params) => void) => void + subscribeToMouseOver: (p: HandleCanvasMouseOver) => () => void } const { Consumer, Provider } = diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index 52314f66e..2d8f58e4d 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -3,7 +3,10 @@ import { createMarkerStylesWithLeftOffset, createDefaultRenderer, } from './shared' -import { MarkerCanvasConsumer } from '../MarkerCanvasContext' +import { + HandleCanvasMouseOver, + MarkerCanvasConsumer, +} from '../MarkerCanvasContext' const defaultRenderer = createDefaultRenderer('default-cursor-marker') @@ -20,17 +23,7 @@ type CursorMarkerWrapperProps = { } type CursorMarkerProps = CursorMarkerWrapperProps & { - subscribeToCanvasMouseOver: ( - handleCanvasMouseOver: ({ - leftOffset, - date, - isCursorOverCanvas, - }: { - leftOffset: number - date: number - isCursorOverCanvas: boolean - }) => void, - ) => void + subscribeToCanvasMouseOver: (p: HandleCanvasMouseOver) => () => void } type CursorMarkerStat = { @@ -82,7 +75,9 @@ class CursorMarker extends React.Component< isShowingCursor: isCursorOverCanvas, }) } - private unsubscribe: undefined | any //todo + private unsubscribe?: ReturnType< + CursorMarkerProps['subscribeToCanvasMouseOver'] + > componentDidMount() { this.unsubscribe = this.props.subscribeToCanvasMouseOver( @@ -91,9 +86,9 @@ class CursorMarker extends React.Component< } componentWillUnmount() { - if (this.unsubscribe != null) { + if (this.unsubscribe) { this.unsubscribe() - this.unsubscribe = null + this.unsubscribe = undefined } } @@ -108,7 +103,6 @@ class CursorMarker extends React.Component< } } -// TODO: turn into HOC? const CursorMarkerWrapper = (props: CursorMarkerWrapperProps) => { return ( diff --git a/src/lib/timeline/TimelineStateContext.tsx b/src/lib/timeline/TimelineStateContext.tsx index 82adac9b0..d82647f4a 100644 --- a/src/lib/timeline/TimelineStateContext.tsx +++ b/src/lib/timeline/TimelineStateContext.tsx @@ -3,6 +3,7 @@ import React, { PropsWithChildren } from 'react' import { calculateXPositionForTime, calculateTimeForXPosition, + SelectUnits, } from '../utility/calendar' import { TimelineContext as TimelineContextValue } from '../types/main' import { Dayjs } from 'dayjs' @@ -34,8 +35,9 @@ const defaultContextState: TimelineContextType = { } /* eslint-enable */ -const { Consumer, Provider } = +export const TimelineContext = React.createContext(defaultContextState) +const { Consumer, Provider } = TimelineContext type TimelineStartProps = { visibleTimeStart: number @@ -44,10 +46,10 @@ type TimelineStartProps = { canvasTimeEnd: number canvasWidth: number showPeriod: (from: Dayjs, to: Dayjs) => void - timelineUnit: string //todo + timelineUnit: SelectUnits timelineWidth: number } -type TimelineContextType = { +export type TimelineContextType = { getTimelineState: () => TimelineContextValue getLeftOffsetFromDate: (date: number) => number getDateFromLeftOffsetPosition: (leftOffset: number) => number diff --git a/src/lib/types/dimension.ts b/src/lib/types/dimension.ts index f0222586b..377802246 100644 --- a/src/lib/types/dimension.ts +++ b/src/lib/types/dimension.ts @@ -1,4 +1,4 @@ -import { Id } from './main' +import { GroupOrder, Id } from './main' export type Dimension = { collisionLeft: number @@ -6,12 +6,7 @@ export type Dimension = { height: number isDragging: boolean left: number - order: { - group: { - id: string - } - index: number - } + order: GroupOrder originalLeft: number stack: boolean top: number | null diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 4c53b556f..f847b197e 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -26,10 +26,8 @@ export interface TimelineGroupBase { dimensions?: Dimension | undefined } -export type GroupOrders = Record< - Id, - { index: number; group: TimelineGroupBase } -> +export type GroupOrder = { index: number; group: TimelineGroupBase } +export type GroupOrders = Record export type GroupedItem = { index: number @@ -83,12 +81,7 @@ export interface ItemContext { height: number isDragging: boolean left: number - order: { - group: { - id: string - } - index: number - } + order: GroupOrder originalLeft: number stack: boolean top: number | null diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index a6e16a1e8..34fe752eb 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -336,7 +336,7 @@ export function getGroupedItems( items[i].dimensions !== undefined && items[i].dimensions?.order !== undefined ) { - const groupItem = groupedItems[items[i].dimensions?.order.index ?? 0] //todo check + const groupItem = groupedItems[items[i].dimensions?.order.index ?? 0] if (groupItem) { groupItem.items.push(items[i]) } @@ -683,7 +683,7 @@ export function getItemDimensions>({ canvasTimeStart: number canvasTimeEnd: number canvasWidth: number - groupOrders: any //todo + groupOrders: GroupOrders lineHeight: number itemHeightRatio: number }): ItemDimension | undefined { From dc6c6d12a1a1b664123d282acdf09269417e5902 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Wed, 10 Jan 2024 18:52:56 +0200 Subject: [PATCH 25/50] Types fixes & drop webpack --- index.js | 4 +- package.json | 55 +- src/index.ts | 4 + src/lib/Timeline.tsx | 551 +++--------------- src/lib/headers/SidebarHeader.tsx | 27 +- .../markers/implementations/CursorMarker.tsx | 49 +- .../markers/implementations/CustomMarker.tsx | 18 +- src/lib/markers/markerType.ts | 11 +- src/lib/types/main.ts | 62 +- src/lib/utility/calendar.tsx | 390 ++----------- tsconfig.json | 3 +- vite.config.mts | 33 +- webpack.config.js | 56 -- 13 files changed, 206 insertions(+), 1057 deletions(-) delete mode 100644 webpack.config.js diff --git a/index.js b/index.js index c65a9409e..7bf7c9817 100644 --- a/index.js +++ b/index.js @@ -1,3 +1 @@ -import Timeline from './lib/index.mjs' - -export default Timeline +export * from './dist/react-calendar-timeline-4ef.es.js' diff --git a/package.json b/package.json index f5a2b3e23..611c6570e 100644 --- a/package.json +++ b/package.json @@ -2,28 +2,28 @@ "name": "react-calendar-timeline-4ef", "version": "1.0.0", "description": "react calendar timeline", - "main": "lib/index.js", "packageManager": "npm@8.19.2", "scripts": { "build-vite": "tsc && vite build", - "build": "npm run build:lib", - "build:demo": "echo '!!! Building Demo' && cross-env NODE_ENV=production webpack --progress", - "build:lib": "echo '!!! Building Library' && rimraf lib && cross-env NODE_ENV=production babel src --out-dir lib && node-sass src/lib/Timeline.scss lib/Timeline.css && sed -i'.bak' 's/Timeline\\.scss/Timeline\\.css/g' lib/lib/Timeline.js && rm lib/lib/Timeline.js.bak", "lint": "eslint --ext .js --ext .jsx ./src", "lint:fix": "npm run lint --fix", - "prepublish": "npm run build:lib", - "start": "webpack-dev-server --hot --host 0.0.0.0", "test": "jest", "test:watch": "jest --watch" }, + "main": "./dist/react-calendar-timeline-4ef.umd.js", + "module": "./dist/react-calendar-timeline-4ef.es.js", "exports": { ".": { - "import": "./lib/main.mjs" + "types": [ + "./dist/index.d.ts" + ], + "import": "./dist/react-calendar-timeline-4ef.es.js", + "require": "./dist/react-calendar-timeline-4ef.umd.js" } }, + "types": "./dist/index.d.ts", "files": [ - "lib", - "src" + "dist" ], "homepage": "https://github.com/namespace-ee/react-calendar-timeline", "repository": { @@ -99,41 +99,31 @@ ] }, "dependencies": { + "@rollup/plugin-typescript": "^11.1.5", "@types/lodash": "^4.14.202", "classnames": "^2.3.2", "element-resize-detector": "^1.2.4", "lodash": "^4.17.21", - "memoize-one": "^6.0.0" + "memoize-one": "^6.0.0", + "rollup-plugin-typescript-paths": "^1.5.0" }, "peerDependencies": { "dayjs": "*", "interactjs": "^1.10.24", - "react": ">=18.2", - "react-dom": ">=18.2" + "react": ">=18", + "react-dom": ">=18" }, "devDependencies": { - "@babel/cli": "^7.23.4", - "@babel/core": "^7.23.5", - "@babel/eslint-parser": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/preset-env": "^7.23.5", - "@babel/preset-react": "^7.23.3", "@faker-js/faker": "^8.3.1", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", "@types/element-resize-detector": "^1.1.6", - "@types/react": "^18.2.43", + "@types/react": "^18.2.41", "@types/react-dom": "^18.2.17", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", "@vitejs/plugin-react-swc": "^3.5.0", - "babel-jest": "^29.7.0", - "babel-loader": "^9.1.3", - "babel-plugin-react-remove-properties": "^0.3.0", "cross-env": "^7.0.3", - "css-loader": "^6.8.1", "dayjs": "^1.11.10", "eslint": "^8.55.0", "eslint-config-prettier": "^9.1.0", @@ -151,21 +141,12 @@ "prettier": "^3.1.0", "prettier-eslint-cli": "^8.0.1", "randomcolor": "^0.6.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^6.20.1", - "regenerator-runtime": "^0.14.0", - "rimraf": "^5.0.5", + "react": "18.2.0", + "react-dom": "18.2.0", "sass": "^1.69.5", - "sass-loader": "^13.3.2", - "style-loader": "^3.3.3", - "ts-loader": "^9.5.1", "typescript": "^5.2.2", "vite": "^5.0.8", "vite-plugin-dts": "^3.6.4", - "vite-plugin-lib-inject-css": "^1.3.0", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" + "vite-plugin-lib-inject-css": "^1.3.0" } } diff --git a/src/index.ts b/src/index.ts index e1682fe29..9575f0c3a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,4 +8,8 @@ export { default as TimelineHeaders } from './lib/headers/TimelineHeaders' export { default as SidebarHeader } from './lib/headers/SidebarHeader' export { default as CustomHeader } from './lib/headers/CustomHeader' export { default as DateHeader } from './lib/headers/DateHeader' +export * as calendarUtils from './lib/utility/calendar' +export * from './lib/types/main' + +export { Timeline } export default Timeline diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 6b9ef1794..4fa440c01 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -7,14 +7,7 @@ import ScrollElement from './scroll/ScrollElement' import MarkerCanvas from './markers/MarkerCanvas' import windowResizeDetector from '../resize-detector/window' -import { - getMinUnit, - calculateTimeForXPosition, - calculateScrollCanvas, - getCanvasBoundariesFromVisibleTime, - getCanvasWidth, - stackTimelineItems, -} from './utility/calendar' +import { getMinUnit, calculateTimeForXPosition, calculateScrollCanvas, getCanvasBoundariesFromVisibleTime, getCanvasWidth, stackTimelineItems } from './utility/calendar' import { _get } from './utility/generic' import { defaultKeys, defaultTimeSteps } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' @@ -22,42 +15,16 @@ import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' import TimelineHeaders from './headers/TimelineHeaders' import { DateHeader } from './headers/DateHeader' -import { - dateType, - ElementWithSecret, - Id, - OnItemDragObjectMove, - OnItemDragObjectResize, - ReactCalendarGroupRendererProps, - TimelineContext, - TimelineGroupBase, - TimelineItemBase, - TimelineKeys, - TimelineTimeSteps, - Unit, -} from './types/main' +import { dateType, ElementWithSecret, Id, OnItemDragObjectMove, OnItemDragObjectResize, ReactCalendarGroupRendererProps, TimelineContext, TimelineGroupBase, TimelineItemBase, TimelineKeys, TimelineTimeSteps, Unit } from './types/main' import { ItemDimension } from './types/dimension' import { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' import './Timeline.scss' +import PropTypes from 'prop-types' -export type OnTimeChange = ( - visibleTimeStart: number, - visibleTimeEnd: number, - updateScrollCanvas: ( - start: dateType, - end: dateType, - forceUpdateDimensions: boolean, - items: CustomItem[], - groups: CustomGroup[], - ) => void, - unit: Unit, -) => any - -export type ReactCalendarTimelineProps< - CustomItem extends TimelineItemBase = TimelineItemBase, - CustomGroup extends TimelineGroupBase = TimelineGroupBase, -> = { +export type OnTimeChange = (visibleTimeStart: number, visibleTimeEnd: number, updateScrollCanvas: (start: dateType, end: dateType, forceUpdateDimensions?: boolean, items?: CustomItem[], groups?: CustomGroup[]) => void, unit: Unit) => any + +export type ReactCalendarTimelineProps = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { children?: React.ReactNode groups: CustomGroup[] items: CustomItem[] @@ -88,9 +55,7 @@ export type ReactCalendarTimelineProps< itemTouchSendsClick?: boolean | undefined timeSteps: TimelineTimeSteps scrollRef?: (el: HTMLDivElement) => void - onItemDrag?( - itemDragObject: OnItemDragObjectMove | OnItemDragObjectResize, - ): void + onItemDrag?(itemDragObject: OnItemDragObjectMove | OnItemDragObjectResize): void onItemMove?(itemId: Id, dragTime: number, newGroupOrder: number): void onItemResize?(itemId: Id, endTimeOrStartTime: number, edge: ResizeEdge): void onItemSelect?(itemId: Id, e: any, time: number): void @@ -106,9 +71,7 @@ export type ReactCalendarTimelineProps< onTimeChange?: OnTimeChange onBoundsChange?(canvasTimeStart: number, canvasTimeEnd: number): any itemRenderer?: ItemProps['itemRenderer'] - groupRenderer?: - | ((props: ReactCalendarGroupRendererProps) => React.ReactNode) - | undefined + groupRenderer?: ((props: ReactCalendarGroupRendererProps) => React.ReactNode) | undefined resizeDetector?: | { addListener?: (x: any) => void @@ -116,20 +79,15 @@ export type ReactCalendarTimelineProps< } | undefined verticalLineClassNamesForTime?: (start: number, end: number) => string[] - horizontalLineClassNamesForGroup?: - | ((group: CustomGroup) => string[]) - | undefined - buffer: number + horizontalLineClassNamesForGroup?: ((group: CustomGroup) => string[]) | undefined + buffer?: number // Fields that are in propTypes but not documented headerRef?: (el: HTMLDivElement) => void className?: string style?: React.CSSProperties } -export type ReactCalendarTimelineState< - CustomItem extends TimelineItemBase = TimelineItemBase, - CustomGroup extends TimelineGroupBase = TimelineGroupBase, -> = { +export type ReactCalendarTimelineState = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { width: number visibleTimeStart: number visibleTimeEnd: number @@ -151,10 +109,10 @@ export type ReactCalendarTimelineState< groupTops: number[] } -export default class ReactCalendarTimeline extends Component< - ReactCalendarTimelineProps, - ReactCalendarTimelineState -> { +export default class ReactCalendarTimeline extends Component { + static childContextType = { + getTimelineContext: PropTypes.func, + } public static defaultProps = { sidebarWidth: 150, rightSidebarWidth: 0, @@ -214,14 +172,7 @@ export default class ReactCalendarTimeline extends Component< // which needs to update the props visibleTimeStart and visibleTimeEnd to the ones passed visibleTimeStart: null, visibleTimeEnd: null, - onTimeChange: function ( - visibleTimeStart: dateType, - visibleTimeEnd: dateType, - updateScrollCanvas: ( - visibleTimeStart: dateType, - visibleTimeEnd: dateType, - ) => void, - ) { + onTimeChange: function (visibleTimeStart: dateType, visibleTimeEnd: dateType, updateScrollCanvas: (visibleTimeStart: dateType, visibleTimeEnd: dateType) => void) { updateScrollCanvas(visibleTimeStart, visibleTimeEnd) }, // called when the canvas area of the calendar changes @@ -240,13 +191,7 @@ export default class ReactCalendarTimeline extends Component< } getTimelineContext = () => { - const { - width, - visibleTimeStart, - visibleTimeEnd, - canvasTimeStart, - canvasTimeEnd, - } = this.state + const { width, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd } = this.state return { timelineWidth: width, @@ -288,16 +233,10 @@ export default class ReactCalendarTimeline extends Component< visibleTimeEnd = this.props.visibleTimeEnd } else { //throwing an error because neither default or visible time props provided - throw new Error( - 'You must provide either "defaultTimeStart" and "defaultTimeEnd" or "visibleTimeStart" and "visibleTimeEnd" to initialize the Timeline', - ) + throw new Error('You must provide either "defaultTimeStart" and "defaultTimeEnd" or "visibleTimeStart" and "visibleTimeEnd" to initialize the Timeline') } - const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime( - visibleTimeStart, - visibleTimeEnd, - props.buffer, - ) + const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime(visibleTimeStart, visibleTimeEnd, props.buffer!) const state: Partial = { width: 1000, visibleTimeStart: visibleTimeStart, @@ -312,25 +251,8 @@ export default class ReactCalendarTimeline extends Component< resizingEdge: null, newGroupOrder: 0, //CHECK } - const canvasWidth = getCanvasWidth(state.width!, props.buffer) - const { dimensionItems, height, groupHeights, groupTops } = - stackTimelineItems( - props.items, - props.groups, - canvasWidth, - state.canvasTimeStart!, - state.canvasTimeEnd!, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - state.draggingItem, - state.resizingItem, - state.dragTime!, - state.resizingEdge!, - state.resizeTime!, - state.newGroupOrder!, - ) + const canvasWidth = getCanvasWidth(state.width!, props.buffer!) + const { dimensionItems, height, groupHeights, groupTops } = stackTimelineItems(props.items, props.groups, canvasWidth, state.canvasTimeStart!, state.canvasTimeEnd!, props.keys, props.lineHeight, props.itemHeightRatio, props.stackItems, state.draggingItem, state.resizingItem, state.dragTime!, state.resizingEdge!, state.resizeTime!, state.newGroupOrder!) state.dimensionItems = dimensionItems state.height = height @@ -359,10 +281,7 @@ export default class ReactCalendarTimeline extends Component< windowResizeDetector.removeListener(this) } - static getDerivedStateFromProps( - nextProps: ReactCalendarTimelineProps, - prevState: ReactCalendarTimelineState, - ) { + static getDerivedStateFromProps(nextProps: ReactCalendarTimelineProps, prevState: ReactCalendarTimelineState) { const { visibleTimeStart, visibleTimeEnd, items, groups } = nextProps // This is a gross hack pushing items and groups in to state only to allow @@ -375,41 +294,11 @@ export default class ReactCalendarTimeline extends Component< // We are a controlled component if (visibleTimeStart && visibleTimeEnd) { // Get the new canvas position - Object.assign( - derivedState, - calculateScrollCanvas( - visibleTimeStart, - visibleTimeEnd, - forceUpdate, - items, - groups, - nextProps, - prevState, - ), - ) + Object.assign(derivedState, calculateScrollCanvas(visibleTimeStart, visibleTimeEnd, forceUpdate, items, groups, nextProps, prevState)) } else if (forceUpdate) { // Calculate new item stack position as canvas may have changed - const canvasWidth = getCanvasWidth(prevState.width, nextProps.buffer) - Object.assign( - derivedState, - stackTimelineItems( - items, - groups, - canvasWidth, - prevState.canvasTimeStart, - prevState.canvasTimeEnd, - nextProps.keys, - nextProps.lineHeight, - nextProps.itemHeightRatio, - nextProps.stackItems, - prevState.draggingItem, - prevState.resizingItem, - prevState.dragTime, - prevState.resizingEdge, - prevState.resizeTime, - prevState.newGroupOrder, - ), - ) + const canvasWidth = getCanvasWidth(prevState.width, nextProps.buffer!) + Object.assign(derivedState, stackTimelineItems(items, groups, canvasWidth, prevState.canvasTimeStart, prevState.canvasTimeEnd, nextProps.keys, nextProps.lineHeight, nextProps.itemHeightRatio, nextProps.stackItems, prevState.draggingItem, prevState.resizingItem, prevState.dragTime, prevState.resizingEdge, prevState.resizeTime, prevState.newGroupOrder)) } return derivedState @@ -418,10 +307,7 @@ export default class ReactCalendarTimeline extends Component< scrollComponent: HTMLDivElement | null = null scrollHeaderRef: HTMLDivElement | null = null - componentDidUpdate( - _: ReactCalendarTimelineProps, - prevState: ReactCalendarTimelineState, - ) { + componentDidUpdate(_: ReactCalendarTimelineProps, prevState: ReactCalendarTimelineState) { const newZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart const oldZoom = prevState.visibleTimeEnd - prevState.visibleTimeStart @@ -431,27 +317,13 @@ export default class ReactCalendarTimeline extends Component< } // The bounds have changed? Report it! - if ( - this.props.onBoundsChange && - this.state.canvasTimeStart !== prevState.canvasTimeStart - ) { - this.props.onBoundsChange( - this.state.canvasTimeStart, - this.state.canvasTimeStart + newZoom * 3, - ) + if (this.props.onBoundsChange && this.state.canvasTimeStart !== prevState.canvasTimeStart) { + this.props.onBoundsChange(this.state.canvasTimeStart, this.state.canvasTimeStart + newZoom * 3) } // Check the scroll is correct - const scrollLeft = Math.round( - (this.state.width * - (this.state.visibleTimeStart - this.state.canvasTimeStart)) / - newZoom, - ) - const componentScrollLeft = Math.round( - (prevState.width * - (prevState.visibleTimeStart - prevState.canvasTimeStart)) / - oldZoom, - ) + const scrollLeft = Math.round((this.state.width * (this.state.visibleTimeStart - this.state.canvasTimeStart)) / newZoom) + const componentScrollLeft = Math.round((prevState.width * (prevState.visibleTimeStart - prevState.canvasTimeStart)) / oldZoom) if (componentScrollLeft !== scrollLeft) { this.scrollComponent!.scrollLeft = scrollLeft @@ -460,29 +332,11 @@ export default class ReactCalendarTimeline extends Component< } resize = (props = this.props) => { - const { width: containerWidth } = - this.container.current?.getBoundingClientRect() ?? { width: 0 } + const { width: containerWidth } = this.container.current?.getBoundingClientRect() ?? { width: 0 } const width = containerWidth - props.sidebarWidth - props.rightSidebarWidth - const canvasWidth = getCanvasWidth(width, props.buffer) - const { dimensionItems, height, groupHeights, groupTops } = - stackTimelineItems( - props.items, - props.groups, - canvasWidth, - this.state.canvasTimeStart, - this.state.canvasTimeEnd, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - this.state.draggingItem, - this.state.resizingItem, - this.state.dragTime, - this.state.resizingEdge, - this.state.resizeTime, - this.state.newGroupOrder, - ) + const canvasWidth = getCanvasWidth(width, props.buffer!) + const { dimensionItems, height, groupHeights, groupTops } = stackTimelineItems(props.items, props.groups, canvasWidth, this.state.canvasTimeStart, this.state.canvasTimeEnd, props.keys, props.lineHeight, props.itemHeightRatio, props.stackItems, this.state.draggingItem, this.state.resizingItem, this.state.dragTime, this.state.resizingEdge, this.state.resizeTime, this.state.newGroupOrder) // this is needed by dragItem since it uses pageY from the drag events // if this was in the context of the scrollElement, this would not be necessary @@ -495,7 +349,7 @@ export default class ReactCalendarTimeline extends Component< groupTops, }) //initial scroll left is the buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) - const scrollLeft = width * ((props.buffer - 1) / 2) + const scrollLeft = width * ((props.buffer! - 1) / 2) if (this.scrollComponent) { this.scrollComponent.scrollLeft = scrollLeft } @@ -513,38 +367,14 @@ export default class ReactCalendarTimeline extends Component< const visibleTimeStart = canvasTimeStart + (zoom * scrollX) / width - if ( - this.state.visibleTimeStart !== visibleTimeStart || - this.state.visibleTimeEnd !== visibleTimeStart + zoom - ) { - this.props.onTimeChange?.( - visibleTimeStart, - visibleTimeStart + zoom, - this.updateScrollCanvas, - this.getTimelineUnit(), - ) + if (this.state.visibleTimeStart !== visibleTimeStart || this.state.visibleTimeEnd !== visibleTimeStart + zoom) { + this.props.onTimeChange?.(visibleTimeStart, visibleTimeStart + zoom, this.updateScrollCanvas, this.getTimelineUnit()) } } // called when the visible time changes - updateScrollCanvas = ( - visibleTimeStart: dateType, - visibleTimeEnd: dateType, - forceUpdateDimensions: boolean, - items = this.props.items, - groups = this.props.groups, - ) => { - this.setState( - calculateScrollCanvas( - visibleTimeStart, - visibleTimeEnd, - forceUpdateDimensions, - items, - groups, - this.props, - this.state, - ), - ) + updateScrollCanvas = (visibleTimeStart: dateType, visibleTimeEnd: dateType, forceUpdateDimensions: boolean = false, items = this.props.items, groups = this.props.groups) => { + this.setState(calculateScrollCanvas(visibleTimeStart, visibleTimeEnd, forceUpdateDimensions, items, groups, this.props, this.state)) } handleWheelZoom = (speed: number, xPosition: number, deltaY: number) => { @@ -554,20 +384,10 @@ export default class ReactCalendarTimeline extends Component< changeZoom = (scale: number, offset = 0.5) => { const { minZoom, maxZoom } = this.props const oldZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart - const newZoom = Math.min( - Math.max(Math.round(oldZoom * scale), minZoom), - maxZoom, - ) // min 1 min, max 20 years - const newVisibleTimeStart = Math.round( - this.state.visibleTimeStart + (oldZoom - newZoom) * offset, - ) + const newZoom = Math.min(Math.max(Math.round(oldZoom * scale), minZoom), maxZoom) // min 1 min, max 20 years + const newVisibleTimeStart = Math.round(this.state.visibleTimeStart + (oldZoom - newZoom) * offset) if (this.props.onTimeChange) { - this.props.onTimeChange( - newVisibleTimeStart, - newVisibleTimeStart + newZoom, - this.updateScrollCanvas, - this.getTimelineUnit(), - ) + this.props.onTimeChange(newVisibleTimeStart, newVisibleTimeStart + newZoom, this.updateScrollCanvas, this.getTimelineUnit()) } } @@ -581,19 +401,11 @@ export default class ReactCalendarTimeline extends Component< return } - this.props.onTimeChange?.( - visibleTimeStart, - visibleTimeStart + zoom, - this.updateScrollCanvas, - this.getTimelineUnit(), - ) + this.props.onTimeChange?.(visibleTimeStart, visibleTimeStart + zoom, this.updateScrollCanvas, this.getTimelineUnit()) } selectItem: ItemProps['onSelect'] = (item, clickType, e) => { - if ( - this.isItemSelected(item) || - (this.props.itemTouchSendsClick && clickType === 'touch') - ) { + if (this.isItemSelected(item) || (this.props.itemTouchSendsClick && clickType === 'touch')) { if (item && this.props.onItemClick) { const time = this.timeFromItemEvent(e as MouseEvent) this.props.onItemClick(item, e, time) @@ -637,7 +449,7 @@ export default class ReactCalendarTimeline extends Component< canvasTimeStart, canvasTimeEnd, - getCanvasWidth(width, buffer), + getCanvasWidth(width, buffer!), offsetX, ) time = Math.floor(time / dragSnap) * dragSnap @@ -712,19 +524,7 @@ export default class ReactCalendarTimeline extends Component< } } - updatingItem = ({ - eventType, - itemId, - time, - edge, - newGroupOrder, - }: { - eventType: 'move' | 'resize' - itemId: Id - time: number - edge?: ResizeEdge - newGroupOrder?: number - }) => { + updatingItem = ({ eventType, itemId, time, edge, newGroupOrder }: { eventType: 'move' | 'resize'; itemId: Id; time: number; edge?: ResizeEdge; newGroupOrder?: number }) => { if (this.props.onItemDrag) { if (eventType === 'move') { this.props.onItemDrag({ @@ -744,26 +544,8 @@ export default class ReactCalendarTimeline extends Component< } } - columns( - canvasTimeStart: number, - canvasTimeEnd: number, - canvasWidth: number, - minUnit: keyof TimelineTimeSteps, - timeSteps: TimelineTimeSteps, - height: number, - ) { - return ( - - ) + columns(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, minUnit: keyof TimelineTimeSteps, timeSteps: TimelineTimeSteps, height: number) { + return } handleRowClick: RowClickEvent = (e, rowIndex) => { @@ -775,10 +557,7 @@ export default class ReactCalendarTimeline extends Component< if (this.props.onCanvasClick == null) return const time = this.getTimeFromRowClickEvent(e) - const groupId = _get( - this.props.groups[rowIndex], - this.props.keys.groupIdKey, - ) + const groupId = _get(this.props.groups[rowIndex], this.props.keys.groupIdKey) this.props.onCanvasClick(groupId, time, e) } @@ -786,10 +565,7 @@ export default class ReactCalendarTimeline extends Component< if (this.props.onCanvasDoubleClick == null) return const time = this.getTimeFromRowClickEvent(e) - const groupId = _get( - this.props.groups[rowIndex], - this.props.keys.groupIdKey, - ) + const groupId = _get(this.props.groups[rowIndex], this.props.keys.groupIdKey) this.props.onCanvasDoubleClick(groupId, time, e) } @@ -798,10 +574,7 @@ export default class ReactCalendarTimeline extends Component< const timePosition = this.getTimeFromRowClickEvent(e) - const groupId = _get( - this.props.groups[rowIndex], - this.props.keys.groupIdKey, - ) + const groupId = _get(this.props.groups[rowIndex], this.props.keys.groupIdKey) if (this.props.onCanvasContextMenu) { e.preventDefault() @@ -809,74 +582,12 @@ export default class ReactCalendarTimeline extends Component< } } - rows( - canvasWidth: number, - groupHeights: number[], - groups: TimelineGroupBase[], - ) { - return ( - - ) + rows(canvasWidth: number, groupHeights: number[], groups: TimelineGroupBase[]) { + return } - items({ - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - dimensionItems, - groupTops, - }: { - canvasTimeStart: number - canvasTimeEnd: number - canvasWidth: number - dimensionItems: ItemDimension[] - groupTops: number[] - }) { - return ( - - ) + items({ canvasTimeStart, canvasTimeEnd, canvasWidth, dimensionItems, groupTops }: { canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number; dimensionItems: ItemDimension[]; groupTops: number[] }) { + return } handleHeaderRef = (el: HTMLDivElement) => { @@ -888,35 +599,12 @@ export default class ReactCalendarTimeline extends Component< sidebar(height: number, groupHeights: number[]) { const { sidebarWidth } = this.props - return ( - sidebarWidth && ( - - ) - ) + return sidebarWidth && } rightSidebar(height: number, groupHeights: number[]) { const { rightSidebarWidth } = this.props - return ( - rightSidebarWidth && ( - - ) - ) + return rightSidebarWidth && } /** @@ -928,27 +616,13 @@ export default class ReactCalendarTimeline extends Component< return child.type.secretKey === TimelineHeaders.secretKey } - childrenWithProps( - canvasTimeStart: number, - canvasTimeEnd: number, - canvasWidth: number, - dimensionItems: any[], - groupHeights: number[], - groupTops: number[], - height: number, - visibleTimeStart: number, - visibleTimeEnd: number, - minUnit: keyof TimelineTimeSteps, - timeSteps: TimelineTimeSteps, - ) { + childrenWithProps(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, dimensionItems: any[], groupHeights: number[], groupTops: number[], height: number, visibleTimeStart: number, visibleTimeEnd: number, minUnit: keyof TimelineTimeSteps, timeSteps: TimelineTimeSteps) { if (!this.props.children) { return null } // convert to an array and remove the nulls - const childArray = Array.isArray(this.props.children) - ? this.props.children.filter((c) => c) - : [this.props.children] + const childArray = Array.isArray(this.props.children) ? this.props.children.filter((c) => c) : [this.props.children] const childProps = { canvasTimeStart, @@ -998,9 +672,7 @@ export default class ReactCalendarTimeline extends Component< } getSelected() { - return this.state.selectedItem && !this.props.selected - ? [this.state.selectedItem] - : this.props.selected || [] + return this.state.selectedItem && !this.props.selected ? [this.state.selectedItem] : this.props.selected || [] } hasSelectedItem() { @@ -1023,50 +695,18 @@ export default class ReactCalendarTimeline extends Component< container = React.createRef() render() { - const { - items, - groups, - sidebarWidth, - rightSidebarWidth, - timeSteps, - traditionalZoom, - buffer, - } = this.props - const { - draggingItem, - resizingItem, - width, - visibleTimeStart, - visibleTimeEnd, - canvasTimeStart, - canvasTimeEnd, - } = this.state + const { items, groups, sidebarWidth, rightSidebarWidth, timeSteps, traditionalZoom, buffer } = this.props + const { draggingItem, resizingItem, width, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd } = this.state let { dimensionItems, height, groupHeights, groupTops } = this.state const zoom = visibleTimeEnd - visibleTimeStart - const canvasWidth = getCanvasWidth(width, buffer) + const canvasWidth = getCanvasWidth(width, buffer!) const minUnit = getMinUnit(zoom, width, timeSteps) const isInteractingWithItem = !!draggingItem || !!resizingItem if (isInteractingWithItem) { - const stackResults = stackTimelineItems( - items, - groups, - canvasWidth, - this.state.canvasTimeStart, - this.state.canvasTimeEnd, - this.props.keys, - this.props.lineHeight, - this.props.itemHeightRatio, - this.props.stackItems, - this.state.draggingItem, - this.state.resizingItem, - this.state.dragTime, - this.state.resizingEdge, - this.state.resizeTime, - this.state.newGroupOrder, - ) + const stackResults = stackTimelineItems(items, groups, canvasWidth, this.state.canvasTimeStart, this.state.canvasTimeEnd, this.props.keys, this.props.lineHeight, this.props.itemHeightRatio, this.props.stackItems, this.state.draggingItem, this.state.resizingItem, this.state.dragTime, this.state.resizingEdge, this.state.resizeTime, this.state.newGroupOrder) dimensionItems = stackResults.dimensionItems height = stackResults.height groupHeights = stackResults.groupHeights @@ -1078,50 +718,16 @@ export default class ReactCalendarTimeline extends Component< } return ( - + - -
+ +
{this.renderHeaders()}
{sidebarWidth > 0 ? this.sidebar(height, groupHeights) : null} - + - {this.columns( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - minUnit, - timeSteps, - height, - )} + {this.columns(canvasTimeStart, canvasTimeEnd, canvasWidth, minUnit, timeSteps, height)} {this.rows(canvasWidth, groupHeights, groups)} {this.items({ canvasTimeStart, @@ -1130,24 +736,10 @@ export default class ReactCalendarTimeline extends Component< dimensionItems, groupTops, })} - {this.childrenWithProps( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - dimensionItems, - groupHeights, - groupTops, - height, - visibleTimeStart, - visibleTimeEnd, - minUnit, - timeSteps, - )} + {this.childrenWithProps(canvasTimeStart, canvasTimeEnd, canvasWidth, dimensionItems, groupHeights, groupTops, height, visibleTimeStart, visibleTimeEnd, minUnit, timeSteps)} - {rightSidebarWidth > 0 - ? this.rightSidebar(height, groupHeights) - : null} + {rightSidebarWidth > 0 ? this.rightSidebar(height, groupHeights) : null}
@@ -1155,4 +747,7 @@ export default class ReactCalendarTimeline extends Component< ) } + static childContextTypes = { + getTimelineContext: PropTypes.func, + } } diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx index f2d8e837a..4f72e15f6 100644 --- a/src/lib/headers/SidebarHeader.tsx +++ b/src/lib/headers/SidebarHeader.tsx @@ -1,9 +1,4 @@ -import { - ComponentType, - CSSProperties, - HTMLAttributes, - PureComponent, -} from 'react' +import { ComponentType, CSSProperties, HTMLProps, PureComponent } from 'react' import { TimelineHeadersConsumer } from './HeadersContext' import { LEFT_VARIANT, RIGHT_VARIANT } from './constants' @@ -18,10 +13,7 @@ type SidebarHeaderProps = { class SidebarHeader extends PureComponent { getRootProps = (props: { style?: CSSProperties } = {}) => { const { style } = props - const width = - this.props.variant === RIGHT_VARIANT - ? this.props.rightSidebarWidth - : this.props.leftSidebarWidth + const width = this.props.variant === RIGHT_VARIANT ? this.props.rightSidebarWidth : this.props.leftSidebarWidth return { style: { ...style, @@ -44,7 +36,7 @@ class SidebarHeader extends PureComponent { } } -type GetRootProps = () => HTMLAttributes +type GetRootProps = () => HTMLProps type SidebarWrapperProps = { children?: ComponentType<{ getRootProps: GetRootProps }> @@ -52,11 +44,7 @@ type SidebarWrapperProps = { headerData?: any } -const defaultChildren: SidebarWrapperProps['children'] = ({ - getRootProps, -}: { - getRootProps: GetRootProps -}) =>
+const defaultChildren: SidebarWrapperProps['children'] = ({ getRootProps }: { getRootProps: GetRootProps }) =>
const SidebarWrapper = (props: SidebarWrapperProps) => { const { children, variant = LEFT_VARIANT, headerData } = props @@ -64,12 +52,7 @@ const SidebarWrapper = (props: SidebarWrapperProps) => { {({ leftSidebarWidth, rightSidebarWidth }) => { return ( - + {children || defaultChildren} ) diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index 2d8f58e4d..489a6145c 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -1,24 +1,13 @@ import React from 'react' -import { - createMarkerStylesWithLeftOffset, - createDefaultRenderer, -} from './shared' -import { - HandleCanvasMouseOver, - MarkerCanvasConsumer, -} from '../MarkerCanvasContext' +import { createMarkerStylesWithLeftOffset, createDefaultRenderer } from './shared' +import { HandleCanvasMouseOver, MarkerCanvasConsumer } from '../MarkerCanvasContext' +import { MarkerRendererType } from '../markerType.ts' const defaultRenderer = createDefaultRenderer('default-cursor-marker') type CursorMarkerWrapperProps = { getLeftOffsetFromDate: (date: number) => number - renderer: ({ - styles, - date, - }: { - styles: React.CSSProperties - date: number - }) => React.JSX.Element + renderer: MarkerRendererType //interval: number } @@ -42,10 +31,7 @@ type CursorMarkerStat = { * isCursorOverCanvas - whether the user cursor is over the canvas. This is set to 'false' * when the user mouseleaves the element */ -class CursorMarker extends React.Component< - CursorMarkerProps, - CursorMarkerStat -> { +class CursorMarker extends React.Component { public static defaultProps = { renderer: defaultRenderer, } @@ -60,29 +46,17 @@ class CursorMarker extends React.Component< } } - handleCanvasMouseOver = ({ - leftOffset, - date, - isCursorOverCanvas, - }: { - leftOffset: number - date: number - isCursorOverCanvas: boolean - }) => { + handleCanvasMouseOver = ({ leftOffset, date, isCursorOverCanvas }: { leftOffset: number; date: number; isCursorOverCanvas: boolean }) => { this.setState({ leftOffset, date, isShowingCursor: isCursorOverCanvas, }) } - private unsubscribe?: ReturnType< - CursorMarkerProps['subscribeToCanvasMouseOver'] - > + private unsubscribe?: ReturnType componentDidMount() { - this.unsubscribe = this.props.subscribeToCanvasMouseOver( - this.handleCanvasMouseOver, - ) + this.unsubscribe = this.props.subscribeToCanvasMouseOver(this.handleCanvasMouseOver) } componentWillUnmount() { @@ -107,12 +81,7 @@ const CursorMarkerWrapper = (props: CursorMarkerWrapperProps) => { return ( {({ subscribeToMouseOver }) => { - return ( - - ) + return }} ) diff --git a/src/lib/markers/implementations/CustomMarker.tsx b/src/lib/markers/implementations/CustomMarker.tsx index a01a4ae7a..d3b410e49 100644 --- a/src/lib/markers/implementations/CustomMarker.tsx +++ b/src/lib/markers/implementations/CustomMarker.tsx @@ -1,22 +1,12 @@ import React from 'react' -import { - createMarkerStylesWithLeftOffset, - createDefaultRenderer, -} from './shared' +import { createMarkerStylesWithLeftOffset, createDefaultRenderer } from './shared' +import { MarkerRendererType } from '../markerType.ts' -const defaultCustomMarkerRenderer = createDefaultRenderer( - 'default-customer-marker-id', -) +const defaultCustomMarkerRenderer = createDefaultRenderer('default-customer-marker-id') type CustomMarkerProps = { date: number getLeftOffsetFromDate: (date: number) => number - renderer: ({ - styles, - date, - }: { - styles: React.CSSProperties - date: number - }) => React.JSX.Element + renderer: MarkerRendererType } /** diff --git a/src/lib/markers/markerType.ts b/src/lib/markers/markerType.ts index 277591890..e83e980f8 100644 --- a/src/lib/markers/markerType.ts +++ b/src/lib/markers/markerType.ts @@ -1,4 +1,4 @@ -import React from 'react' +import React, { ReactNode } from 'react' export enum TimelineMarkerType { Today = 'Today', @@ -14,10 +14,5 @@ export type MarkerType = { id?: number } -export type MarkerRendererType = ({ - styles, - date, -}: { - styles: React.CSSProperties - date: number -}) => React.JSX.Element +export type MarkerRendererTypeProps = { styles: React.CSSProperties; date: number } +export type MarkerRendererType = ({ styles, date }: MarkerRendererTypeProps) => ReactNode diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index f847b197e..08d275018 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -1,15 +1,5 @@ import { Dayjs } from 'dayjs' -import { - ReactNode, - CSSProperties, - HTMLAttributes, - MouseEventHandler, - ReactEventHandler, - Ref, - Component, - TouchEventHandler, - ReactElement, -} from 'react' +import { ReactNode, CSSProperties, HTMLProps, MouseEventHandler, ReactEventHandler, Ref, Component, TouchEventHandler, ReactElement } from 'react' // import reactCalendarTimeline from '../../../index' import { Dimension, ItemDimension } from './dimension' import { ResizeEdge } from '../items/Item' @@ -46,17 +36,13 @@ export interface TimelineItemBase { canChangeGroup?: boolean | undefined className?: string | undefined style?: CSSProperties | undefined - itemProps?: HTMLAttributes + itemProps?: HTMLProps isOverlay?: boolean | undefined dimensions?: Dimension | undefined } -export type TimelineItem< - CustomItemFields, - DateType = number, -> = TimelineItemBase & CustomItemFields -export type TimelineGroup = TimelineGroupBase & - CustomGroupFields +export type TimelineItem = TimelineItemBase & CustomItemFields +export type TimelineGroup = TimelineGroupBase & CustomGroupFields export interface TimelineContext { timelineWidth: number @@ -135,9 +121,7 @@ export interface ItemRendererGetItemPropsReturnType { style: CSSProperties } -export type GetItemsProps = Partial< - Omit -> +export type GetItemsProps = Partial> export interface ItemRendererGetResizePropsReturnType { left?: @@ -163,9 +147,7 @@ export type GetResizeProps = { rightClassName?: string | undefined } -export interface ReactCalendarItemRendererProps< - CustomItem extends TimelineItemBase = TimelineItemBase, -> { +export interface ReactCalendarItemRendererProps = TimelineItemBase> { item: CustomItem itemContext: ItemContext getItemProps: (props: GetItemsProps) => { @@ -180,14 +162,10 @@ export interface ReactCalendarItemRendererProps< onContextMenu: ReactEventHandler style: CSSProperties } - getResizeProps: ( - propsOverride?: GetResizeProps, - ) => ItemRendererGetResizePropsReturnType + getResizeProps: (propsOverride?: GetResizeProps) => ItemRendererGetResizePropsReturnType } -export interface ReactCalendarGroupRendererProps< - CustomGroup extends TimelineGroupBase = TimelineGroupBase, -> { +export interface ReactCalendarGroupRendererProps { group: CustomGroup isRightSidebar?: boolean | undefined } @@ -281,19 +259,9 @@ export interface SidebarHeaderProps { children: (props: SidebarHeaderChildrenFnProps) => ReactNode } -export class SidebarHeader extends Component< - SidebarHeaderProps -> {} +export class SidebarHeader extends Component> {} -export type Unit = - | 'second' - | 'minute' - | 'hour' - | 'day' - | 'week' - | 'isoWeek' - | 'month' - | 'year' +export type Unit = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'isoWeek' | 'month' | 'year' export interface IntervalContext { interval: Interval @@ -308,7 +276,7 @@ export interface GetIntervalProps { export interface IntervalRenderer { intervalContext: IntervalContext - getIntervalProps: (props?: GetIntervalProps) => HTMLAttributes + getIntervalProps: (props?: GetIntervalProps) => HTMLProps data?: Data | undefined } @@ -327,9 +295,7 @@ export interface HeaderContext { export interface CustomHeaderPropsChildrenFnProps { timelineContext: TimelineContext headerContext: HeaderContext - getIntervalProps: ( - props?: GetIntervalProps, - ) => Required & { key: string | number } + getIntervalProps: (props?: GetIntervalProps) => Required & { key: string | number } getRootProps: (propsToOverride?: { style: CSSProperties }) => { style: CSSProperties } @@ -344,9 +310,7 @@ export interface CustomHeaderProps { children: (props?: CustomHeaderPropsChildrenFnProps) => ReactNode } -export class CustomHeader extends Component< - CustomHeaderProps -> {} +export class CustomHeader extends Component> {} // export const defaultKeys: TimelineKeys; // export const defaultTimeSteps: TimelineTimeSteps; diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 34fe752eb..55120f9b7 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -1,20 +1,8 @@ import dayjs, { Dayjs } from 'dayjs' import { _get } from './generic' import { Dimension, ItemDimension } from '../types/dimension' -import { - GroupedItem, - GroupOrders, - GroupStack, - Id, - TimelineGroupBase, - TimelineItemBase, - TimelineKeys, - TimelineTimeSteps, -} from '../types/main' -import { - ReactCalendarTimelineProps, - ReactCalendarTimelineState, -} from '../Timeline' +import { GroupedItem, GroupOrders, GroupStack, Id, TimelineGroupBase, TimelineItemBase, TimelineKeys, TimelineTimeSteps } from '../types/main' +import { ReactCalendarTimelineProps, ReactCalendarTimelineState } from '../Timeline' /** * Calculate the ms / pixel ratio of the timeline state @@ -23,11 +11,7 @@ import { * @param {number} canvasWidth * @returns {number} */ -export function coordinateToTimeRatio( - canvasTimeStart: number, - canvasTimeEnd: number, - canvasWidth: number, -): number { +export function coordinateToTimeRatio(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number): number { return (canvasTimeEnd - canvasTimeStart) / canvasWidth } @@ -40,12 +24,7 @@ export function coordinateToTimeRatio( * @param {number} time * @returns {number} */ -export function calculateXPositionForTime( - canvasTimeStart: number, - canvasTimeEnd: number, - canvasWidth: number, - time: number, -): number { +export function calculateXPositionForTime(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, time: number): number { const widthToZoomRatio = canvasWidth / (canvasTimeEnd - canvasTimeStart) const timeOffset = time - canvasTimeStart @@ -61,12 +40,7 @@ export function calculateXPositionForTime( * @param {number} leftOffset * @returns {number} */ -export function calculateTimeForXPosition( - canvasTimeStart: number, - canvasTimeEnd: number, - canvasWidth: number, - leftOffset: number, -): number { +export function calculateTimeForXPosition(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, leftOffset: number): number { const timeToPxRatio = (canvasTimeEnd - canvasTimeStart) / canvasWidth const timeFromCanvasTimeStart = timeToPxRatio * leftOffset @@ -74,13 +48,7 @@ export function calculateTimeForXPosition( return timeFromCanvasTimeStart + canvasTimeStart } -export function iterateTimes( - start: number, - end: number, - unit: keyof TimelineTimeSteps, - timeSteps: TimelineTimeSteps, - callback: (time: Dayjs, nextTime: Dayjs) => void, -) { +export function iterateTimes(start: number, end: number, unit: keyof TimelineTimeSteps, timeSteps: TimelineTimeSteps, callback: (time: Dayjs, nextTime: Dayjs) => void) { let time = dayjs(start).startOf(unit) if (timeSteps[unit] && timeSteps[unit] > 1) { @@ -89,10 +57,7 @@ export function iterateTimes( } while (time.valueOf() < end) { - const nextTime = dayjs(time).add( - timeSteps[unit] || 1, - unit as dayjs.ManipulateType, - ) + const nextTime = dayjs(time).add(timeSteps[unit] || 1, unit as dayjs.ManipulateType) callback(time, nextTime) time = nextTime } @@ -115,11 +80,7 @@ export function iterateTimes( // i think this is the distance between cell lines export const minCellWidth = 17 -export function getMinUnit( - zoom: number, - width: number, - timeSteps: TimelineTimeSteps, -) { +export function getMinUnit(zoom: number, width: number, timeSteps: TimelineTimeSteps) { // for supporting weeks, its important to remember that each of these // units has a natural progression to the other. i.e. a year is 12 months // a month is 24 days, a day is 24 hours. @@ -142,21 +103,16 @@ export function getMinUnit( const unitKey = unit as keyof TimelineTimeSteps // converts previous time span to current unit // (e.g. milliseconds to seconds, seconds to minutes, etc) - nextTimeSpanInUnitContext = - nextTimeSpanInUnitContext / timeDividers[unitKey] + nextTimeSpanInUnitContext = nextTimeSpanInUnitContext / timeDividers[unitKey] // timeSteps is " // With what step to display different units. E.g. 15 for minute means only minutes 0, 15, 30 and 45 will be shown." // how many cells would be rendered given this time span, for this unit? // e.g. for time span of 60 minutes, and time step of 1, we would render 60 cells - const cellsToBeRenderedForCurrentUnit = - nextTimeSpanInUnitContext / timeSteps[unitKey] + const cellsToBeRenderedForCurrentUnit = nextTimeSpanInUnitContext / timeSteps[unitKey] // what is happening here? why 3 if time steps are greater than 1?? - const cellWidthToUse = - timeSteps[unitKey] && timeSteps[unitKey] > 1 - ? 3 * minCellWidth - : minCellWidth + const cellWidthToUse = timeSteps[unitKey] && timeSteps[unitKey] > 1 ? 3 * minCellWidth : minCellWidth // for the minWidth of a cell, how many cells would be rendered given // the current pixel width @@ -174,13 +130,7 @@ export function getMinUnit( return minUnit } -export type SelectUnits = - | 'second' - | 'minute' - | 'hour' - | 'day' - | 'month' - | 'year' +export type SelectUnits = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' export type SelectUnitsRes = Exclude export const NEXT_UNITS: Record = { @@ -210,69 +160,22 @@ export function getNextUnit(unit: SelectUnits): SelectUnitsRes { * @param {`right` or `left`} resizingEdge resize edge * @param {*} resizeTime new resize time in milliseconds */ -export function calculateInteractionNewTimes({ - itemTimeStart, - itemTimeEnd, - dragTime, - isDragging, - isResizing, - resizingEdge, - resizeTime, -}: { - itemTimeStart: number - itemTimeEnd: number - dragTime: number | null - isDragging: boolean - isResizing: boolean - resizingEdge: 'left' | 'right' | null - resizeTime: number | null -}): [number, number] { +export function calculateInteractionNewTimes({ itemTimeStart, itemTimeEnd, dragTime, isDragging, isResizing, resizingEdge, resizeTime }: { itemTimeStart: number; itemTimeEnd: number; dragTime: number | null; isDragging: boolean; isResizing: boolean; resizingEdge: 'left' | 'right' | null; resizeTime: number | null }): [number, number] { const originalItemRange = itemTimeEnd - itemTimeStart - const itemStart = - isResizing && resizingEdge === 'left' && resizeTime - ? resizeTime - : itemTimeStart - const itemEnd = - isResizing && resizingEdge === 'right' && resizeTime - ? resizeTime - : itemTimeEnd - return [ - isDragging && dragTime ? dragTime : itemStart, - isDragging && dragTime ? dragTime + originalItemRange : itemEnd, - ] + const itemStart = isResizing && resizingEdge === 'left' && resizeTime ? resizeTime : itemTimeStart + const itemEnd = isResizing && resizingEdge === 'right' && resizeTime ? resizeTime : itemTimeEnd + return [isDragging && dragTime ? dragTime : itemStart, isDragging && dragTime ? dragTime + originalItemRange : itemEnd] } -export function calculateDimensions({ - itemTimeStart, - itemTimeEnd, - canvasTimeStart, - canvasTimeEnd, - canvasWidth, -}: { - itemTimeStart: number - itemTimeEnd: number - canvasTimeStart: number - canvasTimeEnd: number - canvasWidth: number -}): Partial { +export function calculateDimensions({ itemTimeStart, itemTimeEnd, canvasTimeStart, canvasTimeEnd, canvasWidth }: { itemTimeStart: number; itemTimeEnd: number; canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number }): Partial { const itemTimeRange = itemTimeEnd - itemTimeStart // restrict startTime and endTime to be bounded by canvasTimeStart and canvasTimeEnd const effectiveStartTime = Math.max(itemTimeStart, canvasTimeStart) const effectiveEndTime = Math.min(itemTimeEnd, canvasTimeEnd) - const left = calculateXPositionForTime( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - effectiveStartTime, - ) - const right = calculateXPositionForTime( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - effectiveEndTime, - ) + const left = calculateXPositionForTime(canvasTimeStart, canvasTimeEnd, canvasWidth, effectiveStartTime) + const right = calculateXPositionForTime(canvasTimeStart, canvasTimeEnd, canvasWidth, effectiveEndTime) const itemWidth = right - left const dimensions = { @@ -291,10 +194,7 @@ export function calculateDimensions({ * @param {*} keys the keys object * @returns Ordered hash of objects with their array index and group */ -export function getGroupOrders( - groups: TimelineGroupBase[], - keys: TimelineKeys, -) { +export function getGroupOrders(groups: TimelineGroupBase[], keys: TimelineKeys) { const { groupIdKey } = keys const groupOrders: GroupOrders = {} @@ -314,10 +214,7 @@ export function getGroupOrders( * @param {*} items list of all items * @param {*} groupOrders the result of getGroupOrders */ -export function getGroupedItems( - items: ItemDimension[], - groupOrders: GroupOrders, -) { +export function getGroupedItems(items: ItemDimension[], groupOrders: GroupOrders) { const groupedItems: Record = {} const keys = Object.keys(groupOrders) // Initialize with result object for each group @@ -332,10 +229,7 @@ export function getGroupedItems( // Populate groups for (let i = 0; i < items.length; i++) { - if ( - items[i].dimensions !== undefined && - items[i].dimensions?.order !== undefined - ) { + if (items[i].dimensions !== undefined && items[i].dimensions?.order !== undefined) { const groupItem = groupedItems[items[i].dimensions?.order.index ?? 0] if (groupItem) { groupItem.items.push(items[i]) @@ -349,19 +243,12 @@ export function getGroupedItems( export function getVisibleItems< CustomItem extends TimelineItemBase = TimelineItemBase, // CustomGroup extends TimelineGroupBase = TimelineGroupBase, ->( - items: CustomItem[], - canvasTimeStart: number, - canvasTimeEnd: number, - keys: TimelineKeys, -) { +>(items: CustomItem[], canvasTimeStart: number, canvasTimeEnd: number, keys: TimelineKeys) { const { itemTimeStartKey, itemTimeEndKey } = keys return items.filter((item) => { - const afterStart = - dayjs(_get(item, itemTimeStartKey)).valueOf() <= canvasTimeEnd - const beforeEnd = - dayjs(_get(item, itemTimeEndKey)).valueOf() >= canvasTimeStart + const afterStart = dayjs(_get(item, itemTimeStartKey)).valueOf() <= canvasTimeEnd + const beforeEnd = dayjs(_get(item, itemTimeEndKey)).valueOf() >= canvasTimeStart return afterStart && beforeEnd }) @@ -369,43 +256,22 @@ export function getVisibleItems< const EPSILON = 0.001 -export function collision( - a: Dimension, - b: Dimension, - collisionPadding: number = EPSILON, -) { +export function collision(a: Dimension, b: Dimension, collisionPadding: number = EPSILON) { // 2d collisions detection - https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection const verticalMargin = 0 - return ( - a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && - a.collisionLeft + a.collisionWidth - collisionPadding > b.collisionLeft && - (a.top ?? 0) - verticalMargin + collisionPadding < - (b.top ?? 0) + b.height && - (a.top ?? 0) + a.height + verticalMargin - collisionPadding > (b.top ?? 0) - ) + return a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && a.collisionLeft + a.collisionWidth - collisionPadding > b.collisionLeft && (a.top ?? 0) - verticalMargin + collisionPadding < (b.top ?? 0) + b.height && (a.top ?? 0) + a.height + verticalMargin - collisionPadding > (b.top ?? 0) } /** * Calculate the position of a given item for a group that * is being stacked */ -export function groupStack( - lineHeight: number, - item: ItemDimension, - group: ItemDimension[], - groupHeight: number, - groupTop: number, - itemIndex: number, -): GroupStack { +export function groupStack(lineHeight: number, item: ItemDimension, group: ItemDimension[], groupHeight: number, groupTop: number, itemIndex: number): GroupStack { // calculate non-overlapping positions let curHeight = groupHeight const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 - if ( - item.dimensions && - item.dimensions.stack && - item.dimensions.top === null - ) { + if (item.dimensions && item.dimensions.stack && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin curHeight = Math.max(curHeight, lineHeight) let collidingItem = null @@ -413,12 +279,7 @@ export function groupStack( //Items are placed from i=0 onwards, only check items with index < i for (let j = itemIndex - 1, jj = 0; j >= jj; j--) { const other = group[j] - if ( - other.dimensions && - other.dimensions.top !== null && - other.dimensions.stack && - collision(item.dimensions, other.dimensions, lineHeight) - ) { + if (other.dimensions && other.dimensions.top !== null && other.dimensions.stack && collision(item.dimensions, other.dimensions, lineHeight)) { collidingItem = other break } else { @@ -429,13 +290,7 @@ export function groupStack( if (collidingItem != null) { // There is a collision. Reposition the items above the colliding element item.dimensions.top = collidingItem.dimensions.top! + lineHeight - curHeight = Math.max( - curHeight, - item.dimensions.top + - item.dimensions.height + - verticalMargin - - groupTop, - ) + curHeight = Math.max(curHeight, item.dimensions.top + item.dimensions.height + verticalMargin - groupTop) } } while (collidingItem) } @@ -447,12 +302,7 @@ export function groupStack( } // Calculate the position of this item for a group that is not being stacked -export function groupNoStack( - lineHeight: number, - item: ItemDimension, - groupHeight: number, - groupTop: number, -): GroupStack { +export function groupNoStack(lineHeight: number, item: ItemDimension, groupHeight: number, groupTop: number): GroupStack { const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 if (item.dimensions && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin @@ -472,12 +322,7 @@ function sum(arr: number[] = []) { * @param {*} lineHeight * @param {*} stackItems should items be stacked? */ -export function stackAll( - itemsDimensions: ItemDimension[], - groupOrders: GroupOrders, - lineHeight: number, - stackItems: boolean, -) { +export function stackAll(itemsDimensions: ItemDimension[], groupOrders: GroupOrders, lineHeight: number, stackItems: boolean) { const groupHeights: number[] = [] const groupTops: number[] = [] @@ -489,14 +334,8 @@ export function stackAll( const groupTop = sum(groupHeights) // Is group being stacked? - const isGroupStacked = - group.stackItems !== undefined ? group.stackItems : stackItems - const { groupHeight } = stackGroup( - itemsDimensions, - isGroupStacked, - lineHeight, - groupTop, - ) + const isGroupStacked = group.stackItems !== undefined ? group.stackItems : stackItems + const { groupHeight } = stackGroup(itemsDimensions, isGroupStacked, lineHeight, groupTop) // If group height is overridden, push new height // Do this late as item position still needs to be calculated groupTops.push(groupTop) @@ -521,31 +360,12 @@ export function stackAll( * @param {*} lineHeight * @param {*} groupTop */ -export function stackGroup( - itemsDimensions: ItemDimension[], - isGroupStacked: boolean, - lineHeight: number, - groupTop: number, -) { +export function stackGroup(itemsDimensions: ItemDimension[], isGroupStacked: boolean, lineHeight: number, groupTop: number) { let groupHeight = 0 let verticalMargin = 0 // Find positions for each item in group for (let itemIndex = 0; itemIndex < itemsDimensions.length; itemIndex++) { - const r = isGroupStacked - ? groupStack( - lineHeight, - itemsDimensions[itemIndex], - itemsDimensions, - groupHeight, - groupTop, - itemIndex, - ) - : groupNoStack( - lineHeight, - itemsDimensions[itemIndex], - groupHeight, - groupTop, - ) + const r = isGroupStacked ? groupStack(lineHeight, itemsDimensions[itemIndex], itemsDimensions, groupHeight, groupTop, itemIndex) : groupNoStack(lineHeight, itemsDimensions[itemIndex], groupHeight, groupTop) groupHeight = r.groupHeight verticalMargin = r.verticalMargin @@ -572,32 +392,8 @@ export function stackGroup( * @param {number} resizeTime * @param {number} newGroupOrder */ -export function stackTimelineItems< - CustomItem extends TimelineItemBase = TimelineItemBase, - CustomGroup extends TimelineGroupBase = TimelineGroupBase, ->( - items: CustomItem[], - groups: CustomGroup[], - canvasWidth: number, - canvasTimeStart: number, - canvasTimeEnd: number, - keys: TimelineKeys, - lineHeight: number, - itemHeightRatio: number, - stackItems: boolean, - draggingItem: Id | null | undefined, - resizingItem: Id | null | undefined, - dragTime: number | null, - resizingEdge: 'left' | 'right' | null, - resizeTime: number | null, - newGroupOrder: number, -) { - const visibleItems = getVisibleItems( - items, - canvasTimeStart, - canvasTimeEnd, - keys, - ) +export function stackTimelineItems = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase>(items: CustomItem[], groups: CustomGroup[], canvasWidth: number, canvasTimeStart: number, canvasTimeEnd: number, keys: TimelineKeys, lineHeight: number, itemHeightRatio: number, stackItems: boolean, draggingItem: Id | null | undefined, resizingItem: Id | null | undefined, dragTime: number | null, resizingEdge: 'left' | 'right' | null, resizeTime: number | null, newGroupOrder: number) { + const visibleItems = getVisibleItems(items, canvasTimeStart, canvasTimeEnd, keys) const visibleItemsWithInteraction = visibleItems.map((item) => getItemWithInteractions({ item, @@ -639,12 +435,7 @@ export function stackTimelineItems< ) .filter((item) => !!item) as ItemDimension[] // Get a new array of groupOrders holding the stacked items - const { height, groupHeights, groupTops } = stackAll( - dimensionItems, - groupOrders, - lineHeight, - stackItems, - ) + const { height, groupHeights, groupTops } = stackAll(dimensionItems, groupOrders, lineHeight, stackItems) return { dimensionItems, height, groupHeights, groupTops } } @@ -668,25 +459,7 @@ export function getCanvasWidth(width: number, buffer: number) { * @param {*} lineHeight * @param {*} itemHeightRatio */ -export function getItemDimensions>({ - item, - keys, - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - groupOrders, - lineHeight, - itemHeightRatio, -}: { - item: CustomItem - keys: TimelineKeys - canvasTimeStart: number - canvasTimeEnd: number - canvasWidth: number - groupOrders: GroupOrders - lineHeight: number - itemHeightRatio: number -}): ItemDimension | undefined { +export function getItemDimensions>({ item, keys, canvasTimeStart, canvasTimeEnd, canvasWidth, groupOrders, lineHeight, itemHeightRatio }: { item: CustomItem; keys: TimelineKeys; canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number; groupOrders: GroupOrders; lineHeight: number; itemHeightRatio: number }): ItemDimension | undefined { const itemId = _get(item, keys.itemIdKey) const dimension = calculateDimensions({ itemTimeStart: _get(item, keys.itemTimeStartKey), @@ -720,30 +493,7 @@ export function getItemDimensions>({ * @param {*} groups * @param {*} newGroupOrder */ -export function getItemWithInteractions< - CustomItem extends TimelineItemBase, - CustomGroup extends TimelineGroupBase = TimelineGroupBase, ->({ - item, - keys, - draggingItem, - resizingItem, - dragTime, - resizingEdge, - resizeTime, - groups, - newGroupOrder, -}: { - item: CustomItem - keys: TimelineKeys - draggingItem: Id | null | undefined - resizingItem: Id | null | undefined - dragTime: number | null - resizingEdge: 'left' | 'right' | null - resizeTime: number | null - groups: CustomGroup[] - newGroupOrder: number -}) { +export function getItemWithInteractions, CustomGroup extends TimelineGroupBase = TimelineGroupBase>({ item, keys, draggingItem, resizingItem, dragTime, resizingEdge, resizeTime, groups, newGroupOrder }: { item: CustomItem; keys: TimelineKeys; draggingItem: Id | null | undefined; resizingItem: Id | null | undefined; dragTime: number | null; resizingEdge: 'left' | 'right' | null; resizeTime: number | null; groups: CustomGroup[]; newGroupOrder: number }) { if (!resizingItem && !draggingItem) return item const itemId = _get(item, keys.itemIdKey) const isDragging = itemId === draggingItem @@ -761,9 +511,7 @@ export function getItemWithInteractions< ...item, [keys.itemTimeStartKey]: itemTimeStart, [keys.itemTimeEndKey]: itemTimeEnd, - [keys.itemGroupKey]: isDragging - ? _get(groups[newGroupOrder], keys.groupIdKey) - : _get(item, keys.itemGroupKey), + [keys.itemGroupKey]: isDragging ? _get(groups[newGroupOrder], keys.groupIdKey) : _get(item, keys.itemGroupKey), } return newItem } @@ -774,11 +522,7 @@ export function getItemWithInteractions< * @param {number} visibleTimeEnd * @param buffer */ -export function getCanvasBoundariesFromVisibleTime( - visibleTimeStart: number, - visibleTimeEnd: number, - buffer: number, -) { +export function getCanvasBoundariesFromVisibleTime(visibleTimeStart: number, visibleTimeEnd: number, buffer: number) { const zoom = visibleTimeEnd - visibleTimeStart // buffer - 1 (1 is visible area) divided by 2 (2 is the buffer split on the right and left of the timeline) const canvasTimeStart = visibleTimeStart - (zoom * (buffer - 1)) / 2 @@ -798,15 +542,7 @@ export function getCanvasBoundariesFromVisibleTime( * @param {*} props * @param {*} state */ -export function calculateScrollCanvas( - visibleTimeStart: number, - visibleTimeEnd: number, - forceUpdateDimensions: boolean, - items: any, - groups: any, - props: ReactCalendarTimelineProps, - state: ReactCalendarTimelineState, -) { +export function calculateScrollCanvas(visibleTimeStart: number, visibleTimeEnd: number, forceUpdateDimensions: boolean, items: any, groups: any, props: ReactCalendarTimelineProps, state: ReactCalendarTimelineState) { const buffer = props.buffer const oldCanvasTimeStart = state.canvasTimeStart const oldCanvasTimeEnd = state.canvasTimeEnd @@ -819,19 +555,10 @@ export function calculateScrollCanvas( } // Check if the current canvas covers the new times - const canKeepCanvas = - newZoom === oldZoom && - visibleTimeStart >= oldCanvasTimeStart + oldZoom * 0.5 && - visibleTimeStart <= oldCanvasTimeEnd - oldZoom * 1.5 && - visibleTimeEnd >= oldCanvasTimeStart + oldZoom * 1.5 && - visibleTimeEnd <= oldCanvasTimeEnd - oldZoom * 0.5 + const canKeepCanvas = newZoom === oldZoom && visibleTimeStart >= oldCanvasTimeStart + oldZoom * 0.5 && visibleTimeStart <= oldCanvasTimeEnd - oldZoom * 1.5 && visibleTimeEnd >= oldCanvasTimeStart + oldZoom * 1.5 && visibleTimeEnd <= oldCanvasTimeEnd - oldZoom * 0.5 if (!canKeepCanvas || forceUpdateDimensions) { - const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime( - visibleTimeStart, - visibleTimeEnd, - buffer, - ) + const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime(visibleTimeStart, visibleTimeEnd, buffer!) newState.canvasTimeStart = canvasTimeStart newState.canvasTimeEnd = canvasTimeEnd const mergedState = { @@ -839,29 +566,10 @@ export function calculateScrollCanvas( ...newState, } - const canvasWidth = getCanvasWidth(mergedState.width, props.buffer) + const canvasWidth = getCanvasWidth(mergedState.width, props.buffer!) // The canvas cannot be kept, so calculate the new items position - Object.assign( - newState, - stackTimelineItems( - items, - groups, - canvasWidth, - mergedState.canvasTimeStart, - mergedState.canvasTimeEnd, - props.keys, - props.lineHeight, - props.itemHeightRatio, - props.stackItems, - mergedState.draggingItem, - mergedState.resizingItem, - mergedState.dragTime, - mergedState.resizingEdge, - mergedState.resizeTime, - mergedState.newGroupOrder, - ), - ) + Object.assign(newState, stackTimelineItems(items, groups, canvasWidth, mergedState.canvasTimeStart, mergedState.canvasTimeEnd, props.keys, props.lineHeight, props.itemHeightRatio, props.stackItems, mergedState.draggingItem, mergedState.resizingItem, mergedState.dragTime, mergedState.resizingEdge, mergedState.resizeTime, mergedState.newGroupOrder)) } return newState } diff --git a/tsconfig.json b/tsconfig.json index a7fc6fbf2..cb1aaeabd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,6 +20,7 @@ "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src"], + "include": ["src/index.ts", "src/index.d.ts"], + "exclude": ["node_modules"], "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/vite.config.mts b/vite.config.mts index 75302243a..f93b9f53d 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -1,24 +1,41 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react-swc' import { resolve } from 'path' -import dts from 'vite-plugin-dts' import { libInjectCss } from 'vite-plugin-lib-inject-css' +import typescript from '@rollup/plugin-typescript' +import { typescriptPaths } from 'rollup-plugin-typescript-paths' // https://vitejs.dev/config/ export default defineConfig({ - build: { copyPublicDir: false, - outDir: 'lib', + outDir: 'dist', + sourcemap: true, lib: { - entry: resolve(__dirname, 'src/index.ts'), - name: 'react-calendar-timeline', - fileName: 'index', - formats: ['es'], + entry: resolve("src", 'index.ts'), + name: 'react-calendar-timeline-4ef', + fileName: (format) => `react-calendar-timeline-4ef.${format}.js` + }, + rollupOptions: { + external: ['react', 'react-dom'], + output: { + globals: { + react: 'React' + } + }, + plugins: [ + typescriptPaths({ + preserveExtensions: true, + }), + typescript({ + outDir: 'dist', + declaration: true, + }), + ], }, }, server: { port: 3000, }, - plugins: [react(), libInjectCss(), dts({ include: ['src'] })], + plugins: [react(), libInjectCss()], }) diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 02378a506..000000000 --- a/webpack.config.js +++ /dev/null @@ -1,56 +0,0 @@ -const path = require('path') - -const port = process.env.PORT || 4000 - -const config = { - context: path.join(__dirname, './demo'), - entry: { - // vendor: ['react', 'react-dom', 'faker', 'interactjs', 'moment'], - demo: [ - `webpack-dev-server/client?http://0.0.0.0:${port}`, - 'webpack/hot/only-dev-server', - './index.jsx' - ] - }, - output: { - path: path.join(__dirname, './build'), - publicPath: '', - chunkFilename: '[name].bundle.js', - filename: '[name].bundle.js' - }, - mode: 'development', - module: { - rules: [ - { - test: /\.scss$/, - use: ['style-loader','css-loader','sass-loader'] - }, - { - test: /\.(js|jsx)$/, - exclude: /node_modules/, - loader: 'babel-loader' - }, - { test: /\.tsx?$/, loader: 'ts-loader' }, - ] - }, - resolve: { - extensions: ['.js', '.jsx','.ts', '.tsx'], - modules: [path.resolve('./demo'), 'node_modules'], - alias: { - '~': path.join(__dirname, './demo'), - 'react-calendar-timeline': path.join(__dirname, './src'), - 'react-calendar-timeline-css': path.join( - __dirname, - './src/lib/Timeline.scss' - ) - } - }, - devServer: { - static: { - directory: './demo' - }, - port - } -} - -module.exports = config From dee7717ea8731b57e397339bff2851bc96181f91 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Wed, 10 Jan 2024 19:03:54 +0200 Subject: [PATCH 26/50] Types fixes --- src/lib/markers/public/TodayMarker.tsx | 35 ++++++-------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/src/lib/markers/public/TodayMarker.tsx b/src/lib/markers/public/TodayMarker.tsx index f64420a32..e53ec1ca1 100644 --- a/src/lib/markers/public/TodayMarker.tsx +++ b/src/lib/markers/public/TodayMarker.tsx @@ -1,20 +1,13 @@ -import React, { PropsWithChildren } from 'react' -import { - SubscribeReturn, - TimelineMarkersConsumer, -} from '../TimelineMarkersContext' -import { - MarkerRendererType, - MarkerType, - TimelineMarkerType, -} from '../markerType' +import React from 'react' +import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' +import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' -type TodayMarkerProps = PropsWithChildren<{ - interval: number +type TodayMarkerProps = { + interval?: number updateMarker: (marker: MarkerType) => void subscribeMarker: (m: MarkerType) => SubscribeReturn children: MarkerRendererType -}> +} class TodayMarker extends React.Component { static defaultProps = { @@ -56,20 +49,8 @@ class TodayMarker extends React.Component { } // TODO: turn into HOC? -const TodayMarkerWrapper = ( - props: Omit, -) => { - return ( - - {({ subscribeMarker, updateMarker }) => ( - - )} - - ) +const TodayMarkerWrapper = (props: Omit) => { + return {({ subscribeMarker, updateMarker }) => } } TodayMarkerWrapper.displayName = 'TodayMarkerWrapper' From 2cf9931337bb854ff0cb9923933e01257fb1b499 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Mon, 15 Jan 2024 14:46:09 +0200 Subject: [PATCH 27/50] Types improvements --- README.md | 8 ++-- package.json | 77 +++++------------------------------- src/lib/Timeline.tsx | 12 +++--- src/lib/layout/Sidebar.tsx | 50 +++++------------------ src/lib/utility/calendar.tsx | 4 +- 5 files changed, 30 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index f7fcde707..597b10eb3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ -# ⚠️⚠️⚠️⚠️ HELP WANTED -please email me [ahmad.ilaiwi@gmail.com](mailto:ahmad.ilaiwi@gmail.com) and we will setup some time to speak and see if you can help maintain this library. - -# React Calendar Timeline +# fork from react-calendar-timeline +# React Calendar Timeline docs here may not be relevant A modern and responsive React timeline component. @@ -933,7 +931,7 @@ by default we provide a responsive format for the dates based on the label width mediumLong: 'mm:ss', medium: 'mm:ss', "short": 'ss' - } + } } ``` diff --git a/package.json b/package.json index 611c6570e..3481391cf 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.0", - "description": "react calendar timeline", - "packageManager": "npm@8.19.2", + "version": "1.0.2", + "description": "fork form react-calendar-timeline with TS latest react and other improvements", + "packageManager": "npm@10.1.0", "scripts": { "build-vite": "tsc && vite build", "lint": "eslint --ext .js --ext .jsx ./src", @@ -30,40 +30,8 @@ "type": "git", "url": "https://github.com/namespace-ee/react-calendar-timeline.git" }, - "author": "Marius Andra ", - "contributors": [ - { - "name": "Stanisław Chmiela", - "email": "sjchmiela@gmail.com" - }, - { - "name": "Mike Joyce", - "url": "https://github.com/mcMickJuice" - }, - { - "name": "Samuel Rossetti" - }, - { - "name": "amakhrov", - "url": "https://github.com/amakhrov" - }, - { - "name": "Ahmad Ilaiwi", - "url": "https://github.com/Ilaiwi" - }, - { - "name": "dkarnutsch", - "url": "https://github.com/dkarnutsch" - }, - { - "name": "Alex Maclean", - "url": "https://github.com/acemac" - }, - { - "name": "Kevin Mann", - "url": "https://github.com/kevinmanncito" - } - ], + "private": false, + "author": "4EF", "license": "MIT", "keywords": [ "react", @@ -71,41 +39,11 @@ "react-component", "timeline" ], - "standard": { - "parser": "babel-eslint" - }, - "jest": { - "verbose": true, - "testMatch": [ - "**/__tests__/**/*.js" - ], - "setupFilesAfterEnv": [ - "/config/jest-setup.js" - ], - "collectCoverageFrom": [ - "src/**/*.{js,jsx}" - ], - "modulePaths": [ - "/src/", - "/__tests__" - ], - "testPathIgnorePatterns": [ - "/node_modules", - "/__tests__/test-utility" - ], - "watchPlugins": [ - "jest-watch-typeahead/filename", - "jest-watch-typeahead/testname" - ] - }, "dependencies": { - "@rollup/plugin-typescript": "^11.1.5", - "@types/lodash": "^4.14.202", "classnames": "^2.3.2", "element-resize-detector": "^1.2.4", "lodash": "^4.17.21", - "memoize-one": "^6.0.0", - "rollup-plugin-typescript-paths": "^1.5.0" + "memoize-one": "^6.0.0" }, "peerDependencies": { "dayjs": "*", @@ -114,6 +52,9 @@ "react-dom": ">=18" }, "devDependencies": { + "rollup-plugin-typescript-paths": "^1.5.0", + "@types/lodash": "^4.14.202", + "@rollup/plugin-typescript": "^11.1.5", "@faker-js/faker": "^8.3.1", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^14.1.2", diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 4fa440c01..bb2003c36 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -109,7 +109,7 @@ export type ReactCalendarTimelineState groupTops: number[] } -export default class ReactCalendarTimeline extends Component { +export default class ReactCalendarTimeline = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> extends Component, ReactCalendarTimelineState> { static childContextType = { getTimelineContext: PropTypes.func, } @@ -213,9 +213,9 @@ export default class ReactCalendarTimeline extends Component - constructor(props: ReactCalendarTimelineProps) { + constructor(props: ReactCalendarTimelineProps) { super(props) this.getSelected = this.getSelected.bind(this) @@ -258,7 +258,7 @@ export default class ReactCalendarTimeline extends Component } componentDidMount() { @@ -307,7 +307,7 @@ export default class ReactCalendarTimeline extends Component, prevState: ReactCalendarTimelineState) { const newZoom = this.state.visibleTimeEnd - this.state.visibleTimeStart const oldZoom = prevState.visibleTimeEnd - prevState.visibleTimeStart @@ -582,7 +582,7 @@ export default class ReactCalendarTimeline extends Component } diff --git a/src/lib/layout/Sidebar.tsx b/src/lib/layout/Sidebar.tsx index 7bc27797c..4d42524bd 100644 --- a/src/lib/layout/Sidebar.tsx +++ b/src/lib/layout/Sidebar.tsx @@ -1,11 +1,7 @@ -import React, { Component, FC } from 'react' +import React, { Component } from 'react' import { _get, arraysEqual } from '../utility/generic' -import { - ReactCalendarGroupRendererProps, - TimelineGroupBase, - TimelineKeys, -} from '../types/main' +import { ReactCalendarGroupRendererProps, TimelineGroupBase, TimelineKeys } from '../types/main' type Props = { groups: CustomGroup[] @@ -13,27 +9,16 @@ type Props = { height: number groupHeights: number[] keys: TimelineKeys - groupRenderer?: FC //TODO Check + groupRenderer?: (props: ReactCalendarGroupRendererProps) => React.ReactNode isRightSidebar?: boolean } -export default class Sidebar extends Component { - shouldComponentUpdate(nextProps: Props) { - return !( - nextProps.keys === this.props.keys && - nextProps.width === this.props.width && - nextProps.height === this.props.height && - arraysEqual(nextProps.groups, this.props.groups) && - arraysEqual(nextProps.groupHeights, this.props.groupHeights) - ) +export default class Sidebar extends Component> { + shouldComponentUpdate(nextProps: Props) { + return !(nextProps.keys === this.props.keys && nextProps.width === this.props.width && nextProps.height === this.props.height && arraysEqual(nextProps.groups, this.props.groups) && arraysEqual(nextProps.groupHeights, this.props.groupHeights)) } - renderGroupContent( - group: TimelineGroupBase, - isRightSidebar: boolean = false, - groupTitleKey: string, - groupRightTitleKey: string, - ) { + renderGroupContent(group: CustomGroup, isRightSidebar: boolean = false, groupTitleKey: string, groupRightTitleKey: string) { if (this.props.groupRenderer) { return React.createElement(this.props.groupRenderer, { group, @@ -65,29 +50,14 @@ export default class Sidebar extends Component { } return ( -
- {this.renderGroupContent( - group, - isRightSidebar, - groupTitleKey, - groupRightTitleKey, - )} +
+ {this.renderGroupContent(group, isRightSidebar, groupTitleKey, groupRightTitleKey)}
) }) return ( -
+
{groupLines}
) diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 55120f9b7..ed374cac0 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -542,13 +542,13 @@ export function getCanvasBoundariesFromVisibleTime(visibleTimeStart: number, vis * @param {*} props * @param {*} state */ -export function calculateScrollCanvas(visibleTimeStart: number, visibleTimeEnd: number, forceUpdateDimensions: boolean, items: any, groups: any, props: ReactCalendarTimelineProps, state: ReactCalendarTimelineState) { +export function calculateScrollCanvas

, S extends ReactCalendarTimelineState>(visibleTimeStart: number, visibleTimeEnd: number, forceUpdateDimensions: boolean, items: any, groups: any, props: P, state: S): S { const buffer = props.buffer const oldCanvasTimeStart = state.canvasTimeStart const oldCanvasTimeEnd = state.canvasTimeEnd const oldZoom = state.visibleTimeEnd - state.visibleTimeStart const newZoom = visibleTimeEnd - visibleTimeStart - const newState: ReactCalendarTimelineState = { + const newState: S = { ...state, visibleTimeStart, visibleTimeEnd, From 876cc918963ff078c2bd16473a594591cbf94316 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Mon, 15 Jan 2024 16:51:20 +0200 Subject: [PATCH 28/50] More type exported and couple version released --- package.json | 2 +- src/index.ts | 10 +- src/lib/Timeline.tsx | 22 +-- src/lib/headers/CustomHeader.tsx | 108 ++--------- src/lib/headers/SidebarHeader.tsx | 2 +- src/lib/headers/TimelineHeaders.tsx | 44 +---- src/lib/items/Item.tsx | 242 +++++------------------- src/lib/items/Items.tsx | 87 +++------ src/lib/items/defaultItemRenderer.tsx | 18 +- src/lib/markers/public/CursorMarker.tsx | 21 +- src/lib/markers/public/TodayMarker.tsx | 2 +- src/lib/types/main.ts | 4 +- 12 files changed, 128 insertions(+), 434 deletions(-) diff --git a/package.json b/package.json index 3481391cf..b32401444 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.2", + "version": "1.0.5", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { diff --git a/src/index.ts b/src/index.ts index 9575f0c3a..2a3357677 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,21 @@ -import Timeline from './lib/Timeline' +import Timeline, { ReactCalendarTimelineProps, ReactCalendarTimelineState, OnTimeChange } from './lib/Timeline' export { default as TimelineMarkers } from './lib/markers/public/TimelineMarkers' export { default as TodayMarker } from './lib/markers/public/TodayMarker' +export type { TodayMarkerProps } from './lib/markers/public/TodayMarker' export { default as CustomMarker } from './lib/markers/public/CustomMarker' -export { default as CursorMarker } from './lib/markers/public/CursorMarker' +export type { CursorMarkerProps } from './lib/markers/public/CursorMarker' export { default as TimelineHeaders } from './lib/headers/TimelineHeaders' +export type { TimelineHeadersWrapperProps as TimelineHeadersProps } from './lib/headers/TimelineHeaders' export { default as SidebarHeader } from './lib/headers/SidebarHeader' +export type { SidebarWrapperProps as SidebarHeaderProps } from './lib/headers/SidebarHeader' export { default as CustomHeader } from './lib/headers/CustomHeader' +export type { CustomHeaderWrapperProps as CustomHeaderProps } from './lib/headers/CustomHeader' export { default as DateHeader } from './lib/headers/DateHeader' +export type { DateHeaderProps } from './lib/headers/DateHeader' export * as calendarUtils from './lib/utility/calendar' export * from './lib/types/main' export { Timeline } +export type { ReactCalendarTimelineProps, ReactCalendarTimelineState, OnTimeChange } export default Timeline diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index bb2003c36..155934310 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -24,7 +24,7 @@ import PropTypes from 'prop-types' export type OnTimeChange = (visibleTimeStart: number, visibleTimeEnd: number, updateScrollCanvas: (start: dateType, end: dateType, forceUpdateDimensions?: boolean, items?: CustomItem[], groups?: CustomGroup[]) => void, unit: Unit) => any -export type ReactCalendarTimelineProps = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { +export type ReactCalendarTimelineProps, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { children?: React.ReactNode groups: CustomGroup[] items: CustomItem[] @@ -67,10 +67,10 @@ export type ReactCalendarTimelineProps onCanvasDoubleClick?(groupId: Id, time: number, e: React.SyntheticEvent): void onCanvasContextMenu?(groupId: Id, time: number, e: React.SyntheticEvent): void onZoom?(timelineContext: TimelineContext, unit: Unit): void - moveResizeValidator?: ItemProps['moveResizeValidator'] + moveResizeValidator?: ItemProps['moveResizeValidator'] onTimeChange?: OnTimeChange onBoundsChange?(canvasTimeStart: number, canvasTimeEnd: number): any - itemRenderer?: ItemProps['itemRenderer'] + itemRenderer?: ItemProps['itemRenderer'] groupRenderer?: ((props: ReactCalendarGroupRendererProps) => React.ReactNode) | undefined resizeDetector?: | { @@ -281,7 +281,7 @@ export default class ReactCalendarTimeline, prevState: ReactCalendarTimelineState) { const { visibleTimeStart, visibleTimeEnd, items, groups } = nextProps // This is a gross hack pushing items and groups in to state only to allow @@ -404,7 +404,7 @@ export default class ReactCalendarTimeline { + selectItem: ItemProps['onSelect'] = (item, clickType, e) => { if (this.isItemSelected(item) || (this.props.itemTouchSendsClick && clickType === 'touch')) { if (item && this.props.onItemClick) { const time = this.timeFromItemEvent(e as MouseEvent) @@ -421,14 +421,14 @@ export default class ReactCalendarTimeline { + doubleClickItem: ItemProps['onItemDoubleClick'] = (item, e) => { if (this.props.onItemDoubleClick) { const time = this.timeFromItemEvent(e) this.props.onItemDoubleClick(item, e, time) } } - contextMenuClickItem: ItemProps['onContextMenu'] = (item, e) => { + contextMenuClickItem: ItemProps['onContextMenu'] = (item, e) => { if (this.props.onItemContextMenu) { const time = this.timeFromItemEvent(e) this.props.onItemContextMenu(item, e, time) @@ -476,7 +476,7 @@ export default class ReactCalendarTimeline { + dragItem: ItemProps['onDrag'] = (item, dragTime, newGroupOrder) => { const newGroup = this.props.groups[newGroupOrder] const keys = this.props.keys @@ -495,14 +495,14 @@ export default class ReactCalendarTimeline { + dropItem: ItemProps['onDrop'] = (item, dragTime, newGroupOrder) => { this.setState({ draggingItem: null, dragTime: null, dragGroupTitle: null }) if (this.props.onItemMove) { this.props.onItemMove(item, dragTime, newGroupOrder) } } - resizingItem: ItemProps['onResizing'] = (item, resizeTime, edge) => { + resizingItem: ItemProps['onResizing'] = (item, resizeTime, edge) => { this.setState({ resizingItem: item, resizingEdge: edge, @@ -517,7 +517,7 @@ export default class ReactCalendarTimeline { + resizedItem: ItemProps['onResized'] = (item, resizeTime, edge, timeDelta) => { this.setState({ resizingItem: null, resizingEdge: null, resizeTime: null }) if (this.props.onItemResize && timeDelta !== 0) { this.props.onItemResize(item, resizeTime, edge!) diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index 1cadedd10..338fa429e 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -42,19 +42,10 @@ type GetIntervalStyleParams = { style?: CSSProperties } -export class CustomHeader extends React.Component< - CustomHeaderProps, - State -> { +class CustomHeader extends React.Component, State> { constructor(props: CustomHeaderProps) { super(props) - const { - canvasTimeStart, - canvasTimeEnd, - unit, - timeSteps, - getLeftOffsetFromDate, - } = props + const { canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate } = props const intervals = this.getHeaderIntervals({ canvasTimeStart, @@ -70,36 +61,14 @@ export class CustomHeader extends React.Component< } shouldComponentUpdate(nextProps: CustomHeaderProps) { - if ( - nextProps.canvasTimeStart !== this.props.canvasTimeStart || - nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || - nextProps.canvasWidth !== this.props.canvasWidth || - nextProps.unit !== this.props.unit || - nextProps.timeSteps !== this.props.timeSteps || - nextProps.showPeriod !== this.props.showPeriod || - nextProps.children !== this.props.children || - nextProps.headerData !== this.props.headerData - ) { + if (nextProps.canvasTimeStart !== this.props.canvasTimeStart || nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || nextProps.canvasWidth !== this.props.canvasWidth || nextProps.unit !== this.props.unit || nextProps.timeSteps !== this.props.timeSteps || nextProps.showPeriod !== this.props.showPeriod || nextProps.children !== this.props.children || nextProps.headerData !== this.props.headerData) { return true } return false } componentDidUpdate(prevProps: CustomHeaderProps) { - if ( - prevProps.canvasTimeStart !== this.props.canvasTimeStart || - prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || - prevProps.canvasWidth !== this.props.canvasWidth || - prevProps.unit !== this.props.unit || - prevProps.timeSteps !== this.props.timeSteps || - prevProps.showPeriod !== this.props.showPeriod - ) { - const { - canvasTimeStart, - canvasTimeEnd, - unit, - timeSteps, - getLeftOffsetFromDate, - } = this.props + if (prevProps.canvasTimeStart !== this.props.canvasTimeStart || prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || prevProps.canvasWidth !== this.props.canvasWidth || prevProps.unit !== this.props.unit || prevProps.timeSteps !== this.props.timeSteps || prevProps.showPeriod !== this.props.showPeriod) { + const { canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate } = this.props const intervals = this.getHeaderIntervals({ canvasTimeStart, @@ -113,31 +82,19 @@ export class CustomHeader extends React.Component< } } - getHeaderIntervals: GetHeaderIntervalsFn = ({ - canvasTimeStart, - canvasTimeEnd, - unit, - timeSteps, - getLeftOffsetFromDate, - }) => { + getHeaderIntervals: GetHeaderIntervalsFn = ({ canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate }) => { const intervals: Interval[] = [] - iterateTimes( - canvasTimeStart, - canvasTimeEnd, - unit, - timeSteps, - (startTime, endTime) => { - const left = getLeftOffsetFromDate(startTime.valueOf()) - const right = getLeftOffsetFromDate(endTime.valueOf()) - const width = right - left - intervals.push({ - startTime, - endTime, - labelWidth: width, - left, - }) - }, - ) + iterateTimes(canvasTimeStart, canvasTimeEnd, unit, timeSteps, (startTime, endTime) => { + const left = getLeftOffsetFromDate(startTime.valueOf()) + const right = getLeftOffsetFromDate(endTime.valueOf()) + const width = right - left + intervals.push({ + startTime, + endTime, + labelWidth: width, + left, + }) + }) return intervals } @@ -152,12 +109,9 @@ export class CustomHeader extends React.Component< } } - getIntervalProps = ( - props: { interval?: Interval; style?: CSSProperties } = {}, - ) => { + getIntervalProps = (props: { interval?: Interval; style?: CSSProperties } = {}) => { const { interval, style } = props - if (!interval) - throw new Error('you should provide interval to the prop getter') + if (!interval) throw new Error('you should provide interval to the prop getter') const { startTime, labelWidth, left } = interval return { style: this.getIntervalStyle({ @@ -224,32 +178,12 @@ export type CustomHeaderWrapperProps = { height: number } -function CustomHeaderWrapper({ - children, - unit, - headerData, - height, -}: CustomHeaderWrapperProps) { +function CustomHeaderWrapper({ children, unit, headerData, height }: CustomHeaderWrapperProps) { return ( {({ getTimelineState, showPeriod, getLeftOffsetFromDate }) => { const timelineState = getTimelineState() - return ( - - {({ timeSteps }) => ( - - )} - - ) + return {({ timeSteps }) => } }} ) diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx index 4f72e15f6..144d7219f 100644 --- a/src/lib/headers/SidebarHeader.tsx +++ b/src/lib/headers/SidebarHeader.tsx @@ -38,7 +38,7 @@ class SidebarHeader extends PureComponent { type GetRootProps = () => HTMLProps -type SidebarWrapperProps = { +export type SidebarWrapperProps = { children?: ComponentType<{ getRootProps: GetRootProps }> variant?: typeof LEFT_VARIANT | typeof RIGHT_VARIANT headerData?: any diff --git a/src/lib/headers/TimelineHeaders.tsx b/src/lib/headers/TimelineHeaders.tsx index 3e2bd99ab..7e94f195e 100644 --- a/src/lib/headers/TimelineHeaders.tsx +++ b/src/lib/headers/TimelineHeaders.tsx @@ -26,8 +26,7 @@ class TimelineHeaders extends React.Component { } getCalendarHeaderStyle = () => { - const { leftSidebarWidth, rightSidebarWidth, calendarHeaderStyle } = - this.props + const { leftSidebarWidth, rightSidebarWidth, calendarHeaderStyle } = this.props return { ...calendarHeaderStyle, overflow: 'hidden', @@ -54,9 +53,7 @@ class TimelineHeaders extends React.Component { let rightSidebarHeader let leftSidebarHeader const calendarHeaders: ElementWithSecret[] = [] - const children: ElementWithSecret[] = Array.isArray(this.props.children) - ? this.props.children.filter((c) => c) - : [this.props.children] + const children: ElementWithSecret[] = Array.isArray(this.props.children) ? this.props.children.filter((c) => c) : [this.props.children] React.Children.map(children, (child) => { if (this.isSidebarHeader(child)) { if (child?.props?.variant === RIGHT_VARIANT) { @@ -75,22 +72,9 @@ class TimelineHeaders extends React.Component { rightSidebarHeader = } return ( -

+
{leftSidebarHeader} -
+
{calendarHeaders}
{rightSidebarHeader} @@ -99,32 +83,18 @@ class TimelineHeaders extends React.Component { } } -interface TimelineHeadersWrapperProps { +export interface TimelineHeadersWrapperProps { children: ReactNode style?: CSSProperties className?: string calendarHeaderStyle?: CSSProperties calendarHeaderClassName?: string } -const TimelineHeadersWrapper = ({ - children, - style, - className, - calendarHeaderStyle, - calendarHeaderClassName, -}: TimelineHeadersWrapperProps) => ( +const TimelineHeadersWrapper = ({ children, style, className, calendarHeaderStyle, calendarHeaderClassName }: TimelineHeadersWrapperProps) => ( {({ leftSidebarWidth, rightSidebarWidth, registerScroll }) => { return ( - + {children} ) diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index d1395ab1f..309a48305 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -1,14 +1,4 @@ -import { - Component, - CSSProperties, - MouseEventHandler, - ReactNode, - TouchEventHandler, - MouseEvent, - TouchEvent, - HTMLAttributes, - LegacyRef, -} from 'react' +import { Component, CSSProperties, MouseEventHandler, ReactNode, TouchEventHandler, MouseEvent, TouchEvent, HTMLAttributes, LegacyRef } from 'react' import interact from 'interactjs' import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' @@ -20,32 +10,15 @@ import { composeEvents } from '../utility/events' import { defaultItemRenderer } from './defaultItemRenderer' import { coordinateToTimeRatio } from '../utility/calendar' import { getSumScroll, getSumOffset } from '../utility/dom-helpers' -import { - overridableStyles, - selectedStyle, - selectedAndCanMove, - selectedAndCanResizeLeft, - selectedAndCanResizeLeftAndDragLeft, - selectedAndCanResizeRight, - selectedAndCanResizeRightAndDragRight, - leftResizeStyle, - rightResizeStyle, -} from './styles' +import { overridableStyles, selectedStyle, selectedAndCanMove, selectedAndCanResizeLeft, selectedAndCanResizeLeftAndDragLeft, selectedAndCanResizeRight, selectedAndCanResizeRightAndDragRight, leftResizeStyle, rightResizeStyle } from './styles' import { Id, ItemContext, TimelineItemBase, TimelineKeys } from '../types/main' -import { - TimelineContext, - TimelineContextType, -} from '../timeline/TimelineStateContext.tsx' +import { TimelineContext, TimelineContextType } from '../timeline/TimelineStateContext.tsx' export type ResizeEdge = 'left' | 'right' -type OnSelect = ( - itemId: string | null, - clickType: 'click' | 'touch', - event: MouseEvent | TouchEvent, -) => void +type OnSelect = (itemId: string | null, clickType: 'click' | 'touch', event: MouseEvent | TouchEvent) => void -export type ItemProps = { +export type ItemProps> = { canvasTimeStart: number canvasTimeEnd: number canvasWidth: number @@ -55,24 +28,10 @@ export type ItemProps = { itemProps?: HTMLAttributes onDrag: (itemId: string, dragTime: number, newGroupOrder: number) => void onDrop: (itemId: string, dragTime: number, newGroupOrder: number) => void - onResizing: ( - itemId: string, - time: number, - resizeEdge: ResizeEdge | null, - ) => void - onResized: ( - itemId: string, - time: number, - resizeEdge: ResizeEdge | null, - delta: number, - ) => void - moveResizeValidator?: ( - action: 'move' | 'resize', - item: TimelineItemBase, - time: number, - resizeEdge?: ResizeEdge | null, - ) => number - itemRenderer?: (props: ItemRendererProps) => ReactNode + onResizing: (itemId: string, time: number, resizeEdge: ResizeEdge | null) => void + onResized: (itemId: string, time: number, resizeEdge: ResizeEdge | null, delta: number) => void + moveResizeValidator?: (action: 'move' | 'resize', item: TimelineItemBase, time: number, resizeEdge?: ResizeEdge | null) => number + itemRenderer?: (props: ItemRendererProps) => ReactNode selected: boolean canChangeGroup?: boolean canMove?: boolean @@ -83,7 +42,7 @@ export type ItemProps = { canResizeRight: any keys: TimelineKeys - item: TimelineItemBase + item: CustomItem onSelect: OnSelect onContextMenu?: (i: Id, e: MouseEvent) => void @@ -114,8 +73,8 @@ export type GetItemPropsParams = HTMLAttributes & { rightStyle?: CSSProperties } -export interface ItemRendererProps { - item: TimelineItemBase +export interface ItemRendererProps> { + item: CustomItem timelineContext: TimelineContextType itemContext: ItemContext getItemProps: (params: GetItemPropsParams) => HTMLAttributes @@ -131,7 +90,7 @@ export type GetResizeProps = (params?: GetItemPropsParams) => { left: GetResizePropsDirection } -export default class Item extends Component { +export default class Item> extends Component, ItemState> { static defaultProps = { selected: false, itemRenderer: defaultItemRenderer, @@ -164,45 +123,21 @@ export default class Item extends Component { private startedClicking: boolean = false private startedTouching: boolean = false - constructor(props: ItemProps) { + constructor(props: ItemProps) { super(props) this.cacheDataFromProps(props) } - shouldComponentUpdate(nextProps: ItemProps, nextState: ItemState) { - const shouldUpdate = - nextState.dragging !== this.state.dragging || - nextState.dragTime !== this.state.dragTime || - nextState.dragGroupDelta !== this.state.dragGroupDelta || - nextState.resizing !== this.state.resizing || - nextState.resizeTime !== this.state.resizeTime || - nextProps.keys !== this.props.keys || - !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || - nextProps.selected !== this.props.selected || - nextProps.item !== this.props.item || - nextProps.canvasTimeStart !== this.props.canvasTimeStart || - nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || - nextProps.canvasWidth !== this.props.canvasWidth || - (nextProps.order ? nextProps.order.index : undefined) !== - (this.props.order ? this.props.order.index : undefined) || - nextProps.dragSnap !== this.props.dragSnap || - nextProps.minResizeWidth !== this.props.minResizeWidth || - nextProps.canChangeGroup !== this.props.canChangeGroup || - nextProps.canSelect !== this.props.canSelect || - nextProps.canMove !== this.props.canMove || - nextProps.canResizeLeft !== this.props.canResizeLeft || - nextProps.canResizeRight !== this.props.canResizeRight || - nextProps.dimensions !== this.props.dimensions + shouldComponentUpdate(nextProps: ItemProps, nextState: ItemState) { + const shouldUpdate = nextState.dragging !== this.state.dragging || nextState.dragTime !== this.state.dragTime || nextState.dragGroupDelta !== this.state.dragGroupDelta || nextState.resizing !== this.state.resizing || nextState.resizeTime !== this.state.resizeTime || nextProps.keys !== this.props.keys || !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || nextProps.selected !== this.props.selected || nextProps.item !== this.props.item || nextProps.canvasTimeStart !== this.props.canvasTimeStart || nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || nextProps.canvasWidth !== this.props.canvasWidth || (nextProps.order ? nextProps.order.index : undefined) !== (this.props.order ? this.props.order.index : undefined) || nextProps.dragSnap !== this.props.dragSnap || nextProps.minResizeWidth !== this.props.minResizeWidth || nextProps.canChangeGroup !== this.props.canChangeGroup || nextProps.canSelect !== this.props.canSelect || nextProps.canMove !== this.props.canMove || nextProps.canResizeLeft !== this.props.canResizeLeft || nextProps.canResizeRight !== this.props.canResizeRight || nextProps.dimensions !== this.props.dimensions return shouldUpdate } - cacheDataFromProps(props: ItemProps) { + cacheDataFromProps(props: ItemProps) { this.itemId = _get(props.item, props.keys.itemIdKey) this.itemTitle = _get(props.item, props.keys.itemTitleKey) - this.itemDivTitle = props.keys.itemDivTitleKey - ? _get(props.item, props.keys.itemDivTitleKey) - : this.itemTitle + this.itemDivTitle = props.keys.itemDivTitleKey ? _get(props.item, props.keys.itemDivTitleKey) : this.itemTitle this.itemTimeStart = _get(props.item, props.keys.itemTimeStartKey) this.itemTimeEnd = _get(props.item, props.keys.itemTimeEndKey) } @@ -236,29 +171,19 @@ export default class Item extends Component { const startTime = dayjs(this.itemTimeStart) if (this.state.dragging) { - return this.dragTimeSnap( - this.timeFor(e) + this.state.dragStart!.offset, - true, - ) + return this.dragTimeSnap(this.timeFor(e) + this.state.dragStart!.offset, true) } else { return startTime.valueOf() } } timeFor(e: MouseEvent) { - const ratio = coordinateToTimeRatio( - this.props.canvasTimeStart, - this.props.canvasTimeEnd, - this.props.canvasWidth, - ) + const ratio = coordinateToTimeRatio(this.props.canvasTimeStart, this.props.canvasTimeEnd, this.props.canvasWidth) const offset = getSumOffset(this.props.scrollRef!).offsetLeft const scrolls = getSumScroll(this.props.scrollRef!) - return ( - (e.pageX - offset + scrolls.scrollLeft) * ratio + - this.props.canvasTimeStart - ) + return (e.pageX - offset + scrolls.scrollLeft) * ratio + this.props.canvasTimeStart } dragGroupDelta(e: MouseEvent) { @@ -293,14 +218,9 @@ export default class Item extends Component { resizeTimeDelta(e: MouseEvent, resizeEdge: ResizeEdge | null) { const length = this.itemTimeEnd! - this.itemTimeStart! - const timeDelta = this.dragTimeSnap( - (e.pageX - this.state.resizeStart!) * this.getTimeRatio(), - ) - - if ( - length + (resizeEdge === 'left' ? -timeDelta : timeDelta) < - (this.props.dragSnap || 1000) - ) { + const timeDelta = this.dragTimeSnap((e.pageX - this.state.resizeStart!) * this.getTimeRatio()) + + if (length + (resizeEdge === 'left' ? -timeDelta : timeDelta) < (this.props.dragSnap || 1000)) { if (resizeEdge === 'left') { return length - (this.props.dragSnap || 1000) } else { @@ -312,12 +232,8 @@ export default class Item extends Component { } mountInteract() { - const leftResize = this.props.useResizeHandle - ? '.rct-item-handler-resize-left' - : true - const rightResize = this.props.useResizeHandle - ? '.rct-item-handler-resize-right' - : true + const leftResize = this.props.useResizeHandle ? '.rct-item-handler-resize-left' : true + const rightResize = this.props.useResizeHandle ? '.rct-item-handler-resize-right' : true interact(this.item!) .resizable({ @@ -327,9 +243,7 @@ export default class Item extends Component { top: false, bottom: false, }, - enabled: - this.props.selected && - (this.canResizeLeft() || this.canResizeRight()), + enabled: this.props.selected && (this.canResizeLeft() || this.canResizeRight()), }) .draggable({ enabled: this.props.selected && this.canMove(), @@ -358,19 +272,11 @@ export default class Item extends Component { let dragTime = this.dragTime(e) const dragGroupDelta = this.dragGroupDelta(e) if (this.props.moveResizeValidator) { - dragTime = this.props.moveResizeValidator( - 'move', - this.props.item, - dragTime, - ) + dragTime = this.props.moveResizeValidator('move', this.props.item, dragTime) } if (this.props.onDrag) { - this.props.onDrag( - this.itemId!, - dragTime, - this.props.order.index + dragGroupDelta, - ) + this.props.onDrag(this.itemId!, dragTime, this.props.order.index + dragGroupDelta) } this.setState({ @@ -385,18 +291,10 @@ export default class Item extends Component { let dragTime = this.dragTime(e) if (this.props.moveResizeValidator) { - dragTime = this.props.moveResizeValidator( - 'move', - this.props.item, - dragTime, - ) + dragTime = this.props.moveResizeValidator('move', this.props.item, dragTime) } - this.props.onDrop( - this.itemId!, - dragTime, - this.props.order.index + this.dragGroupDelta(e), - ) + this.props.onDrop(this.itemId!, dragTime, this.props.order.index + this.dragGroupDelta(e)) } this.setState({ @@ -431,12 +329,7 @@ export default class Item extends Component { let resizeTime = this.resizeTimeSnap(this.timeFor(e)) if (this.props.moveResizeValidator) { - resizeTime = this.props.moveResizeValidator( - 'resize', - this.props.item, - resizeTime, - resizeEdge, - ) + resizeTime = this.props.moveResizeValidator('resize', this.props.item, resizeTime, resizeEdge) } if (this.props.onResizing) { @@ -454,21 +347,11 @@ export default class Item extends Component { let resizeTime = this.resizeTimeSnap(this.timeFor(e)) if (this.props.moveResizeValidator) { - resizeTime = this.props.moveResizeValidator( - 'resize', - this.props.item, - resizeTime, - resizeEdge, - ) + resizeTime = this.props.moveResizeValidator('resize', this.props.item, resizeTime, resizeEdge) } if (this.props.onResized) { - this.props.onResized( - this.itemId, - resizeTime, - resizeEdge, - this.resizeTimeDelta(e, resizeEdge), - ) + this.props.onResized(this.itemId, resizeTime, resizeEdge, this.resizeTimeDelta(e, resizeEdge)) } this.setState({ resizing: false, @@ -507,29 +390,22 @@ export default class Item extends Component { return !!props.canMove } - componentDidUpdate(prevProps: ItemProps) { + componentDidUpdate(prevProps: ItemProps) { this.cacheDataFromProps(this.props) let { interactMounted } = this.state const couldDrag = prevProps.selected && this.canMove(prevProps) const couldResizeLeft = prevProps.selected && this.canResizeLeft(prevProps) - const couldResizeRight = - prevProps.selected && this.canResizeRight(prevProps) + const couldResizeRight = prevProps.selected && this.canResizeRight(prevProps) const willBeAbleToDrag = this.props.selected && this.canMove(this.props) - const willBeAbleToResizeLeft = - this.props.selected && this.canResizeLeft(this.props) - const willBeAbleToResizeRight = - this.props.selected && this.canResizeRight(this.props) + const willBeAbleToResizeLeft = this.props.selected && this.canResizeLeft(this.props) + const willBeAbleToResizeRight = this.props.selected && this.canResizeRight(this.props) if (this.item) { if (this.props.selected && !interactMounted) { this.mountInteract() interactMounted = true } - if ( - interactMounted && - (couldResizeLeft !== willBeAbleToResizeLeft || - couldResizeRight !== willBeAbleToResizeRight) - ) { + if (interactMounted && (couldResizeLeft !== willBeAbleToResizeLeft || couldResizeRight !== willBeAbleToResizeRight)) { const leftResize = this.props.useResizeHandle ? this.dragLeft : true const rightResize = this.props.useResizeHandle ? this.dragRight : true @@ -599,10 +475,7 @@ export default class Item extends Component { } } - actualClick( - e: MouseEvent | TouchEvent, - clickType: 'click' | 'touch', - ) { + actualClick(e: MouseEvent | TouchEvent, clickType: 'click' | 'touch') { if (this.props.canSelect && this.props.onSelect) { this.props.onSelect(this.itemId!, clickType, e) } @@ -614,9 +487,7 @@ export default class Item extends Component { getItemProps = (props: GetItemPropsParams = {}) => { //TODO: maybe shouldnt include all of these classes - const classNames = - 'rct-item' + - (this.props.item.className ? ` ${this.props.item.className}` : '') + const classNames = 'rct-item' + (this.props.item.className ? ` ${this.props.item.className}` : '') return { key: this.itemId, @@ -634,14 +505,12 @@ export default class Item extends Component { } getResizeProps = (props: GetItemPropsParams = {} as GetItemPropsParams) => { - let leftName = - 'rct-item-handler rct-item-handler-left rct-item-handler-resize-left' + let leftName = 'rct-item-handler rct-item-handler-left rct-item-handler-resize-left' if (props.leftClassName) { leftName += ` ${props.leftClassName}` } - let rightName = - 'rct-item-handler rct-item-handler-right rct-item-handler-resize-right' + let rightName = 'rct-item-handler rct-item-handler-right rct-item-handler-resize-right' if (props.rightClassName) { rightName += ` ${props.rightClassName}` } @@ -672,30 +541,7 @@ export default class Item extends Component { lineHeight: `${dimensions.height}px`, } - const finalStyle = Object.assign( - {}, - overridableStyles, - this.props.selected ? selectedStyle : {}, - this.props.selected && this.canMove(this.props) ? selectedAndCanMove : {}, - this.props.selected && this.canResizeLeft(this.props) - ? selectedAndCanResizeLeft - : {}, - this.props.selected && - this.canResizeLeft(this.props) && - this.state.dragging - ? selectedAndCanResizeLeftAndDragLeft - : {}, - this.props.selected && this.canResizeRight(this.props) - ? selectedAndCanResizeRight - : {}, - this.props.selected && - this.canResizeRight(this.props) && - this.state.dragging - ? selectedAndCanResizeRightAndDragRight - : {}, - props.style, - baseStyles, - ) + const finalStyle = Object.assign({}, overridableStyles, this.props.selected ? selectedStyle : {}, this.props.selected && this.canMove(this.props) ? selectedAndCanMove : {}, this.props.selected && this.canResizeLeft(this.props) ? selectedAndCanResizeLeft : {}, this.props.selected && this.canResizeLeft(this.props) && this.state.dragging ? selectedAndCanResizeLeftAndDragLeft : {}, this.props.selected && this.canResizeRight(this.props) ? selectedAndCanResizeRight : {}, this.props.selected && this.canResizeRight(this.props) && this.state.dragging ? selectedAndCanResizeRightAndDragRight : {}, props.style, baseStyles) return finalStyle } diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index b559ce4cb..c9850ce2a 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -1,20 +1,12 @@ import { Component } from 'react' import Item, { ItemProps } from './Item' -// import ItemGroup from './ItemGroup' - import { _get, arraysEqual, keyBy } from '../utility/generic' import { getGroupOrders, getVisibleItems } from '../utility/calendar' -import { - Id, - TimelineGroupBase, - TimelineItemBase, - TimelineKeys, -} from '../types/main' +import { Id, TimelineGroupBase, TimelineItemBase, TimelineKeys } from '../types/main' import { ItemDimension } from '../types/dimension.ts' -type CustomItem = TimelineItemBase export type CanResize = true | false | 'left' | 'right' | 'both' -type ItemsProps = { +type ItemsProps> = { groups: TimelineGroupBase[] items: CustomItem[] dimensionItems: ItemDimension[] @@ -33,15 +25,15 @@ type ItemsProps = { canResize?: CanResize canSelect?: boolean keys: TimelineKeys - moveResizeValidator?: ItemProps['moveResizeValidator'] - itemSelect: ItemProps['onSelect'] - itemDrag: ItemProps['onDrag'] - itemDrop: ItemProps['onDrop'] - itemResizing: ItemProps['onResizing'] - itemResized: ItemProps['onResized'] - onItemDoubleClick: ItemProps['onItemDoubleClick'] - onItemContextMenu?: ItemProps['onContextMenu'] - itemRenderer?: ItemProps['itemRenderer'] + moveResizeValidator?: ItemProps['moveResizeValidator'] + itemSelect: ItemProps['onSelect'] + itemDrag: ItemProps['onDrag'] + itemDrop: ItemProps['onDrop'] + itemResizing: ItemProps['onResizing'] + itemResized: ItemProps['onResized'] + onItemDoubleClick: ItemProps['onItemDoubleClick'] + onItemContextMenu?: ItemProps['onContextMenu'] + itemRenderer?: ItemProps['itemRenderer'] groupTops: number[] useResizeHandle?: boolean scrollRef: HTMLElement | null @@ -52,37 +44,19 @@ type ItemsState = { // Define your state properties here } -const canResizeLeft = (item: CustomItem, canResize?: CanResize) => { - const value = - _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize +function canResizeLeft>(item: CustomItem, canResize?: CanResize) { + const value = _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize return value === 'left' || value === 'both' } -const canResizeRight = (item: CustomItem, canResize?: CanResize) => { - const value = - _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize +function canResizeRight>(item: CustomItem, canResize?: CanResize) { + const value = _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize return value === 'right' || value === 'both' || value === true } -export default class Items extends Component { - shouldComponentUpdate(nextProps: ItemsProps) { - return !( - arraysEqual(nextProps.groups, this.props.groups) && - arraysEqual(nextProps.items, this.props.items) && - arraysEqual(nextProps.dimensionItems, this.props.dimensionItems) && - nextProps.keys === this.props.keys && - nextProps.canvasTimeStart === this.props.canvasTimeStart && - nextProps.canvasTimeEnd === this.props.canvasTimeEnd && - nextProps.canvasWidth === this.props.canvasWidth && - nextProps.selectedItem === this.props.selectedItem && - nextProps.selected === this.props.selected && - nextProps.dragSnap === this.props.dragSnap && - nextProps.minResizeWidth === this.props.minResizeWidth && - nextProps.canChangeGroup === this.props.canChangeGroup && - nextProps.canMove === this.props.canMove && - nextProps.canResize === this.props.canResize && - nextProps.canSelect === this.props.canSelect - ) +export default class Items> extends Component, ItemsState> { + shouldComponentUpdate(nextProps: ItemsProps) { + return !(arraysEqual(nextProps.groups, this.props.groups) && arraysEqual(nextProps.items, this.props.items) && arraysEqual(nextProps.dimensionItems, this.props.dimensionItems) && nextProps.keys === this.props.keys && nextProps.canvasTimeStart === this.props.canvasTimeStart && nextProps.canvasTimeEnd === this.props.canvasTimeEnd && nextProps.canvasWidth === this.props.canvasWidth && nextProps.selectedItem === this.props.selectedItem && nextProps.selected === this.props.selected && nextProps.dragSnap === this.props.dragSnap && nextProps.minResizeWidth === this.props.minResizeWidth && nextProps.canChangeGroup === this.props.canChangeGroup && nextProps.canMove === this.props.canMove && nextProps.canResize === this.props.canResize && nextProps.canSelect === this.props.canSelect) } isSelected(item: CustomItem, itemIdKey: string) { @@ -101,8 +75,7 @@ export default class Items extends Component { } render() { - const { canvasTimeStart, canvasTimeEnd, dimensionItems, keys, groups } = - this.props + const { canvasTimeStart, canvasTimeEnd, dimensionItems, keys, groups } = this.props const { itemIdKey, itemGroupKey } = keys const groupOrders = getGroupOrders(groups, keys) @@ -120,27 +93,13 @@ export default class Items extends Component { item={item} keys={this.props.keys} order={groupOrders[_get(item, itemGroupKey)]} - dimensions={ - sortedDimensionItems[_get(item, itemIdKey)].dimensions - } + dimensions={sortedDimensionItems[_get(item, itemIdKey)].dimensions} selected={this.isSelected(item, itemIdKey)} - canChangeGroup={ - _get(item, 'canChangeGroup') !== undefined - ? _get(item, 'canChangeGroup') - : this.props.canChangeGroup - } - canMove={ - _get(item, 'canMove') !== undefined - ? _get(item, 'canMove') - : this.props.canMove - } + canChangeGroup={_get(item, 'canChangeGroup') !== undefined ? _get(item, 'canChangeGroup') : this.props.canChangeGroup} + canMove={_get(item, 'canMove') !== undefined ? _get(item, 'canMove') : this.props.canMove} canResizeLeft={canResizeLeft(item, this.props.canResize)} canResizeRight={canResizeRight(item, this.props.canResize)} - canSelect={ - _get(item, 'canSelect') !== undefined - ? _get(item, 'canSelect') - : this.props.canSelect - } + canSelect={_get(item, 'canSelect') !== undefined ? _get(item, 'canSelect') : this.props.canSelect} useResizeHandle={this.props.useResizeHandle} groupTops={this.props.groupTops} canvasTimeStart={this.props.canvasTimeStart} diff --git a/src/lib/items/defaultItemRenderer.tsx b/src/lib/items/defaultItemRenderer.tsx index ca72cb5f9..55a477f35 100644 --- a/src/lib/items/defaultItemRenderer.tsx +++ b/src/lib/items/defaultItemRenderer.tsx @@ -1,29 +1,21 @@ import { HTMLAttributes } from 'react' import { GetItemPropsParams, GetResizeProps, ItemProps } from './Item' -import { ItemContext } from '../types/main' +import { ItemContext, TimelineItemBase } from '../types/main' -type Props = { - item: ItemProps +type Props> = { + item: ItemProps itemContext: ItemContext getItemProps: (p?: GetItemPropsParams) => HTMLAttributes getResizeProps: GetResizeProps } -export const defaultItemRenderer = ({ - item, - itemContext, - getItemProps, - getResizeProps, -}: Props) => { +export function defaultItemRenderer>({ item, itemContext, getItemProps, getResizeProps }: Props) { const { left: leftResizeProps, right: rightResizeProps } = getResizeProps() return (
{itemContext.useResizeHandle ?
: ''} -
+
{itemContext.title}
diff --git a/src/lib/markers/public/CursorMarker.tsx b/src/lib/markers/public/CursorMarker.tsx index 85da82246..791e12dc2 100644 --- a/src/lib/markers/public/CursorMarker.tsx +++ b/src/lib/markers/public/CursorMarker.tsx @@ -1,15 +1,8 @@ import { Component } from 'react' -import { - SubscribeReturn, - TimelineMarkersConsumer, -} from '../TimelineMarkersContext' -import { - MarkerRendererType, - MarkerType, - TimelineMarkerType, -} from '../markerType' +import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' +import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' -type CursorMarkerProps = { +export type CursorMarkerProps = { subscribeMarker: (m: MarkerType) => SubscribeReturn children: MarkerRendererType } @@ -37,13 +30,7 @@ class CursorMarker extends Component { // TODO: turn into HOC? const CursorMarkerWrapper = (props: Pick) => { - return ( - - {({ subscribeMarker }) => ( - - )} - - ) + return {({ subscribeMarker }) => } } CursorMarkerWrapper.displayName = 'CursorMarkerWrapper' diff --git a/src/lib/markers/public/TodayMarker.tsx b/src/lib/markers/public/TodayMarker.tsx index e53ec1ca1..c5123db5c 100644 --- a/src/lib/markers/public/TodayMarker.tsx +++ b/src/lib/markers/public/TodayMarker.tsx @@ -2,7 +2,7 @@ import React from 'react' import { SubscribeReturn, TimelineMarkersConsumer } from '../TimelineMarkersContext' import { MarkerRendererType, MarkerType, TimelineMarkerType } from '../markerType' -type TodayMarkerProps = { +export type TodayMarkerProps = { interval?: number updateMarker: (marker: MarkerType) => void subscribeMarker: (m: MarkerType) => SubscribeReturn diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 08d275018..a2a50c0d9 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -140,7 +140,7 @@ export interface ItemRendererGetResizePropsReturnType { | undefined } -export type GetResizeProps = { +/*export type GetResizeProps = { leftStyle?: CSSProperties | undefined rightStyle?: CSSProperties | undefined leftClassName?: string | undefined @@ -163,7 +163,7 @@ export interface ReactCalendarItemRendererProps ItemRendererGetResizePropsReturnType -} +}*/ export interface ReactCalendarGroupRendererProps { group: CustomGroup From 97d463e37cdf793647ff89046955ce160ae7c6fe Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 16 Jan 2024 17:38:54 +0200 Subject: [PATCH 29/50] more type fixes --- .prettierrc | 2 +- demo/src/demo-controlled-select/index.jsx | 118 ++---- demo/src/demo-main/index.jsx | 27 +- demo/src/main.tsx | 1 + demo/src/normalize.css | 349 ++++++++++++++++ package.json | 2 +- src/index.ts | 3 +- src/lib/Timeline.scss | 4 +- src/lib/Timeline.tsx | 391 ++++++++++++++++-- src/lib/columns/Columns.tsx | 79 ++-- src/lib/headers/CustomHeader.tsx | 55 ++- src/lib/headers/DateHeader.tsx | 110 +---- src/lib/headers/Interval.tsx | 20 +- ...TimelineMarkers.ts => TimelineMarkers.tsx} | 0 14 files changed, 847 insertions(+), 314 deletions(-) create mode 100644 demo/src/normalize.css rename src/lib/markers/public/{TimelineMarkers.ts => TimelineMarkers.tsx} (100%) diff --git a/.prettierrc b/.prettierrc index d55174a83..b3977820d 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { - "printWidth": 1200, + "printWidth": 120, "singleQuote": true, "semi": false } diff --git a/demo/src/demo-controlled-select/index.jsx b/demo/src/demo-controlled-select/index.jsx index 2d1cbf5a6..dc9b1b4dc 100644 --- a/demo/src/demo-controlled-select/index.jsx +++ b/demo/src/demo-controlled-select/index.jsx @@ -2,25 +2,12 @@ import React, { Component } from 'react' import dayjs from 'dayjs' -import Timeline, { - TimelineMarkers, - TimelineHeaders, - TodayMarker, - CustomMarker, - CursorMarker, - CustomHeader, - SidebarHeader, - DateHeader -} from 'react-calendar-timeline' +import Timeline, { TimelineMarkers, TimelineHeaders, TodayMarker, CustomMarker, CursorMarker, CustomHeader, SidebarHeader, DateHeader } from 'react-calendar-timeline' import generateFakeData from '../generate-fake-data' -var minTime = dayjs() - .add(-6, 'months') - .valueOf() -var maxTime = dayjs() - .add(6, 'months') - .valueOf() +var minTime = dayjs().add(-6, 'months').valueOf() +var maxTime = dayjs().add(6, 'months').valueOf() var keys = { groupIdKey: 'id', @@ -31,7 +18,7 @@ var keys = { itemDivTitleKey: 'title', itemGroupKey: 'group', itemTimeStartKey: 'start', - itemTimeEndKey: 'end' + itemTimeEndKey: 'end', } export default class App extends Component { @@ -39,13 +26,8 @@ export default class App extends Component { super(props) const { groups, items } = generateFakeData() - const defaultTimeStart = dayjs() - .startOf('day') - .toDate() - const defaultTimeEnd = dayjs() - .startOf('day') - .add(1, 'day') - .toDate() + const defaultTimeStart = dayjs().startOf('day').toDate().valueOf() + const defaultTimeEnd = dayjs().startOf('day').add(1, 'day').toDate().valueOf() this.state = { groups, @@ -74,13 +56,13 @@ export default class App extends Component { handleItemSelect = (itemId, _, time) => { this.setState({ - selected: [itemId] + selected: [itemId], }) console.log('Selected: ' + itemId, dayjs(time).format()) } handleItemDeselect = () => { - this.setState({selected: undefined}) + this.setState({ selected: undefined }) } handleItemDoubleClick = (itemId, _, time) => { @@ -97,16 +79,15 @@ export default class App extends Component { const group = groups[newGroupOrder] this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: dragTime, - end: dragTime + (item.end - item.start), - group: group.id - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: dragTime, + end: dragTime + (item.end - item.start), + group: group.id, + }) + : item, + ), }) console.log('Moved', itemId, dragTime, newGroupOrder) @@ -116,15 +97,14 @@ export default class App extends Component { const { items } = this.state this.setState({ - items: items.map( - item => - item.id === itemId - ? Object.assign({}, item, { - start: edge === 'left' ? time : item.start, - end: edge === 'left' ? item.end : time - }) - : item - ) + items: items.map((item) => + item.id === itemId + ? Object.assign({}, item, { + start: edge === 'left' ? time : item.start, + end: edge === 'left' ? item.end : time, + }) + : item, + ), }) console.log('Resized', itemId, time, edge) @@ -145,8 +125,7 @@ export default class App extends Component { moveResizeValidator = (action, item, time) => { if (time < new Date().getTime()) { - var newTime = - Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) + var newTime = Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) return newTime } @@ -157,50 +136,11 @@ export default class App extends Component { const { groups, items, defaultTimeStart, defaultTimeEnd } = this.state return ( - Above The Left
} - canMove - canResize="right" - canSelect - itemsSorted - itemTouchSendsClick={false} - stackItems - itemHeightRatio={0.75} - defaultTimeStart={defaultTimeStart} - defaultTimeEnd={defaultTimeEnd} - onCanvasClick={this.handleCanvasClick} - onCanvasDoubleClick={this.handleCanvasDoubleClick} - onCanvasContextMenu={this.handleCanvasContextMenu} - onItemClick={this.handleItemClick} - onItemSelect={this.handleItemSelect} - onItemContextMenu={this.handleItemContextMenu} - onItemMove={this.handleItemMove} - onItemResize={this.handleItemResize} - onItemDoubleClick={this.handleItemDoubleClick} - onTimeChange={this.handleTimeChange} - moveResizeValidator={this.moveResizeValidator} - selected={this.state.selected} - onItemDeselect={this.handleItemDeselect} - > + Above The Left
} canMove canResize="right" canSelect itemsSorted itemTouchSendsClick={false} stackItems itemHeightRatio={0.75} defaultTimeStart={defaultTimeStart} defaultTimeEnd={defaultTimeEnd} onCanvasClick={this.handleCanvasClick} onCanvasDoubleClick={this.handleCanvasDoubleClick} onCanvasContextMenu={this.handleCanvasContextMenu} onItemClick={this.handleItemClick} onItemSelect={this.handleItemSelect} onItemContextMenu={this.handleItemContextMenu} onItemMove={this.handleItemMove} onItemResize={this.handleItemResize} onItemDoubleClick={this.handleItemDoubleClick} onTimeChange={this.handleTimeChange} moveResizeValidator={this.moveResizeValidator} selected={this.state.selected} onItemDeselect={this.handleItemDeselect}> - - + + {({ styles }) => { const newStyles = { ...styles, backgroundColor: 'blue' } return
diff --git a/demo/src/demo-main/index.jsx b/demo/src/demo-main/index.jsx index 237ca84aa..bb1f3e964 100644 --- a/demo/src/demo-main/index.jsx +++ b/demo/src/demo-main/index.jsx @@ -2,12 +2,7 @@ import React from 'react' import { Component } from 'react' import dayjs from 'dayjs' -import Timeline, { - TimelineMarkers, - TodayMarker, - CustomMarker, - CursorMarker, -} from 'react-calendar-timeline' +import Timeline, { TimelineMarkers, TodayMarker, CustomMarker, CursorMarker } from '../../../src/index' import generateFakeData from '../generate-fake-data' @@ -31,15 +26,8 @@ export default class App extends Component { super(props) const { groups, items } = generateFakeData() - const defaultTimeStart = dayjs(items[0].start_time) - .startOf('day') - .toDate() - .valueOf() - const defaultTimeEnd = dayjs(items[0].end_time) - .startOf('day') - .add(1, 'day') - .toDate() - .valueOf() + const defaultTimeStart = dayjs(items[0].start_time).startOf('day').toDate().valueOf() + const defaultTimeEnd = dayjs(items[0].end_time).startOf('day').add(1, 'day').toDate().valueOf() this.state = { groups, @@ -139,8 +127,7 @@ export default class App extends Component { moveResizeValidator = (action, item, time) => { if (time < new Date().getTime()) { - var newTime = - Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) + var newTime = Math.ceil(new Date().getTime() / (15 * 60 * 1000)) * (15 * 60 * 1000) return newTime } @@ -184,16 +171,14 @@ export default class App extends Component { > - + {({ styles }) => { const newStyles = { ...styles, backgroundColor: 'blue' } return
}} - + {/* */} ) diff --git a/demo/src/main.tsx b/demo/src/main.tsx index e6f5579d3..00acb6aff 100644 --- a/demo/src/main.tsx +++ b/demo/src/main.tsx @@ -1,6 +1,7 @@ import React from 'react' import ReactDOM from 'react-dom/client' import App from './App.tsx' +import './normalize.css' import './styles.scss' ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/demo/src/normalize.css b/demo/src/normalize.css new file mode 100644 index 000000000..192eb9ce4 --- /dev/null +++ b/demo/src/normalize.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/package.json b/package.json index b32401444..c418be618 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.5", + "version": "1.0.6", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { diff --git a/src/index.ts b/src/index.ts index 2a3357677..3cc4ece6b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ export { default as TimelineMarkers } from './lib/markers/public/TimelineMarkers export { default as TodayMarker } from './lib/markers/public/TodayMarker' export type { TodayMarkerProps } from './lib/markers/public/TodayMarker' export { default as CustomMarker } from './lib/markers/public/CustomMarker' +export { default as CursorMarker } from './lib/markers/public/CursorMarker' export type { CursorMarkerProps } from './lib/markers/public/CursorMarker' export { default as TimelineHeaders } from './lib/headers/TimelineHeaders' export type { TimelineHeadersWrapperProps as TimelineHeadersProps } from './lib/headers/TimelineHeaders' @@ -12,7 +13,7 @@ export type { SidebarWrapperProps as SidebarHeaderProps } from './lib/headers/Si export { default as CustomHeader } from './lib/headers/CustomHeader' export type { CustomHeaderWrapperProps as CustomHeaderProps } from './lib/headers/CustomHeader' export { default as DateHeader } from './lib/headers/DateHeader' -export type { DateHeaderProps } from './lib/headers/DateHeader' +export type { DateHeaderWrapper as DateHeaderProps } from './lib/headers/DateHeader' export * as calendarUtils from './lib/utility/calendar' export * from './lib/types/main' diff --git a/src/lib/Timeline.scss b/src/lib/Timeline.scss index 586b3edf3..cdec5aabd 100644 --- a/src/lib/Timeline.scss +++ b/src/lib/Timeline.scss @@ -158,8 +158,6 @@ $weekend: rgba(250, 246, 225, 0.5); } .rct-calendar-header { - border: 1px solid #bbb, - + border: 1px solid #bbb } - } diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 155934310..de79a02a7 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -7,7 +7,14 @@ import ScrollElement from './scroll/ScrollElement' import MarkerCanvas from './markers/MarkerCanvas' import windowResizeDetector from '../resize-detector/window' -import { getMinUnit, calculateTimeForXPosition, calculateScrollCanvas, getCanvasBoundariesFromVisibleTime, getCanvasWidth, stackTimelineItems } from './utility/calendar' +import { + getMinUnit, + calculateTimeForXPosition, + calculateScrollCanvas, + getCanvasBoundariesFromVisibleTime, + getCanvasWidth, + stackTimelineItems, +} from './utility/calendar' import { _get } from './utility/generic' import { defaultKeys, defaultTimeSteps } from './default-config' import { TimelineStateProvider } from './timeline/TimelineStateContext' @@ -15,16 +22,43 @@ import { TimelineMarkersProvider } from './markers/TimelineMarkersContext' import { TimelineHeadersProvider } from './headers/HeadersContext' import TimelineHeaders from './headers/TimelineHeaders' import { DateHeader } from './headers/DateHeader' -import { dateType, ElementWithSecret, Id, OnItemDragObjectMove, OnItemDragObjectResize, ReactCalendarGroupRendererProps, TimelineContext, TimelineGroupBase, TimelineItemBase, TimelineKeys, TimelineTimeSteps, Unit } from './types/main' +import { + dateType, + ElementWithSecret, + Id, + OnItemDragObjectMove, + OnItemDragObjectResize, + ReactCalendarGroupRendererProps, + TimelineContext, + TimelineGroupBase, + TimelineItemBase, + TimelineKeys, + TimelineTimeSteps, + Unit, +} from './types/main' import { ItemDimension } from './types/dimension' import { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' import './Timeline.scss' import PropTypes from 'prop-types' -export type OnTimeChange = (visibleTimeStart: number, visibleTimeEnd: number, updateScrollCanvas: (start: dateType, end: dateType, forceUpdateDimensions?: boolean, items?: CustomItem[], groups?: CustomGroup[]) => void, unit: Unit) => any - -export type ReactCalendarTimelineProps, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { +export type OnTimeChange = ( + visibleTimeStart: number, + visibleTimeEnd: number, + updateScrollCanvas: ( + start: dateType, + end: dateType, + forceUpdateDimensions?: boolean, + items?: CustomItem[], + groups?: CustomGroup[], + ) => void, + unit: Unit, +) => any + +export type ReactCalendarTimelineProps< + CustomItem extends TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> = { children?: React.ReactNode groups: CustomGroup[] items: CustomItem[] @@ -87,7 +121,10 @@ export type ReactCalendarTimelineProps = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> = { +export type ReactCalendarTimelineState< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> = { width: number visibleTimeStart: number visibleTimeEnd: number @@ -109,7 +146,13 @@ export type ReactCalendarTimelineState groupTops: number[] } -export default class ReactCalendarTimeline = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase> extends Component, ReactCalendarTimelineState> { +export default class ReactCalendarTimeline< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +> extends Component< + ReactCalendarTimelineProps, + ReactCalendarTimelineState +> { static childContextType = { getTimelineContext: PropTypes.func, } @@ -172,7 +215,11 @@ export default class ReactCalendarTimeline void) { + onTimeChange: function ( + visibleTimeStart: dateType, + visibleTimeEnd: dateType, + updateScrollCanvas: (visibleTimeStart: dateType, visibleTimeEnd: dateType) => void, + ) { updateScrollCanvas(visibleTimeStart, visibleTimeEnd) }, // called when the canvas area of the calendar changes @@ -233,10 +280,16 @@ export default class ReactCalendarTimeline = { width: 1000, visibleTimeStart: visibleTimeStart, @@ -252,7 +305,23 @@ export default class ReactCalendarTimeline { - this.setState(calculateScrollCanvas(visibleTimeStart, visibleTimeEnd, forceUpdateDimensions, items, groups, this.props, this.state)) + updateScrollCanvas = ( + visibleTimeStart: dateType, + visibleTimeEnd: dateType, + forceUpdateDimensions: boolean = false, + items = this.props.items, + groups = this.props.groups, + ) => { + this.setState( + calculateScrollCanvas( + visibleTimeStart, + visibleTimeEnd, + forceUpdateDimensions, + items, + groups, + this.props, + this.state, + ), + ) } handleWheelZoom = (speed: number, xPosition: number, deltaY: number) => { @@ -387,7 +519,12 @@ export default class ReactCalendarTimeline['onSelect'] = (item, clickType, e) => { @@ -524,7 +666,19 @@ export default class ReactCalendarTimeline { + updatingItem = ({ + eventType, + itemId, + time, + edge, + newGroupOrder, + }: { + eventType: 'move' | 'resize' + itemId: Id + time: number + edge?: ResizeEdge + newGroupOrder?: number + }) => { if (this.props.onItemDrag) { if (eventType === 'move') { this.props.onItemDrag({ @@ -544,8 +698,26 @@ export default class ReactCalendarTimeline + columns( + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + minUnit: keyof TimelineTimeSteps, + timeSteps: TimelineTimeSteps, + height: number, + ) { + return ( + + ) } handleRowClick: RowClickEvent = (e, rowIndex) => { @@ -583,11 +755,65 @@ export default class ReactCalendarTimeline + return ( + + ) } - items({ canvasTimeStart, canvasTimeEnd, canvasWidth, dimensionItems, groupTops }: { canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number; dimensionItems: ItemDimension[]; groupTops: number[] }) { - return + items({ + canvasTimeStart, + canvasTimeEnd, + canvasWidth, + dimensionItems, + groupTops, + }: { + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + dimensionItems: ItemDimension[] + groupTops: number[] + }) { + return ( + + ) } handleHeaderRef = (el: HTMLDivElement) => { @@ -599,12 +825,35 @@ export default class ReactCalendarTimeline + return ( + sidebarWidth && ( + + ) + ) } rightSidebar(height: number, groupHeights: number[]) { const { rightSidebarWidth } = this.props - return rightSidebarWidth && + return ( + rightSidebarWidth && ( + + ) + ) } /** @@ -616,7 +865,19 @@ export default class ReactCalendarTimeline + - -
+ +
{this.renderHeaders()}
{sidebarWidth > 0 ? this.sidebar(height, groupHeights) : null} - + {this.columns(canvasTimeStart, canvasTimeEnd, canvasWidth, minUnit, timeSteps, height)} {this.rows(canvasWidth, groupHeights, groups)} @@ -736,7 +1041,19 @@ export default class ReactCalendarTimeline {rightSidebarWidth > 0 ? this.rightSidebar(height, groupHeights) : null} diff --git a/src/lib/columns/Columns.tsx b/src/lib/columns/Columns.tsx index d0fc74358..2159e1d90 100644 --- a/src/lib/columns/Columns.tsx +++ b/src/lib/columns/Columns.tsx @@ -29,8 +29,7 @@ class Columns extends Component { nextProps.minUnit === this.props.minUnit && nextProps.timeSteps === this.props.timeSteps && nextProps.height === this.props.height && - nextProps.verticalLineClassNamesForTime === - this.props.verticalLineClassNamesForTime + nextProps.verticalLineClassNamesForTime === this.props.verticalLineClassNamesForTime ) } @@ -49,49 +48,41 @@ class Columns extends Component { const lines: React.JSX.Element[] = [] - iterateTimes( - canvasTimeStart, - canvasTimeEnd, - minUnit, - timeSteps, - (time, nextTime) => { - const minUnitValue = time.get(minUnit === 'day' ? 'date' : minUnit) - const firstOfType = minUnitValue === (minUnit === 'day' ? 1 : 0) + iterateTimes(canvasTimeStart, canvasTimeEnd, minUnit, timeSteps, (time, nextTime) => { + const minUnitValue = time.get(minUnit === 'day' ? 'date' : minUnit) + const firstOfType = minUnitValue === (minUnit === 'day' ? 1 : 0) - let classNamesForTime: string[] = [] - if (verticalLineClassNamesForTime) { - classNamesForTime = verticalLineClassNamesForTime( - time.unix() * 1000, // turn into ms, which is what verticalLineClassNamesForTime expects - nextTime.unix() * 1000 - 1, - ) - } + let classNamesForTime: string[] = [] + if (verticalLineClassNamesForTime) { + classNamesForTime = verticalLineClassNamesForTime( + time.unix() * 1000, // turn into ms, which is what verticalLineClassNamesForTime expects + nextTime.unix() * 1000 - 1, + ) + } - // TODO: rename or remove class that has reference to vertical-line - const classNames = - 'rct-vl' + - (firstOfType ? ' rct-vl-first' : '') + - (minUnit === 'day' || minUnit === 'hour' || minUnit === 'minute' - ? ` rct-day-${time.day()} ` - : ' ') + - classNamesForTime.join(' ') + // TODO: rename or remove class that has reference to vertical-line + const classNames = + 'rct-vl' + + (firstOfType ? ' rct-vl-first' : '') + + (minUnit === 'day' || minUnit === 'hour' || minUnit === 'minute' ? ` rct-day-${time.day()} ` : ' ') + + classNamesForTime.join(' ') - const left = getLeftOffsetFromDate(time.valueOf()) - const right = getLeftOffsetFromDate(nextTime.valueOf()) - lines.push( -
, - ) - }, - ) + const left = getLeftOffsetFromDate(time.valueOf()) + const right = getLeftOffsetFromDate(nextTime.valueOf()) + lines.push( +
, + ) + }) return
{lines}
} @@ -100,9 +91,7 @@ class Columns extends Component { const ColumnsWrapper: FC = ({ ...props }) => { return ( - {({ getLeftOffsetFromDate }) => ( - - )} + {({ getLeftOffsetFromDate }) => } ) } diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index 338fa429e..1a2bcc389 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -61,13 +61,29 @@ class CustomHeader extends React.Component, State> } shouldComponentUpdate(nextProps: CustomHeaderProps) { - if (nextProps.canvasTimeStart !== this.props.canvasTimeStart || nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || nextProps.canvasWidth !== this.props.canvasWidth || nextProps.unit !== this.props.unit || nextProps.timeSteps !== this.props.timeSteps || nextProps.showPeriod !== this.props.showPeriod || nextProps.children !== this.props.children || nextProps.headerData !== this.props.headerData) { + if ( + nextProps.canvasTimeStart !== this.props.canvasTimeStart || + nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || + nextProps.canvasWidth !== this.props.canvasWidth || + nextProps.unit !== this.props.unit || + nextProps.timeSteps !== this.props.timeSteps || + nextProps.showPeriod !== this.props.showPeriod || + nextProps.children !== this.props.children || + nextProps.headerData !== this.props.headerData + ) { return true } return false } componentDidUpdate(prevProps: CustomHeaderProps) { - if (prevProps.canvasTimeStart !== this.props.canvasTimeStart || prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || prevProps.canvasWidth !== this.props.canvasWidth || prevProps.unit !== this.props.unit || prevProps.timeSteps !== this.props.timeSteps || prevProps.showPeriod !== this.props.showPeriod) { + if ( + prevProps.canvasTimeStart !== this.props.canvasTimeStart || + prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || + prevProps.canvasWidth !== this.props.canvasWidth || + prevProps.unit !== this.props.unit || + prevProps.timeSteps !== this.props.timeSteps || + prevProps.showPeriod !== this.props.showPeriod + ) { const { canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate } = this.props const intervals = this.getHeaderIntervals({ @@ -82,7 +98,13 @@ class CustomHeader extends React.Component, State> } } - getHeaderIntervals: GetHeaderIntervalsFn = ({ canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate }) => { + getHeaderIntervals: GetHeaderIntervalsFn = ({ + canvasTimeStart, + canvasTimeEnd, + unit, + timeSteps, + getLeftOffsetFromDate, + }) => { const intervals: Interval[] = [] iterateTimes(canvasTimeStart, canvasTimeEnd, unit, timeSteps, (startTime, endTime) => { const left = getLeftOffsetFromDate(startTime.valueOf()) @@ -134,13 +156,13 @@ class CustomHeader extends React.Component, State> getStateAndHelpers = (): CustomDateHeaderProps => { const { - /* canvasTimeStart, - canvasTimeEnd,*/ - unit, - showPeriod, - /* timelineWidth, + /*canvasTimeStart, + canvasTimeEnd, + timelineWidth, visibleTimeStart, visibleTimeEnd,*/ + unit, + showPeriod, headerData, } = this.props //TODO: only evaluate on changing params @@ -183,7 +205,22 @@ function CustomHeaderWrapper({ children, unit, headerData, height }: Custo {({ getTimelineState, showPeriod, getLeftOffsetFromDate }) => { const timelineState = getTimelineState() - return {({ timeSteps }) => } + return ( + + {({ timeSteps }) => ( + + )} + + ) }} ) diff --git a/src/lib/headers/DateHeader.tsx b/src/lib/headers/DateHeader.tsx index c40ea0be3..b6e9cef9c 100644 --- a/src/lib/headers/DateHeader.tsx +++ b/src/lib/headers/DateHeader.tsx @@ -5,33 +5,21 @@ import { getNextUnit, SelectUnits } from '../utility/calendar' import { defaultHeaderFormats } from '../default-config' import memoize from 'memoize-one' import { CustomDateHeader } from './CustomDateHeader' -import { - IntervalRenderer, - SidebarHeaderChildrenFnProps, - TimelineTimeSteps, -} from '../types/main' +import { IntervalRenderer, SidebarHeaderChildrenFnProps, TimelineTimeSteps } from '../types/main' import { Dayjs, UnitType } from 'dayjs' type GetHeaderData = ( intervalRenderer: (p: IntervalRenderer) => ReactNode, style: React.CSSProperties, className: string | undefined, - getLabelFormat: ( - interval: [Dayjs, Dayjs], - unit: keyof typeof defaultHeaderFormats, - labelWidth: number, - ) => string, + getLabelFormat: (interval: [Dayjs, Dayjs], unit: keyof typeof defaultHeaderFormats, labelWidth: number) => string, unitProp: UnitType | 'primaryHeader' | undefined, headerData: Data | undefined, ) => { intervalRenderer?: IntervalRenderer style: React.CSSProperties className: string - getLabelFormat: ( - interval: [Dayjs, Dayjs], - unit: keyof typeof defaultHeaderFormats, - labelWidth: number, - ) => string + getLabelFormat: (interval: [Dayjs, Dayjs], unit: keyof typeof defaultHeaderFormats, labelWidth: number) => string unitProp: UnitType | 'primaryHeader' | undefined headerData: Data } @@ -40,25 +28,14 @@ export interface DateHeaderProps { className?: string | undefined unit?: keyof TimelineTimeSteps | 'primaryHeader' | undefined timelineUnit: SelectUnits - labelFormat?: - | string - | (( - [startTime, endTime]: [Dayjs, Dayjs], - unit: UnitType | 'primaryHeader', - labelWidth: number, - ) => string) - | undefined - intervalRenderer?: ((props: IntervalRenderer) => ReactNode) | undefined + labelFormat?: string | (([startTime, endTime]: [Dayjs, Dayjs], unit: UnitType | 'primaryHeader', labelWidth: number) => string) | undefined + intervalRenderer?: (props: IntervalRenderer) => ReactNode headerData?: Data | undefined - children?: - | ((props: SidebarHeaderChildrenFnProps) => ReactNode) - | undefined + children?: ((props: SidebarHeaderChildrenFnProps) => ReactNode) | undefined height?: number | undefined } -export class DateHeaderInner extends React.Component< - DateHeaderProps -> { +class DateHeaderInner extends React.Component> { getHeaderUnit = (): keyof TimelineTimeSteps => { if (this.props.unit === 'primaryHeader') { return getNextUnit(this.props.timelineUnit) @@ -75,11 +52,7 @@ export class DateHeaderInner extends React.Component< } }) - getLabelFormat = ( - interval: [Dayjs, Dayjs], - unit: keyof typeof defaultHeaderFormats, - labelWidth: number, - ) => { + getLabelFormat = (interval: [Dayjs, Dayjs], unit: keyof typeof defaultHeaderFormats, labelWidth: number) => { const { labelFormat } = this.props if (typeof labelFormat === 'string') { const startTime = interval[0] @@ -91,93 +64,46 @@ export class DateHeaderInner extends React.Component< } } - getHeaderData: GetHeaderData = memoize( - ( + getHeaderData: GetHeaderData = memoize((intervalRenderer, style, className, getLabelFormat, unitProp, headerData) => { + return { intervalRenderer, style, className, getLabelFormat, unitProp, headerData, - ) => { - return { - intervalRenderer, - style, - className, - getLabelFormat, - unitProp, - headerData, - } - }, - ) + } + }) render() { const unit = this.getHeaderUnit() const { height } = this.props - return ( - - ) + return } } -type DateHeaderWrapper = { +export type DateHeaderWrapper = { unit?: keyof TimelineTimeSteps | 'primaryHeader' labelFormat?: typeof formatLabel style?: CSSProperties className?: string - intervalRenderer?: ((props?: IntervalRenderer) => ReactNode) | undefined + intervalRenderer?: (props: IntervalRenderer) => ReactNode headerData?: Data height?: number } -export function DateHeader({ - unit, - labelFormat, - style, - className, - intervalRenderer, - headerData, - height, -}: DateHeaderWrapper) { +export function DateHeader({ unit, labelFormat, style, className, intervalRenderer, headerData, height }: DateHeaderWrapper) { return ( {({ getTimelineState }) => { const timelineState = getTimelineState() - return ( - - ) + return }} ) } -function formatLabel( - [timeStart]: [Dayjs, Dayjs], - unit: keyof typeof defaultHeaderFormats, - labelWidth: number, - formatOptions = defaultHeaderFormats, -) { +function formatLabel([timeStart]: [Dayjs, Dayjs], unit: keyof typeof defaultHeaderFormats, labelWidth: number, formatOptions = defaultHeaderFormats) { let format if (labelWidth >= 150) { format = formatOptions[unit]['long'] diff --git a/src/lib/headers/Interval.tsx b/src/lib/headers/Interval.tsx index 15fbf7bff..1edf6bf08 100644 --- a/src/lib/headers/Interval.tsx +++ b/src/lib/headers/Interval.tsx @@ -2,11 +2,7 @@ import React, { HTMLAttributes, ReactNode } from 'react' import { getNextUnit, SelectUnits } from '../utility/calendar' import { composeEvents } from '../utility/events' import { Dayjs } from 'dayjs' -import { - IntervalRenderer, - Interval as IntervalType, - GetIntervalProps, -} from '../types/main' +import { IntervalRenderer, Interval as IntervalType, GetIntervalProps } from '../types/main' type GetIntervalPropsParams = { interval: IntervalType @@ -19,9 +15,7 @@ export type IntervalProps = { showPeriod: (startTime: Dayjs, endTime: Dayjs) => void intervalText: string primaryHeader: boolean - getIntervalProps: ( - props?: GetIntervalPropsParams, - ) => HTMLAttributes + getIntervalProps: (props?: GetIntervalPropsParams) => HTMLAttributes headerData?: Data } @@ -39,9 +33,7 @@ class Interval extends React.PureComponent> { } } - getIntervalProps = ( - props: GetIntervalProps = {}, - ): HTMLAttributes => { + getIntervalProps = (props: GetIntervalProps = {}): HTMLAttributes => { return { ...this.props.getIntervalProps({ interval: this.props.interval, @@ -70,10 +62,8 @@ class Interval extends React.PureComponent> { return (
{intervalText}
diff --git a/src/lib/markers/public/TimelineMarkers.ts b/src/lib/markers/public/TimelineMarkers.tsx similarity index 100% rename from src/lib/markers/public/TimelineMarkers.ts rename to src/lib/markers/public/TimelineMarkers.tsx From 93567a1ef62494c91545c106bee73895c9c97dfe Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 16 Jan 2024 18:17:35 +0200 Subject: [PATCH 30/50] Fix header rendering --- src/lib/headers/CustomHeader.tsx | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index 1a2bcc389..a1124b823 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -36,12 +36,6 @@ type State = { intervals: Interval[] } -type GetIntervalStyleParams = { - left: number - labelWidth: number - style?: CSSProperties -} - class CustomHeader extends React.Component, State> { constructor(props: CustomHeaderProps) { super(props) @@ -60,7 +54,7 @@ class CustomHeader extends React.Component, State> } } - shouldComponentUpdate(nextProps: CustomHeaderProps) { + /*shouldComponentUpdate(nextProps: CustomHeaderProps) { if ( nextProps.canvasTimeStart !== this.props.canvasTimeStart || nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || @@ -74,7 +68,7 @@ class CustomHeader extends React.Component, State> return true } return false - } + }*/ componentDidUpdate(prevProps: CustomHeaderProps) { if ( prevProps.canvasTimeStart !== this.props.canvasTimeStart || @@ -136,24 +130,16 @@ class CustomHeader extends React.Component, State> if (!interval) throw new Error('you should provide interval to the prop getter') const { startTime, labelWidth, left } = interval return { - style: this.getIntervalStyle({ - style, - labelWidth, + style: { + ...style, left, - }), + width: labelWidth, + position: 'absolute', + }, key: `label-${startTime.valueOf()}`, } } - getIntervalStyle = ({ left, labelWidth, style }: GetIntervalStyleParams) => { - return { - ...style, - left, - width: labelWidth, - position: 'absolute', - } - } - getStateAndHelpers = (): CustomDateHeaderProps => { const { /*canvasTimeStart, From 79aae94ee844f1121978a9a4396c02714b7c416b Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 16 Jan 2024 18:18:44 +0200 Subject: [PATCH 31/50] version update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c418be618..2a7484638 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.6", + "version": "1.0.7", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { From 32893b60c4bf08b7dcd61f06f358e6bc6205056f Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Thu, 18 Jan 2024 14:41:57 +0200 Subject: [PATCH 32/50] fixes and way to set dayjs locale --- package.json | 5 ++- src/lib/Timeline.tsx | 6 ++- src/lib/headers/DateHeader.tsx | 73 +++++++++++++++++++++++++++------- vite.config.mts | 5 ++- 4 files changed, 69 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 2a7484638..0037a1311 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.7", + "version": "1.0.11", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { @@ -13,6 +13,7 @@ "main": "./dist/react-calendar-timeline-4ef.umd.js", "module": "./dist/react-calendar-timeline-4ef.es.js", "exports": { + "./styles.css": "./dist/styles.css", ".": { "types": [ "./dist/index.d.ts" @@ -46,7 +47,7 @@ "memoize-one": "^6.0.0" }, "peerDependencies": { - "dayjs": "*", + "dayjs": ">=1.10.0", "interactjs": "^1.10.24", "react": ">=18", "react-dom": ">=18" diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index de79a02a7..6f29b2ab5 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -6,7 +6,6 @@ import GroupRows, { RowClickEvent } from './row/GroupRows' import ScrollElement from './scroll/ScrollElement' import MarkerCanvas from './markers/MarkerCanvas' import windowResizeDetector from '../resize-detector/window' - import { getMinUnit, calculateTimeForXPosition, @@ -37,10 +36,12 @@ import { Unit, } from './types/main' import { ItemDimension } from './types/dimension' -import { Dayjs } from 'dayjs' +import dayjs, { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' import './Timeline.scss' import PropTypes from 'prop-types' +import localizedFormat from 'dayjs/plugin/localizedFormat' +dayjs.extend(localizedFormat) export type OnTimeChange = ( visibleTimeStart: number, @@ -156,6 +157,7 @@ export default class ReactCalendarTimeline< static childContextType = { getTimelineContext: PropTypes.func, } + static setDayjsLocale = dayjs.locale public static defaultProps = { sidebarWidth: 150, rightSidebarWidth: 0, diff --git a/src/lib/headers/DateHeader.tsx b/src/lib/headers/DateHeader.tsx index b6e9cef9c..ed9e27343 100644 --- a/src/lib/headers/DateHeader.tsx +++ b/src/lib/headers/DateHeader.tsx @@ -28,7 +28,10 @@ export interface DateHeaderProps { className?: string | undefined unit?: keyof TimelineTimeSteps | 'primaryHeader' | undefined timelineUnit: SelectUnits - labelFormat?: string | (([startTime, endTime]: [Dayjs, Dayjs], unit: UnitType | 'primaryHeader', labelWidth: number) => string) | undefined + labelFormat?: + | string + | (([startTime, endTime]: [Dayjs, Dayjs], unit: UnitType | 'primaryHeader', labelWidth: number) => string) + | undefined intervalRenderer?: (props: IntervalRenderer) => ReactNode headerData?: Data | undefined children?: ((props: SidebarHeaderChildrenFnProps) => ReactNode) | undefined @@ -64,21 +67,37 @@ class DateHeaderInner extends React.Component> { } } - getHeaderData: GetHeaderData = memoize((intervalRenderer, style, className, getLabelFormat, unitProp, headerData) => { - return { - intervalRenderer, - style, - className, - getLabelFormat, - unitProp, - headerData, - } - }) + getHeaderData: GetHeaderData = memoize( + (intervalRenderer, style, className, getLabelFormat, unitProp, headerData) => { + return { + intervalRenderer, + style, + className, + getLabelFormat, + unitProp, + headerData, + } + }, + ) render() { const unit = this.getHeaderUnit() const { height } = this.props - return + return ( + + ) } } @@ -92,18 +111,42 @@ export type DateHeaderWrapper = { height?: number } -export function DateHeader({ unit, labelFormat, style, className, intervalRenderer, headerData, height }: DateHeaderWrapper) { +export function DateHeader({ + labelFormat, + unit, + style, + className, + intervalRenderer, + headerData, + height, +}: DateHeaderWrapper) { return ( {({ getTimelineState }) => { const timelineState = getTimelineState() - return + return ( + + ) }} ) } -function formatLabel([timeStart]: [Dayjs, Dayjs], unit: keyof typeof defaultHeaderFormats, labelWidth: number, formatOptions = defaultHeaderFormats) { +function formatLabel( + [timeStart]: [Dayjs, Dayjs], + unit: keyof typeof defaultHeaderFormats, + labelWidth: number, + formatOptions = defaultHeaderFormats, +) { let format if (labelWidth >= 150) { format = formatOptions[unit]['long'] diff --git a/vite.config.mts b/vite.config.mts index f93b9f53d..cf979c991 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -12,7 +12,10 @@ export default defineConfig({ outDir: 'dist', sourcemap: true, lib: { - entry: resolve("src", 'index.ts'), + entry: { + index: resolve("src", 'index.ts'), + styles: resolve("src/lib", 'Timeline.scss') + }, name: 'react-calendar-timeline-4ef', fileName: (format) => `react-calendar-timeline-4ef.${format}.js` }, From d931c778f3ae40ac7e41e711bebe33018a7aece5 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 27 Feb 2024 17:49:00 +0200 Subject: [PATCH 33/50] fix items stuck --- src/lib/utility/calendar.tsx | 239 +++++++++++++++++++++++++++++++---- 1 file changed, 211 insertions(+), 28 deletions(-) diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index ed374cac0..11420ec63 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -1,7 +1,16 @@ import dayjs, { Dayjs } from 'dayjs' import { _get } from './generic' import { Dimension, ItemDimension } from '../types/dimension' -import { GroupedItem, GroupOrders, GroupStack, Id, TimelineGroupBase, TimelineItemBase, TimelineKeys, TimelineTimeSteps } from '../types/main' +import { + GroupedItem, + GroupOrders, + GroupStack, + Id, + TimelineGroupBase, + TimelineItemBase, + TimelineKeys, + TimelineTimeSteps, +} from '../types/main' import { ReactCalendarTimelineProps, ReactCalendarTimelineState } from '../Timeline' /** @@ -24,7 +33,12 @@ export function coordinateToTimeRatio(canvasTimeStart: number, canvasTimeEnd: nu * @param {number} time * @returns {number} */ -export function calculateXPositionForTime(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, time: number): number { +export function calculateXPositionForTime( + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + time: number, +): number { const widthToZoomRatio = canvasWidth / (canvasTimeEnd - canvasTimeStart) const timeOffset = time - canvasTimeStart @@ -40,7 +54,12 @@ export function calculateXPositionForTime(canvasTimeStart: number, canvasTimeEnd * @param {number} leftOffset * @returns {number} */ -export function calculateTimeForXPosition(canvasTimeStart: number, canvasTimeEnd: number, canvasWidth: number, leftOffset: number): number { +export function calculateTimeForXPosition( + canvasTimeStart: number, + canvasTimeEnd: number, + canvasWidth: number, + leftOffset: number, +): number { const timeToPxRatio = (canvasTimeEnd - canvasTimeStart) / canvasWidth const timeFromCanvasTimeStart = timeToPxRatio * leftOffset @@ -48,7 +67,13 @@ export function calculateTimeForXPosition(canvasTimeStart: number, canvasTimeEnd return timeFromCanvasTimeStart + canvasTimeStart } -export function iterateTimes(start: number, end: number, unit: keyof TimelineTimeSteps, timeSteps: TimelineTimeSteps, callback: (time: Dayjs, nextTime: Dayjs) => void) { +export function iterateTimes( + start: number, + end: number, + unit: keyof TimelineTimeSteps, + timeSteps: TimelineTimeSteps, + callback: (time: Dayjs, nextTime: Dayjs) => void, +) { let time = dayjs(start).startOf(unit) if (timeSteps[unit] && timeSteps[unit] > 1) { @@ -160,14 +185,45 @@ export function getNextUnit(unit: SelectUnits): SelectUnitsRes { * @param {`right` or `left`} resizingEdge resize edge * @param {*} resizeTime new resize time in milliseconds */ -export function calculateInteractionNewTimes({ itemTimeStart, itemTimeEnd, dragTime, isDragging, isResizing, resizingEdge, resizeTime }: { itemTimeStart: number; itemTimeEnd: number; dragTime: number | null; isDragging: boolean; isResizing: boolean; resizingEdge: 'left' | 'right' | null; resizeTime: number | null }): [number, number] { +export function calculateInteractionNewTimes({ + itemTimeStart, + itemTimeEnd, + dragTime, + isDragging, + isResizing, + resizingEdge, + resizeTime, +}: { + itemTimeStart: number + itemTimeEnd: number + dragTime: number | null + isDragging: boolean + isResizing: boolean + resizingEdge: 'left' | 'right' | null + resizeTime: number | null +}): [number, number] { const originalItemRange = itemTimeEnd - itemTimeStart const itemStart = isResizing && resizingEdge === 'left' && resizeTime ? resizeTime : itemTimeStart const itemEnd = isResizing && resizingEdge === 'right' && resizeTime ? resizeTime : itemTimeEnd - return [isDragging && dragTime ? dragTime : itemStart, isDragging && dragTime ? dragTime + originalItemRange : itemEnd] + return [ + isDragging && dragTime ? dragTime : itemStart, + isDragging && dragTime ? dragTime + originalItemRange : itemEnd, + ] } -export function calculateDimensions({ itemTimeStart, itemTimeEnd, canvasTimeStart, canvasTimeEnd, canvasWidth }: { itemTimeStart: number; itemTimeEnd: number; canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number }): Partial { +export function calculateDimensions({ + itemTimeStart, + itemTimeEnd, + canvasTimeStart, + canvasTimeEnd, + canvasWidth, +}: { + itemTimeStart: number + itemTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number +}): Partial { const itemTimeRange = itemTimeEnd - itemTimeStart // restrict startTime and endTime to be bounded by canvasTimeStart and canvasTimeEnd @@ -178,14 +234,12 @@ export function calculateDimensions({ itemTimeStart, itemTimeEnd, canvasTimeStar const right = calculateXPositionForTime(canvasTimeStart, canvasTimeEnd, canvasWidth, effectiveEndTime) const itemWidth = right - left - const dimensions = { + return { left: left, width: Math.max(itemWidth, 3), collisionLeft: itemTimeStart, collisionWidth: itemTimeRange, } - - return dimensions } /** @@ -260,26 +314,39 @@ export function collision(a: Dimension, b: Dimension, collisionPadding: number = // 2d collisions detection - https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection const verticalMargin = 0 - return a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && a.collisionLeft + a.collisionWidth - collisionPadding > b.collisionLeft && (a.top ?? 0) - verticalMargin + collisionPadding < (b.top ?? 0) + b.height && (a.top ?? 0) + a.height + verticalMargin - collisionPadding > (b.top ?? 0) + return ( + a.collisionLeft + collisionPadding < b.collisionLeft + b.collisionWidth && + a.collisionLeft + a.collisionWidth - collisionPadding > b.collisionLeft && + a.top! - verticalMargin + collisionPadding < b.top! + b.height && + a.top! + a.height + verticalMargin - collisionPadding > b.top! + ) } /** * Calculate the position of a given item for a group that * is being stacked */ -export function groupStack(lineHeight: number, item: ItemDimension, group: ItemDimension[], groupHeight: number, groupTop: number, itemIndex: number): GroupStack { +export function groupStack( + lineHeight: number, + item: ItemDimension, + group: ItemDimension[], + groupHeight: number, + groupTop: number, + itemIndex: number, +): GroupStack { // calculate non-overlapping positions let curHeight = groupHeight - const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 - if (item.dimensions && item.dimensions.stack && item.dimensions.top === null) { + const verticalMargin = (lineHeight - item.dimensions.height) / 2 + if (item.dimensions.stack && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin curHeight = Math.max(curHeight, lineHeight) - let collidingItem = null do { + // noinspection ES6ConvertVarToLetConst converting it to a const create an infinite loop (why?) + var collidingItem = null //Items are placed from i=0 onwards, only check items with index < i for (let j = itemIndex - 1, jj = 0; j >= jj; j--) { const other = group[j] - if (other.dimensions && other.dimensions.top !== null && other.dimensions.stack && collision(item.dimensions, other.dimensions, lineHeight)) { + if (other.dimensions.top !== null && other.dimensions.stack && collision(item.dimensions, other.dimensions)) { collidingItem = other break } else { @@ -297,12 +364,17 @@ export function groupStack(lineHeight: number, item: ItemDimension, group: ItemD return { groupHeight: curHeight, verticalMargin, - itemTop: item.dimensions?.top ?? 0, + itemTop: item.dimensions.top!, } } // Calculate the position of this item for a group that is not being stacked -export function groupNoStack(lineHeight: number, item: ItemDimension, groupHeight: number, groupTop: number): GroupStack { +export function groupNoStack( + lineHeight: number, + item: ItemDimension, + groupHeight: number, + groupTop: number, +): GroupStack { const verticalMargin = (lineHeight - (item.dimensions?.height ?? 1)) / 2 if (item.dimensions && item.dimensions.top === null) { item.dimensions.top = groupTop + verticalMargin @@ -322,7 +394,12 @@ function sum(arr: number[] = []) { * @param {*} lineHeight * @param {*} stackItems should items be stacked? */ -export function stackAll(itemsDimensions: ItemDimension[], groupOrders: GroupOrders, lineHeight: number, stackItems: boolean) { +export function stackAll( + itemsDimensions: ItemDimension[], + groupOrders: GroupOrders, + lineHeight: number, + stackItems: boolean, +) { const groupHeights: number[] = [] const groupTops: number[] = [] @@ -360,12 +437,19 @@ export function stackAll(itemsDimensions: ItemDimension[], groupOrders: GroupOrd * @param {*} lineHeight * @param {*} groupTop */ -export function stackGroup(itemsDimensions: ItemDimension[], isGroupStacked: boolean, lineHeight: number, groupTop: number) { +export function stackGroup( + itemsDimensions: ItemDimension[], + isGroupStacked: boolean, + lineHeight: number, + groupTop: number, +) { let groupHeight = 0 let verticalMargin = 0 // Find positions for each item in group for (let itemIndex = 0; itemIndex < itemsDimensions.length; itemIndex++) { - const r = isGroupStacked ? groupStack(lineHeight, itemsDimensions[itemIndex], itemsDimensions, groupHeight, groupTop, itemIndex) : groupNoStack(lineHeight, itemsDimensions[itemIndex], groupHeight, groupTop) + const r = isGroupStacked + ? groupStack(lineHeight, itemsDimensions[itemIndex], itemsDimensions, groupHeight, groupTop, itemIndex) + : groupNoStack(lineHeight, itemsDimensions[itemIndex], groupHeight, groupTop) groupHeight = r.groupHeight verticalMargin = r.verticalMargin @@ -392,7 +476,26 @@ export function stackGroup(itemsDimensions: ItemDimension[], isGroupStacked: boo * @param {number} resizeTime * @param {number} newGroupOrder */ -export function stackTimelineItems = TimelineItemBase, CustomGroup extends TimelineGroupBase = TimelineGroupBase>(items: CustomItem[], groups: CustomGroup[], canvasWidth: number, canvasTimeStart: number, canvasTimeEnd: number, keys: TimelineKeys, lineHeight: number, itemHeightRatio: number, stackItems: boolean, draggingItem: Id | null | undefined, resizingItem: Id | null | undefined, dragTime: number | null, resizingEdge: 'left' | 'right' | null, resizeTime: number | null, newGroupOrder: number) { +export function stackTimelineItems< + CustomItem extends TimelineItemBase = TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +>( + items: CustomItem[], + groups: CustomGroup[], + canvasWidth: number, + canvasTimeStart: number, + canvasTimeEnd: number, + keys: TimelineKeys, + lineHeight: number, + itemHeightRatio: number, + stackItems: boolean, + draggingItem: Id | null | undefined, + resizingItem: Id | null | undefined, + dragTime: number | null, + resizingEdge: 'left' | 'right' | null, + resizeTime: number | null, + newGroupOrder: number, +) { const visibleItems = getVisibleItems(items, canvasTimeStart, canvasTimeEnd, keys) const visibleItemsWithInteraction = visibleItems.map((item) => getItemWithInteractions({ @@ -459,7 +562,25 @@ export function getCanvasWidth(width: number, buffer: number) { * @param {*} lineHeight * @param {*} itemHeightRatio */ -export function getItemDimensions>({ item, keys, canvasTimeStart, canvasTimeEnd, canvasWidth, groupOrders, lineHeight, itemHeightRatio }: { item: CustomItem; keys: TimelineKeys; canvasTimeStart: number; canvasTimeEnd: number; canvasWidth: number; groupOrders: GroupOrders; lineHeight: number; itemHeightRatio: number }): ItemDimension | undefined { +export function getItemDimensions>({ + item, + keys, + canvasTimeStart, + canvasTimeEnd, + canvasWidth, + groupOrders, + lineHeight, + itemHeightRatio, +}: { + item: CustomItem + keys: TimelineKeys + canvasTimeStart: number + canvasTimeEnd: number + canvasWidth: number + groupOrders: GroupOrders + lineHeight: number + itemHeightRatio: number +}): ItemDimension | undefined { const itemId = _get(item, keys.itemIdKey) const dimension = calculateDimensions({ itemTimeStart: _get(item, keys.itemTimeStartKey), @@ -493,7 +614,30 @@ export function getItemDimensions>({ it * @param {*} groups * @param {*} newGroupOrder */ -export function getItemWithInteractions, CustomGroup extends TimelineGroupBase = TimelineGroupBase>({ item, keys, draggingItem, resizingItem, dragTime, resizingEdge, resizeTime, groups, newGroupOrder }: { item: CustomItem; keys: TimelineKeys; draggingItem: Id | null | undefined; resizingItem: Id | null | undefined; dragTime: number | null; resizingEdge: 'left' | 'right' | null; resizeTime: number | null; groups: CustomGroup[]; newGroupOrder: number }) { +export function getItemWithInteractions< + CustomItem extends TimelineItemBase, + CustomGroup extends TimelineGroupBase = TimelineGroupBase, +>({ + item, + keys, + draggingItem, + resizingItem, + dragTime, + resizingEdge, + resizeTime, + groups, + newGroupOrder, +}: { + item: CustomItem + keys: TimelineKeys + draggingItem: Id | null | undefined + resizingItem: Id | null | undefined + dragTime: number | null + resizingEdge: 'left' | 'right' | null + resizeTime: number | null + groups: CustomGroup[] + newGroupOrder: number +}) { if (!resizingItem && !draggingItem) return item const itemId = _get(item, keys.itemIdKey) const isDragging = itemId === draggingItem @@ -542,7 +686,18 @@ export function getCanvasBoundariesFromVisibleTime(visibleTimeStart: number, vis * @param {*} props * @param {*} state */ -export function calculateScrollCanvas

, S extends ReactCalendarTimelineState>(visibleTimeStart: number, visibleTimeEnd: number, forceUpdateDimensions: boolean, items: any, groups: any, props: P, state: S): S { +export function calculateScrollCanvas< + P extends ReactCalendarTimelineProps, + S extends ReactCalendarTimelineState, +>( + visibleTimeStart: number, + visibleTimeEnd: number, + forceUpdateDimensions: boolean, + items: any, + groups: any, + props: P, + state: S, +): S { const buffer = props.buffer const oldCanvasTimeStart = state.canvasTimeStart const oldCanvasTimeEnd = state.canvasTimeEnd @@ -555,10 +710,19 @@ export function calculateScrollCanvas

= oldCanvasTimeStart + oldZoom * 0.5 && visibleTimeStart <= oldCanvasTimeEnd - oldZoom * 1.5 && visibleTimeEnd >= oldCanvasTimeStart + oldZoom * 1.5 && visibleTimeEnd <= oldCanvasTimeEnd - oldZoom * 0.5 + const canKeepCanvas = + newZoom === oldZoom && + visibleTimeStart >= oldCanvasTimeStart + oldZoom * 0.5 && + visibleTimeStart <= oldCanvasTimeEnd - oldZoom * 1.5 && + visibleTimeEnd >= oldCanvasTimeStart + oldZoom * 1.5 && + visibleTimeEnd <= oldCanvasTimeEnd - oldZoom * 0.5 if (!canKeepCanvas || forceUpdateDimensions) { - const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime(visibleTimeStart, visibleTimeEnd, buffer!) + const [canvasTimeStart, canvasTimeEnd] = getCanvasBoundariesFromVisibleTime( + visibleTimeStart, + visibleTimeEnd, + buffer!, + ) newState.canvasTimeStart = canvasTimeStart newState.canvasTimeEnd = canvasTimeEnd const mergedState = { @@ -569,7 +733,26 @@ export function calculateScrollCanvas

Date: Tue, 27 Feb 2024 17:49:37 +0200 Subject: [PATCH 34/50] fix items stuck 2 --- src/lib/utility/calendar.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 11420ec63..9682e474a 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -341,7 +341,8 @@ export function groupStack( item.dimensions.top = groupTop + verticalMargin curHeight = Math.max(curHeight, lineHeight) do { - // noinspection ES6ConvertVarToLetConst converting it to a const create an infinite loop (why?) + // converting it to a const create an infinite loop (why?) + // noinspection ES6ConvertVarToLetConst var collidingItem = null //Items are placed from i=0 onwards, only check items with index < i for (let j = itemIndex - 1, jj = 0; j >= jj; j--) { @@ -651,13 +652,12 @@ export function getItemWithInteractions< resizingEdge, resizeTime, }) - const newItem = { + return { ...item, [keys.itemTimeStartKey]: itemTimeStart, [keys.itemTimeEndKey]: itemTimeEnd, [keys.itemGroupKey]: isDragging ? _get(groups[newGroupOrder], keys.groupIdKey) : _get(item, keys.itemGroupKey), } - return newItem } /** From 759eef6aa1ab419c938682519dc6c30db1d525f4 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 27 Feb 2024 17:50:24 +0200 Subject: [PATCH 35/50] fix items stuck 3 --- src/lib/utility/calendar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index 9682e474a..febc1b744 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-var */ import dayjs, { Dayjs } from 'dayjs' import { _get } from './generic' import { Dimension, ItemDimension } from '../types/dimension' From 87f32f2a8bdb170a11977237b72ffd5c38b99bbc Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Wed, 28 Feb 2024 13:07:32 +0200 Subject: [PATCH 36/50] Drag performance improvements --- .eslintrc.json | 5 + .prettierrc | 3 +- package.json | 14 +-- src/lib/Timeline.tsx | 32 ++---- src/lib/items/Item.tsx | 103 +++++++++++++++--- src/lib/items/Items.tsx | 29 ++++- src/lib/items/styles.ts | 20 ++-- .../markers/implementations/CursorMarker.tsx | 2 +- .../markers/implementations/CustomMarker.tsx | 2 +- src/lib/types/main.ts | 81 +------------- tsconfig.json | 2 +- 11 files changed, 152 insertions(+), 141 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 80d6c6975..39d4ed38b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,6 +5,11 @@ "node": true, "es6": true }, + "settings": { + "react": { + "version": "detect" + } + }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", diff --git a/.prettierrc b/.prettierrc index b3977820d..e853dcdbb 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "printWidth": 120, "singleQuote": true, - "semi": false + "semi": false, + "trailingComma": "all" } diff --git a/package.json b/package.json index 0037a1311..36b28de81 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.11", + "version": "1.0.12", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { "build-vite": "tsc && vite build", - "lint": "eslint --ext .js --ext .jsx ./src", + "lint": "eslint --ext .ts --ext .tsx ./src", "lint:fix": "npm run lint --fix", "test": "jest", "test:watch": "jest --watch" @@ -48,7 +48,7 @@ }, "peerDependencies": { "dayjs": ">=1.10.0", - "interactjs": "^1.10.24", + "interactjs": "1.10.26", "react": ">=18", "react-dom": ">=18" }, @@ -75,7 +75,7 @@ "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "interactjs": "^1.10.24", + "interactjs": "1.10.26", "jest": "^29.7.0", "jest-watch-typeahead": "^2.2.2", "jsdom": "^23.0.1", @@ -87,8 +87,8 @@ "react-dom": "18.2.0", "sass": "^1.69.5", "typescript": "^5.2.2", - "vite": "^5.0.8", - "vite-plugin-dts": "^3.6.4", - "vite-plugin-lib-inject-css": "^1.3.0" + "vite": "5.0.8", + "vite-plugin-dts": "3.6.4", + "vite-plugin-lib-inject-css": "1.3.0" } } diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 6f29b2ab5..4299db327 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -39,8 +39,8 @@ import { ItemDimension } from './types/dimension' import dayjs, { Dayjs } from 'dayjs' import { ItemProps, ResizeEdge } from './items/Item' import './Timeline.scss' -import PropTypes from 'prop-types' import localizedFormat from 'dayjs/plugin/localizedFormat' + dayjs.extend(localizedFormat) export type OnTimeChange = ( @@ -154,9 +154,6 @@ export default class ReactCalendarTimeline< ReactCalendarTimelineProps, ReactCalendarTimelineState > { - static childContextType = { - getTimelineContext: PropTypes.func, - } static setDayjsLocale = dayjs.locale public static defaultProps = { sidebarWidth: 150, @@ -231,24 +228,20 @@ export default class ReactCalendarTimeline< selected: null, } - getChildContext() { - return { - getTimelineContext: () => { - return this.getTimelineContext() - }, - } - } - - getTimelineContext = () => { + getTimelineContext = (): TimelineContext => { const { width, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd } = this.state - + const zoom = visibleTimeEnd - visibleTimeStart + const canvasWidth = getCanvasWidth(width, this.props.buffer!) + const minUnit = getMinUnit(zoom, width, this.props.timeSteps) return { + canvasWidth, + timelineUnit: minUnit, timelineWidth: width, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd, - } as TimelineContext + } } getTimelineUnit = () => { @@ -583,7 +576,7 @@ export default class ReactCalendarTimeline< // from. Look to consolidate the logic for determining coordinate to time // as well as generalizing how we get time from click on the canvas getTimeFromRowClickEvent = (e: MouseEvent) => { - const { dragSnap = 1, buffer } = this.props + const { dragSnap, buffer } = this.props const { width, canvasTimeStart, canvasTimeEnd } = this.state // this gives us distance from left of row element, so event is in // context of the row element, not client or page @@ -596,14 +589,14 @@ export default class ReactCalendarTimeline< getCanvasWidth(width, buffer!), offsetX, ) - time = Math.floor(time / dragSnap) * dragSnap + time = Math.floor(time / dragSnap!) * dragSnap! return time } timeFromItemEvent = (e: MouseEvent) => { const { width, visibleTimeStart, visibleTimeEnd } = this.state - const { dragSnap = 1 } = this.props + const dragSnap = this.props.dragSnap! const scrollComponent = this.scrollComponent! const { left: scrollX } = scrollComponent.getBoundingClientRect() @@ -1066,7 +1059,4 @@ export default class ReactCalendarTimeline< ) } - static childContextTypes = { - getTimelineContext: PropTypes.func, - } } diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index 309a48305..30bdd2845 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -1,22 +1,46 @@ -import { Component, CSSProperties, MouseEventHandler, ReactNode, TouchEventHandler, MouseEvent, TouchEvent, HTMLAttributes, LegacyRef } from 'react' +import { + Component, + CSSProperties, + HTMLAttributes, + LegacyRef, + MouseEvent, + MouseEventHandler, + ReactNode, + TouchEvent, + TouchEventHandler, +} from 'react' import interact from 'interactjs' import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' - -dayjs.extend(utc) - -import { _get, deepObjectCompare } from '../utility/generic' +import { _get } from '../utility/generic' import { composeEvents } from '../utility/events' import { defaultItemRenderer } from './defaultItemRenderer' import { coordinateToTimeRatio } from '../utility/calendar' -import { getSumScroll, getSumOffset } from '../utility/dom-helpers' -import { overridableStyles, selectedStyle, selectedAndCanMove, selectedAndCanResizeLeft, selectedAndCanResizeLeftAndDragLeft, selectedAndCanResizeRight, selectedAndCanResizeRightAndDragRight, leftResizeStyle, rightResizeStyle } from './styles' +import { getSumOffset, getSumScroll } from '../utility/dom-helpers' +import { + leftResizeStyle, + overridableStyles, + rightResizeStyle, + selectedAndCanMove, + selectedAndCanResizeLeft, + selectedAndCanResizeLeftAndDragLeft, + selectedAndCanResizeRight, + selectedAndCanResizeRightAndDragRight, + selectedStyle, +} from './styles' import { Id, ItemContext, TimelineItemBase, TimelineKeys } from '../types/main' -import { TimelineContext, TimelineContextType } from '../timeline/TimelineStateContext.tsx' +import { TimelineContext, TimelineContextType } from '../timeline/TimelineStateContext' +import isEqual from 'lodash/isEqual' + +dayjs.extend(utc) export type ResizeEdge = 'left' | 'right' -type OnSelect = (itemId: string | null, clickType: 'click' | 'touch', event: MouseEvent | TouchEvent) => void +type OnSelect = ( + itemId: string | null, + clickType: 'click' | 'touch', + event: MouseEvent | TouchEvent, +) => void export type ItemProps> = { canvasTimeStart: number @@ -30,7 +54,12 @@ export type ItemProps> = { onDrop: (itemId: string, dragTime: number, newGroupOrder: number) => void onResizing: (itemId: string, time: number, resizeEdge: ResizeEdge | null) => void onResized: (itemId: string, time: number, resizeEdge: ResizeEdge | null, delta: number) => void - moveResizeValidator?: (action: 'move' | 'resize', item: TimelineItemBase, time: number, resizeEdge?: ResizeEdge | null) => number + moveResizeValidator?: ( + action: 'move' | 'resize', + item: TimelineItemBase, + time: number, + resizeEdge?: ResizeEdge | null, + ) => number itemRenderer?: (props: ItemRendererProps) => ReactNode selected: boolean canChangeGroup?: boolean @@ -90,7 +119,10 @@ export type GetResizeProps = (params?: GetItemPropsParams) => { left: GetResizePropsDirection } -export default class Item> extends Component, ItemState> { +export default class Item> extends Component< + ItemProps, + ItemState +> { static defaultProps = { selected: false, itemRenderer: defaultItemRenderer, @@ -130,8 +162,30 @@ export default class Item> extends C } shouldComponentUpdate(nextProps: ItemProps, nextState: ItemState) { - const shouldUpdate = nextState.dragging !== this.state.dragging || nextState.dragTime !== this.state.dragTime || nextState.dragGroupDelta !== this.state.dragGroupDelta || nextState.resizing !== this.state.resizing || nextState.resizeTime !== this.state.resizeTime || nextProps.keys !== this.props.keys || !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || nextProps.selected !== this.props.selected || nextProps.item !== this.props.item || nextProps.canvasTimeStart !== this.props.canvasTimeStart || nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || nextProps.canvasWidth !== this.props.canvasWidth || (nextProps.order ? nextProps.order.index : undefined) !== (this.props.order ? this.props.order.index : undefined) || nextProps.dragSnap !== this.props.dragSnap || nextProps.minResizeWidth !== this.props.minResizeWidth || nextProps.canChangeGroup !== this.props.canChangeGroup || nextProps.canSelect !== this.props.canSelect || nextProps.canMove !== this.props.canMove || nextProps.canResizeLeft !== this.props.canResizeLeft || nextProps.canResizeRight !== this.props.canResizeRight || nextProps.dimensions !== this.props.dimensions - return shouldUpdate + /*const shouldUpdate = + nextState.dragging !== this.state.dragging || + nextState.dragTime !== this.state.dragTime || + nextState.dragGroupDelta !== this.state.dragGroupDelta || + nextState.resizing !== this.state.resizing || + nextState.resizeTime !== this.state.resizeTime || + nextProps.keys !== this.props.keys || + !deepObjectCompare(nextProps.itemProps, this.props.itemProps) || + nextProps.selected !== this.props.selected || + nextProps.item !== this.props.item || + nextProps.canvasTimeStart !== this.props.canvasTimeStart || + nextProps.canvasTimeEnd !== this.props.canvasTimeEnd || + nextProps.canvasWidth !== this.props.canvasWidth || + (nextProps.order ? nextProps.order.index : undefined) !== + (this.props.order ? this.props.order.index : undefined) || + nextProps.dragSnap !== this.props.dragSnap || + nextProps.minResizeWidth !== this.props.minResizeWidth || + nextProps.canChangeGroup !== this.props.canChangeGroup || + nextProps.canSelect !== this.props.canSelect || + nextProps.canMove !== this.props.canMove || + nextProps.canResizeLeft !== this.props.canResizeLeft || + nextProps.canResizeRight !== this.props.canResizeRight || + nextProps.dimensions !== this.props.dimensions*/ + return !isEqual(this.props, nextProps) || !isEqual(this.state, nextState) } cacheDataFromProps(props: ItemProps) { @@ -246,6 +300,7 @@ export default class Item> extends C enabled: this.props.selected && (this.canResizeLeft() || this.canResizeRight()), }) .draggable({ + delay: 0, enabled: this.props.selected && this.canMove(), }) .styleCursor(false) @@ -405,7 +460,10 @@ export default class Item> extends C this.mountInteract() interactMounted = true } - if (interactMounted && (couldResizeLeft !== willBeAbleToResizeLeft || couldResizeRight !== willBeAbleToResizeRight)) { + if ( + interactMounted && + (couldResizeLeft !== willBeAbleToResizeLeft || couldResizeRight !== willBeAbleToResizeRight) + ) { const leftResize = this.props.useResizeHandle ? this.dragLeft : true const rightResize = this.props.useResizeHandle ? this.dragRight : true @@ -541,7 +599,22 @@ export default class Item> extends C lineHeight: `${dimensions.height}px`, } - const finalStyle = Object.assign({}, overridableStyles, this.props.selected ? selectedStyle : {}, this.props.selected && this.canMove(this.props) ? selectedAndCanMove : {}, this.props.selected && this.canResizeLeft(this.props) ? selectedAndCanResizeLeft : {}, this.props.selected && this.canResizeLeft(this.props) && this.state.dragging ? selectedAndCanResizeLeftAndDragLeft : {}, this.props.selected && this.canResizeRight(this.props) ? selectedAndCanResizeRight : {}, this.props.selected && this.canResizeRight(this.props) && this.state.dragging ? selectedAndCanResizeRightAndDragRight : {}, props.style, baseStyles) + const finalStyle = Object.assign( + {}, + overridableStyles, + this.props.selected ? selectedStyle : {}, + this.props.selected && this.canMove(this.props) ? selectedAndCanMove : {}, + this.props.selected && this.canResizeLeft(this.props) ? selectedAndCanResizeLeft : {}, + this.props.selected && this.canResizeLeft(this.props) && this.state.dragging + ? selectedAndCanResizeLeftAndDragLeft + : {}, + this.props.selected && this.canResizeRight(this.props) ? selectedAndCanResizeRight : {}, + this.props.selected && this.canResizeRight(this.props) && this.state.dragging + ? selectedAndCanResizeRightAndDragRight + : {}, + props.style, + baseStyles, + ) return finalStyle } diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index c9850ce2a..417101baf 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -3,7 +3,7 @@ import Item, { ItemProps } from './Item' import { _get, arraysEqual, keyBy } from '../utility/generic' import { getGroupOrders, getVisibleItems } from '../utility/calendar' import { Id, TimelineGroupBase, TimelineItemBase, TimelineKeys } from '../types/main' -import { ItemDimension } from '../types/dimension.ts' +import { ItemDimension } from '../types/dimension' export type CanResize = true | false | 'left' | 'right' | 'both' type ItemsProps> = { @@ -54,9 +54,28 @@ function canResizeRight>(item: Custo return value === 'right' || value === 'both' || value === true } -export default class Items> extends Component, ItemsState> { +export default class Items> extends Component< + ItemsProps, + ItemsState +> { shouldComponentUpdate(nextProps: ItemsProps) { - return !(arraysEqual(nextProps.groups, this.props.groups) && arraysEqual(nextProps.items, this.props.items) && arraysEqual(nextProps.dimensionItems, this.props.dimensionItems) && nextProps.keys === this.props.keys && nextProps.canvasTimeStart === this.props.canvasTimeStart && nextProps.canvasTimeEnd === this.props.canvasTimeEnd && nextProps.canvasWidth === this.props.canvasWidth && nextProps.selectedItem === this.props.selectedItem && nextProps.selected === this.props.selected && nextProps.dragSnap === this.props.dragSnap && nextProps.minResizeWidth === this.props.minResizeWidth && nextProps.canChangeGroup === this.props.canChangeGroup && nextProps.canMove === this.props.canMove && nextProps.canResize === this.props.canResize && nextProps.canSelect === this.props.canSelect) + return !( + arraysEqual(nextProps.groups, this.props.groups) && + arraysEqual(nextProps.items, this.props.items) && + arraysEqual(nextProps.dimensionItems, this.props.dimensionItems) && + nextProps.keys === this.props.keys && + nextProps.canvasTimeStart === this.props.canvasTimeStart && + nextProps.canvasTimeEnd === this.props.canvasTimeEnd && + nextProps.canvasWidth === this.props.canvasWidth && + nextProps.selectedItem === this.props.selectedItem && + nextProps.selected === this.props.selected && + nextProps.dragSnap === this.props.dragSnap && + nextProps.minResizeWidth === this.props.minResizeWidth && + nextProps.canChangeGroup === this.props.canChangeGroup && + nextProps.canMove === this.props.canMove && + nextProps.canResize === this.props.canResize && + nextProps.canSelect === this.props.canSelect + ) } isSelected(item: CustomItem, itemIdKey: string) { @@ -95,7 +114,9 @@ export default class Items> extends order={groupOrders[_get(item, itemGroupKey)]} dimensions={sortedDimensionItems[_get(item, itemIdKey)].dimensions} selected={this.isSelected(item, itemIdKey)} - canChangeGroup={_get(item, 'canChangeGroup') !== undefined ? _get(item, 'canChangeGroup') : this.props.canChangeGroup} + canChangeGroup={ + _get(item, 'canChangeGroup') !== undefined ? _get(item, 'canChangeGroup') : this.props.canChangeGroup + } canMove={_get(item, 'canMove') !== undefined ? _get(item, 'canMove') : this.props.canMove} canResizeLeft={canResizeLeft(item, this.props.canResize)} canResizeRight={canResizeRight(item, this.props.canResize)} diff --git a/src/lib/items/styles.ts b/src/lib/items/styles.ts index a202ae1ac..da597a1c7 100644 --- a/src/lib/items/styles.ts +++ b/src/lib/items/styles.ts @@ -4,27 +4,28 @@ export const overridableStyles = { cursor: 'pointer', background: '#2196f3', border: '1px solid #1a6fb3', - zIndex: 80 + zIndex: 80, } export const selectedStyle = { background: '#ffc107', border: '1px solid #ff9800', - zIndex: 82 + zIndex: 82, } export const selectedAndCanMove = { - cursor: 'move' + willChange: 'left, top, width', + cursor: 'move', } export const selectedAndCanResizeLeft = { - borderLeftWidth: 3 + borderLeftWidth: 3, } export const selectedAndCanResizeLeftAndDragLeft = { - cursor: 'w-resize' + cursor: 'w-resize', } export const selectedAndCanResizeRight = { - borderRightWidth: 3 + borderRightWidth: 3, } export const selectedAndCanResizeRightAndDragRight = { - cursor: 'e-resize' + cursor: 'e-resize', } export const leftResizeStyle = { @@ -36,10 +37,9 @@ export const leftResizeStyle = { top: 0, left: 0, cursor: 'pointer', - zIndex: 88 + zIndex: 88, } - export const rightResizeStyle = { position: 'absolute', width: 24, @@ -49,5 +49,5 @@ export const rightResizeStyle = { top: 0, right: 0, cursor: 'pointer', - zIndex: 88 + zIndex: 88, } diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index 489a6145c..df9be2bca 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -1,7 +1,7 @@ import React from 'react' import { createMarkerStylesWithLeftOffset, createDefaultRenderer } from './shared' import { HandleCanvasMouseOver, MarkerCanvasConsumer } from '../MarkerCanvasContext' -import { MarkerRendererType } from '../markerType.ts' +import { MarkerRendererType } from '../markerType' const defaultRenderer = createDefaultRenderer('default-cursor-marker') diff --git a/src/lib/markers/implementations/CustomMarker.tsx b/src/lib/markers/implementations/CustomMarker.tsx index d3b410e49..96f5072c7 100644 --- a/src/lib/markers/implementations/CustomMarker.tsx +++ b/src/lib/markers/implementations/CustomMarker.tsx @@ -1,6 +1,6 @@ import React from 'react' import { createMarkerStylesWithLeftOffset, createDefaultRenderer } from './shared' -import { MarkerRendererType } from '../markerType.ts' +import { MarkerRendererType } from '../markerType' const defaultCustomMarkerRenderer = createDefaultRenderer('default-customer-marker-id') type CustomMarkerProps = { diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index a2a50c0d9..80818c1be 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -1,6 +1,5 @@ import { Dayjs } from 'dayjs' -import { ReactNode, CSSProperties, HTMLProps, MouseEventHandler, ReactEventHandler, Ref, Component, TouchEventHandler, ReactElement } from 'react' -// import reactCalendarTimeline from '../../../index' +import { ReactNode, CSSProperties, HTMLProps, MouseEventHandler, Ref, Component, ReactElement } from 'react' import { Dimension, ItemDimension } from './dimension' import { ResizeEdge } from '../items/Item' import { SelectUnits } from '../utility/calendar' @@ -41,9 +40,6 @@ export interface TimelineItemBase { dimensions?: Dimension | undefined } -export type TimelineItem = TimelineItemBase & CustomItemFields -export type TimelineGroup = TimelineGroupBase & CustomGroupFields - export interface TimelineContext { timelineWidth: number visibleTimeStart: number @@ -92,79 +88,6 @@ export interface ItemContext { resizeTime: number | null } -export interface TimeFormat { - long: string - mediumLong: string - medium: string - short: string -} - -export interface LabelFormat { - year: TimeFormat - month: TimeFormat - week: TimeFormat - day: TimeFormat - hour: TimeFormat - minute: TimeFormat -} - -export interface ItemRendererGetItemPropsReturnType { - key: Id - ref: Ref - className: string - onMouseDown: MouseEventHandler - onMouseUp: MouseEventHandler - onTouchStart: TouchEventHandler - onTouchEnd: TouchEventHandler - onDoubleClick: MouseEventHandler - onContextMenu: ReactEventHandler - style: CSSProperties -} - -export type GetItemsProps = Partial> - -export interface ItemRendererGetResizePropsReturnType { - left?: - | { - ref: Ref - className: string - style: CSSProperties - } - | undefined - right?: - | { - ref: Ref - className: string - style: CSSProperties - } - | undefined -} - -/*export type GetResizeProps = { - leftStyle?: CSSProperties | undefined - rightStyle?: CSSProperties | undefined - leftClassName?: string | undefined - rightClassName?: string | undefined -} - -export interface ReactCalendarItemRendererProps = TimelineItemBase> { - item: CustomItem - itemContext: ItemContext - getItemProps: (props: GetItemsProps) => { - key: Id - ref: Ref - className: string - onMouseDown: MouseEventHandler - onMouseUp: MouseEventHandler - onTouchStart: TouchEventHandler - onTouchEnd: TouchEventHandler - onDoubleClick: MouseEventHandler - onContextMenu: ReactEventHandler - style: CSSProperties - } - getResizeProps: (propsOverride?: GetResizeProps) => ItemRendererGetResizePropsReturnType -}*/ - export interface ReactCalendarGroupRendererProps { group: CustomGroup isRightSidebar?: boolean | undefined @@ -244,8 +167,6 @@ export interface TimelineHeadersProps { export class TimelineHeaders extends Component {} -export type TimelineHeaderProps = TimelineHeadersProps - export interface SidebarHeaderChildrenFnProps { getRootProps: (propsToOverride?: { style: CSSProperties }) => { style: CSSProperties diff --git a/tsconfig.json b/tsconfig.json index cb1aaeabd..e04396541 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,7 @@ /* Bundler mode */ "moduleResolution": "bundler", - "allowImportingTsExtensions": true, + "allowImportingTsExtensions": false, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, From b537f264433ebd9438046979d9c9939e0a74145d Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Wed, 28 Feb 2024 13:09:15 +0200 Subject: [PATCH 37/50] release + ignore --- .gitignore | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2db738b4f..7337d0ea4 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ package-lock.json coverage *.orig +dist diff --git a/package.json b/package.json index 36b28de81..be700b2f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.12", + "version": "1.0.13", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { From b40cd71d1775459985b1a357ca8d84c89bbcd4d7 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Wed, 28 Feb 2024 18:01:19 +0200 Subject: [PATCH 38/50] release and item drag setstate improvements --- package.json | 2 +- src/lib/items/Item.tsx | 32 +++++++++++++++++---------- src/lib/scroll/ScrollElement.tsx | 38 ++++++++------------------------ 3 files changed, 30 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index be700b2f3..a77489e70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.13", + "version": "1.0.14", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index 30bdd2845..d9aa347d4 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -154,6 +154,7 @@ export default class Item> extends C private dragRight?: HTMLElement private startedClicking: boolean = false private startedTouching: boolean = false + private dragInProgress: boolean = false constructor(props: ItemProps) { super(props) @@ -300,12 +301,12 @@ export default class Item> extends C enabled: this.props.selected && (this.canResizeLeft() || this.canResizeRight()), }) .draggable({ - delay: 0, enabled: this.props.selected && this.canMove(), }) .styleCursor(false) .on('dragstart', (e) => { if (this.props.selected) { + this.dragInProgress = true const clickTime = this.timeFor(e) this.setState({ dragging: true, @@ -324,25 +325,32 @@ export default class Item> extends C }) .on('dragmove', (e) => { if (this.state.dragging) { - let dragTime = this.dragTime(e) - const dragGroupDelta = this.dragGroupDelta(e) - if (this.props.moveResizeValidator) { - dragTime = this.props.moveResizeValidator('move', this.props.item, dragTime) - } + this.setState((state) => { + // stop updating when dropped already + if (!this.dragInProgress) { + return { ...state } + } + let dragTime = this.dragTime(e) + const dragGroupDelta = this.dragGroupDelta(e) + if (this.props.moveResizeValidator) { + dragTime = this.props.moveResizeValidator('move', this.props.item, dragTime) + } - if (this.props.onDrag) { - this.props.onDrag(this.itemId!, dragTime, this.props.order.index + dragGroupDelta) - } + if (this.props.onDrag) { + this.props.onDrag(this.itemId!, dragTime, this.props.order.index + dragGroupDelta) + } - this.setState({ - dragTime: dragTime, - dragGroupDelta: dragGroupDelta, + return { + dragTime: dragTime, + dragGroupDelta: dragGroupDelta, + } }) } }) .on('dragend', (e) => { if (this.state.dragging) { if (this.props.onDrop) { + this.dragInProgress = false let dragTime = this.dragTime(e) if (this.props.moveResizeValidator) { diff --git a/src/lib/scroll/ScrollElement.tsx b/src/lib/scroll/ScrollElement.tsx index 7668e4279..8bd9c254b 100644 --- a/src/lib/scroll/ScrollElement.tsx +++ b/src/lib/scroll/ScrollElement.tsx @@ -1,10 +1,4 @@ -import { - Component, - CSSProperties, - MouseEventHandler, - ReactNode, - TouchEventHandler, -} from 'react' +import { Component, CSSProperties, MouseEventHandler, ReactNode, TouchEventHandler } from 'react' import { getParentPosition } from '../utility/dom-helpers' type Props = { @@ -29,10 +23,8 @@ class ScrollElement extends Component { private dragStartPosition: number | null = null private dragLastPosition: number | null = null private lastTouchDistance: number | null = null - private singleTouchStart: { x: number; y: number; screenY: number } | null = - null - private lastSingleTouch: { x: number; y: number; screenY: number } | null = - null + private singleTouchStart: { x: number; y: number; screenY: number } | null = null + private lastSingleTouch: { x: number; y: number; screenY: number } | null = null constructor(props: Props) { super(props) this.state = { @@ -72,9 +64,7 @@ class ScrollElement extends Component { } else if (e.shiftKey) { e.preventDefault() // shift+scroll event from a touchpad has deltaY property populated; shift+scroll event from a mouse has deltaX - this.props.onScroll( - this.scrollComponent!.scrollLeft + (e.deltaY || e.deltaX), - ) + this.props.onScroll(this.scrollComponent!.scrollLeft + (e.deltaY || e.deltaX)) // no modifier pressed? we prevented the default event, so scroll or zoom as needed } } @@ -93,9 +83,7 @@ class ScrollElement extends Component { // this.props.onMouseMove(e) //why is interacting with item important? if (this.state.isDragging && !this.props.isInteractingWithItem) { - this.props.onScroll( - this.scrollComponent!.scrollLeft + this.dragLastPosition! - e.pageX, - ) + this.props.onScroll(this.scrollComponent!.scrollLeft + this.dragLastPosition! - e.pageX) this.dragLastPosition = e.pageX } } @@ -122,9 +110,7 @@ class ScrollElement extends Component { if (e.touches.length === 2) { e.preventDefault() - this.lastTouchDistance = Math.abs( - e.touches[0].screenX - e.touches[1].screenX, - ) + this.lastTouchDistance = Math.abs(e.touches[0].screenX - e.touches[1].screenX) this.singleTouchStart = null this.lastSingleTouch = null } else if (e.touches.length === 1) { @@ -147,12 +133,9 @@ class ScrollElement extends Component { } if (this.lastTouchDistance && e.touches.length === 2) { e.preventDefault() - const touchDistance = Math.abs( - e.touches[0].screenX - e.touches[1].screenX, - ) + const touchDistance = Math.abs(e.touches[0].screenX - e.touches[1].screenX) const parentPosition = getParentPosition(e.currentTarget as HTMLElement) - const xPosition = - (e.touches[0].screenX + e.touches[1].screenX) / 2 - parentPosition.x + const xPosition = (e.touches[0].screenX + e.touches[1].screenX) / 2 - parentPosition.x if (touchDistance !== 0 && this.lastTouchDistance !== 0) { onZoom(this.lastTouchDistance / touchDistance, xPosition / width) this.lastTouchDistance = touchDistance @@ -171,10 +154,7 @@ class ScrollElement extends Component { this.props.onScroll(this.scrollComponent!.scrollLeft - deltaX) } if (moveY) { - window.scrollTo( - window.pageXOffset, - this.singleTouchStart!.screenY - deltaY0, - ) + window.scrollTo(window.pageXOffset, this.singleTouchStart!.screenY - deltaY0) } } } From 2bd2579c96deea9db5cce5a9582708a2b8391170 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Thu, 29 Feb 2024 11:34:52 +0200 Subject: [PATCH 39/50] populate item interact with custom event --- package.json | 2 +- src/lib/Timeline.tsx | 1 - src/lib/items/Item.tsx | 15 +++++++++++++++ src/lib/scroll/ScrollElement.tsx | 18 +++++++++--------- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index a77489e70..c1d4ec096 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.14", + "version": "1.0.16", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index 4299db327..a43c7038b 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -1024,7 +1024,6 @@ export default class ReactCalendarTimeline< onWheelZoom={this.handleWheelZoom} traditionalZoom={!!traditionalZoom} onScroll={this.onScroll} - isInteractingWithItem={isInteractingWithItem} > {this.columns(canvasTimeStart, canvasTimeEnd, canvasWidth, minUnit, timeSteps, height)} diff --git a/src/lib/items/Item.tsx b/src/lib/items/Item.tsx index d9aa347d4..c670f9953 100644 --- a/src/lib/items/Item.tsx +++ b/src/lib/items/Item.tsx @@ -307,6 +307,7 @@ export default class Item> extends C .on('dragstart', (e) => { if (this.props.selected) { this.dragInProgress = true + this.fireInteractEvent(true) const clickTime = this.timeFor(e) this.setState({ dragging: true, @@ -351,6 +352,7 @@ export default class Item> extends C if (this.state.dragging) { if (this.props.onDrop) { this.dragInProgress = false + this.fireInteractEvent(false) let dragTime = this.dragTime(e) if (this.props.moveResizeValidator) { @@ -371,6 +373,7 @@ export default class Item> extends C }) .on('resizestart', (e) => { if (this.props.selected) { + this.fireInteractEvent(true) this.setState({ resizing: true, resizeEdge: null, // we don't know yet @@ -406,6 +409,7 @@ export default class Item> extends C }) .on('resizeend', (e) => { if (this.state.resizing) { + this.fireInteractEvent(false) const { resizeEdge } = this.state let resizeTime = this.resizeTimeSnap(this.timeFor(e)) @@ -452,6 +456,17 @@ export default class Item> extends C canMove(props = this.props) { return !!props.canMove } + fireInteractEvent = (itemInteraction: boolean) => { + if (this.item) { + const event = new CustomEvent('itemInteraction', { + bubbles: true, + detail: { + itemInteraction, + }, + }) + this.item.dispatchEvent(event) + } + } componentDidUpdate(prevProps: ItemProps) { this.cacheDataFromProps(this.props) diff --git a/src/lib/scroll/ScrollElement.tsx b/src/lib/scroll/ScrollElement.tsx index 8bd9c254b..eb8b715e3 100644 --- a/src/lib/scroll/ScrollElement.tsx +++ b/src/lib/scroll/ScrollElement.tsx @@ -7,7 +7,6 @@ type Props = { height: number traditionalZoom: boolean scrollRef: (e: HTMLDivElement) => void - isInteractingWithItem: boolean onZoom: (n: number, m: number) => void onWheelZoom: (speed: number, xPosition: number, deltaY: number) => void onScroll: (n: number) => void @@ -19,12 +18,11 @@ type State = { class ScrollElement extends Component { scrollComponent: HTMLDivElement | null = null - // @ts-ignore - private dragStartPosition: number | null = null private dragLastPosition: number | null = null private lastTouchDistance: number | null = null private singleTouchStart: { x: number; y: number; screenY: number } | null = null private lastSingleTouch: { x: number; y: number; screenY: number } | null = null + private isItemInteraction: boolean = false constructor(props: Props) { super(props) this.state = { @@ -45,6 +43,7 @@ class ScrollElement extends Component { this.props.scrollRef(el) if (el) { el.addEventListener('wheel', this.handleWheel, { passive: false }) + el.addEventListener('itemInteraction', this.handleItemInteract) } } @@ -71,7 +70,6 @@ class ScrollElement extends Component { handleMouseDown: MouseEventHandler = (e) => { if (e.button === 0) { - this.dragStartPosition = e.pageX this.dragLastPosition = e.pageX this.setState({ isDragging: true, @@ -82,14 +80,13 @@ class ScrollElement extends Component { handleMouseMove: MouseEventHandler = (e) => { // this.props.onMouseMove(e) //why is interacting with item important? - if (this.state.isDragging && !this.props.isInteractingWithItem) { + if (this.state.isDragging && !this.isItemInteraction) { this.props.onScroll(this.scrollComponent!.scrollLeft + this.dragLastPosition! - e.pageX) this.dragLastPosition = e.pageX } } handleMouseUp = () => { - this.dragStartPosition = null this.dragLastPosition = null this.setState({ @@ -99,7 +96,6 @@ class ScrollElement extends Component { handleMouseLeave = () => { // this.props.onMouseLeave(e) - this.dragStartPosition = null this.dragLastPosition = null this.setState({ isDragging: false, @@ -126,8 +122,8 @@ class ScrollElement extends Component { } handleTouchMove: TouchEventHandler = (e) => { - const { isInteractingWithItem, width, onZoom } = this.props - if (isInteractingWithItem) { + const { width, onZoom } = this.props + if (this.isItemInteraction) { e.preventDefault() return } @@ -168,10 +164,14 @@ class ScrollElement extends Component { this.singleTouchStart = null } } + handleItemInteract = (e: Event) => { + this.isItemInteraction = (e as CustomEvent<{ itemInteraction: boolean }>).detail.itemInteraction + } componentWillUnmount() { if (this.scrollComponent) { this.scrollComponent.removeEventListener('wheel', this.handleWheel) + this.scrollComponent.removeEventListener('itemInteraction', this.handleItemInteract) } } From 7f9ebfc42819fcb7807052489ccc9ccc0c82f4d6 Mon Sep 17 00:00:00 2001 From: IhorMatsiuk Date: Tue, 12 Mar 2024 20:00:19 +0200 Subject: [PATCH 40/50] fix custom header render / resize --- package.json | 2 +- src/lib/headers/CustomHeader.tsx | 52 +++++++++----------- src/lib/headers/HeadersContext.tsx | 10 ++-- src/lib/headers/SidebarHeader.tsx | 24 ++++----- src/lib/headers/TimelineHeaders.tsx | 59 ++++++++++++++--------- src/lib/timeline/TimelineStateContext.tsx | 37 +++----------- 6 files changed, 87 insertions(+), 97 deletions(-) diff --git a/package.json b/package.json index c1d4ec096..9b8f709ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.16", + "version": "1.0.17", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { diff --git a/src/lib/headers/CustomHeader.tsx b/src/lib/headers/CustomHeader.tsx index a1124b823..fa8e0b9f5 100644 --- a/src/lib/headers/CustomHeader.tsx +++ b/src/lib/headers/CustomHeader.tsx @@ -1,10 +1,11 @@ import React, { CSSProperties, ReactNode } from 'react' -import { TimelineHeadersConsumer } from './HeadersContext' -import { TimelineStateConsumer } from '../timeline/TimelineStateContext' +import { useTimelineHeadersContext } from './HeadersContext' +import { useTimelineState } from '../timeline/TimelineStateContext' import { iterateTimes } from '../utility/calendar' import { Interval, TimelineTimeSteps } from '../types/main' import { Dayjs } from 'dayjs' import { CustomDateHeaderProps } from './CustomDateHeader' +import isEqual from 'lodash/isEqual' export type CustomHeaderProps = { children: (p: CustomDateHeaderProps) => ReactNode @@ -71,12 +72,13 @@ class CustomHeader extends React.Component, State> }*/ componentDidUpdate(prevProps: CustomHeaderProps) { if ( - prevProps.canvasTimeStart !== this.props.canvasTimeStart || - prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || - prevProps.canvasWidth !== this.props.canvasWidth || - prevProps.unit !== this.props.unit || - prevProps.timeSteps !== this.props.timeSteps || - prevProps.showPeriod !== this.props.showPeriod + !isEqual(prevProps, this.props) + //prevProps.canvasTimeStart !== this.props.canvasTimeStart || + //prevProps.canvasTimeEnd !== this.props.canvasTimeEnd || + //prevProps.canvasWidth !== this.props.canvasWidth || + //prevProps.unit !== this.props.unit || + //prevProps.timeSteps !== this.props.timeSteps || + //prevProps.showPeriod !== this.props.showPeriod ) { const { canvasTimeStart, canvasTimeEnd, unit, timeSteps, getLeftOffsetFromDate } = this.props @@ -187,28 +189,20 @@ export type CustomHeaderWrapperProps = { } function CustomHeaderWrapper({ children, unit, headerData, height }: CustomHeaderWrapperProps) { + const { getTimelineState, showPeriod, getLeftOffsetFromDate } = useTimelineState() + const timelineState = getTimelineState() + const { timeSteps } = useTimelineHeadersContext() return ( - - {({ getTimelineState, showPeriod, getLeftOffsetFromDate }) => { - const timelineState = getTimelineState() - return ( - - {({ timeSteps }) => ( - - )} - - ) - }} - + ) } diff --git a/src/lib/headers/HeadersContext.tsx b/src/lib/headers/HeadersContext.tsx index 4e18c095f..77fe0578b 100644 --- a/src/lib/headers/HeadersContext.tsx +++ b/src/lib/headers/HeadersContext.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from 'react' +import React, { ReactNode, useContext } from 'react' import { noop } from '../utility/generic' const defaultContextState = { @@ -12,8 +12,7 @@ const defaultContextState = { timeSteps: {}, } -const { Consumer, Provider } = - React.createContext(defaultContextState) +const HeaderContext = React.createContext(defaultContextState) export type TimelineHeadersProviderProps = { children: ReactNode @@ -31,8 +30,9 @@ export class TimelineHeadersProvider extends React.Component{this.props.children} + return {this.props.children} } } -export const TimelineHeadersConsumer = Consumer +export const TimelineHeadersContext = HeaderContext +export const useTimelineHeadersContext = () => useContext(TimelineHeadersContext) diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx index 144d7219f..3175a705d 100644 --- a/src/lib/headers/SidebarHeader.tsx +++ b/src/lib/headers/SidebarHeader.tsx @@ -1,5 +1,5 @@ import { ComponentType, CSSProperties, HTMLProps, PureComponent } from 'react' -import { TimelineHeadersConsumer } from './HeadersContext' +import { useTimelineHeadersContext } from './HeadersContext' import { LEFT_VARIANT, RIGHT_VARIANT } from './constants' type SidebarHeaderProps = { @@ -44,20 +44,22 @@ export type SidebarWrapperProps = { headerData?: any } -const defaultChildren: SidebarWrapperProps['children'] = ({ getRootProps }: { getRootProps: GetRootProps }) =>

+const defaultChildren: SidebarWrapperProps['children'] = ({ getRootProps }: { getRootProps: GetRootProps }) => ( +
+) const SidebarWrapper = (props: SidebarWrapperProps) => { const { children, variant = LEFT_VARIANT, headerData } = props + const { leftSidebarWidth, rightSidebarWidth } = useTimelineHeadersContext() return ( - - {({ leftSidebarWidth, rightSidebarWidth }) => { - return ( - - {children || defaultChildren} - - ) - }} - + + {children || defaultChildren} + ) } diff --git a/src/lib/headers/TimelineHeaders.tsx b/src/lib/headers/TimelineHeaders.tsx index 7e94f195e..122ff5577 100644 --- a/src/lib/headers/TimelineHeaders.tsx +++ b/src/lib/headers/TimelineHeaders.tsx @@ -1,6 +1,6 @@ import React, { ReactNode, LegacyRef, CSSProperties } from 'react' import classNames from 'classnames' -import { TimelineHeadersConsumer } from './HeadersContext' +import { useTimelineHeadersContext } from './HeadersContext' import SidebarHeader from './SidebarHeader' import { RIGHT_VARIANT } from './constants' import { ElementWithSecret } from '../types/main' @@ -14,7 +14,6 @@ export type TimelineHeadersProps = { className?: string calendarHeaderStyle?: React.CSSProperties calendarHeaderClassName?: string - headerRef?: (ref: HTMLElement | null) => void } class TimelineHeaders extends React.Component { getRootStyle = () => { @@ -34,12 +33,6 @@ class TimelineHeaders extends React.Component { } } - handleRootRef: LegacyRef = (element) => { - if (this.props.headerRef) { - this.props.headerRef(element) - } - } - /** * check if child of type SidebarHeader * refer to for explanation https://github.com/gaearon/react-hot-loader#checking-element-types @@ -53,7 +46,9 @@ class TimelineHeaders extends React.Component { let rightSidebarHeader let leftSidebarHeader const calendarHeaders: ElementWithSecret[] = [] - const children: ElementWithSecret[] = Array.isArray(this.props.children) ? this.props.children.filter((c) => c) : [this.props.children] + const children: ElementWithSecret[] = Array.isArray(this.props.children) + ? this.props.children.filter((c) => c) + : [this.props.children] React.Children.map(children, (child) => { if (this.isSidebarHeader(child)) { if (child?.props?.variant === RIGHT_VARIANT) { @@ -72,9 +67,18 @@ class TimelineHeaders extends React.Component { rightSidebarHeader = } return ( -
+
{leftSidebarHeader} -
+
{calendarHeaders}
{rightSidebarHeader} @@ -90,17 +94,28 @@ export interface TimelineHeadersWrapperProps { calendarHeaderStyle?: CSSProperties calendarHeaderClassName?: string } -const TimelineHeadersWrapper = ({ children, style, className, calendarHeaderStyle, calendarHeaderClassName }: TimelineHeadersWrapperProps) => ( - - {({ leftSidebarWidth, rightSidebarWidth, registerScroll }) => { - return ( - - {children} - - ) - }} - -) +const TimelineHeadersWrapper = ({ + children, + style, + className, + calendarHeaderStyle, + calendarHeaderClassName, +}: TimelineHeadersWrapperProps) => { + const { leftSidebarWidth, rightSidebarWidth, registerScroll } = useTimelineHeadersContext() + return ( + + {children} + + ) +} TimelineHeadersWrapper.secretKey = 'TimelineHeaders' diff --git a/src/lib/timeline/TimelineStateContext.tsx b/src/lib/timeline/TimelineStateContext.tsx index d82647f4a..68d0f285e 100644 --- a/src/lib/timeline/TimelineStateContext.tsx +++ b/src/lib/timeline/TimelineStateContext.tsx @@ -1,10 +1,6 @@ -import React, { PropsWithChildren } from 'react' +import React, { PropsWithChildren, useContext } from 'react' -import { - calculateXPositionForTime, - calculateTimeForXPosition, - SelectUnits, -} from '../utility/calendar' +import { calculateXPositionForTime, calculateTimeForXPosition, SelectUnits } from '../utility/calendar' import { TimelineContext as TimelineContextValue } from '../types/main' import { Dayjs } from 'dayjs' @@ -35,8 +31,7 @@ const defaultContextState: TimelineContextType = { } /* eslint-enable */ -export const TimelineContext = - React.createContext(defaultContextState) +export const TimelineContext = React.createContext(defaultContextState) const { Consumer, Provider } = TimelineContext type TimelineStartProps = { @@ -60,10 +55,7 @@ type TimelineState = { timelineContext: TimelineContextType } -export class TimelineStateProvider extends React.Component< - PropsWithChildren, - TimelineState -> { +export class TimelineStateProvider extends React.Component, TimelineState> { constructor(props: PropsWithChildren) { super(props) @@ -100,31 +92,18 @@ export class TimelineStateProvider extends React.Component< getLeftOffsetFromDate = (date: number): number => { const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props - return calculateXPositionForTime( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - date, - ) + return calculateXPositionForTime(canvasTimeStart, canvasTimeEnd, canvasWidth, date) } getDateFromLeftOffsetPosition = (leftOffset: number) => { const { canvasTimeStart, canvasTimeEnd, canvasWidth } = this.props - return calculateTimeForXPosition( - canvasTimeStart, - canvasTimeEnd, - canvasWidth, - leftOffset, - ) + return calculateTimeForXPosition(canvasTimeStart, canvasTimeEnd, canvasWidth, leftOffset) } render() { - return ( - - {this.props.children} - - ) + return {this.props.children} } } export const TimelineStateConsumer = Consumer +export const useTimelineState = () => useContext(TimelineContext) From 145b72e1a752f733255e7fb01c8963d3f52528dc Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Fri, 19 Jul 2024 17:18:17 +0200 Subject: [PATCH 41/50] wip --- package.json | 10 +++++----- src/index.ts | 3 +++ src/lib/markers/implementations/CursorMarker.tsx | 4 ++-- src/lib/markers/markerType.ts | 2 +- src/lib/markers/public/TodayMarker.tsx | 2 +- tsconfig.json | 1 + 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 9b8f709ff..e10e3e518 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "react-calendar-timeline-4ef", - "version": "1.0.17", + "version": "1.0.18", "description": "fork form react-calendar-timeline with TS latest react and other improvements", "packageManager": "npm@10.1.0", "scripts": { - "build-vite": "tsc && vite build", + "build": "tsc && vite build", "lint": "eslint --ext .ts --ext .tsx ./src", "lint:fix": "npm run lint --fix", "test": "jest", @@ -48,7 +48,7 @@ }, "peerDependencies": { "dayjs": ">=1.10.0", - "interactjs": "1.10.26", + "interactjs": "1.10.27", "react": ">=18", "react-dom": ">=18" }, @@ -75,7 +75,7 @@ "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", - "interactjs": "1.10.26", + "interactjs": "1.10.27", "jest": "^29.7.0", "jest-watch-typeahead": "^2.2.2", "jsdom": "^23.0.1", @@ -87,7 +87,7 @@ "react-dom": "18.2.0", "sass": "^1.69.5", "typescript": "^5.2.2", - "vite": "5.0.8", + "vite": "5.3.4", "vite-plugin-dts": "3.6.4", "vite-plugin-lib-inject-css": "1.3.0" } diff --git a/src/index.ts b/src/index.ts index 3cc4ece6b..c9e23dbea 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,9 @@ export type { DateHeaderWrapper as DateHeaderProps } from './lib/headers/DateHea export * as calendarUtils from './lib/utility/calendar' export * from './lib/types/main' +export {default as GroupRow} from './lib/row/GroupRow' +export {default as RowItems} from './lib/items/Items' + export { Timeline } export type { ReactCalendarTimelineProps, ReactCalendarTimelineState, OnTimeChange } export default Timeline diff --git a/src/lib/markers/implementations/CursorMarker.tsx b/src/lib/markers/implementations/CursorMarker.tsx index df9be2bca..90be5aeed 100644 --- a/src/lib/markers/implementations/CursorMarker.tsx +++ b/src/lib/markers/implementations/CursorMarker.tsx @@ -7,7 +7,7 @@ const defaultRenderer = createDefaultRenderer('default-cursor-marker') type CursorMarkerWrapperProps = { getLeftOffsetFromDate: (date: number) => number - renderer: MarkerRendererType + renderer?: MarkerRendererType //interval: number } @@ -72,7 +72,7 @@ class CursorMarker extends React.Component if (!isShowingCursor) return null const styles = createMarkerStylesWithLeftOffset(leftOffset) - + if(!this.props.renderer)return null; return this.props.renderer({ styles, date }) } } diff --git a/src/lib/markers/markerType.ts b/src/lib/markers/markerType.ts index e83e980f8..ef3954c8c 100644 --- a/src/lib/markers/markerType.ts +++ b/src/lib/markers/markerType.ts @@ -9,7 +9,7 @@ export enum TimelineMarkerType { export type MarkerType = { date?: number type: TimelineMarkerType - renderer: MarkerRendererType + renderer?: MarkerRendererType interval?: number id?: number } diff --git a/src/lib/markers/public/TodayMarker.tsx b/src/lib/markers/public/TodayMarker.tsx index c5123db5c..182ff2317 100644 --- a/src/lib/markers/public/TodayMarker.tsx +++ b/src/lib/markers/public/TodayMarker.tsx @@ -6,7 +6,7 @@ export type TodayMarkerProps = { interval?: number updateMarker: (marker: MarkerType) => void subscribeMarker: (m: MarkerType) => SubscribeReturn - children: MarkerRendererType + children?: MarkerRendererType } class TodayMarker extends React.Component { diff --git a/tsconfig.json b/tsconfig.json index e04396541..02d994499 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,7 @@ "jsx": "react-jsx", /* Linting */ + "strictNullChecks": true, "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, From a0031a62380e43a2dc09507c811884e2be11774e Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Sun, 13 Oct 2024 15:25:21 +0200 Subject: [PATCH 42/50] Update dependencies and devDependencies Updated React, React DOM, React Router, and various other dependencies and devDependencies to their latest versions. This includes adjustments in resolution for `react-calendar-timeline` and several testing and linting libraries such as ESLint, TypeScript, and Jest. --- demo/package.json | 30 +++++++++++++++--------------- package.json | 39 +++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/demo/package.json b/demo/package.json index 7d4266545..a0319b5be 100644 --- a/demo/package.json +++ b/demo/package.json @@ -10,26 +10,26 @@ "preview": "vite preview" }, "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "6.21.1", - "react-router": "^6.21.1" + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.27.0", + "react-router": "^6.27.0" }, "packageManager": "npm@8.19.2", "resolutions": { - "react-calendar-timeline": "../src/index.ts" + "react-calendar-timeline-4ef": "../src/index.ts" }, "devDependencies": { "@types/randomcolor": "^0.5.9", - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react-swc": "^3.5.0", - "eslint": "^8.55.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "typescript": "^5.2.2", - "vite": "^5.0.8" + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", + "@vitejs/plugin-react-swc": "^3.7.1", + "eslint": "^8.57.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.12", + "typescript": "^5.6.3", + "vite": "^5.4.8" } } diff --git a/package.json b/package.json index e10e3e518..1b2a702eb 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "timeline" ], "dependencies": { - "classnames": "^2.3.2", + "classnames": "^2.5.1", "element-resize-detector": "^1.2.4", "lodash": "^4.17.21", "memoize-one": "^6.0.0" @@ -55,40 +55,39 @@ "devDependencies": { "rollup-plugin-typescript-paths": "^1.5.0", "@types/lodash": "^4.14.202", - "@rollup/plugin-typescript": "^11.1.5", - "@faker-js/faker": "^8.3.1", - "@testing-library/jest-dom": "^6.1.5", - "@testing-library/react": "^14.1.2", + "@rollup/plugin-typescript": "^12.1.0", + "@faker-js/faker": "^9.0.3", + "@testing-library/jest-dom": "^6.5.0", + "@testing-library/react": "^16.0.1", "@types/element-resize-detector": "^1.1.6", "@types/react": "^18.2.41", "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react-swc": "^3.5.0", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", + "@vitejs/plugin-react-swc": "^3.7.1", "cross-env": "^7.0.3", "dayjs": "^1.11.10", - "eslint": "^8.55.0", + "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^2.5.0", - "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-promise": "^7.1.0", "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.5", "interactjs": "1.10.27", "jest": "^29.7.0", "jest-watch-typeahead": "^2.2.2", - "jsdom": "^23.0.1", - "node-sass": "^9.0.0", + "jsdom": "^25.0.1", "prettier": "^3.1.0", "prettier-eslint-cli": "^8.0.1", "randomcolor": "^0.6.2", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "sass": "^1.69.5", "typescript": "^5.2.2", - "vite": "5.3.4", - "vite-plugin-dts": "3.6.4", - "vite-plugin-lib-inject-css": "1.3.0" + "vite": "^5.4.8", + "vite-plugin-dts": "^4.2.4", + "vite-plugin-lib-inject-css": "^2.1.1" } } From 7e37ba96b4663c79d25237cd0f90219156adcdab Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Thu, 17 Oct 2024 19:32:59 +0200 Subject: [PATCH 43/50] Improved typescript definitions --- src/lib/Timeline.tsx | 4 ++-- src/lib/headers/CustomDateHeader.tsx | 31 +++++++--------------------- src/lib/headers/CustomHeader.tsx | 13 ++++++------ src/lib/headers/Interval.tsx | 14 ++++++------- src/lib/headers/types.ts | 9 ++++++++ src/lib/items/Items.tsx | 4 +--- src/lib/row/GroupRow.tsx | 5 ++--- src/lib/row/GroupRows.tsx | 8 +++---- src/lib/utility/calendar.tsx | 2 +- 9 files changed, 38 insertions(+), 52 deletions(-) create mode 100644 src/lib/headers/types.ts diff --git a/src/lib/Timeline.tsx b/src/lib/Timeline.tsx index a43c7038b..39999583f 100644 --- a/src/lib/Timeline.tsx +++ b/src/lib/Timeline.tsx @@ -264,8 +264,8 @@ export default class ReactCalendarTimeline< this.hasSelectedItem = this.hasSelectedItem.bind(this) this.isItemSelected = this.isItemSelected.bind(this) - let visibleTimeStart = null - let visibleTimeEnd = null + let visibleTimeStart: number | null = null + let visibleTimeEnd: number | null = null if (this.props.defaultTimeStart && this.props.defaultTimeEnd) { visibleTimeStart = this.props.defaultTimeStart //.valueOf() diff --git a/src/lib/headers/CustomDateHeader.tsx b/src/lib/headers/CustomDateHeader.tsx index a357e871f..4d309ea8f 100644 --- a/src/lib/headers/CustomDateHeader.tsx +++ b/src/lib/headers/CustomDateHeader.tsx @@ -3,23 +3,21 @@ import Interval from './Interval' import { Interval as IntervalType, IntervalRenderer } from '../types/main' import { Dayjs } from 'dayjs' import { SelectUnits } from '../utility/calendar' +import { GetIntervalPropsType } from './types' + export interface CustomDateHeaderProps { headerContext: { intervals: IntervalType[] unit: SelectUnits } getRootProps: (props?: any) => any - getIntervalProps: (props?: any) => any + getIntervalProps: GetIntervalPropsType showPeriod: (start: Dayjs, end: Dayjs) => void data: { style: React.CSSProperties intervalRenderer: (props: IntervalRenderer) => React.ReactNode className?: string - getLabelFormat: ( - interval: [Dayjs, Dayjs], - unit: string, - labelWidth: number, - ) => string + getLabelFormat: (interval: [Dayjs, Dayjs], unit: string, labelWidth: number) => string unitProp?: 'primaryHeader' headerData?: Data } @@ -30,27 +28,12 @@ export function CustomDateHeader({ getRootProps, getIntervalProps, showPeriod, - data: { - style, - intervalRenderer, - className, - getLabelFormat, - unitProp, - headerData, - }, + data: { style, intervalRenderer, className, getLabelFormat, unitProp, headerData }, }: CustomDateHeaderProps) { return ( -
+
{intervals.map((interval) => { - const intervalText = getLabelFormat( - [interval.startTime, interval.endTime], - unit, - interval.labelWidth, - ) + const intervalText = getLabelFormat([interval.startTime, interval.endTime], unit, interval.labelWidth) return ( = { children: (p: CustomDateHeaderProps) => ReactNode @@ -55,6 +56,10 @@ class CustomHeader extends React.Component, State> } } + static defaultProps = { + height: 30, + } + /*shouldComponentUpdate(nextProps: CustomHeaderProps) { if ( nextProps.canvasTimeStart !== this.props.canvasTimeStart || @@ -127,7 +132,7 @@ class CustomHeader extends React.Component, State> } } - getIntervalProps = (props: { interval?: Interval; style?: CSSProperties } = {}) => { + getIntervalProps: GetIntervalPropsType = (props: { interval?: Interval; style?: CSSProperties } = {}) => { const { interval, style } = props if (!interval) throw new Error('you should provide interval to the prop getter') const { startTime, labelWidth, left } = interval @@ -185,7 +190,7 @@ export type CustomHeaderWrapperProps = { children: (p: CustomDateHeaderProps) => ReactNode unit?: keyof TimelineTimeSteps headerData?: Data - height: number + height?: number | undefined } function CustomHeaderWrapper({ children, unit, headerData, height }: CustomHeaderWrapperProps) { @@ -206,8 +211,4 @@ function CustomHeaderWrapper({ children, unit, headerData, height }: Custo ) } -CustomHeaderWrapper.defaultProps = { - height: 30, -} - export default CustomHeaderWrapper diff --git a/src/lib/headers/Interval.tsx b/src/lib/headers/Interval.tsx index 1edf6bf08..c1822d303 100644 --- a/src/lib/headers/Interval.tsx +++ b/src/lib/headers/Interval.tsx @@ -3,10 +3,7 @@ import { getNextUnit, SelectUnits } from '../utility/calendar' import { composeEvents } from '../utility/events' import { Dayjs } from 'dayjs' import { IntervalRenderer, Interval as IntervalType, GetIntervalProps } from '../types/main' - -type GetIntervalPropsParams = { - interval: IntervalType -} & HTMLAttributes +import { GetIntervalPropsType } from './types' export type IntervalProps = { intervalRenderer: (p: IntervalRenderer) => ReactNode @@ -15,7 +12,7 @@ export type IntervalProps = { showPeriod: (startTime: Dayjs, endTime: Dayjs) => void intervalText: string primaryHeader: boolean - getIntervalProps: (props?: GetIntervalPropsParams) => HTMLAttributes + getIntervalProps: GetIntervalPropsType headerData?: Data } @@ -33,7 +30,7 @@ class Interval extends React.PureComponent> { } } - getIntervalProps = (props: GetIntervalProps = {}): HTMLAttributes => { + getIntervalProps = (props: GetIntervalProps = {}): HTMLAttributes & { key: string } => { return { ...this.props.getIntervalProps({ interval: this.props.interval, @@ -58,11 +55,12 @@ class Interval extends React.PureComponent> { /> ) } - + const { key, ...rest } = this.getIntervalProps() return (
{intervalText} diff --git a/src/lib/headers/types.ts b/src/lib/headers/types.ts new file mode 100644 index 000000000..4c398bc03 --- /dev/null +++ b/src/lib/headers/types.ts @@ -0,0 +1,9 @@ +import { HTMLAttributes } from 'react' +import { Interval } from '../types/main' + +export type GetIntervalPropsParams = { + interval: Interval +} & HTMLAttributes +export type GetIntervalPropsType = (props?: GetIntervalPropsParams) => HTMLAttributes & { + key: string +} diff --git a/src/lib/items/Items.tsx b/src/lib/items/Items.tsx index 417101baf..23ef05a74 100644 --- a/src/lib/items/Items.tsx +++ b/src/lib/items/Items.tsx @@ -40,9 +40,7 @@ type ItemsProps> = { // Add more props if needed } -type ItemsState = { - // Define your state properties here -} +type ItemsState = object function canResizeLeft>(item: CustomItem, canResize?: CanResize) { const value = _get(item, 'canResize') !== undefined ? _get(item, 'canResize') : canResize diff --git a/src/lib/row/GroupRow.tsx b/src/lib/row/GroupRow.tsx index 312aaaafc..0c0a7b9a3 100644 --- a/src/lib/row/GroupRow.tsx +++ b/src/lib/row/GroupRow.tsx @@ -7,7 +7,7 @@ interface GroupRowProps { onContextMenu?: MouseEventHandler isEvenRow?: boolean style?: React.CSSProperties - clickTolerance?: number + clickTolerance?: number | undefined group: T horizontalLineClassNamesForGroup?: (group: T) => string[] } @@ -36,8 +36,7 @@ class GroupRow extends Component> { onContextMenu={onContextMenu} onDoubleClick={onDoubleClick} className={ - (isEvenRow ? 'rct-hl-even ' : 'rct-hl-odd ') + - (classNamesForGroup ? classNamesForGroup.join(' ') : '') + (isEvenRow ? 'rct-hl-even ' : 'rct-hl-odd ') + (classNamesForGroup ? classNamesForGroup.join(' ') : '') } style={style} /> diff --git a/src/lib/row/GroupRows.tsx b/src/lib/row/GroupRows.tsx index 8b42202e1..35bbc1618 100644 --- a/src/lib/row/GroupRows.tsx +++ b/src/lib/row/GroupRows.tsx @@ -1,10 +1,7 @@ import React, { Component } from 'react' import GroupRow from './GroupRow' -export type RowClickEvent = ( - evt: React.MouseEvent, - index: number, -) => void +export type RowClickEvent = (evt: React.MouseEvent, index: number) => void export interface GroupRowsProps { canvasWidth: number @@ -17,6 +14,7 @@ export interface GroupRowsProps { horizontalLineClassNamesForGroup?: (group: T) => string[] onRowContextClick: RowClickEvent } + export default class GroupRows extends Component> { shouldComponentUpdate(nextProps: GroupRowsProps) { return !( @@ -39,7 +37,7 @@ export default class GroupRows extends Component> { horizontalLineClassNamesForGroup, onRowContextClick, } = this.props - const lines = [] + const lines: React.ReactNode[] = [] for (let i = 0; i < lineCount; i++) { lines.push( diff --git a/src/lib/utility/calendar.tsx b/src/lib/utility/calendar.tsx index febc1b744..435a3949f 100644 --- a/src/lib/utility/calendar.tsx +++ b/src/lib/utility/calendar.tsx @@ -344,7 +344,7 @@ export function groupStack( do { // converting it to a const create an infinite loop (why?) // noinspection ES6ConvertVarToLetConst - var collidingItem = null + var collidingItem: null | ItemDimension = null //Items are placed from i=0 onwards, only check items with index < i for (let j = itemIndex - 1, jj = 0; j >= jj; j--) { const other = group[j] From 821798574b09403f7c05ad25a27e4ffdcafc43b9 Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Thu, 17 Oct 2024 19:42:53 +0200 Subject: [PATCH 44/50] Removed -4ef addition to react-calendar timeline package. --- CHANGELOG.md | 7 +++++++ README.md | 6 ++++-- package.json | 53 +++++++++++++++++++++++++++++++++++++++++-------- vite.config.mts | 2 +- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3757096c3..f617f62b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o ## Unreleased +## 0.30.0 (unreleased) + * full rewrite to typescript + * uses Vite as bundler + * Updates dependencies to latest versions + * Updates react usage to 18+ + * REMOVED enzyme for tests --> testing does not work atm + ## 0.28.0 diff --git a/README.md b/README.md index 597b10eb3..e1c71adc8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -# fork from react-calendar-timeline -# React Calendar Timeline docs here may not be relevant +# ⚠️⚠️⚠️⚠️ HELP WANTED +please email me [ahmad.ilaiwi@gmail.com](mailto:ahmad.ilaiwi@gmail.com) and we will setup some time to speak and see if you can help maintain this library. + +# React Calendar Timeline A modern and responsive React timeline component. diff --git a/package.json b/package.json index 1b2a702eb..4d58c5ab7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "react-calendar-timeline-4ef", - "version": "1.0.18", - "description": "fork form react-calendar-timeline with TS latest react and other improvements", + "name": "react-calendar-timeline", + "version": "0.30.0", + "description": "react-calendar-timeline", "packageManager": "npm@10.1.0", "scripts": { "build": "tsc && vite build", @@ -10,16 +10,16 @@ "test": "jest", "test:watch": "jest --watch" }, - "main": "./dist/react-calendar-timeline-4ef.umd.js", - "module": "./dist/react-calendar-timeline-4ef.es.js", + "main": "./dist/react-calendar-timeline.umd.js", + "module": "./dist/react-calendar-timeline.es.js", "exports": { "./styles.css": "./dist/styles.css", ".": { "types": [ "./dist/index.d.ts" ], - "import": "./dist/react-calendar-timeline-4ef.es.js", - "require": "./dist/react-calendar-timeline-4ef.umd.js" + "import": "./dist/react-calendar-timeline.es.js", + "require": "./dist/react-calendar-timeline.umd.js" } }, "types": "./dist/index.d.ts", @@ -32,7 +32,44 @@ "url": "https://github.com/namespace-ee/react-calendar-timeline.git" }, "private": false, - "author": "4EF", + "author": "Marius Andra ", + "contributors": [ + { + "name": "Stanisław Chmiela", + "email": "sjchmiela@gmail.com" + }, + { + "name": "Mike Joyce", + "url": "https://github.com/mcMickJuice" + }, + { + "name": "Samuel Rossetti" + }, + { + "name": "amakhrov", + "url": "https://github.com/amakhrov" + }, + { + "name": "Ahmad Ilaiwi", + "url": "https://github.com/Ilaiwi" + }, + { + "name": "dkarnutsch", + "url": "https://github.com/dkarnutsch" + }, + { + "name": "Alex Maclean", + "url": "https://github.com/acemac" + }, + { + "name": "Kevin Mann", + "url": "https://github.com/kevinmanncito" + }, + { + "name": "Remco Blumink", + "url": "" + } + ], "license": "MIT", "keywords": [ "react", diff --git a/vite.config.mts b/vite.config.mts index cf979c991..6ddd0dc1e 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -16,7 +16,7 @@ export default defineConfig({ index: resolve("src", 'index.ts'), styles: resolve("src/lib", 'Timeline.scss') }, - name: 'react-calendar-timeline-4ef', + name: 'react-calendar-timeline', fileName: (format) => `react-calendar-timeline-4ef.${format}.js` }, rollupOptions: { From d9386b2afdc405e61e98962df74c7881af2bc387 Mon Sep 17 00:00:00 2001 From: Remco Blumink Date: Thu, 17 Oct 2024 19:54:16 +0200 Subject: [PATCH 45/50] remove some more references to 4ef --- demo/package.json | 2 +- index.js | 2 +- vite.config.mts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demo/package.json b/demo/package.json index a0319b5be..78e8d766d 100644 --- a/demo/package.json +++ b/demo/package.json @@ -17,7 +17,7 @@ }, "packageManager": "npm@8.19.2", "resolutions": { - "react-calendar-timeline-4ef": "../src/index.ts" + "react-calendar-timeline": "../src/index.ts" }, "devDependencies": { "@types/randomcolor": "^0.5.9", diff --git a/index.js b/index.js index 7bf7c9817..e1b0a5c3e 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -export * from './dist/react-calendar-timeline-4ef.es.js' +export * from './dist/react-calendar-timeline.es.js' diff --git a/vite.config.mts b/vite.config.mts index 6ddd0dc1e..6f415e2b8 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -17,7 +17,7 @@ export default defineConfig({ styles: resolve("src/lib", 'Timeline.scss') }, name: 'react-calendar-timeline', - fileName: (format) => `react-calendar-timeline-4ef.${format}.js` + fileName: (format) => `react-calendar-timeline.${format}.js` }, rollupOptions: { external: ['react', 'react-dom'], From 396d6862e99eb31521ca0d28758ab9c3d49b5efb Mon Sep 17 00:00:00 2001 From: ilaiwi Date: Sun, 17 Nov 2024 08:50:16 +0200 Subject: [PATCH 46/50] publish 0.30.0-beta.1 --- CHANGELOG.md | 5 +++-- README.md | 23 ++++++++++++++++++++--- package.json | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f617f62b8..8ebbe51a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,9 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o ## Unreleased -## 0.30.0 (unreleased) - * full rewrite to typescript +## 0.30.0 (beta) +Huge update made by @Remco4EF and @remcoblumink + * full rewrite to typescript * uses Vite as bundler * Updates dependencies to latest versions * Updates react usage to 18+ diff --git a/README.md b/README.md index e1c71adc8..3216e4793 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,27 @@ -# ⚠️⚠️⚠️⚠️ HELP WANTED -please email me [ahmad.ilaiwi@gmail.com](mailto:ahmad.ilaiwi@gmail.com) and we will setup some time to speak and see if you can help maintain this library. - # React Calendar Timeline A modern and responsive React timeline component. +> **🎉 Version 0.30.0-beta.1 Now Available!** +> +> We're excited to announce the beta release of v0.30.0 which includes: +> - Full TypeScript rewrite +> - Vite as bundler +> - Updated dependencies to latest versions +> - React 18+ support +> +> The beta version is available via: +> ```bash +> npm install react-calendar-timeline@beta +> ``` +> +> We encourage users to try out the beta and provide feedback before the stable release. Please report any issues on GitHub. +> +> Note: Testing framework has been updated and some tests are currently being migrated. + +# ⚠️⚠️⚠️⚠️ HELP WANTED +please email me [ahmad.ilaiwi@gmail.com](mailto:ahmad.ilaiwi@gmail.com) and we will setup some time to speak and see if you can help maintain this library. + ![calendar demo](https://raw.githubusercontent.com/namespace-ee/react-calendar-timeline/master/demo.gif) Checkout the [examples here](https://github.com/namespace-ee/react-calendar-timeline/tree/master/examples)! diff --git a/package.json b/package.json index 4d58c5ab7..051a469e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline", - "version": "0.30.0", + "version": "0.30.0-beta.1", "description": "react-calendar-timeline", "packageManager": "npm@10.1.0", "scripts": { From 35b733482d6c029c63c3053dddcb56bfff1b5096 Mon Sep 17 00:00:00 2001 From: ilaiwi Date: Sun, 17 Nov 2024 08:51:32 +0200 Subject: [PATCH 47/50] beta release --- README.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 3216e4793..bfb10cfa3 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,24 @@ + # React Calendar Timeline A modern and responsive React timeline component. -> **🎉 Version 0.30.0-beta.1 Now Available!** -> -> We're excited to announce the beta release of v0.30.0 which includes: -> - Full TypeScript rewrite -> - Vite as bundler -> - Updated dependencies to latest versions -> - React 18+ support -> -> The beta version is available via: -> ```bash -> npm install react-calendar-timeline@beta -> ``` -> -> We encourage users to try out the beta and provide feedback before the stable release. Please report any issues on GitHub. -> -> Note: Testing framework has been updated and some tests are currently being migrated. +**🎉 Version 0.30.0-beta.1 Now Available!** + +We're excited to announce the beta release of v0.30.0 which includes: +- Full TypeScript rewrite +- Vite as bundler +- Updated dependencies to latest versions +- React 18+ support + +The beta version is available via: +```bash +npm install react-calendar-timeline@beta +``` + +We encourage users to try out the beta and provide feedback before the stable release. Please report any issues on GitHub. + + Note: Testing framework has been updated and some tests are currently being migrated. # ⚠️⚠️⚠️⚠️ HELP WANTED please email me [ahmad.ilaiwi@gmail.com](mailto:ahmad.ilaiwi@gmail.com) and we will setup some time to speak and see if you can help maintain this library. From ce4a4f821b3e5a4f4533834bb42d54ec66f5dcd9 Mon Sep 17 00:00:00 2001 From: Jesse Klotz Date: Fri, 22 Nov 2024 22:31:20 +0100 Subject: [PATCH 48/50] externalize react/jsx-runtime and react-dom/client --- vite.config.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.mts b/vite.config.mts index 6f415e2b8..82e658589 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -20,7 +20,7 @@ export default defineConfig({ fileName: (format) => `react-calendar-timeline.${format}.js` }, rollupOptions: { - external: ['react', 'react-dom'], + external: ['react', 'react/jsx-runtime', 'react-dom', 'react-dom/client'], output: { globals: { react: 'React' From f6ffe8f9a1b3c0546dc271482af5872e4f4593e4 Mon Sep 17 00:00:00 2001 From: ilaiwi Date: Sun, 24 Nov 2024 08:50:56 +0200 Subject: [PATCH 49/50] 0.30.0-beta.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 051a469e3..eb3aeaca1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-calendar-timeline", - "version": "0.30.0-beta.1", + "version": "0.30.0-beta.2", "description": "react-calendar-timeline", "packageManager": "npm@10.1.0", "scripts": { From 1dd6507157ea29bb61c51c64fe97cb6fc65250ab Mon Sep 17 00:00:00 2001 From: abdullah qaradeh Date: Tue, 17 Dec 2024 14:50:40 +0200 Subject: [PATCH 50/50] add missing imports --- src/index.ts | 6 ++++-- src/lib/headers/CustomDateHeader.tsx | 9 ++++++++- src/lib/headers/CustomHeader.tsx | 8 ++++---- src/lib/headers/SidebarHeader.tsx | 13 ++++++++----- src/lib/types/main.ts | 4 ++-- src/resize-detector/index.ts | 6 ++++++ vite.config.mts | 18 +++++++++++++----- 7 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 src/resize-detector/index.ts diff --git a/src/index.ts b/src/index.ts index c9e23dbea..7a25bd6c0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,10 +16,12 @@ export { default as DateHeader } from './lib/headers/DateHeader' export type { DateHeaderWrapper as DateHeaderProps } from './lib/headers/DateHeader' export * as calendarUtils from './lib/utility/calendar' export * from './lib/types/main' +export * from './lib/default-config' -export {default as GroupRow} from './lib/row/GroupRow' -export {default as RowItems} from './lib/items/Items' +export { default as GroupRow } from './lib/row/GroupRow' +export { default as RowItems } from './lib/items/Items' +export { TimelineContext } from './lib/timeline/TimelineStateContext' export { Timeline } export type { ReactCalendarTimelineProps, ReactCalendarTimelineState, OnTimeChange } export default Timeline diff --git a/src/lib/headers/CustomDateHeader.tsx b/src/lib/headers/CustomDateHeader.tsx index 4d309ea8f..3af277f6c 100644 --- a/src/lib/headers/CustomDateHeader.tsx +++ b/src/lib/headers/CustomDateHeader.tsx @@ -10,6 +10,13 @@ export interface CustomDateHeaderProps { intervals: IntervalType[] unit: SelectUnits } + timelineContext: { + timelineWidth: number + visibleTimeStart: number + visibleTimeEnd: number + canvasTimeStart: number + canvasTimeEnd: number + } getRootProps: (props?: any) => any getIntervalProps: GetIntervalPropsType showPeriod: (start: Dayjs, end: Dayjs) => void @@ -33,7 +40,7 @@ export function CustomDateHeader({ return (
{intervals.map((interval) => { - const intervalText = getLabelFormat([interval.startTime, interval.endTime], unit, interval.labelWidth) + const intervalText = getLabelFormat([interval.startTime, interval.endTime], unit, interval.labelWidth!) return ( extends React.Component, State> getStateAndHelpers = (): CustomDateHeaderProps => { const { - /*canvasTimeStart, + canvasTimeStart, canvasTimeEnd, timelineWidth, visibleTimeStart, - visibleTimeEnd,*/ + visibleTimeEnd, unit, showPeriod, headerData, @@ -161,13 +161,13 @@ class CustomHeader extends React.Component, State> //TODO: only evaluate on changing params return { - /*timelineContext: { + timelineContext: { timelineWidth, visibleTimeStart, visibleTimeEnd, canvasTimeStart, canvasTimeEnd, - },*/ + }, headerContext: { unit, intervals: this.state.intervals, diff --git a/src/lib/headers/SidebarHeader.tsx b/src/lib/headers/SidebarHeader.tsx index 3175a705d..6b968780d 100644 --- a/src/lib/headers/SidebarHeader.tsx +++ b/src/lib/headers/SidebarHeader.tsx @@ -3,7 +3,7 @@ import { useTimelineHeadersContext } from './HeadersContext' import { LEFT_VARIANT, RIGHT_VARIANT } from './constants' type SidebarHeaderProps = { - children: ComponentType<{ getRootProps: GetRootProps }> + children: ComponentType<{ getRootProps: GetRootProps; data: any }> rightSidebarWidth?: number leftSidebarWidth: number variant: typeof LEFT_VARIANT | typeof RIGHT_VARIANT @@ -39,14 +39,17 @@ class SidebarHeader extends PureComponent { type GetRootProps = () => HTMLProps export type SidebarWrapperProps = { - children?: ComponentType<{ getRootProps: GetRootProps }> + children?: ComponentType<{ getRootProps: GetRootProps; data: any }> variant?: typeof LEFT_VARIANT | typeof RIGHT_VARIANT headerData?: any } -const defaultChildren: SidebarWrapperProps['children'] = ({ getRootProps }: { getRootProps: GetRootProps }) => ( -
-) +const defaultChildren: SidebarWrapperProps['children'] = ({ + getRootProps, +}: { + getRootProps: GetRootProps + data: any +}) =>
const SidebarWrapper = (props: SidebarWrapperProps) => { const { children, variant = LEFT_VARIANT, headerData } = props diff --git a/src/lib/types/main.ts b/src/lib/types/main.ts index 80818c1be..7871d5cea 100644 --- a/src/lib/types/main.ts +++ b/src/lib/types/main.ts @@ -204,8 +204,8 @@ export interface IntervalRenderer { export interface Interval { startTime: Dayjs endTime: Dayjs - labelWidth: number - left: number + labelWidth?: number + left?: number } export interface HeaderContext { diff --git a/src/resize-detector/index.ts b/src/resize-detector/index.ts new file mode 100644 index 000000000..caf3de5bb --- /dev/null +++ b/src/resize-detector/index.ts @@ -0,0 +1,6 @@ +import type { ListenerParam } from './container' +import containerListeners from './container' +import windowListeners from './window' + +export type { ListenerParam } +export { containerListeners, windowListeners } diff --git a/vite.config.mts b/vite.config.mts index 82e658589..b1044fd91 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -13,18 +13,19 @@ export default defineConfig({ sourcemap: true, lib: { entry: { - index: resolve("src", 'index.ts'), - styles: resolve("src/lib", 'Timeline.scss') + index: resolve('src', 'index.ts'), + styles: resolve('src/lib', 'Timeline.scss'), + 'resize-detector': resolve('src/resize-detector', 'index.ts'), }, name: 'react-calendar-timeline', - fileName: (format) => `react-calendar-timeline.${format}.js` + fileName: (format, entryName) => `react-calendar-timeline.${entryName}.${format}.js`, }, rollupOptions: { external: ['react', 'react/jsx-runtime', 'react-dom', 'react-dom/client'], output: { globals: { - react: 'React' - } + react: 'React', + }, }, plugins: [ typescriptPaths({ @@ -37,6 +38,13 @@ export default defineConfig({ ], }, }, + resolve: { + alias: { + index: resolve(__dirname, 'src', 'index.ts'), + 'react-calendar-timeline/lib/Timeline.css': resolve(__dirname, 'src/lib', 'Timeline.scss'), + 'react-calendar-timeline/resize-detector': resolve(__dirname, 'src/resize-detector', 'index.ts'), + }, + }, server: { port: 3000, },