diff --git a/.gitignore b/.gitignore index 7ddbc64b..5aa655c2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ docs/coverage/ dist/ +/.vs diff --git a/CHANGELOG.md b/CHANGELOG.md index a52d6a5c..cb9a00bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,47 @@ # Change Log +## v1.3.39 - Season Changes, QoL Improvements, API Changes and Bug Fixing + +### Season Changes + +- Updated the Starting Month and Starting Day fields to be one field "Starting Date" that uses the built-in Date Selector to choose a month and day. +- Added the ability to set the Sunrise and Sunset times for the first day of the season: + - The setting of the times uses the built-in Time Selector to ensure that only times that work with your calendar can be chosen and that the sunset is always after the sunrise. +- Sunrise and sunset times slowly change as days progress to meet the sunrise/sunset time of the next season. This is to add a smooth transition between seasons sunrise and sunset times. +- Added buttons to the time control to advance to the next dawn, midday, dusk or midnight. + - Dawn will advance to the next sunrise. + - Midday will advance to the next middle of the day. The midday is calculated as the exact middle of the day, for most calendars this will be 12:00pm but for calendars with different hours per day it will calculate correctly. + - Dusk will advance to the next sunset. + - Midnight will advance to the next beginning of the day, time 00:00. +- Set up default sunrise/sunset times for predefined calendars. Where information was available used that otherwise they will default to a 6am sunrise and a 6pm sunset. + +### Quality of Life Improvements + +- Added a new time setting to specify how long a round of combat lasts in seconds. This is to address the issue where the clock did not advance as combat rounds passed when using systems that do not increment time during combat. +- Removed the Import/Export dialog for about-time and Calendar/Weather that appears on the first load of a world. This dialog was causing issues for some users and is no longer needed as these options can be reached through the calendar configuration dialog. + +### API Changes + +- Functions that return season information (`SimpleCalendar.api.getCurrentSeason`, `SimpleCalendar.api.getAllSeasons` and `SimpleCalendar.api.timstampToDate`) now includes the sunrise and sunset times for the season, as set through the new season options. The times are represented as seconds passed for that day eg. 3600 would be 1:00am in a Gregorian calendar. +- The function `SimpleCalendar.api.timestampToDate` has 2 new properties, sunrise and sunset. These values represent the timestamps for the sunrise and sunset times parsed from the passed in timestamp. +- Fixed a bug with the `SimpleCalendar.api.timestampToDate` function where the display time was always returning as the current time not the time from the passed in timestamp. + + +### Bug Fixes + +- Fixed a bug with seasons always showing the last season for all, or most months. Seasons were expecting to be in order, now order does not matter. +- Improvements to the built-in date/time selector to ensure a better user experience. +- Fixed a bug where setting a different hours per day could cause the clock to not advance days properly. + +### Foundry 0.8.9 + +- Made sure that Simple Calendar works as expected with Foundry version 0.8.9! + +### Translations + +- I am happy to say that Simple Calendar has been translated to French thanks to [JDR-Ninja](https://github.com/JDR-Ninja) with input from [Julien Stébenne](https://github.com/TheBird956)! +- Updates to the Spanish translation thanks to [lozalojo](https://github.com/lozalojo)! + ## v1.3.28 - API Changes - Updated the [DateTimeChange hook](./docs/Hooks.md#datetime-change) to have a new property in its returned value called "date". This property contains the same contents as the [API timestampToDate function](./docs/API.md#simplecalendarapitimestamptodatetimestamp) with the current timestamp passed in. This is to have the exact same data available in the hook as the API function. As a result some existing properties will be removed as stated below: diff --git a/README.md b/README.md index 694923b8..a2758ca8 100644 --- a/README.md +++ b/README.md @@ -92,10 +92,11 @@ Language|Translator(s) --------|---------- German (de)|[MasterZelgadis](https://github.com/MasterZelgadis)
[BlueSkyBlackBird](https://github.com/BlueSkyBlackBird)
[Fallayn](https://github.com/Fallayn) Traditional Chinese (zh)|[benwater12](https://github.com/benwater12) -Spanish (es)|[areymoreno](https://github.com/areymoreno) +Spanish (es)|[areymoreno](https://github.com/areymoreno)
[lozalojo](https://github.com/lozalojo) Korean (ko)|[drdwing](https://github.com/drdwing) Portuguese Brasil (pt-BR)|[castanhocorreia](https://github.com/castanhocorreia) Czech (cs)|[robertjunek](https://github.com/robertjunek) +French (fr)|[JDR Ninja](https://github.com/JDR-Ninja)
[TheBird956](https://github.com/TheBird956) If your language is missing from the list, and you would like to help translate Simple Calendar please follow these steps: diff --git a/__mocks__/game.ts b/__mocks__/game.ts index dfc12085..bfb7711c 100644 --- a/__mocks__/game.ts +++ b/__mocks__/game.ts @@ -52,7 +52,6 @@ const game = { switch (settingName){ case SettingNames.AllowPlayersToAddNotes: case SettingNames.DefaultNoteVisibility: - case SettingNames.ImportRan: return false; case SettingNames.YearConfiguration: return {numericRepresentation: 0, prefix: '', postfix: '', showWeekdayHeadings: true, firstWeekday: 0, yearZero: 0, yearNames: [], yearNamingRule: 'default', yearNamesStart: 0}; @@ -71,9 +70,9 @@ const game = { case SettingNames.GeneralConfiguration: return {gameWorldTimeIntegration: GameWorldTimeIntegrations.None, showClock: false, pf2eSync: true, permissions: {viewCalendar: {player:true, trustedPlayer: true, assistantGameMaster: true, users: undefined}, addNotes:{player:false, trustedPlayer: false, assistantGameMaster: false, users: undefined}, reorderNotes:{player:false, trustedPlayer: false, assistantGameMaster: false}, changeDateTime:{player:false, trustedPlayer: false, assistantGameMaster: false, users: undefined}}} case SettingNames.TimeConfiguration: - return {hoursInDay:0, minutesInHour: 1, secondsInMinute: 2, gameTimeRatio: 3, unifyGameAndClockPause: false, updateFrequency: 1}; + return {hoursInDay:0, minutesInHour: 1, secondsInMinute: 2, secondsInCombatRound: 6, gameTimeRatio: 3, unifyGameAndClockPause: false, updateFrequency: 1}; case SettingNames.SeasonConfiguration: - return [[{name:'', startingMonth: 1, startingDay: 1, color: '#ffffff'}]]; + return [[{name:'', startingMonth: 1, startingDay: 1, color: '#ffffff', sunriseTime: 0, sunsetTime: 0}]]; case SettingNames.MoonConfiguration: return [[{"name":"","cycleLength":0,"firstNewMoon":{"yearReset":"none","yearX":0,"year":0,"month":1,"day":1},"phases":[{"name":"","length":3.69,"icon":"new","singleDay":true}],"color":"#ffffff","cycleDayAdjust":0}]]; } diff --git a/docs/API.md b/docs/API.md index 3a5bb609..abf74118 100644 --- a/docs/API.md +++ b/docs/API.md @@ -563,6 +563,8 @@ month|Number|0|The index of the month represented in the timestamp. monthName|String|""|**Depreciated** Please use display.monthName instead. This will be removed when Foundry v9 Stable is released. second|Number|0|The seconds represented in the timestamp. showWeekdayHeadings|Boolean|true|If to show the weekday headings for the month. +sunrise|Number|0|The timestamp of when the sun rises for this date. +sunset|Number|0|The timestamp of when the sun sets for this date. weekdays|String Array|[]|A list of weekday names. year|Number|0|The year represented in the timestamp. yearName|String|""|**Depreciated** Please use display.yearName instead. This will be removed when Foundry v9 Stable is released. @@ -696,6 +698,8 @@ name|String|''|The name of the season. color|String|#ffffff|The color associated with this season. startingDay|Number|1|The day index of the month that the season starts on. startingMonth|Number|1|The month index that the season starts on. +sunrise|Number|0|The number of seconds into the starting day of the season that the sun rises. EG. a value of 3600 would be 1:00am in a Gregorian Calendar. +sunset|Number|0|The number of seconds into the starting day of the season that the sun sets. EG. a value of 82800 would be 11:00pm in a Gregorian Calendar. ## Time Object diff --git a/docs/Configuration.md b/docs/Configuration.md index 02a5a30c..5d535aeb 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -2,6 +2,16 @@ Configuration of the calendar is straight forward. As the GM open the configuration dialog and start customizing your calendar! +## Settings +- [General Settings](#general-settings) +- [Note Settings](#note-settings) +- [Year Settings](#year-settings) +- [Month Settings](#month-settings) +- [Weekday Settings](#weekday-settings) +- [Leap Year Settings](#leap-year-settings) +- [Time Settings](#time-settings) +- [Moon Settings](#moon-settings) + ## General Settings This tab allows you to set some general settings for the entire calendar. @@ -145,10 +155,9 @@ The options available for customizing each Season are listed below: Setting | Description --------|------------ Season Name | These text boxes for each season allow you to change the name of an existing season. -Starting Month | These drop downs for each season show all of the months of your calendar and allow you to choose which month this season starts in. -Starting Day | These drop downs for each season show all of the days for the selected Starting Month and allow you to choose with day the season starts on in that month. +Starting Date | This field will open up a date selector that allows you to choose a month and day from the calendar for when the season starts. +Sunrise/Sunset Time | This field will open up a time selector that allows you to choose the sunrise and sunset times. It also makes sure that the sunset time is after the sunrise time. Color | Seasons can be assigned a color, this color is used as the background color for the calendar display when it is the current season. There is a list of predefined colors that work well for standard season and the option to enter a custom color. -Custom Color | If the color option is set to Custom Color this text box will appear where you can enter a custom Hex representation of a color to use for the season. Remove Button | These buttons for each season allow you to remove the specific season from the list. Add New Season Button | This button will add a new season to the bottom of the list with a default name that you can then configure to your liking. Remove All Seasons Button | This button will remove all of the seasons from the list. @@ -212,6 +221,7 @@ Setting | Description Hours in a Day | This defines how many hours make up a single day. Minutes in a Hour | This defines how many minutes make up a single hour. Seconds in a Minute | This defines how many seconds make up a single minute. +Seconds per Combat Round | This defines how many seconds pass during 1 round of combat. **Important**: This is only applied if the current system does not increment time during combat rounds! ### Clock Settings diff --git a/package-lock.json b/package-lock.json index 1bd1f7ce..cd8df7a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,37 +1,37 @@ { "name": "foundryvtt-simple-calendar", - "version": "1.3.23", + "version": "1.3.30", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.3.23", + "version": "1.3.30", "license": "MIT", "dependencies": { "file-saver": "^2.0.5" }, "devDependencies": { - "@league-of-foundry-developers/foundry-vtt-types": "^0.8.8-9", + "@league-of-foundry-developers/foundry-vtt-types": "^0.8.9-2", "@types/copy-webpack-plugin": "^8.0.1", "@types/file-saver": "^2.0.3", - "@types/jest": "^26.0.24", + "@types/jest": "^27.0.1", "@types/node": "^16.3.0", "copy-webpack-plugin": "^9.0.1", "cross-env": "^7.0.3", "css-loader": "^6.2.0", - "jest": "^27.0.6", + "jest": "^27.1.0", "jest-transform-stub": "^2.0.0", "jest-ts-webcompat-resolver": "^1.0.0", - "mini-css-extract-plugin": "^2.2.0", - "sass": "^1.37.5", + "mini-css-extract-plugin": "^2.2.2", + "sass": "^1.39.0", "sass-loader": "^12.1.0", - "ts-jest": "^27.0.4", + "ts-jest": "^27.0.5", "ts-loader": "^9.2.5", - "ts-node": "^10.2.0", - "tsconfig-paths": "^3.10.1", - "typescript": "^4.3.5", - "webpack": "^5.50.0", - "webpack-cli": "^4.7.2" + "ts-node": "^10.2.1", + "tsconfig-paths": "^3.11.0", + "typescript": "^4.4.2", + "webpack": "^5.52.0", + "webpack-cli": "^4.8.0" }, "engines": { "node": ">=12.0.0" @@ -670,106 +670,52 @@ } }, "node_modules/@jest/console": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", - "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz", + "integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.6", - "jest-util": "^27.0.6", + "jest-message-util": "^27.1.0", + "jest-util": "^27.1.0", "slash": "^3.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@jest/core": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", - "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz", + "integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==", "dev": true, "dependencies": { - "@jest/console": "^27.0.6", - "@jest/reporters": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/reporters": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.0.6", - "jest-config": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-message-util": "^27.0.6", + "jest-changed-files": "^27.1.0", + "jest-config": "^27.1.0", + "jest-haste-map": "^27.1.0", + "jest-message-util": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-resolve-dependencies": "^27.0.6", - "jest-runner": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "jest-watcher": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-resolve-dependencies": "^27.1.0", + "jest-runner": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "jest-watcher": "^27.1.0", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", @@ -788,134 +734,169 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@jest/environment": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz", + "integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "jest-mock": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/@jest/fake-timers": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz", + "integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", + "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "jest-message-util": "^27.1.0", + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@jest/globals": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz", + "integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@jest/environment": "^27.1.0", + "@jest/types": "^27.1.0", + "expect": "^27.1.0" }, "engines": { - "node": ">=8.6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/@jest/reporters": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz", + "integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==", "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.0.0" + }, "engines": { - "node": ">=8.6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jest/environment": { + "node_modules/@jest/source-map": { "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", - "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "jest-mock": "^27.0.6" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@jest/test-result": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz", + "integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==", "dev": true, "dependencies": { + "@jest/console": "^27.1.0", + "@jest/types": "^27.1.0", "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "collect-v8-coverage": "^1.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@jest/test-sequencer": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz", + "integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jest/test-result": "^27.1.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.1.0", + "jest-runtime": "^27.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/fake-timers": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", - "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", + "node_modules/@jest/transform": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz", + "integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@sinonjs/fake-timers": "^7.0.2", - "@types/node": "*", - "jest-message-util": "^27.0.6", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6" + "@babel/core": "^7.1.0", + "@jest/types": "^27.1.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.1.0", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.1.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@jest/types": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", + "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -928,536 +909,365 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@league-of-foundry-developers/foundry-vtt-types": { + "version": "0.8.9-2", + "resolved": "https://registry.npmjs.org/@league-of-foundry-developers/foundry-vtt-types/-/foundry-vtt-types-0.8.9-2.tgz", + "integrity": "sha512-IPPaqPoVbrAqLsYUUFLWllIOpr04Ru36wsfpnDNNWzW9JM9T6s0WyZ2P1DFrKxfojQFlAcmj7PkwY38dVK16Uw==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@types/jquery": "~3.5.6", + "@types/simple-peer": "~9.11.1", + "handlebars": "4.7.7", + "pixi-particles": "4.3.1", + "pixi.js": "5.3.4", + "socket.io-client": "4.1.2", + "tinymce": "5.8.1", + "typescript": "^4.3.5" } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/@jest/fake-timers/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 8" } }, - "node_modules/@jest/globals": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", - "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dev": true, "dependencies": { - "@jest/environment": "^27.0.6", - "@jest/types": "^27.0.6", - "expect": "^27.0.6" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@pixi/accessibility": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-5.3.4.tgz", + "integrity": "sha512-g8hQnnVSYJ+gLrdQyCsDDSu+VehhVL9Pcr2fkQSC9VBhxiMIN+Paky8kOxC2LL5nsKRIUGGaTa6iHtiopPQQMw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@pixi/app": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-5.3.4.tgz", + "integrity": "sha512-XT/EFyGslFdvdHY9ZS7yDAdLOj0U1UHeLxFr1kwiawuwIt/WsxNeH4jq2IijvZuQ3L5ON7Y7zQf54JEPv5fK0Q==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4" } }, - "node_modules/@jest/reporters": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", - "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "node_modules/@pixi/constants": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.4.tgz", + "integrity": "sha512-YsWjdMVMoJA8kG/0D4s9/DWWa2lPlexk0qNZOcV3tICaPG0IYfIhepfveMeMhIb0QrdSAsPbhYdcaxxgoaNF1A==", + "dev": true + }, + "node_modules/@pixi/core": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.4.tgz", + "integrity": "sha512-k6SRniy4pH7ZKAKC2HkbLSKPm+j7bF17fTO5+6xLSiVqLnfa7ChV51wNuoa30olVF3/d8ME2uraf7dsvXwomzw==", "dev": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@pixi/constants": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/runner": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/ticker": "5.3.4", + "@pixi/utils": "5.3.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@pixi/display": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.4.tgz", + "integrity": "sha512-RCi39Qi1L8mlIu1YvWvPI45WpKHRbpYlvSIT/414wmoaAoFZnaJ+qoVuqDCfzfNhWWirGAWpXniQjNRzkUZjcA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/math": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@pixi/extract": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-5.3.4.tgz", + "integrity": "sha512-HTGF5WKts4kF0v1rOU4YcLMUpb18FzcxKhaCwjXpqm3vANgjuGAUL9PxpmC4ecS03mkRa0+9vAXEUkJLQeNLPg==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@pixi/core": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/@pixi/filter-alpha": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-5.3.4.tgz", + "integrity": "sha512-lgRCN8bDeHlMpRtQv/P5gCJ+9e3AufJVC2H0TdkCRmJqm1dB+rhKwxIeNINsjjz+kiuumOe88CxRbRd3CpEydg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4" } }, - "node_modules/@jest/reporters/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/@pixi/filter-blur": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-5.3.4.tgz", + "integrity": "sha512-PYPHc8MEsZWfmVQkm0UKO70dmZpcWyu/Bs0xJa5apsmCm6zXNzXfMh02lsXu82HrNQ+9iJT/mAKrrDABGn9vtg==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "@pixi/core": "5.3.4", + "@pixi/settings": "5.3.4" } }, - "node_modules/@jest/source-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", - "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "node_modules/@pixi/filter-color-matrix": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.4.tgz", + "integrity": "sha512-9Iflvr1moc7ns5A/73lWVwLUbe+wb678NLA4X9SYXAJTiij4M1isDrULhk95TGUaWo4bbSBaov1vm8XbUZNG8w==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4" } }, - "node_modules/@jest/test-result": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", - "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", + "node_modules/@pixi/filter-displacement": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-5.3.4.tgz", + "integrity": "sha512-CldemXpcKr1GRT1Ll33TTFWtU6KDl4sYTvAwWTAEu8OhKedobBB/mRCIK9p1h7iZYtaj5MRYQjewmFKRrqyXrQ==", "dev": true, "dependencies": { - "@jest/console": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4", + "@pixi/math": "5.3.4" } }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@pixi/filter-fxaa": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-5.3.4.tgz", + "integrity": "sha512-GtIfaOsqQlsK+F1795V/JJIq5Uu15nasiCwGr+wVwHNGMBanAXt7AnSy8JHcgup3Eqx8FXRuM/AyD/4IYUquuA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4" } }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@pixi/filter-noise": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-5.3.4.tgz", + "integrity": "sha512-pNq4T4LC2naWz0pZXF3RT9aA7XdLL4TuBjJsYrrBaJZraupbOo6Mp8VwxVJs8GThmMl7/U13GalOzVSb/HjzDg==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@pixi/core": "5.3.4" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", - "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", + "node_modules/@pixi/graphics": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-5.3.4.tgz", + "integrity": "sha512-W6cuFfzwgfx3zVFICu98cENgwjy+d2e6xNJ/yJI0q8QiwlZmpuSXHBCfZrtIWpp9VSJZe2KDIo1LUnLhCpp3Yg==", "dev": true, "dependencies": { - "@jest/test-result": "^27.0.6", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-runtime": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/constants": "5.3.4", + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/sprite": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/transform": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", - "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "node_modules/@pixi/interaction": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-5.3.4.tgz", + "integrity": "sha512-7/JN7AtCuYmmWczrQROKSI9Z42p6C6p7B2wDVqNYYgROSaeGbGsZ8H0sa6nYLnIj4F3CaGSRoRnAMPz+CO70bw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.0.6", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-regex-util": "^27.0.6", - "jest-util": "^27.0.6", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/ticker": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/@pixi/loaders": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-5.3.4.tgz", + "integrity": "sha512-/dFznZnsivzq/MW7n/PPhMeznWFMMDYrac958OlxzSwrEAgtq6ZVLZbz7pCf9uhiifMnqwBGefphOFubj3Qorw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/core": "5.3.4", + "@pixi/utils": "5.3.4", + "resource-loader": "^3.0.1" } }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@pixi/math": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.4.tgz", + "integrity": "sha512-UQ2jhdlCHIvAVf8EcHB3QuR5GhB49VdTccWmer96RZCeGkcZsPSUk1ldO1GZnIctcf0Iuvmq74G02dYbtC7JxQ==", + "dev": true + }, + "node_modules/@pixi/mesh": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-5.3.4.tgz", + "integrity": "sha512-y0Y52cwsqETc/35DMGVCzQmhPCrQ3ZhjWcW9JwQoHMy3PoNSN9QUqYjVjF2oEj5hxcJnGNo3GAXFZz2Uh/UReQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@pixi/constants": "5.3.4", + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/@pixi/mesh-extras": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-5.3.4.tgz", + "integrity": "sha512-mjc3RlgLGYUv2FUKrVv/Dfaj2KW5qhX9c6Ev+yJ4lg/sMblet5gtYuyKsmJMS/K6B8V8+oMlTfX9ozFCzq1oJQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@pixi/constants": "5.3.4", + "@pixi/core": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/mesh": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.4.tgz", + "integrity": "sha512-8ZAmzDK1fHXIzYFHFH72LUMRZerY1Pt71XI3UgsWExABS1aREe20oPLuVByLP94W7X/kTXz+zK+nt51O5MGKsA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/sprite": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@jest/transform/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.4.tgz", + "integrity": "sha512-PY1Qe6CKYu+UNSRAFIfRyhRfkrpsTMwh9sI6iXVVi712bM3JkZIwDfDF31TA4nYX8z7H49w+KCWY4PejZ8l2WA==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "@pixi/display": "5.3.4" } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@league-of-foundry-developers/foundry-vtt-types": { - "version": "0.8.8-9", - "resolved": "https://registry.npmjs.org/@league-of-foundry-developers/foundry-vtt-types/-/foundry-vtt-types-0.8.8-9.tgz", - "integrity": "sha512-yBMwdOb9oMn2ZyZthxu159qdnLbPrRK+amtRKRcaOvbaJ2redlEL5C3ElSYT8J5uKkHfQQ8hZM16DzfZ64xD8g==", - "dev": true, - "dependencies": { - "@types/jquery": "~3.5.6", - "@types/simple-peer": "~9.11.1", - "handlebars": "4.7.7", - "pixi-particles": "4.3.1", - "pixi.js": "5.3.4", - "socket.io-client": "4.1.2", - "tinymce": "5.8.1", - "typescript": "^4.3.5" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pixi/accessibility": { + "node_modules/@pixi/mixin-get-global-position": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-5.3.4.tgz", - "integrity": "sha512-g8hQnnVSYJ+gLrdQyCsDDSu+VehhVL9Pcr2fkQSC9VBhxiMIN+Paky8kOxC2LL5nsKRIUGGaTa6iHtiopPQQMw==", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.4.tgz", + "integrity": "sha512-yv+huwUAOfyXDEHbQp6W5/3RjQpwG6AhpgMY4b3XBMtvrp9R/5Wgw/YC/nea9kZ3Gb2u4Aqeco8U+tPIRNjeIA==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4", "@pixi/display": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/app": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/app/-/app-5.3.4.tgz", - "integrity": "sha512-XT/EFyGslFdvdHY9ZS7yDAdLOj0U1UHeLxFr1kwiawuwIt/WsxNeH4jq2IijvZuQ3L5ON7Y7zQf54JEPv5fK0Q==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4" + "@pixi/math": "5.3.4" } }, - "node_modules/@pixi/constants": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-5.3.4.tgz", - "integrity": "sha512-YsWjdMVMoJA8kG/0D4s9/DWWa2lPlexk0qNZOcV3tICaPG0IYfIhepfveMeMhIb0QrdSAsPbhYdcaxxgoaNF1A==", - "dev": true - }, - "node_modules/@pixi/core": { + "node_modules/@pixi/particles": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.3.4.tgz", - "integrity": "sha512-k6SRniy4pH7ZKAKC2HkbLSKPm+j7bF17fTO5+6xLSiVqLnfa7ChV51wNuoa30olVF3/d8ME2uraf7dsvXwomzw==", + "resolved": "https://registry.npmjs.org/@pixi/particles/-/particles-5.3.4.tgz", + "integrity": "sha512-sX0BGGbS7yCwlam1mC5awW2BjU7QFmZv82E8ON/r9aAZS6InT25zOpMdvy0ImIIqBvF0Z1Qz1IT6pKEBxqMo9Q==", "dev": true, "dependencies": { "@pixi/constants": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/runner": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/ticker": "5.3.4", - "@pixi/utils": "5.3.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/pixijs" - } - }, - "node_modules/@pixi/display": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/display/-/display-5.3.4.tgz", - "integrity": "sha512-RCi39Qi1L8mlIu1YvWvPI45WpKHRbpYlvSIT/414wmoaAoFZnaJ+qoVuqDCfzfNhWWirGAWpXniQjNRzkUZjcA==", - "dev": true, - "dependencies": { - "@pixi/math": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/extract": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-5.3.4.tgz", - "integrity": "sha512-HTGF5WKts4kF0v1rOU4YcLMUpb18FzcxKhaCwjXpqm3vANgjuGAUL9PxpmC4ecS03mkRa0+9vAXEUkJLQeNLPg==", - "dev": true, - "dependencies": { "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", "@pixi/math": "5.3.4", "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/filter-alpha": { + "node_modules/@pixi/polyfill": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-5.3.4.tgz", - "integrity": "sha512-lgRCN8bDeHlMpRtQv/P5gCJ+9e3AufJVC2H0TdkCRmJqm1dB+rhKwxIeNINsjjz+kiuumOe88CxRbRd3CpEydg==", + "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-5.3.4.tgz", + "integrity": "sha512-bxk8bhrfQ9Y2rU/L0ss2gIeXwmMlOciw+B5yVUDVLqzjE4y8Fm2619L4qu9v51Z9a+8JbyVE5c1eT7HJgx0g0w==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4" + "es6-promise-polyfill": "^1.2.0", + "object-assign": "^4.1.1" } }, - "node_modules/@pixi/filter-blur": { + "node_modules/@pixi/prepare": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-5.3.4.tgz", - "integrity": "sha512-PYPHc8MEsZWfmVQkm0UKO70dmZpcWyu/Bs0xJa5apsmCm6zXNzXfMh02lsXu82HrNQ+9iJT/mAKrrDABGn9vtg==", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-5.3.4.tgz", + "integrity": "sha512-MVMvNTrNYQidWXd4LSkgv+eqTzHtSViADA+Tvnemy9QMuWqbTfxFn4UMhrBjQIfG9+hwdIFS14pfFKt/BLHNrw==", "dev": true, "dependencies": { "@pixi/core": "5.3.4", - "@pixi/settings": "5.3.4" + "@pixi/display": "5.3.4", + "@pixi/graphics": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/text": "5.3.4", + "@pixi/ticker": "5.3.4" } }, - "node_modules/@pixi/filter-color-matrix": { + "node_modules/@pixi/runner": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.4.tgz", - "integrity": "sha512-9Iflvr1moc7ns5A/73lWVwLUbe+wb678NLA4X9SYXAJTiij4M1isDrULhk95TGUaWo4bbSBaov1vm8XbUZNG8w==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4" - } + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.4.tgz", + "integrity": "sha512-iPWHVhv2js+NhDQNmePkHfic8SilBT7H/pzRjMqHqvafTdl8Y+4g+hdQDalZJNr3Ixl77QPAYlOKhegBujn2mQ==", + "dev": true }, - "node_modules/@pixi/filter-displacement": { + "node_modules/@pixi/settings": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-5.3.4.tgz", - "integrity": "sha512-CldemXpcKr1GRT1Ll33TTFWtU6KDl4sYTvAwWTAEu8OhKedobBB/mRCIK9p1h7iZYtaj5MRYQjewmFKRrqyXrQ==", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.4.tgz", + "integrity": "sha512-Jqj1NLtYODCqK8ZKVccUBAaBDkn7SQ6b7N15FwxbiSgfbvwpynSKr6WQTxqMq29h42MKsic6BJcQrlGEbDNz5w==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/math": "5.3.4" + "ismobilejs": "^1.1.0" } }, - "node_modules/@pixi/filter-fxaa": { + "node_modules/@pixi/sprite": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-5.3.4.tgz", - "integrity": "sha512-GtIfaOsqQlsK+F1795V/JJIq5Uu15nasiCwGr+wVwHNGMBanAXt7AnSy8JHcgup3Eqx8FXRuM/AyD/4IYUquuA==", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.4.tgz", + "integrity": "sha512-vO+GMJWnumnVzc2R7jGcLlUeIXIek+SDqVQyPDPJ5T8sWTgFhanHCrgpKfplZIu08X/zvIZQxPfd332R0waeog==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4" + "@pixi/constants": "5.3.4", + "@pixi/core": "5.3.4", + "@pixi/display": "5.3.4", + "@pixi/math": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/filter-noise": { + "node_modules/@pixi/sprite-animated": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-5.3.4.tgz", - "integrity": "sha512-pNq4T4LC2naWz0pZXF3RT9aA7XdLL4TuBjJsYrrBaJZraupbOo6Mp8VwxVJs8GThmMl7/U13GalOzVSb/HjzDg==", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-5.3.4.tgz", + "integrity": "sha512-HaTelbvm2xekw9b9GdYbupM2RZ/muRZvstkmSqMZhiIViZekzKPa5WQJwnqZzVBjCg735j09G8aF4H2NpNqF9g==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4" + "@pixi/core": "5.3.4", + "@pixi/sprite": "5.3.4", + "@pixi/ticker": "5.3.4" } }, - "node_modules/@pixi/graphics": { + "node_modules/@pixi/sprite-tiling": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-5.3.4.tgz", - "integrity": "sha512-W6cuFfzwgfx3zVFICu98cENgwjy+d2e6xNJ/yJI0q8QiwlZmpuSXHBCfZrtIWpp9VSJZe2KDIo1LUnLhCpp3Yg==", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-5.3.4.tgz", + "integrity": "sha512-NMqpNuWEIic2n5EL/TrGmn1+bab4TwxcILnco4myvw9Sd/wLsaJx3XboegY7YCWCKhnl+Ax6cl8DMkk7OJkpJQ==", "dev": true, "dependencies": { "@pixi/constants": "5.3.4", @@ -1468,248 +1278,67 @@ "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/interaction": { + "node_modules/@pixi/spritesheet": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-5.3.4.tgz", - "integrity": "sha512-7/JN7AtCuYmmWczrQROKSI9Z42p6C6p7B2wDVqNYYgROSaeGbGsZ8H0sa6nYLnIj4F3CaGSRoRnAMPz+CO70bw==", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-5.3.4.tgz", + "integrity": "sha512-gfCqOMD2XJHw1bMXxXbuYPnBbCBUvbzMN7Pw2po7U5R6bsk7WEoG7Hp3HjAPyPQvg36v2Db6dcz0//ZNNqm+EQ==", "dev": true, "dependencies": { "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", + "@pixi/loaders": "5.3.4", "@pixi/math": "5.3.4", - "@pixi/ticker": "5.3.4", "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/loaders": { + "node_modules/@pixi/text": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-5.3.4.tgz", - "integrity": "sha512-/dFznZnsivzq/MW7n/PPhMeznWFMMDYrac958OlxzSwrEAgtq6ZVLZbz7pCf9uhiifMnqwBGefphOFubj3Qorw==", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-5.3.4.tgz", + "integrity": "sha512-kmdK1KLrWY8PHGIIXKVRQmik3gWquiYz6DB0jqabi3j0gVp6h+CVDje01N6Nl75ZCQ/PjaWafzQvURypfX73ng==", "dev": true, "dependencies": { "@pixi/core": "5.3.4", - "@pixi/utils": "5.3.4", - "resource-loader": "^3.0.1" + "@pixi/math": "5.3.4", + "@pixi/settings": "5.3.4", + "@pixi/sprite": "5.3.4", + "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/math": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/math/-/math-5.3.4.tgz", - "integrity": "sha512-UQ2jhdlCHIvAVf8EcHB3QuR5GhB49VdTccWmer96RZCeGkcZsPSUk1ldO1GZnIctcf0Iuvmq74G02dYbtC7JxQ==", - "dev": true - }, - "node_modules/@pixi/mesh": { + "node_modules/@pixi/text-bitmap": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-5.3.4.tgz", - "integrity": "sha512-y0Y52cwsqETc/35DMGVCzQmhPCrQ3ZhjWcW9JwQoHMy3PoNSN9QUqYjVjF2oEj5hxcJnGNo3GAXFZz2Uh/UReQ==", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-5.3.4.tgz", + "integrity": "sha512-uNJOYvy3sn0S5Bp6H113ZAmaQm68ojCXSuOBJzIMEV2cUuYLngW+7DqKOsHMMhNmcONs/OBq57SRrzDcr8WYdw==", "dev": true, "dependencies": { - "@pixi/constants": "5.3.4", "@pixi/core": "5.3.4", "@pixi/display": "5.3.4", + "@pixi/loaders": "5.3.4", "@pixi/math": "5.3.4", + "@pixi/mesh": "5.3.4", "@pixi/settings": "5.3.4", + "@pixi/text": "5.3.4", "@pixi/utils": "5.3.4" } }, - "node_modules/@pixi/mesh-extras": { + "node_modules/@pixi/ticker": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-5.3.4.tgz", - "integrity": "sha512-mjc3RlgLGYUv2FUKrVv/Dfaj2KW5qhX9c6Ev+yJ4lg/sMblet5gtYuyKsmJMS/K6B8V8+oMlTfX9ozFCzq1oJQ==", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.4.tgz", + "integrity": "sha512-PmCAstgyI6vLPXKZVFlo4Zornry21BwFiTOp1dBUW3sIMky9Wx2fajjyVHIridCY6yaazt6Xu37khZf5qRgASw==", "dev": true, "dependencies": { - "@pixi/constants": "5.3.4", - "@pixi/core": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/mesh": "5.3.4", - "@pixi/utils": "5.3.4" + "@pixi/settings": "5.3.4" } }, - "node_modules/@pixi/mixin-cache-as-bitmap": { + "node_modules/@pixi/utils": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.4.tgz", - "integrity": "sha512-8ZAmzDK1fHXIzYFHFH72LUMRZerY1Pt71XI3UgsWExABS1aREe20oPLuVByLP94W7X/kTXz+zK+nt51O5MGKsA==", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.4.tgz", + "integrity": "sha512-HjUWFfAmPPKX0BSq20GWY//Vm+gC9O+wcn9sXMqOItCuf0DDFwxoBrUVaHNNnEVhM1Djpz/+YijCijmGdZeddA==", "dev": true, "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/math": "5.3.4", + "@pixi/constants": "5.3.4", "@pixi/settings": "5.3.4", - "@pixi/sprite": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/mixin-get-child-by-name": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.4.tgz", - "integrity": "sha512-PY1Qe6CKYu+UNSRAFIfRyhRfkrpsTMwh9sI6iXVVi712bM3JkZIwDfDF31TA4nYX8z7H49w+KCWY4PejZ8l2WA==", - "dev": true, - "dependencies": { - "@pixi/display": "5.3.4" - } - }, - "node_modules/@pixi/mixin-get-global-position": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.4.tgz", - "integrity": "sha512-yv+huwUAOfyXDEHbQp6W5/3RjQpwG6AhpgMY4b3XBMtvrp9R/5Wgw/YC/nea9kZ3Gb2u4Aqeco8U+tPIRNjeIA==", - "dev": true, - "dependencies": { - "@pixi/display": "5.3.4", - "@pixi/math": "5.3.4" - } - }, - "node_modules/@pixi/particles": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/particles/-/particles-5.3.4.tgz", - "integrity": "sha512-sX0BGGbS7yCwlam1mC5awW2BjU7QFmZv82E8ON/r9aAZS6InT25zOpMdvy0ImIIqBvF0Z1Qz1IT6pKEBxqMo9Q==", - "dev": true, - "dependencies": { - "@pixi/constants": "5.3.4", - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/polyfill": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-5.3.4.tgz", - "integrity": "sha512-bxk8bhrfQ9Y2rU/L0ss2gIeXwmMlOciw+B5yVUDVLqzjE4y8Fm2619L4qu9v51Z9a+8JbyVE5c1eT7HJgx0g0w==", - "dev": true, - "dependencies": { - "es6-promise-polyfill": "^1.2.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/@pixi/prepare": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-5.3.4.tgz", - "integrity": "sha512-MVMvNTrNYQidWXd4LSkgv+eqTzHtSViADA+Tvnemy9QMuWqbTfxFn4UMhrBjQIfG9+hwdIFS14pfFKt/BLHNrw==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/graphics": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/text": "5.3.4", - "@pixi/ticker": "5.3.4" - } - }, - "node_modules/@pixi/runner": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-5.3.4.tgz", - "integrity": "sha512-iPWHVhv2js+NhDQNmePkHfic8SilBT7H/pzRjMqHqvafTdl8Y+4g+hdQDalZJNr3Ixl77QPAYlOKhegBujn2mQ==", - "dev": true - }, - "node_modules/@pixi/settings": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-5.3.4.tgz", - "integrity": "sha512-Jqj1NLtYODCqK8ZKVccUBAaBDkn7SQ6b7N15FwxbiSgfbvwpynSKr6WQTxqMq29h42MKsic6BJcQrlGEbDNz5w==", - "dev": true, - "dependencies": { - "ismobilejs": "^1.1.0" - } - }, - "node_modules/@pixi/sprite": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-5.3.4.tgz", - "integrity": "sha512-vO+GMJWnumnVzc2R7jGcLlUeIXIek+SDqVQyPDPJ5T8sWTgFhanHCrgpKfplZIu08X/zvIZQxPfd332R0waeog==", - "dev": true, - "dependencies": { - "@pixi/constants": "5.3.4", - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/sprite-animated": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-5.3.4.tgz", - "integrity": "sha512-HaTelbvm2xekw9b9GdYbupM2RZ/muRZvstkmSqMZhiIViZekzKPa5WQJwnqZzVBjCg735j09G8aF4H2NpNqF9g==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/sprite": "5.3.4", - "@pixi/ticker": "5.3.4" - } - }, - "node_modules/@pixi/sprite-tiling": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-5.3.4.tgz", - "integrity": "sha512-NMqpNuWEIic2n5EL/TrGmn1+bab4TwxcILnco4myvw9Sd/wLsaJx3XboegY7YCWCKhnl+Ax6cl8DMkk7OJkpJQ==", - "dev": true, - "dependencies": { - "@pixi/constants": "5.3.4", - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/sprite": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/spritesheet": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-5.3.4.tgz", - "integrity": "sha512-gfCqOMD2XJHw1bMXxXbuYPnBbCBUvbzMN7Pw2po7U5R6bsk7WEoG7Hp3HjAPyPQvg36v2Db6dcz0//ZNNqm+EQ==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/loaders": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/text": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/text/-/text-5.3.4.tgz", - "integrity": "sha512-kmdK1KLrWY8PHGIIXKVRQmik3gWquiYz6DB0jqabi3j0gVp6h+CVDje01N6Nl75ZCQ/PjaWafzQvURypfX73ng==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/sprite": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/text-bitmap": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-5.3.4.tgz", - "integrity": "sha512-uNJOYvy3sn0S5Bp6H113ZAmaQm68ojCXSuOBJzIMEV2cUuYLngW+7DqKOsHMMhNmcONs/OBq57SRrzDcr8WYdw==", - "dev": true, - "dependencies": { - "@pixi/core": "5.3.4", - "@pixi/display": "5.3.4", - "@pixi/loaders": "5.3.4", - "@pixi/math": "5.3.4", - "@pixi/mesh": "5.3.4", - "@pixi/settings": "5.3.4", - "@pixi/text": "5.3.4", - "@pixi/utils": "5.3.4" - } - }, - "node_modules/@pixi/ticker": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-5.3.4.tgz", - "integrity": "sha512-PmCAstgyI6vLPXKZVFlo4Zornry21BwFiTOp1dBUW3sIMky9Wx2fajjyVHIridCY6yaazt6Xu37khZf5qRgASw==", - "dev": true, - "dependencies": { - "@pixi/settings": "5.3.4" - } - }, - "node_modules/@pixi/utils": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-5.3.4.tgz", - "integrity": "sha512-HjUWFfAmPPKX0BSq20GWY//Vm+gC9O+wcn9sXMqOItCuf0DDFwxoBrUVaHNNnEVhM1Djpz/+YijCijmGdZeddA==", - "dev": true, - "dependencies": { - "@pixi/constants": "5.3.4", - "@pixi/settings": "5.3.4", - "earcut": "^2.1.5", - "eventemitter3": "^3.1.0", - "url": "^0.11.0" + "earcut": "^2.1.5", + "eventemitter3": "^3.1.0", + "url": "^0.11.0" } }, "node_modules/@sinonjs/commons": { @@ -1887,13 +1516,13 @@ } }, "node_modules/@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "version": "27.0.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", + "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", "dev": true, "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" } }, "node_modules/@types/jquery": { @@ -1911,6 +1540,12 @@ "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "node_modules/@types/node": { "version": "16.3.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.0.tgz", @@ -1918,9 +1553,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.1.tgz", - "integrity": "sha512-NVkb4p4YjI8E3O6+1m8I+8JlMpFZwfSbPGdaw0wXuyPRTEz0SLKwBUWNSO7Maoi8tQMPC8JLZNWkrcKPI7/sLA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "node_modules/@types/simple-peer": { @@ -1945,9 +1580,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -2128,9 +1763,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz", - "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.2.tgz", + "integrity": "sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -2211,2576 +1846,1114 @@ "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/babel-jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", - "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.0.6", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-jest/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", - "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "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==", - "dev": true, - "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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", - "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.0.6", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chrome-trace-event": { - "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==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz", - "integrity": "sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==", - "dev": true - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "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==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", - "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/earcut": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.3.tgz", - "integrity": "sha512-iRDI1QeCQIhMCZk48DRDMVgQSSBDmbzzNhnxIo+pwx3swkfjMh6vh0nWLq1NdvGHLKH6wIrAM3vQWeTj6qeoug==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.734", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.734.tgz", - "integrity": "sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/engine.io-client": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz", - "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==", - "dev": true, - "dependencies": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", - "has-cors": "1.1.0", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", - "dev": true, - "dependencies": { - "base64-arraybuffer": "0.1.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.1.tgz", - "integrity": "sha512-TeHbKJI8Yy5M0SNz/QrMtZ0Mx5WYpN+OwglnTOJZkM8oy+K7xoicYRGFOb2ZTj5EYLPY5JMRUTVsiKVLL9vgOw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", - "dev": true - }, - "node_modules/es6-promise-polyfill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", - "integrity": "sha1-84kl8jyz4+jObNqP93T867sJDN4=", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", - "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-regex-util": "^27.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/fast-deep-equal": { - "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==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "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==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "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==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "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" + "debug": "4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6.0.0" } }, - "node_modules/glob-parent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", - "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=10.13.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/glob-to-regexp": { - "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==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "engines": { - "node": ">=4" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", - "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==", - "dev": true + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.4.7" + "node": ">=8" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 8" } }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/babel-jest": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz", + "integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.0.6", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" + "node": ">=8" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/babel-plugin-jest-hoist": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", + "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/babel-preset-current-node-syntax": { + "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==", "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" + "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" }, "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" + "@babel/core": "^7.0.0" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/babel-preset-jest": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", + "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "babel-plugin-jest-hoist": "^27.0.6", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/imurmurhash": { + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-arraybuffer": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">= 0.6.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": { + "node": ">=8" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">= 0.10" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "dependencies": { - "ci-info": "^3.1.1" + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" }, "bin": { - "is-ci": "bin.js" + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, - "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "dependencies": { - "has": "^1.0.3" + "fast-json-stable-stringify": "2.x" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 6" } }, - "node_modules/is-extglob": { + "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/is-fullwidth-code-point": { - "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==", + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=10" } }, - "node_modules/is-plain-object": { - "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==", + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "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" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "node_modules/chrome-trace-event": { + "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==", + "dev": true, + "engines": { + "node": ">=6.0" + } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, - "node_modules/ismobilejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", - "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, "engines": { - "node": ">=8" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "node_modules/commander": { + "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==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" + "safe-buffer": "~5.1.1" } }, - "node_modules/jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", - "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", + "node_modules/copy-webpack-plugin": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", + "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", "dev": true, "dependencies": { - "@jest/core": "^27.0.6", - "import-local": "^3.0.2", - "jest-cli": "^27.0.6" - }, - "bin": { - "jest": "bin/jest.js" + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 12.13.0" }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/jest-changed-files": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", - "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "execa": "^5.0.0", - "throat": "^6.0.1" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/jest-circus": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", - "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "@jest/environment": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.0.6", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 8" } }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/css-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz", + "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/jest-circus/node_modules/picomatch": { + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "cssom": "~0.3.6" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/jest-config": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", - "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.6", - "@jest/types": "^27.0.6", - "babel-jest": "^27.0.6", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.0.6", - "jest-environment-jsdom": "^27.0.6", - "jest-environment-node": "^27.0.6", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.0.6", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-runner": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "micromatch": "^4.0.4", - "pretty-format": "^27.0.6" + "ms": "2.1.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "ts-node": { + "supports-color": { "optional": true } } }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/deep-is": { + "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==", + "dev": true }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.4.0" } }, - "node_modules/jest-config/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/jest-config/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.3.1" } }, - "node_modules/jest-config/node_modules/pretty-format": { + "node_modules/diff-sequences": { "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", - "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "webidl-conversions": "^5.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-each": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", - "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/earcut": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.3.tgz", + "integrity": "sha512-iRDI1QeCQIhMCZk48DRDMVgQSSBDmbzzNhnxIo+pwx3swkfjMh6vh0nWLq1NdvGHLKH6wIrAM3vQWeTj6qeoug==", + "dev": true }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/electron-to-chromium": { + "version": "1.3.734", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.734.tgz", + "integrity": "sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw==", + "dev": true }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/engine.io-client": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.1.2.tgz", + "integrity": "sha512-blRrgXIE0A/eurWXRzvfCLG7uUFJqfTGFsyJzXSK71srMMGJ2VraBLg8Mdw28uUxSpVicepBN9X7asqpD1mZcQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "yeast": "0.1.2" } }, - "node_modules/jest-each/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/engine.io-client/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true, "engines": { - "node": ">=8.6" + "node": ">=8.3.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "base64-arraybuffer": "0.1.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", - "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", + "node_modules/enhanced-resolve": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.1.tgz", + "integrity": "sha512-TeHbKJI8Yy5M0SNz/QrMtZ0Mx5WYpN+OwglnTOJZkM8oy+K7xoicYRGFOb2ZTj5EYLPY5JMRUTVsiKVLL9vgOw==", "dev": true, "dependencies": { - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6", - "jsdom": "^16.6.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "node_modules/es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha1-84kl8jyz4+jObNqP93T867sJDN4=", + "dev": true }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=6" } }, - "node_modules/jest-environment-node": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", - "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "dependencies": { - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.8.0" } }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=4.0" } }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-environment-node/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "engines": { - "node": ">=8.6" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=4" } }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">= 10.14.2" + "node": ">=4.0" } }, - "node_modules/jest-haste-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", - "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.0.6", - "jest-serializer": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=4.0" } }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4.0" } }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.8.x" } }, - "node_modules/jest-haste-map/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "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" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-jasmine2": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", - "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true, - "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.6", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.0.6", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6", - "throat": "^6.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/expect": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz", + "integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/types": "^27.1.0", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-regex-util": "^27.0.6" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "node_modules/expect/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -4792,1199 +2965,1294 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/fast-deep-equal": { + "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==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-jasmine2/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">= 6" } }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/fast-json-stable-stringify": { + "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==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "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==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", - "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-leak-detector/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 6" } }, - "node_modules/jest-leak-detector/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", - "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" + "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" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-matcher-utils/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/glob-parent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz", + "integrity": "sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-matcher-utils/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/glob-to-regexp": { + "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==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=4" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "node_modules/graceful-fs": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", + "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", - "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" + "function-bind": "^1.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4.0" } }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "whatwg-encoding": "^1.0.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/jest-message-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", - "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.0.6", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.0.6", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 6" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "node": ">= 6" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.17.0" } }, - "node_modules/jest-message-util/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "engines": { - "node": ">=8.6" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 4" } }, - "node_modules/jest-mock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", - "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "node_modules/jest-regex-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.10" } }, - "node_modules/jest-resolve": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", - "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "chalk": "^4.0.0", - "escalade": "^3.1.1", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "resolve": "^1.20.0", - "slash": "^3.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve-dependencies": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", - "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", + "node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.0.6" + "ci-info": "^3.1.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "has": "^1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/is-fullwidth-code-point": { + "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==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=6" } }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.12.0" } }, - "node_modules/jest-runner": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", - "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", + "node_modules/is-plain-object": { + "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==", "dev": true, "dependencies": { - "@jest/console": "^27.0.6", - "@jest/environment": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.0.6", - "jest-environment-node": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-leak-detector": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "isobject": "^3.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/jest-runtime": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", - "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "dependencies": { - "@jest/console": "^27.0.6", - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/globals": "^27.0.6", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-mock": "^27.0.6", - "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.0.3" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/jest": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", + "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", "dev": true, + "dependencies": { + "@jest/core": "^27.1.0", + "import-local": "^3.0.2", + "jest-cli": "^27.1.0" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=8.6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-serializer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", - "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "node_modules/jest-changed-files": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz", + "integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "@jest/types": "^27.1.0", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", - "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", + "node_modules/jest-circus": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz", + "integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", + "@jest/environment": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/node": "*", "chalk": "^4.0.0", - "expect": "^27.0.6", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.6", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-util": "^27.0.6", - "natural-compare": "^1.4.0", - "pretty-format": "^27.0.6", - "semver": "^7.3.2" + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.1.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/jest-cli": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz", + "integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/core": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "prompts": "^2.0.1", + "yargs": "^16.0.3" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/jest-config": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz", + "integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.1.0", + "@jest/types": "^27.1.0", + "babel-jest": "^27.1.0", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.1.0", + "jest-environment-jsdom": "^27.1.0", + "jest-environment-node": "^27.1.0", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.1.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-runner": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "micromatch": "^4.0.4", + "pretty-format": "^27.1.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", - "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", + "node_modules/jest-diff": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz", + "integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" + "pretty-format": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { + "node_modules/jest-docblock": { "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/jest-each": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz", + "integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", + "@jest/types": "^27.1.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "jest-get-type": "^27.0.6", + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/jest-environment-jsdom": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz", + "integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/node": "*", + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0", + "jsdom": "^16.6.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/jest-environment-node": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz", + "integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/node": "*", + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-transform-stub": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", - "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", - "dev": true - }, - "node_modules/jest-ts-webcompat-resolver": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jest-ts-webcompat-resolver/-/jest-ts-webcompat-resolver-1.0.0.tgz", - "integrity": "sha512-BFoaU7LeYqZNnTYEr6iMRf87xdCQntNc/Wk8YpzDBcuz+CIZ0JsTtzuMAMnKiEgTRTC1wRWLUo2RlVjVijBcHQ==", - "dev": true, - "peerDependencies": { - "jest-resolve": "*" + "node_modules/jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz", - "integrity": "sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==", + "node_modules/jest-haste-map": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz", + "integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.2", + "@jest/types": "^27.1.0", + "@types/graceful-fs": "^4.1.2", "@types/node": "*", - "chalk": "^4.0.0", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz", - "integrity": "sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==", + "node_modules/jest-jasmine2": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz", + "integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.1.0", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.1.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", - "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", + "node_modules/jest-leak-detector": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz", + "integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" + "jest-get-type": "^27.0.6", + "pretty-format": "^27.1.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", - "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", + "node_modules/jest-matcher-utils": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz", + "integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "camelcase": "^6.2.0", "chalk": "^4.0.0", + "jest-diff": "^27.1.0", "jest-get-type": "^27.0.6", - "leven": "^3.1.0", - "pretty-format": "^27.0.6" + "pretty-format": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/jest-message-util": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz", + "integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.1.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.1.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/jest-mock": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", + "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@jest/types": "^27.1.0", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "node_modules/jest-resolve": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz", + "integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==", "dev": true, + "dependencies": { + "@jest/types": "^27.1.0", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.1.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", + "node_modules/jest-resolve-dependencies": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz", + "integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "@jest/types": "^27.1.0", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", - "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", + "node_modules/jest-runner": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz", + "integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/environment": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.0.6", - "string-length": "^4.0.1" + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.1.0", + "jest-environment-node": "^27.1.0", + "jest-haste-map": "^27.1.0", + "jest-leak-detector": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/jest-runtime": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz", + "integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", + "@jest/console": "^27.1.0", + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/globals": "^27.1.0", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-mock": "^27.1.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.0.3" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/jest-snapshot": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz", + "integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", - "@types/node": "*", + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", + "expect": "^27.1.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "jest-diff": "^27.1.0", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-util": "^27.1.0", + "natural-compare": "^1.4.0", + "pretty-format": "^27.1.0", + "semver": "^7.3.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/jest-worker": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", - "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "node_modules/jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "node_modules/jest-ts-webcompat-resolver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-ts-webcompat-resolver/-/jest-ts-webcompat-resolver-1.0.0.tgz", + "integrity": "sha512-BFoaU7LeYqZNnTYEr6iMRf87xdCQntNc/Wk8YpzDBcuz+CIZ0JsTtzuMAMnKiEgTRTC1wRWLUo2RlVjVijBcHQ==", "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "peerDependencies": { + "jest-resolve": "*" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-util": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz", + "integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.1.0", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "node_modules/jest-validate": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz", + "integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/types": "^27.1.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.1.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest/node_modules/jest-cli": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", - "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", + "node_modules/jest-watcher": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz", + "integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==", "dev": true, "dependencies": { - "@jest/core": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "prompts": "^2.0.1", - "yargs": "^16.0.3" - }, - "bin": { - "jest": "bin/jest.js" + "jest-util": "^27.1.0", + "string-length": "^4.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } } }, - "node_modules/jest/node_modules/jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", + "node_modules/jest-worker": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", + "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", "dev": true, "dependencies": { - "@jest/types": "^27.0.6", "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 10.13.0" } }, - "node_modules/jest/node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-tokens": { @@ -6007,9 +4275,9 @@ } }, "node_modules/jsdom": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", - "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, "dependencies": { "abab": "^2.0.5", @@ -6037,7 +4305,7 @@ "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.5.0", - "ws": "^7.4.5", + "ws": "^7.4.6", "xml-name-validator": "^3.0.0" }, "engines": { @@ -6225,16 +4493,16 @@ } }, "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/mime-db": { @@ -6268,9 +4536,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.0.tgz", - "integrity": "sha512-91HeVHbq7PUJ4TwOuMTlFWfVWrLqf3SF0PlEDPV+wtgsfxrMebN9LLzflyQqdKLp4/H3PexRB1WLKsCqpWKkxQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.2.tgz", + "integrity": "sha512-eUjQ/q1rQIeHWgIx7ny/DNgXHcMXHdBwgrZQK7Ev8dbR+HxhroFM2Cb6kMiswOYaq05IRJhPuQqXWUABIjjA3g==", "dev": true, "dependencies": { "schema-utils": "^3.1.0" @@ -6310,18 +4578,6 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6568,9 +4824,9 @@ } }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, "engines": { "node": ">=8.6" @@ -6764,18 +5020,30 @@ } }, "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz", + "integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.1.0", "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, "engines": { - "node": ">= 10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/prompts": { @@ -6989,9 +5257,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.37.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.37.5.tgz", - "integrity": "sha512-Cx3ewxz9QB/ErnVIiWg2cH0kiYZ0FPvheDTVC6BsiEGBTZKKZJ1Gq5Kq6jy3PKtL6+EJ8NIoaBW/RSd2R6cZOA==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.39.0.tgz", + "integrity": "sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0" @@ -7484,19 +5752,17 @@ } }, "node_modules/ts-jest": { - "version": "27.0.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.4.tgz", - "integrity": "sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==", + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", + "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", "dev": true, "dependencies": { "bs-logger": "0.x", - "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", "lodash": "4.x", "make-error": "1.x", - "mkdirp": "1.x", "semver": "7.x", "yargs-parser": "20.x" }, @@ -7508,7 +5774,7 @@ }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^26.0.0", + "@types/jest": "^27.0.0", "babel-jest": ">=27.0.0 <28", "jest": "^27.0.0", "typescript": ">=3.8 <5.0" @@ -7575,9 +5841,9 @@ } }, "node_modules/ts-node": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.0.tgz", - "integrity": "sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "0.6.1", @@ -7628,16 +5894,29 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", - "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", "dev": true, "dependencies": { - "json5": "^2.2.0", + "@types/json5": "^0.0.29", + "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" } }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -7690,9 +5969,9 @@ } }, "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", + "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -7837,9 +6116,9 @@ } }, "node_modules/webpack": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", - "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.52.0.tgz", + "integrity": "sha512-yRZOat8jWGwBwHpco3uKQhVU7HYaNunZiJ4AkAVQkPCUGoZk/tiIXiwG+8HIy/F+qsiZvSOa+GLQOj3q5RKRYg==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -7884,15 +6163,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz", - "integrity": "sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.8.0.tgz", + "integrity": "sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.0.4", "@webpack-cli/info": "^1.3.0", - "@webpack-cli/serve": "^1.5.1", + "@webpack-cli/serve": "^1.5.2", "colorette": "^1.2.1", "commander": "^7.0.0", "execa": "^5.0.0", @@ -8059,9 +6338,9 @@ } }, "node_modules/ws": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", - "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", + "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==", "dev": true, "engines": { "node": ">=8.3.0" @@ -8641,294 +6920,104 @@ "dev": true }, "@jest/console": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", - "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.1.0.tgz", + "integrity": "sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.0.6", - "jest-util": "^27.0.6", + "jest-message-util": "^27.1.0", + "jest-util": "^27.1.0", "slash": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "@jest/core": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", - "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.1.0.tgz", + "integrity": "sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==", "dev": true, "requires": { - "@jest/console": "^27.0.6", - "@jest/reporters": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/reporters": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.0.6", - "jest-config": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-message-util": "^27.0.6", + "jest-changed-files": "^27.1.0", + "jest-config": "^27.1.0", + "jest-haste-map": "^27.1.0", + "jest-message-util": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-resolve-dependencies": "^27.0.6", - "jest-runner": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "jest-watcher": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-resolve-dependencies": "^27.1.0", + "jest-runner": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "jest-watcher": "^27.1.0", "micromatch": "^4.0.4", "p-each-series": "^2.1.0", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "@jest/environment": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", - "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.1.0.tgz", + "integrity": "sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==", "dev": true, "requires": { - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "jest-mock": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } + "jest-mock": "^27.1.0" } }, "@jest/fake-timers": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", - "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.1.0.tgz", + "integrity": "sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@sinonjs/fake-timers": "^7.0.2", "@types/node": "*", - "jest-message-util": "^27.0.6", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } + "jest-message-util": "^27.1.0", + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0" } }, "@jest/globals": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", - "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.1.0.tgz", + "integrity": "sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==", "dev": true, "requires": { - "@jest/environment": "^27.0.6", - "@jest/types": "^27.0.6", - "expect": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } + "@jest/environment": "^27.1.0", + "@jest/types": "^27.1.0", + "expect": "^27.1.0" } }, "@jest/reporters": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", - "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.1.0.tgz", + "integrity": "sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", @@ -8939,59 +7028,15 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", + "jest-haste-map": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^8.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "@jest/source-map": { @@ -9006,147 +7051,69 @@ } }, "@jest/test-result": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", - "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.1.0.tgz", + "integrity": "sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==", "dev": true, "requires": { - "@jest/console": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/types": "^27.1.0", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } } }, "@jest/test-sequencer": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", - "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz", + "integrity": "sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==", "dev": true, "requires": { - "@jest/test-result": "^27.0.6", + "@jest/test-result": "^27.1.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-runtime": "^27.0.6" + "jest-haste-map": "^27.1.0", + "jest-runtime": "^27.1.0" } }, "@jest/transform": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", - "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.1.0.tgz", + "integrity": "sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "babel-plugin-istanbul": "^6.0.0", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", + "jest-haste-map": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-util": "^27.0.6", + "jest-util": "^27.1.0", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.1.0.tgz", + "integrity": "sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" } }, "@league-of-foundry-developers/foundry-vtt-types": { - "version": "0.8.8-9", - "resolved": "https://registry.npmjs.org/@league-of-foundry-developers/foundry-vtt-types/-/foundry-vtt-types-0.8.8-9.tgz", - "integrity": "sha512-yBMwdOb9oMn2ZyZthxu159qdnLbPrRK+amtRKRcaOvbaJ2redlEL5C3ElSYT8J5uKkHfQQ8hZM16DzfZ64xD8g==", + "version": "0.8.9-2", + "resolved": "https://registry.npmjs.org/@league-of-foundry-developers/foundry-vtt-types/-/foundry-vtt-types-0.8.9-2.tgz", + "integrity": "sha512-IPPaqPoVbrAqLsYUUFLWllIOpr04Ru36wsfpnDNNWzW9JM9T6s0WyZ2P1DFrKxfojQFlAcmj7PkwY38dVK16Uw==", "dev": true, "requires": { "@types/jquery": "~3.5.6", @@ -9734,13 +7701,13 @@ } }, "@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "version": "27.0.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", + "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", "dev": true, "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" } }, "@types/jquery": { @@ -9758,6 +7725,12 @@ "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/node": { "version": "16.3.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.0.tgz", @@ -9765,9 +7738,9 @@ "dev": true }, "@types/prettier": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.1.tgz", - "integrity": "sha512-NVkb4p4YjI8E3O6+1m8I+8JlMpFZwfSbPGdaw0wXuyPRTEz0SLKwBUWNSO7Maoi8tQMPC8JLZNWkrcKPI7/sLA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "@types/simple-peer": { @@ -9792,9 +7765,9 @@ "dev": true }, "@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -9969,9 +7942,9 @@ } }, "@webpack-cli/serve": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz", - "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.2.tgz", + "integrity": "sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==", "dev": true, "requires": {} }, @@ -10120,43 +8093,19 @@ "dev": true }, "babel-jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", - "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.1.0.tgz", + "integrity": "sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==", "dev": true, "requires": { - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", "babel-preset-jest": "^27.0.6", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } } }, "babel-plugin-istanbul": { @@ -10374,9 +8323,9 @@ "dev": true }, "cjs-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz", - "integrity": "sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, "cliui": { @@ -10611,9 +8560,9 @@ "dev": true }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "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==", "dev": true }, "deepmerge": { @@ -10641,9 +8590,9 @@ "dev": true }, "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true }, "dir-glob": { @@ -10873,51 +8822,23 @@ "dev": true }, "expect": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", - "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.1.0.tgz", + "integrity": "sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "ansi-styles": "^5.0.0", "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", "jest-regex-util": "^27.0.6" }, "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true } } @@ -11414,321 +9335,113 @@ } }, "jest": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", - "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", + "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", "dev": true, "requires": { - "@jest/core": "^27.0.6", + "@jest/core": "^27.1.0", "import-local": "^3.0.2", - "jest-cli": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-cli": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", - "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", - "dev": true, - "requires": { - "@jest/core": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", - "prompts": "^2.0.1", - "yargs": "^16.0.3" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } + "jest-cli": "^27.1.0" } }, "jest-changed-files": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", - "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.1.0.tgz", + "integrity": "sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "execa": "^5.0.0", "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } } }, "jest-circus": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", - "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.1.0.tgz", + "integrity": "sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==", "dev": true, "requires": { - "@jest/environment": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/environment": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.0.6", + "expect": "^27.1.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6", + "jest-each": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } + } + }, + "jest-cli": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.1.0.tgz", + "integrity": "sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==", + "dev": true, + "requires": { + "@jest/core": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", + "prompts": "^2.0.1", + "yargs": "^16.0.3" } }, "jest-config": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", - "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.1.0.tgz", + "integrity": "sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.0.6", - "@jest/types": "^27.0.6", - "babel-jest": "^27.0.6", + "@jest/test-sequencer": "^27.1.0", + "@jest/types": "^27.1.0", + "babel-jest": "^27.1.0", "chalk": "^4.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", - "jest-circus": "^27.0.6", - "jest-environment-jsdom": "^27.0.6", - "jest-environment-node": "^27.0.6", + "jest-circus": "^27.1.0", + "jest-environment-jsdom": "^27.1.0", + "jest-environment-node": "^27.1.0", "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.0.6", + "jest-jasmine2": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-runner": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-runner": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", "micromatch": "^4.0.4", - "pretty-format": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } + "pretty-format": "^27.1.0" } }, "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.1.0.tgz", + "integrity": "sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.1.0" } }, "jest-docblock": { @@ -11741,216 +9454,60 @@ } }, "jest-each": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", - "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.1.0.tgz", + "integrity": "sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0" } }, "jest-environment-jsdom": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", - "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz", + "integrity": "sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==", "dev": true, "requires": { - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6", + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0", "jsdom": "^16.6.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-environment-node": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", - "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.1.0.tgz", + "integrity": "sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==", "dev": true, "requires": { - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", - "jest-mock": "^27.0.6", - "jest-util": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } + "jest-mock": "^27.1.0", + "jest-util": "^27.1.0" } }, "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", "dev": true }, "jest-haste-map": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", - "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.1.0.tgz", + "integrity": "sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", @@ -11959,397 +9516,85 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", "micromatch": "^4.0.4", "walker": "^1.0.7" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-jasmine2": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", - "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.0.6", - "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.0.6", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "pretty-format": "^27.0.6", - "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } - } - }, - "jest-leak-detector": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", - "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz", + "integrity": "sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==", "dev": true, - "requires": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.1.0", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.1.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "pretty-format": "^27.1.0", + "throat": "^6.0.1" + } + }, + "jest-leak-detector": { + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz", + "integrity": "sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==", + "dev": true, + "requires": { + "jest-get-type": "^27.0.6", + "pretty-format": "^27.1.0" } }, "jest-matcher-utils": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", - "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz", + "integrity": "sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.0.6", + "jest-diff": "^27.1.0", "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true - }, - "jest-diff": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", - "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" - } - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } + "pretty-format": "^27.1.0" } }, "jest-message-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", - "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.1.0.tgz", + "integrity": "sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.0.6", + "pretty-format": "^27.1.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } } }, "jest-mock": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", - "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.1.0.tgz", + "integrity": "sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "@types/node": "*" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } } }, "jest-pnp-resolver": { @@ -12366,251 +9611,97 @@ "dev": true }, "jest-resolve": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", - "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.1.0.tgz", + "integrity": "sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "chalk": "^4.0.0", "escalade": "^3.1.1", "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.1.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", "resolve": "^1.20.0", "slash": "^3.0.0" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-resolve-dependencies": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", - "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz", + "integrity": "sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.0.6" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - } + "jest-snapshot": "^27.1.0" } }, "jest-runner": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", - "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.1.0.tgz", + "integrity": "sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==", "dev": true, "requires": { - "@jest/console": "^27.0.6", - "@jest/environment": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/environment": "^27.1.0", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.0.6", - "jest-environment-node": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-leak-detector": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-runtime": "^27.0.6", - "jest-util": "^27.0.6", - "jest-worker": "^27.0.6", + "jest-environment-jsdom": "^27.1.0", + "jest-environment-node": "^27.1.0", + "jest-haste-map": "^27.1.0", + "jest-leak-detector": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-runtime": "^27.1.0", + "jest-util": "^27.1.0", + "jest-worker": "^27.1.0", "source-map-support": "^0.5.6", "throat": "^6.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-runtime": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", - "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.1.0.tgz", + "integrity": "sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==", "dev": true, "requires": { - "@jest/console": "^27.0.6", - "@jest/environment": "^27.0.6", - "@jest/fake-timers": "^27.0.6", - "@jest/globals": "^27.0.6", + "@jest/console": "^27.1.0", + "@jest/environment": "^27.1.0", + "@jest/fake-timers": "^27.1.0", + "@jest/globals": "^27.1.0", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.0.6", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-mock": "^27.0.6", + "jest-haste-map": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-mock": "^27.1.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-snapshot": "^27.0.6", - "jest-util": "^27.0.6", - "jest-validate": "^27.0.6", + "jest-resolve": "^27.1.0", + "jest-snapshot": "^27.1.0", + "jest-util": "^27.1.0", + "jest-validate": "^27.1.0", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.0.3" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-serializer": { @@ -12624,9 +9715,9 @@ } }, "jest-snapshot": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", - "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.1.0.tgz", + "integrity": "sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -12635,110 +9726,26 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/transform": "^27.1.0", + "@jest/types": "^27.1.0", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.0.6", + "expect": "^27.1.0", "graceful-fs": "^4.2.4", - "jest-diff": "^27.0.6", + "jest-diff": "^27.1.0", "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.0.6", - "jest-matcher-utils": "^27.0.6", - "jest-message-util": "^27.0.6", - "jest-resolve": "^27.0.6", - "jest-util": "^27.0.6", + "jest-haste-map": "^27.1.0", + "jest-matcher-utils": "^27.1.0", + "jest-message-util": "^27.1.0", + "jest-resolve": "^27.1.0", + "jest-util": "^27.1.0", "natural-compare": "^1.4.0", - "pretty-format": "^27.0.6", + "pretty-format": "^27.1.0", "semver": "^7.3.2" }, "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "diff-sequences": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", - "dev": true - }, - "jest-diff": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", - "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.0.6" - } - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -12764,180 +9771,60 @@ "requires": {} }, "jest-util": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz", - "integrity": "sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.1.0.tgz", + "integrity": "sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==", "dev": true, "requires": { - "@jest/types": "^27.0.2", + "@jest/types": "^27.1.0", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "is-ci": "^3.0.0", "picomatch": "^2.2.3" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz", - "integrity": "sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", - "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-validate": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", - "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.1.0.tgz", + "integrity": "sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==", "dev": true, "requires": { - "@jest/types": "^27.0.6", + "@jest/types": "^27.1.0", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^27.0.6", "leven": "^3.1.0", - "pretty-format": "^27.0.6" + "pretty-format": "^27.1.0" }, "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true - }, - "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", - "dev": true - }, - "pretty-format": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", - "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "ansi-regex": "^5.0.0", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } } } }, "jest-watcher": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", - "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.1.0.tgz", + "integrity": "sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==", "dev": true, "requires": { - "@jest/test-result": "^27.0.6", - "@jest/types": "^27.0.6", + "@jest/test-result": "^27.1.0", + "@jest/types": "^27.1.0", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.0.6", + "jest-util": "^27.1.0", "string-length": "^4.0.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", - "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "jest-util": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", - "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", - "dev": true, - "requires": { - "@jest/types": "^27.0.6", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "picomatch": "^2.2.3" - } - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - } } }, "jest-worker": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", - "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz", + "integrity": "sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==", "dev": true, "requires": { "@types/node": "*", @@ -12973,9 +9860,9 @@ } }, "jsdom": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", - "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, "requires": { "abab": "^2.0.5", @@ -13003,7 +9890,7 @@ "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.5.0", - "ws": "^7.4.5", + "ws": "^7.4.6", "xml-name-validator": "^3.0.0" } }, @@ -13135,13 +10022,13 @@ "dev": true }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" } }, "mime-db": { @@ -13166,9 +10053,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.0.tgz", - "integrity": "sha512-91HeVHbq7PUJ4TwOuMTlFWfVWrLqf3SF0PlEDPV+wtgsfxrMebN9LLzflyQqdKLp4/H3PexRB1WLKsCqpWKkxQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.2.2.tgz", + "integrity": "sha512-eUjQ/q1rQIeHWgIx7ny/DNgXHcMXHdBwgrZQK7Ev8dbR+HxhroFM2Cb6kMiswOYaq05IRJhPuQqXWUABIjjA3g==", "dev": true, "requires": { "schema-utils": "^3.1.0" @@ -13195,12 +10082,6 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13387,9 +10268,9 @@ "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "pirates": { @@ -13529,15 +10410,23 @@ "dev": true }, "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.1.0.tgz", + "integrity": "sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==", "dev": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.1.0", "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } } }, "prompts": { @@ -13685,9 +10574,9 @@ "dev": true }, "sass": { - "version": "1.37.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.37.5.tgz", - "integrity": "sha512-Cx3ewxz9QB/ErnVIiWg2cH0kiYZ0FPvheDTVC6BsiEGBTZKKZJ1Gq5Kq6jy3PKtL6+EJ8NIoaBW/RSd2R6cZOA==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.39.0.tgz", + "integrity": "sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" @@ -14043,19 +10932,17 @@ } }, "ts-jest": { - "version": "27.0.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.4.tgz", - "integrity": "sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ==", + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", + "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", "dev": true, "requires": { "bs-logger": "0.x", - "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", "lodash": "4.x", "make-error": "1.x", - "mkdirp": "1.x", "semver": "7.x", "yargs-parser": "20.x" }, @@ -14095,9 +10982,9 @@ } }, "ts-node": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.0.tgz", - "integrity": "sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz", + "integrity": "sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==", "dev": true, "requires": { "@cspotcode/source-map-support": "0.6.1", @@ -14123,16 +11010,26 @@ } }, "tsconfig-paths": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", - "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", "dev": true, "requires": { - "json5": "^2.2.0", + "@types/json5": "^0.0.29", + "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" }, "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -14172,9 +11069,9 @@ } }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", + "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", "dev": true }, "uglify-js": { @@ -14292,9 +11189,9 @@ "dev": true }, "webpack": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", - "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.52.0.tgz", + "integrity": "sha512-yRZOat8jWGwBwHpco3uKQhVU7HYaNunZiJ4AkAVQkPCUGoZk/tiIXiwG+8HIy/F+qsiZvSOa+GLQOj3q5RKRYg==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -14324,15 +11221,15 @@ } }, "webpack-cli": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz", - "integrity": "sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.8.0.tgz", + "integrity": "sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.0.4", "@webpack-cli/info": "^1.3.0", - "@webpack-cli/serve": "^1.5.1", + "@webpack-cli/serve": "^1.5.2", "colorette": "^1.2.1", "commander": "^7.0.0", "execa": "^5.0.0", @@ -14451,9 +11348,9 @@ } }, "ws": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", - "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz", + "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index ca254988..59873fac 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "foundryvtt-simple-calendar", "description": "A simple calendar module for keeping track of game days and events.", - "version": "1.3.28", + "version": "1.3.39", "author": "Dean Vigoren (vigorator)", "keywords": [ "foundryvtt", @@ -22,27 +22,27 @@ "test": "jest" }, "devDependencies": { - "@league-of-foundry-developers/foundry-vtt-types": "^0.8.8-9", + "@league-of-foundry-developers/foundry-vtt-types": "^0.8.9-2", "@types/copy-webpack-plugin": "^8.0.1", "@types/file-saver": "^2.0.3", - "@types/jest": "^26.0.24", + "@types/jest": "^27.0.1", "@types/node": "^16.3.0", "copy-webpack-plugin": "^9.0.1", "cross-env": "^7.0.3", "css-loader": "^6.2.0", - "jest": "^27.0.6", + "jest": "^27.1.0", "jest-transform-stub": "^2.0.0", "jest-ts-webcompat-resolver": "^1.0.0", - "mini-css-extract-plugin": "^2.2.0", - "sass": "^1.37.5", + "mini-css-extract-plugin": "^2.2.2", + "sass": "^1.39.0", "sass-loader": "^12.1.0", - "ts-jest": "^27.0.4", + "ts-jest": "^27.0.5", "ts-loader": "^9.2.5", - "ts-node": "^10.2.0", - "tsconfig-paths": "^3.10.1", - "typescript": "^4.3.5", - "webpack": "^5.50.0", - "webpack-cli": "^4.7.2" + "ts-node": "^10.2.1", + "tsconfig-paths": "^3.11.0", + "typescript": "^4.4.2", + "webpack": "^5.52.0", + "webpack-cli": "^4.8.0" }, "dependencies": { "file-saver": "^2.0.5" diff --git a/src/classes/api.test.ts b/src/classes/api.test.ts index c0c7396d..e2d8591d 100644 --- a/src/classes/api.test.ts +++ b/src/classes/api.test.ts @@ -77,19 +77,22 @@ describe('API Class Tests', () => { }); test('Timestamp to Date', () => { - expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "", yearName: "", yearZero: 0, weekdays: [], currentSeason: {}, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '', "display": {"day": "", "daySuffix": "", "month": "", "monthName": "", "weekday": "", "year": "", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:""}}); + year.seasons.push(new Season('', 1, 1)); + expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "", yearName: "", yearZero: 0, weekdays: [], currentSeason: {}, sunrise: 0, sunset: 0, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '', "display": {"day": "", "daySuffix": "", "month": "", "monthName": "", "weekday": "", "year": "", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:""}}); SimpleCalendar.instance.currentYear = year; year.weekdays.push(new Weekday(1, 'W1')); - const season = new Season('', 0 ,0); - expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 1, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "0", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); - expect(API.timestampToDate(5184000)).toStrictEqual({year: 1, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); - expect(API.timestampToDate(5270400)).toStrictEqual({year: 1, month: 0, day: 1, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '2', "display": {"day": "2", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); + const season = year.seasons[0].clone(); + season.startingMonth = 0; + season.startingDay = 0; + expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 1, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 0, sunset: 0, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "0", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"01:00:00"}}); + expect(API.timestampToDate(5184000)).toStrictEqual({year: 1, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 5184000, sunset: 5184000, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); + expect(API.timestampToDate(5270400)).toStrictEqual({year: 1, month: 0, day: 1, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 5270400, sunset: 5270400, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '2', "display": {"day": "2", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); year.gameSystem = GameSystems.PF2E; year.generalSettings.pf2eSync = true; - expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 1, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "0", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); - expect(API.timestampToDate(5184000)).toStrictEqual({year: 1, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); - expect(API.timestampToDate(5270400)).toStrictEqual({year: 1, month: 0, day: 1, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '2', "display": {"day": "2", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); + expect(API.timestampToDate(3600)).toStrictEqual({year: 0, month: 0, day: 0, dayOfTheWeek: 0, hour: 1, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 0, sunset: 0, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "0", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"01:00:00"}}); + expect(API.timestampToDate(5184000)).toStrictEqual({year: 1, month: 0, day: 0, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 5184000, sunset: 5184000, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '1', "display": {"day": "1", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); + expect(API.timestampToDate(5270400)).toStrictEqual({year: 1, month: 0, day: 1, dayOfTheWeek: 0, hour: 0, minute: 0, second: 0, monthName: "M1", yearName: "", yearZero: 0, weekdays: ["W1"], currentSeason: season, sunrise: 5270400, sunset: 5270400, isLeapYear: false, showWeekdayHeadings: true, yearPostfix: '', yearPrefix: '', dayOffset: 0, dayDisplay: '2', "display": {"day": "2", "daySuffix": "", "month": "1", "monthName": "M1", "weekday": "W1", "year": "1", "yearName": "", "yearPostfix": "", "yearPrefix": "", time:"00:00:00"}}); }); test('Date to Timestamp', () => { @@ -253,8 +256,8 @@ describe('API Class Tests', () => { expect(API.getCurrentSeason()).toStrictEqual({name:'', color: ''}); SimpleCalendar.instance.currentYear = year; year.seasons.push(new Season('s1', 1, 1)); - const s = new Season('s1', 0 ,0); - expect(API.getCurrentSeason()).toStrictEqual(s); + const s = API.getCurrentSeason() + expect(s.name).toBe(year.seasons[0].name); year.months[0].days[0].current = false; expect(API.getCurrentSeason()).toStrictEqual({name:'', color: ''}); year.months[0].current = false; diff --git a/src/classes/api.ts b/src/classes/api.ts index 64489a73..47712443 100644 --- a/src/classes/api.ts +++ b/src/classes/api.ts @@ -124,6 +124,8 @@ export default class API{ minute: 0, second: 0, yearZero: 0, + sunrise: 0, + sunset: 0, weekdays: [], showWeekdayHeadings: true, currentSeason: {}, @@ -169,6 +171,8 @@ export default class API{ result.weekdays = SimpleCalendar.instance.currentYear.weekdays.map(w => w.name); result.showWeekdayHeadings = SimpleCalendar.instance.currentYear.showWeekdayHeadings; result.isLeapYear = SimpleCalendar.instance.currentYear.leapYearRule.isLeapYear(result.year); + result.sunrise = SimpleCalendar.instance.currentYear.getSunriseSunsetTime(result.year, month, day, true); + result.sunset = SimpleCalendar.instance.currentYear.getSunriseSunsetTime(result.year, month, day, false); // Display Stuff // Legacy - Depreciated first stable release of Foundry 9 @@ -189,7 +193,7 @@ export default class API{ } result.display.day = day.numericRepresentation.toString(); result.display.daySuffix = Utilities.ordinalSuffix(day.numericRepresentation); - result.display.time = SimpleCalendar.instance.currentYear.time.toString(); + result.display.time = Utilities.FormatTime(result.hour, result.minute, result.second); } return result; } diff --git a/src/classes/date-selector.test.ts b/src/classes/date-selector.test.ts index 6ae6a1de..318ec85f 100644 --- a/src/classes/date-selector.test.ts +++ b/src/classes/date-selector.test.ts @@ -30,14 +30,33 @@ describe('Date Selector Class Tests', () => { }); test('Get Selector', () => { - let newDs = DateSelector.GetSelector('test2', {showDate: true, showTime: true, rangeSelect: true, onDateSelect: () => {}, placeHolderText: 'asd'}); + let newDs = DateSelector.GetSelector('test2', { + showDate: true, + showTime: true, + dateRangeSelect: true, + onDateSelect: () => {}, + placeHolderText: 'asd', + timeDelimiter: '/', + showTimeLabel: false, + showYear: false, + allDay: false, + timeRangeSelect: true, + inputMatchCalendarWidth: false, + startDate: {year: 0, month: 1, day: 1, hour: 0, minute: 0, seconds: 0}, + endDate: {year: 0, month: 1, day: 1, hour: 0, minute: 0, seconds: 0} + }); expect(newDs.id).toBe('test2'); - expect(newDs.range).toBe(true); + expect(newDs.dateRange).toBe(true); expect(newDs.onDateSelect ).not.toBeNull(); expect(newDs.placeHolderText ).toBe('asd'); expect(Object.keys(DateSelector.Selectors).length).toBe(2); - newDs = DateSelector.GetSelector('test', {showDate: true, showTime: true}); + newDs = DateSelector.GetSelector('test', { + showDate: true, + showTime: true, + startDate: {year: 1, month: 1, day: 1, hour: 0, minute: 0, seconds: 0}, + endDate: {year: 1, month: 1, day: 1, hour: 0, minute: 0, seconds: 0} + }); expect(newDs).toStrictEqual(ds); }); @@ -212,84 +231,7 @@ describe('Date Selector Class Tests', () => { endDate.hour = 1; endDate.minute = 10; expect(DateSelector.GetDisplayDate(startDate, endDate)).toBe('M 10, 1 01:10'); - }); - - test('Update Selected Date', () => { - const n = new Note(); - n.year = 1; - n.month = 1; - n.day = 1; - n.allDay = true; - n.endDate = { - year: 1, - month: 1, - day: 1, - hour: 0, - minute: 0, - seconds: 0 - }; - - ds.updateSelectedDate(n); - expect(ds.addTime).toBe(false); - expect(ds.selectedDate).toStrictEqual({ - startDate: { - year: 1, - month: 1, - day: 1, - allDay: true, - hour: 0, - minute: 0 - }, - visibleDate: { - year: 1, - month: 1, - day: 1, - allDay: true, - hour: 0, - minute: 0 - }, - endDate: { - year: 1, - month: 1, - day: 1, - allDay: true, - hour: 0, - minute: 0 - } - }); - - n.allDay = false; - n.hour = 1; - n.endDate.hour = 2; - n.endDate.minute = 30; - ds.updateSelectedDate(n); - expect(ds.addTime).toBe(true); - expect(ds.selectedDate).toStrictEqual({ - startDate: { - year: 1, - month: 1, - day: 1, - allDay: false, - hour: 1, - minute: 0 - }, - visibleDate: { - year: 1, - month: 1, - day: 1, - allDay: false, - hour: 1, - minute: 0 - }, - endDate: { - year: 1, - month: 1, - day: 1, - allDay: false, - hour: 2, - minute: 30 - } - }); + expect(DateSelector.GetDisplayDate(startDate, endDate, false, false)).toBe('M 10 01:10'); }); test('Build', () => { @@ -314,24 +256,34 @@ describe('Date Selector Class Tests', () => { expect(ds.build().length).toBeGreaterThan(0); ds.selectedDate.visibleDate.year = 1; - ds.selectedDate.startDate.year = 1; - ds.selectedDate.startDate.month = 1; - ds.selectedDate.startDate.day = 2; - ds.selectedDate.startDate.hour = 2; - ds.selectedDate.startDate.minute = 30; - ds.selectedDate.startDate.allDay = false; - ds.selectedDate.endDate.year = 1; - ds.selectedDate.endDate.month = 1; - ds.selectedDate.endDate.day = 2; - ds.selectedDate.endDate.hour = 4; - ds.selectedDate.endDate.minute = 30; - ds.selectedDate.endDate.allDay = false; + ds.selectedDate.startDate = { + year: 1, + month: 1, + day: 2, + hour: 2, + minute: 30, + allDay: false + }; + ds.selectedDate.endDate = { + year: 1, + month: 1, + day: 2, + hour: 4, + minute: 30, + allDay: false + }; + ds.showYear = false; expect(ds.build().length).toBeGreaterThan(0); - ds.selectedDate.endDate.year = 1; - ds.selectedDate.endDate.month = 1; - ds.selectedDate.endDate.day = 20; - ds.selectedDate.endDate.minute = 0; + ds.selectedDate.endDate = { + year: 1, + month: 1, + day: 10, + hour: 4, + minute: 0, + allDay: false + }; + ds.showYear = true; expect(ds.build().length).toBeGreaterThan(0); ds.selectedDate.endDate.minute = 12; @@ -342,6 +294,14 @@ describe('Date Selector Class Tests', () => { ds.showTime = false; expect(ds.build(true).length).toBeGreaterThan(0); + ds.showTime = true; + ds.showTimeLabel = false; + ds.timeRange = false; + expect(ds.build(true).length).toBeGreaterThan(0); + + ds.showDate = false; + expect(ds.build(true).length).toBeGreaterThan(0); + jest.spyOn(document, 'querySelector').mockReturnValueOnce(document.createElement('input')); expect(ds.build(true).length).toBeGreaterThan(0); }); @@ -410,10 +370,10 @@ describe('Date Selector Class Tests', () => { ds.showDate = false; ds.activateListeners(fakeWrapper); expect(docQSSpy).toHaveBeenCalledTimes(2); - expect(docAELSpy).toHaveBeenCalledTimes(3); - expect(fwqsSpy).toHaveBeenCalledTimes(15); + expect(docAELSpy).toHaveBeenCalledTimes(4); + expect(fwqsSpy).toHaveBeenCalledTimes(16); expect(fwqsaSpy).toHaveBeenCalledTimes(9); - expect(reaelSpy).toHaveBeenCalledTimes(14); + expect(reaelSpy).toHaveBeenCalledTimes(15); docQSSpy.mockRestore(); docAELSpy.mockRestore(); @@ -511,7 +471,7 @@ describe('Date Selector Class Tests', () => { expect(updateSpy).toHaveBeenCalledTimes(1); expect(hideCalendarSpy).toHaveBeenCalledTimes(1); - ds.range = true; + ds.dateRange = true; ds.dayClick(html ,event); expect(htmlQSSpy).toHaveBeenCalledTimes(6); expect(updateSpy).toHaveBeenCalledTimes(2); @@ -774,7 +734,32 @@ describe('Date Selector Class Tests', () => { ds.selectedDate.endDate.day = 10; ds.timeUpdate(event); expect(updateSpy).toHaveBeenCalledTimes(10); + expect(ds.selectedDate.endDate.hour).toBe(10); + expect(ds.selectedDate.endDate.minute).toBe(1); + + ds.selectedDate.startDate = { + year: 0, + month: 1, + day: 1, + hour: 0, + minute: 0, + allDay: false + }; + ds.selectedDate.endDate = { + year: 0, + month: 1, + day: 2, + hour: 0, + minute: 0, + allDay: false + }; + ds.showTime = true; + ds.showDate = false; + ds.onDateSelect = jest.fn(); + ds.timeUpdate(event); + expect(updateSpy).toHaveBeenCalledTimes(11); expect(ds.selectedDate.endDate.hour).toBe(1); expect(ds.selectedDate.endDate.minute).toBe(1); + expect(ds.onDateSelect).toHaveBeenCalledTimes(1); }); }); diff --git a/src/classes/date-selector.ts b/src/classes/date-selector.ts index 814a6d8f..12bce035 100644 --- a/src/classes/date-selector.ts +++ b/src/classes/date-selector.ts @@ -1,6 +1,5 @@ import {DayTemplate, SCDateSelector} from "../interfaces"; import SimpleCalendar from "./simple-calendar"; -import {Note} from "./note"; import {DateRangeMatch} from "../constants"; import {GameSettings} from "./game-settings"; import Utilities from "./utilities"; @@ -132,8 +131,10 @@ export default class DateSelector { * @param {SCDateSelector.Date} startDate The starting datetime * @param {SCDateSelector.Date} endDate The ending datetime * @param {boolean} [dontIncludeSameDate=false] If to include the date if it is the same in the result (useful for just getting the time) + * @param {boolean} [showYear=true] If to include the year in the display string + * @param {string} [delimiter='-'] The delimiter to use between the 2 dates */ - static GetDisplayDate(startDate: SCDateSelector.Date, endDate: SCDateSelector.Date, dontIncludeSameDate: boolean = false){ + static GetDisplayDate(startDate: SCDateSelector.Date, endDate: SCDateSelector.Date, dontIncludeSameDate: boolean = false, showYear: boolean = true, delimiter: string = '-'){ let startDateTimeText = '', endDateTimeText = '', startingMonthName = '', endingMonthName = ''; if(SimpleCalendar.instance && SimpleCalendar.instance.currentYear){ const startingMonth = SimpleCalendar.instance.currentYear.months.find(m => m.numericRepresentation === startDate.month); @@ -153,23 +154,27 @@ export default class DateSelector { endDateTimeText += `, ${endDate.year}`; } } else if(!dontIncludeSameDate){ - startDateTimeText += `${startingMonthName} ${startDate.day}, ${startDate.year}`; + if(showYear){ + startDateTimeText += `${startingMonthName} ${startDate.day}, ${startDate.year}`; + } else { + startDateTimeText += `${startingMonthName} ${startDate.day}`; + } } let startTimeText = `00:00`; let endTimeText = `00:00`; if(!startDate.allDay){ - startTimeText = ' ' + Utilities.FormatTime(startDate); + startTimeText = ' ' + Utilities.FormatTime(startDate.hour, startDate.minute, false); startDateTimeText += startTimeText; } if(!endDate.allDay){ - endTimeText = ' ' + Utilities.FormatTime(endDate); + endTimeText = ' ' + Utilities.FormatTime(endDate.hour, endDate.minute, false); if(endDateTimeText !== '' || (endDateTimeText === '' && startTimeText !== endTimeText)){ endDateTimeText += endTimeText; } } } - return `${startDateTimeText}${endDateTimeText? ' - ' + endDateTimeText: ''}`; + return `${startDateTimeText}${endDateTimeText? ` ${delimiter} ` + endDateTimeText: ''}`; } /** @@ -182,6 +187,11 @@ export default class DateSelector { * @type{boolean} */ showDate: boolean; + /** + * If to show the year for date selection + * @type {boolean} + */ + showYear: boolean = true; /** * If to show the time portion of the picker * @type{boolean} @@ -191,16 +201,36 @@ export default class DateSelector { * If the add time controls should be shown or not */ addTime: boolean = false; + /** + * If to set the input box width to match the calendars width + * @type {boolean} + */ + setInputWidth: boolean = true; /** * Any place holder text for the Date Select input box * @type {string} */ placeHolderText: string = ''; + /** + * The string between the start and end time inputs + * @type {string} + */ + timeDelimiter: string = '-'; /** * If the date selector allows users to select a range of dates or just a single date * @type {boolean} */ - range: boolean = false; + dateRange: boolean = false; + /** + * If the time selectors allow users to select a range of time or just a single time stamp + * @type {boolean} + */ + timeRange: boolean = true; + /** + * If to show the time label next to the time inputs + * @type {boolean} + */ + showTimeLabel: boolean = true; /** * Used internally to determine if the second day of a range has been selected. * @type {boolean} @@ -252,6 +282,12 @@ export default class DateSelector { minute: 0 } }; + if(options.showYear !== undefined){ + this.showYear = options.showYear; + } + if(options.inputMatchCalendarWidth !== undefined){ + this.setInputWidth = options.inputMatchCalendarWidth; + } if(options.placeHolderText){ this.placeHolderText = options.placeHolderText; } @@ -260,40 +296,62 @@ export default class DateSelector { this.onDateSelect = options.onDateSelect; } - if(options.rangeSelect !== undefined){ - this.range = options.rangeSelect; + if(options.dateRangeSelect !== undefined){ + this.dateRange = options.dateRangeSelect; + } + if(options.timeRangeSelect !== undefined){ + this.timeRange = options.timeRangeSelect; + } + if(options.showTimeLabel !== undefined){ + this.showTimeLabel = options.showTimeLabel; + } + if(options.timeDelimiter !== undefined){ + this.timeDelimiter = options.timeDelimiter; } - } - /** - * Updates the currently selected date based on the passes in note. - * @param {Note} note - */ - updateSelectedDate(note: Note){ - this.selectedDate.startDate = { - year: note.year, - month: note.month, - day: note.day, - allDay: note.allDay, - hour: note.hour, - minute: note.minute - }; + if(options.startDate !== undefined){ + this.selectedDate.startDate = { + year: options.startDate.year, + month: options.startDate.month, + day: options.startDate.day, + allDay: !this.showTime, + hour: options.startDate.hour, + minute: options.startDate.minute + }; + } else if(SimpleCalendar.instance && SimpleCalendar.instance.currentYear){ + this.selectedDate.startDate = { + year: SimpleCalendar.instance.currentYear.numericRepresentation, + month: 1, + day: 1, + allDay: true, + hour: 0, + minute: 0 + }; + } this.selectedDate.visibleDate = { - year: note.year, - month: note.month, - day: note.day, - allDay: note.allDay, - hour: note.hour, - minute: note.minute - }; - this.selectedDate.endDate = { - year: note.endDate.year, - month: note.endDate.month, - day: note.endDate.day, - allDay: note.allDay, - hour: note.endDate.hour? note.endDate.hour : 0, - minute: note.endDate.minute? note.endDate.minute : 0 + year: this.selectedDate.startDate.year, + month: this.selectedDate.startDate.month, + day: this.selectedDate.startDate.day, + allDay: !this.selectedDate.startDate.allDay, + hour: this.selectedDate.startDate.hour, + minute: this.selectedDate.startDate.minute }; + this.selectedDate.endDate = this.selectedDate.startDate; + if(options.endDate !== undefined){ + this.selectedDate.endDate = { + year: options.endDate.year, + month: options.endDate.month, + day: options.endDate.day, + allDay: !this.showTime, + hour: options.endDate.hour, + minute: options.endDate.minute + }; + } + if(options.allDay !== undefined){ + this.selectedDate.startDate.allDay = options.allDay; + this.selectedDate.endDate.allDay = options.allDay; + this.selectedDate.visibleDate.allDay = options.allDay; + } if(!this.selectedDate.startDate.allDay){ this.addTime = true; } @@ -323,8 +381,7 @@ export default class DateSelector { return ''; } calendarWidth = (10 + (weeks[0].length * 40)); - - calendar = `
${visibleMonthName} ${this.selectedDate.visibleDate.year}
`; + calendar = `
${visibleMonthName} ${this.showYear? this.selectedDate.visibleDate.year : ''}
`; if(weekdays.length){ @@ -381,17 +438,15 @@ export default class DateSelector { let startTimeText = `00:00`; let endTimeText = `00:00`; if(!this.selectedDate.startDate.allDay){ - startTimeText = ' ' + Utilities.FormatTime(this.selectedDate.startDate); + startTimeText = ' ' + Utilities.FormatTime(this.selectedDate.startDate.hour, this.selectedDate.startDate.minute, false); } if(!this.selectedDate.endDate.allDay){ - endTimeText = ' ' + Utilities.FormatTime(this.selectedDate.endDate); + endTimeText = ' ' + Utilities.FormatTime(this.selectedDate.endDate.hour, this.selectedDate.endDate.minute, false); } let timeWrapper = `
`; if(this.addTime){ - - let startTimePicker = ``; let endTimePicker = ``; const halfHour = Math.floor(SimpleCalendar.instance.currentYear.time.minutesInHour / 2); @@ -414,17 +469,32 @@ export default class DateSelector { endTimePicker += `
${i < 10? '0'+i : i}:${halfHour}
`; } - const startTime = `
${startTimePicker}
`; - const endTime = `
${endTimePicker}
`; - timeWrapper += `

${GameSettings.Localize('FSC.Notes.Time')}

${startTime}-${endTime}
`; + if(this.showDate || this.timeRange){ + const startTime = `
${startTimePicker}
`; + const endTime = `
${endTimePicker}
`; + if(this.showTimeLabel){ + timeWrapper += `

${GameSettings.Localize('FSC.Notes.Time')}

`; + } + if(this.timeRange){ + timeWrapper += `
${startTime}${this.timeDelimiter}${endTime}
`; + } else { + timeWrapper += `
${startTime}
`; + } + + if(this.showDate){ + timeWrapper += ``; + } + } else{ + timeWrapper = `
${startTimePicker}
`; + } } else { timeWrapper += `
`; } calendar += `${timeWrapper}
`; } - const displayDate = DateSelector.GetDisplayDate(this.selectedDate.startDate, this.selectedDate.endDate); + const displayDate = DateSelector.GetDisplayDate(this.selectedDate.startDate, this.selectedDate.endDate, (this.showTime && !this.showDate), this.showYear, this.timeDelimiter); if(!justCalendar){ - returnHtml = `${wrapper}
`; + returnHtml = `${wrapper}
`; } else { returnHtml = calendar; const displayInput = (document.querySelector(`#${this.id} .display-input`)); @@ -460,14 +530,14 @@ export default class DateSelector { } if(html){ const dateSelector = html; - if(this.showDate){ - if(!justCalendar){ - document.addEventListener('click', this.hideCalendar.bind(this,html)); - const di = html.querySelector('.display-input'); - if(di){ - di.addEventListener('click', this.toggleCalendar.bind(this, dateSelector)); - } + if(!justCalendar){ + document.addEventListener('click', this.hideCalendar.bind(this,html)); + const di = html.querySelector('.display-input'); + if(di){ + di.addEventListener('click', this.toggleCalendar.bind(this, dateSelector)); } + } + if(this.showDate){ const cal = html.querySelector('.sc-date-selector-calendar'); if(cal){ cal.addEventListener('click', this.calendarClick.bind(this)); @@ -494,13 +564,13 @@ export default class DateSelector { if(cb){ cb.addEventListener('click', this.removeTimeClick.bind(this)); } - html.querySelectorAll('.time-container .time-selectors input').forEach(el => { + html.querySelectorAll('.time-container input').forEach(el => { el.addEventListener('click', this.timeClick.bind(this)); }); - html.querySelectorAll('.time-container .time-selectors .time-dropdown .time-option').forEach(el => { + html.querySelectorAll('.time-container .time-dropdown .time-option').forEach(el => { el.addEventListener('click', this.timeDropdownClick.bind(this)); }); - html.querySelectorAll('.time-container .time-selectors input').forEach(el => { + html.querySelectorAll('.time-container input').forEach(el => { el.addEventListener('change', this.timeUpdate.bind(this)); }); } @@ -576,7 +646,7 @@ export default class DateSelector { const yearNumber = parseInt(my[1]); if(!isNaN(yearNumber) && !isNaN(monthNumber) && !isNaN(dayNumber)){ let hideCalendar = true; - if(this.range){ + if(this.dateRange){ if(!this.secondDaySelect){ this.selectedDate.startDate.year = yearNumber; this.selectedDate.startDate.month = monthNumber; @@ -861,6 +931,9 @@ export default class DateSelector { this.selectedDate.endDate.minute = minute; } this.update(); + if(this.showTime && !this.showDate && this.onDateSelect){ + this.onDateSelect(this.selectedDate); + } } } } diff --git a/src/classes/game-settings.test.ts b/src/classes/game-settings.test.ts index cef9ccdd..2877f821 100644 --- a/src/classes/game-settings.test.ts +++ b/src/classes/game-settings.test.ts @@ -86,12 +86,7 @@ describe('Game Settings Class Tests', () => { SimpleCalendar.instance = new SimpleCalendar(); GameSettings.RegisterSettings(); expect((game).settings.register).toHaveBeenCalled(); - expect((game).settings.register).toHaveBeenCalledTimes(14); - }); - - test('Get Import Ran', () => { - expect(GameSettings.GetImportRan()).toBe(false); - expect((game).settings.get).toHaveBeenCalled(); + expect((game).settings.register).toHaveBeenCalledTimes(13); }); test('Get Default Note Visibility', () => { @@ -137,7 +132,7 @@ describe('Game Settings Class Tests', () => { }); test('Load Season Data', () => { - expect(GameSettings.LoadSeasonData()).toStrictEqual([{name:'', startingMonth: 1, startingDay: 1, color: '#ffffff'}]); + expect(GameSettings.LoadSeasonData()).toStrictEqual([{name:'', startingMonth: 1, startingDay: 1, color: '#ffffff', sunriseTime: 0, sunsetTime: 0}]); expect((game).settings.get).toHaveBeenCalled(); ((game).settings.get).mockReturnValueOnce(false); expect(GameSettings.LoadSeasonData()).toStrictEqual([]); @@ -164,7 +159,7 @@ describe('Game Settings Class Tests', () => { }); test('Load Time Data', () => { - expect(GameSettings.LoadTimeData()).toStrictEqual({hoursInDay:0, minutesInHour: 1, secondsInMinute: 2, gameTimeRatio: 3, unifyGameAndClockPause: false, updateFrequency: 1}); + expect(GameSettings.LoadTimeData()).toStrictEqual({hoursInDay:0, minutesInHour: 1, secondsInMinute: 2, gameTimeRatio: 3, unifyGameAndClockPause: false, updateFrequency: 1, secondsInCombatRound: 6}); expect((game).settings.get).toHaveBeenCalled(); }); @@ -188,16 +183,6 @@ describe('Game Settings Class Tests', () => { expect(GameSettings.LoadNoteCategories()).toStrictEqual([{name: "Holiday", color: "#148e94", textColor: "#FFFFFF"}]); }); - test('Set Import Ran', async () => { - // @ts-ignore - game.user.isGM = false; - await expect(GameSettings.SetImportRan(true)).resolves.toBe(false); - // @ts-ignore - game.user.isGM = true; - await expect(GameSettings.SetImportRan(true)).resolves.toBe(true); - expect((game).settings.set).toHaveBeenCalled(); - }); - test('Save General Settings', async () => { // @ts-ignore game.user.isGM = false; diff --git a/src/classes/game-settings.ts b/src/classes/game-settings.ts index 147c91f8..7a167095 100644 --- a/src/classes/game-settings.ts +++ b/src/classes/game-settings.ts @@ -149,13 +149,6 @@ export class GameSettings { default: {}, onChange: SimpleCalendar.instance.settingUpdate.bind(SimpleCalendar.instance, true, 'time') }); - (game).settings.register(ModuleName, SettingNames.ImportRan, { - name: "Import", - scope: "world", - config: false, - type: Boolean, - default: false - }); (game).settings.register(ModuleName, SettingNames.SeasonConfiguration, { name: "Season Configuration", scope: "world", @@ -192,13 +185,6 @@ export class GameSettings { } - /** - * Gets if the import question has been run for modules - */ - static GetImportRan(){ - return (game).settings.get(ModuleName, SettingNames.ImportRan); - } - /** * Gets the default note visibility setting * @return {boolean} @@ -347,18 +333,6 @@ export class GameSettings { return returnData; } - /** - * Sets the import ran setting - * @param {boolean} ran If the import was ran/asked about - */ - static async SetImportRan(ran: boolean){ - if(GameSettings.IsGm()){ - await (game).settings.set(ModuleName, SettingNames.ImportRan, ran); - return true; - } - return false; - } - /** * Saves the general settings to the world settings * @param {GeneralSettings} settings The settings to save @@ -502,7 +476,7 @@ export class GameSettings { if(GameSettings.IsGm()){ Logger.debug('Saving season configuration.'); const currentConfig = JSON.stringify(GameSettings.LoadSeasonData()); - const newConfig: SeasonConfiguration[] = seasons.map(s => {return {name: s.name, startingMonth: s.startingMonth, startingDay: s.startingDay, color: s.color}}); + const newConfig: SeasonConfiguration[] = seasons.map(s => {return {name: s.name, startingMonth: s.startingMonth, startingDay: s.startingDay, color: s.color, sunriseTime: s.sunriseTime, sunsetTime: s.sunsetTime}}); if(currentConfig !== JSON.stringify(newConfig)){ return (game).settings.set(ModuleName, SettingNames.SeasonConfiguration, newConfig).then(() => {return true;}); } else { @@ -571,6 +545,7 @@ export class GameSettings { hoursInDay: time.hoursInDay, minutesInHour: time.minutesInHour, secondsInMinute: time.secondsInMinute, + secondsInCombatRound: time.secondsInCombatRound, gameTimeRatio: time.gameTimeRatio, unifyGameAndClockPause: time.unifyGameAndClockPause, updateFrequency: time.updateFrequency diff --git a/src/classes/predefined-calendar.ts b/src/classes/predefined-calendar.ts index 31fd25d8..0a4aceb0 100644 --- a/src/classes/predefined-calendar.ts +++ b/src/classes/predefined-calendar.ts @@ -61,6 +61,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.moons = [ new Moon('Moon', 29.53059) ]; @@ -128,6 +136,12 @@ export default class PredefinedCalendar{ year.seasons[2].color = '#fff2da'; year.seasons[0].color = '#dececc'; year.seasons[1].color = '#fff1e7'; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; year.time.hoursInDay = 24; year.time.minutesInHour = 60; year.time.secondsInMinute = 60; @@ -347,6 +361,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 27000; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 27000; + year.seasons[3].sunriseTime = 32400; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 75600; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 54000; year.moons = [ new Moon('Catha', 33), new Moon('Ruidus', 328) @@ -429,6 +451,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#ff9393"; year.seasons[2].color = "#ffdf99"; year.seasons[3].color = "#a8a8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.time.hoursInDay = 24; year.time.minutesInHour = 60; @@ -510,6 +540,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.moons = [ new Moon('Somal', 29.5) ]; @@ -582,6 +620,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.moons = [ new Moon('Somal', 29.5) ]; @@ -656,6 +702,16 @@ export default class PredefinedCalendar{ year.seasons[2].color = "#f3fff3"; year.seasons[3].color = "#fff7f2"; year.seasons[4].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 24300; + year.seasons[1].sunriseTime = 18840; + year.seasons[2].sunriseTime = 16500; + year.seasons[3].sunriseTime = 20400; + year.seasons[4].sunriseTime = 25740; + year.seasons[0].sunsetTime = 48360; + year.seasons[1].sunsetTime = 66540; + year.seasons[2].sunsetTime = 69540; + year.seasons[3].sunsetTime = 64140; + year.seasons[4].sunsetTime = 59160; year.time.hoursInDay = 24; year.time.minutesInHour = 60; year.time.secondsInMinute = 60; @@ -759,6 +815,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.time.hoursInDay = 24; year.time.minutesInHour = 60; year.time.secondsInMinute = 60; @@ -880,6 +944,14 @@ export default class PredefinedCalendar{ year.seasons[1].color = "#f3fff3"; year.seasons[2].color = "#fff7f2"; year.seasons[3].color = "#f2f8ff"; + year.seasons[0].sunriseTime = 21600; + year.seasons[1].sunriseTime = 21600; + year.seasons[2].sunriseTime = 21600; + year.seasons[3].sunriseTime = 21600; + year.seasons[0].sunsetTime = 64800; + year.seasons[1].sunsetTime = 64800; + year.seasons[2].sunsetTime = 64800; + year.seasons[3].sunsetTime = 64800; year.time.hoursInDay = 24; year.time.minutesInHour = 60; year.time.secondsInMinute = 60; diff --git a/src/classes/season.test.ts b/src/classes/season.test.ts index 9fe58bea..46806534 100644 --- a/src/classes/season.test.ts +++ b/src/classes/season.test.ts @@ -19,14 +19,20 @@ describe('Season Tests', () => { beforeEach(() => { s = new Season('Spring', 1, 1); + + // @ts-ignore + SimpleCalendar.instance = undefined; }); test('Properties', () => { - expect(Object.keys(s).length).toBe(4); //Make sure no new properties have been added + expect(Object.keys(s).length).toBe(7); //Make sure no new properties have been added + expect(s.id).toBeDefined(); expect(s.name).toBe('Spring'); expect(s.startingMonth).toBe(1); expect(s.startingDay).toBe(1); expect(s.color).toBe('#ffffff'); + expect(s.sunriseTime).toBe(0); + expect(s.sunsetTime).toBe(0); }); test('Clone', () => { @@ -36,20 +42,55 @@ describe('Season Tests', () => { test('To Template', () => { const y = new Year(0); let c = s.toTemplate(y); - expect(Object.keys(c).length).toBe(5); //Make sure no new properties have been added + expect(Object.keys(c).length).toBe(6); //Make sure no new properties have been added expect(c.name).toBe('Spring'); expect(c.startingMonth).toBe(1); expect(c.startingDay).toBe(1); expect(c.color).toBe('#ffffff'); - expect(c.dayList).toStrictEqual([]); + expect(c.startDateSelectorId).toBeDefined(); + expect(c.sunriseSelectorId).toBeDefined(); SimpleCalendar.instance = new SimpleCalendar(); - + SimpleCalendar.instance.currentYear = new Year(0); c = s.toTemplate(y); - expect(c.dayList.length).toStrictEqual(0); - y.months.push(new Month("Month 1", 1, 0, 10)); + + s.sunriseTime = 3660; + s.sunsetTime = 3660; c = s.toTemplate(y); - expect(c.dayList.length).toStrictEqual(10); + }); + + test('Start Date Change', () => { + s.startDateChange({ + startDate: { year: 0, month: 2, day: 4, minute: 0, hour: 0, allDay: true }, + endDate: { year: 0, month: 2, day: 4, minute: 0, hour: 0, allDay: true }, + visibleDate: { year: 0, month: 2, day: 4, minute: 0, hour: 0, allDay: true } + }); + expect(s.startingMonth).toBe(2); + expect(s.startingDay).toBe(4); + }); + + test('Sunrise Sunset Change', () => { + s.sunriseSunsetChange({ + startDate: { year: 0, month: 1, day: 1, minute: 30, hour: 2, allDay: false }, + endDate: { year: 0, month: 1, day: 1, minute: 0, hour: 4, allDay: false }, + visibleDate: { year: 0, month: 1, day: 1, minute: 0, hour: 0, allDay: false } + }); + expect(s.sunriseTime).toBe(0); + expect(s.sunsetTime).toBe(0); + + SimpleCalendar.instance = new SimpleCalendar(); + SimpleCalendar.instance.currentYear = new Year(0); + s.sunriseSunsetChange({ + startDate: { year: 0, month: 1, day: 1, minute: 30, hour: 2, allDay: false }, + endDate: { year: 0, month: 1, day: 1, minute: 0, hour: 4, allDay: false }, + visibleDate: { year: 0, month: 1, day: 1, minute: 0, hour: 0, allDay: false } + }); + expect(s.sunriseTime).toBe(9000); + expect(s.sunsetTime).toBe(14400); + }); + + test('Activate Date Selectors', () => { + s.activateDateSelectors(); }); }); diff --git a/src/classes/season.ts b/src/classes/season.ts index d9ccc5a4..fc568826 100644 --- a/src/classes/season.ts +++ b/src/classes/season.ts @@ -1,10 +1,15 @@ -import {SeasonTemplate} from "../interfaces"; +import {SCDateSelector, SeasonTemplate} from "../interfaces"; import Year from "./year"; +import DateSelector from "./date-selector"; +import Utilities from "./utilities"; +import SimpleCalendar from "./simple-calendar"; /** * All content around a season */ export default class Season { + + id: string; /** * The name of the season * @type{string} @@ -25,10 +30,16 @@ export default class Season { * @type{number} */ startingDay: number = -1; - - //sunriseTime: number = 0; - - //sunsetTime: number = 0; + /** + * The time, in seconds, that the sun rises + * @type{number} + */ + sunriseTime: number = 0; + /** + * The time, in seconds, that the sun sets + * @type{number} + */ + sunsetTime: number = 0; /** * The Season Constructor @@ -37,6 +48,7 @@ export default class Season { * @param {number} startingDay The day of the starting month this season starts on */ constructor(name: string, startingMonth: number, startingDay: number) { + this.id = Utilities.generateUniqueId(); this.name = name; this.startingMonth = startingMonth; this.startingDay = startingDay; @@ -48,9 +60,10 @@ export default class Season { */ clone(): Season { const t = new Season(this.name, this.startingMonth, this.startingDay); + t.id = this.id; t.color = this.color; - //t.sunriseTime = this.sunriseTime; - //t.sunsetTime = this.sunsetTime; + t.sunriseTime = this.sunriseTime; + t.sunsetTime = this.sunsetTime; return t; } @@ -59,18 +72,82 @@ export default class Season { * @param {Year} year The year to look in for the months and days list */ toTemplate(year: Year){ + const startDateSelectorId = `sc_season_start_date_${this.id}`; + const sunriseSelectorId = `sc_season_sunrise_time_${this.id}`; const data: SeasonTemplate = { name: this.name, startingMonth: this.startingMonth, startingDay: this.startingDay, color: this.color, - dayList: [] + startDateSelectorId: startDateSelectorId, + sunriseSelectorId: sunriseSelectorId }; - const month = year.months.find(m => m.numericRepresentation === data.startingMonth); - if(month){ - data.dayList = month.days.map(d => d.toTemplate()); + DateSelector.GetSelector(startDateSelectorId, { + showDate: true, + showYear: false, + showTime: false, + dateRangeSelect: false, + inputMatchCalendarWidth: false, + startDate:{year: 0, month: this.startingMonth, day: this.startingDay, hour: 0, minute: 0, seconds: 0}, + allDay: true, + onDateSelect: this.startDateChange.bind(this) + }); + + let sunriseHour = 0, sunriseMinute = 0, sunsetHour = 0, sunsetMinute = 0; + if(SimpleCalendar.instance && SimpleCalendar.instance.currentYear){ + sunriseMinute = Math.floor(this.sunriseTime / SimpleCalendar.instance.currentYear.time.secondsInMinute); + sunsetMinute = Math.floor(this.sunsetTime / SimpleCalendar.instance.currentYear.time.secondsInMinute); + if(sunriseMinute >= SimpleCalendar.instance.currentYear.time.minutesInHour){ + sunriseHour = Math.floor(sunriseMinute / SimpleCalendar.instance.currentYear.time.minutesInHour); + sunriseMinute = sunriseMinute - (sunriseHour * SimpleCalendar.instance.currentYear.time.minutesInHour); + } + if(sunsetMinute >= SimpleCalendar.instance.currentYear.time.minutesInHour){ + sunsetHour = Math.floor(sunsetMinute / SimpleCalendar.instance.currentYear.time.minutesInHour); + sunsetMinute = sunsetMinute - (sunsetHour * SimpleCalendar.instance.currentYear.time.minutesInHour); + } } + DateSelector.GetSelector(sunriseSelectorId, { + showDate: false, + showTime: true, + dateRangeSelect: false, + timeRangeSelect: true, + showTimeLabel: false, + timeDelimiter: '/', + inputMatchCalendarWidth: false, + startDate:{year: 0, month: 1, day: 1, hour: sunriseHour, minute: sunriseMinute, seconds: 0}, + endDate:{year: 0, month: 1, day: 1, hour: sunsetHour, minute: sunsetMinute, seconds: 0}, + allDay: false, + onDateSelect: this.sunriseSunsetChange.bind(this) + }); return data; } + + /** + * Handles the start date selector changes + * @param {SCDateSelector.SelectedDate} selectedDate The date that was selected from the date selector + */ + startDateChange(selectedDate: SCDateSelector.SelectedDate){ + this.startingMonth = selectedDate.startDate.month; + this.startingDay = selectedDate.startDate.day; + } + + /** + * Handles the Sunrise and Sunset date selector changes + * @param {SCDateSelector.SelectedDate} selectedDate The date/time that was selected from the date selector + */ + sunriseSunsetChange(selectedDate: SCDateSelector.SelectedDate){ + if(SimpleCalendar.instance && SimpleCalendar.instance.currentYear){ + this.sunriseTime = (selectedDate.startDate.hour * SimpleCalendar.instance.currentYear.time.minutesInHour * SimpleCalendar.instance.currentYear.time.secondsInMinute) + (selectedDate.startDate.minute * SimpleCalendar.instance.currentYear.time.secondsInMinute); + this.sunsetTime = (selectedDate.endDate.hour * SimpleCalendar.instance.currentYear.time.minutesInHour * SimpleCalendar.instance.currentYear.time.secondsInMinute) + (selectedDate.endDate.minute * SimpleCalendar.instance.currentYear.time.secondsInMinute); + } + } + + /** + * Activates the listeners for the date selectors used by the season. + */ + activateDateSelectors(){ + DateSelector.GetSelector(`sc_season_start_date_${this.id}`, {showDate: true, showTime: false}).activateListeners(); + DateSelector.GetSelector( `sc_season_sunrise_time_${this.id}`, {showDate: false, showTime: true}).activateListeners(); + } } diff --git a/src/classes/simple-calendar-configuration.test.ts b/src/classes/simple-calendar-configuration.test.ts index c44e1e6c..00eae445 100644 --- a/src/classes/simple-calendar-configuration.test.ts +++ b/src/classes/simple-calendar-configuration.test.ts @@ -794,22 +794,6 @@ describe('Simple Calendar Configuration Tests', () => { SimpleCalendarConfiguration.instance.inputChange(event); expect((SimpleCalendarConfiguration.instance.object).seasons[0].name).toBe('Wint'); - (event.currentTarget).setAttribute('class', 'season-month'); - (event.currentTarget).value = '2'; - SimpleCalendarConfiguration.instance.inputChange(event); - expect((SimpleCalendarConfiguration.instance.object).seasons[0].startingMonth).toBe(2); - (event.currentTarget).value = 'qwe'; - SimpleCalendarConfiguration.instance.inputChange(event); - expect((SimpleCalendarConfiguration.instance.object).seasons[0].startingMonth).toBe(2); - - (event.currentTarget).setAttribute('class', 'season-day'); - (event.currentTarget).value = '2'; - SimpleCalendarConfiguration.instance.inputChange(event); - expect((SimpleCalendarConfiguration.instance.object).seasons[0].startingDay).toBe(2); - (event.currentTarget).value = 'qwe'; - SimpleCalendarConfiguration.instance.inputChange(event); - expect((SimpleCalendarConfiguration.instance.object).seasons[0].startingDay).toBe(2); - (event.currentTarget).setAttribute('class', 'season-color'); (event.currentTarget).value = '#fffeee'; SimpleCalendarConfiguration.instance.inputChange(event); @@ -1108,6 +1092,16 @@ describe('Simple Calendar Configuration Tests', () => { SimpleCalendarConfiguration.instance.inputChange(event); expect((SimpleCalendarConfiguration.instance.object).time.secondsInMinute).toBe(10); + //Invalid seconds in combat round + (event.currentTarget).id = "scSecondsInCombatRound"; + (event.currentTarget).value = 'asd'; + SimpleCalendarConfiguration.instance.inputChange(event); + expect((SimpleCalendarConfiguration.instance.object).time.secondsInCombatRound).toBe(6); + //Valid seconds in combat round + (event.currentTarget).value = '10'; + SimpleCalendarConfiguration.instance.inputChange(event); + expect((SimpleCalendarConfiguration.instance.object).time.secondsInCombatRound).toBe(10); + //Invalid game time ratio (event.currentTarget).id = "scGameTimeRatio"; (event.currentTarget).value = 'asd'; @@ -1337,27 +1331,21 @@ describe('Simple Calendar Configuration Tests', () => { await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-import', 'b'); expect(renderSpy).toHaveBeenCalledTimes(1); - expect((game).settings.set).toHaveBeenCalledTimes(1); await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-import', 'about-time'); expect(renderSpy).toHaveBeenCalledTimes(2); - expect((game).settings.set).toHaveBeenCalledTimes(2); await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-import', 'calendar-weather'); expect(renderSpy).toHaveBeenCalledTimes(3); - expect((game).settings.set).toHaveBeenCalledTimes(3); await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-export', 'b'); expect(renderSpy).toHaveBeenCalledTimes(3); - expect((game).settings.set).toHaveBeenCalledTimes(4); await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-export', 'about-time'); expect(renderSpy).toHaveBeenCalledTimes(3); - expect((game).settings.set).toHaveBeenCalledTimes(5); await SimpleCalendarConfiguration.instance.overwriteConfirmationYes('tp-export', 'calendar-weather'); expect(renderSpy).toHaveBeenCalledTimes(3); - expect((game).settings.set).toHaveBeenCalledTimes(6); ((game).settings.set).mockClear(); }); diff --git a/src/classes/simple-calendar-configuration.ts b/src/classes/simple-calendar-configuration.ts index b8a8942b..c54ad314 100644 --- a/src/classes/simple-calendar-configuration.ts +++ b/src/classes/simple-calendar-configuration.ts @@ -238,6 +238,7 @@ export class SimpleCalendarConfiguration extends FormApplication { */ public activateListeners(html: JQuery) { super.activateListeners(html); + (this.object).seasons.forEach(s => s.activateDateSelectors()); if(html.hasOwnProperty("length")) { //Month advanced click (html).find(".month-show-advanced").on('click', this.inputChange.bind(this)); @@ -602,6 +603,11 @@ export class SimpleCalendarConfiguration extends FormApplication { if(!isNaN(min)){ (this.object).time.secondsInMinute = min; } + } else if(id === 'scSecondsInCombatRound'){ + const s = parseInt(value); + if(!isNaN(s)){ + (this.object).time.secondsInCombatRound = s; + } } else if(id === 'scGameTimeRatio'){ const min = parseFloat(value); if(!isNaN(min)){ @@ -630,17 +636,6 @@ export class SimpleCalendarConfiguration extends FormApplication { //Season Setting Inputs else if(cssClass === 'season-name' && (this.object).seasons.length > index){ (this.object).seasons[index].name = value; - } else if(cssClass === 'season-month' && (this.object).seasons.length > index){ - const month = parseInt(value); - if(!isNaN(month)){ - (this.object).seasons[index].startingMonth = month; - (this.object).seasons[index].startingDay = 1; - } - } else if(cssClass === 'season-day' && (this.object).seasons.length > index){ - const day = parseInt(value); - if(!isNaN(day)){ - (this.object).seasons[index].startingDay = day; - } } else if(cssClass === 'season-color' && (this.object).seasons.length > index){ (this.object).seasons[index].color = value; } @@ -850,14 +845,12 @@ export class SimpleCalendarConfiguration extends FormApplication { await Importer.importCalendarWeather(this.object); this.updateApp(); } - await GameSettings.SetImportRan(true); } else if(type === 'tp-export'){ if(type2 === 'about-time'){ await Importer.exportToAboutTime(this.object); } else if(type2 === 'calendar-weather'){ await Importer.exportCalendarWeather(this.object); } - await GameSettings.SetImportRan(true); } } @@ -914,7 +907,7 @@ export class SimpleCalendarConfiguration extends FormApplication { } this.closeApp(); - } catch (error){ + } catch (error: any){ Logger.error(error); } } diff --git a/src/classes/simple-calendar-notes.ts b/src/classes/simple-calendar-notes.ts index 34476b90..123a62ab 100644 --- a/src/classes/simple-calendar-notes.ts +++ b/src/classes/simple-calendar-notes.ts @@ -56,11 +56,13 @@ export class SimpleCalendarNotes extends FormApplication { this.dateSelector = DateSelector.GetSelector(this.dateSelectorId, { onDateSelect: this.dateSelectorClick.bind(this), placeHolderText: '', - rangeSelect: true, + dateRangeSelect: true, showDate: true, - showTime: true + showTime: true, + startDate: {year: data.year, month: data.month, day: data.day, hour: data.hour, minute: data.minute, seconds: 0}, + endDate: data.endDate, + allDay: data.allDay }); - this.dateSelector.updateSelectedDate(data); } /** diff --git a/src/classes/simple-calendar.test.ts b/src/classes/simple-calendar.test.ts index 3996a9f1..15345d49 100644 --- a/src/classes/simple-calendar.test.ts +++ b/src/classes/simple-calendar.test.ts @@ -16,10 +16,18 @@ import SimpleCalendar from "./simple-calendar"; import Year from "./year"; import Month from "./month"; import {Note} from "./note"; -import {GameWorldTimeIntegrations, NoteRepeat, SettingNames, SocketTypes, TimeKeeperStatus} from "../constants"; +import { + GameWorldTimeIntegrations, + NoteRepeat, + PredefinedCalendars, + SettingNames, + SocketTypes, + TimeKeeperStatus +} from "../constants"; import {SimpleCalendarSocket} from "../interfaces"; import {SimpleCalendarConfiguration} from "./simple-calendar-configuration"; import {Weekday} from "./weekday"; +import PredefinedCalendar from "./predefined-calendar"; import Mock = jest.Mock; import SpyInstance = jest.SpyInstance; @@ -83,7 +91,7 @@ describe('Simple Calendar Class Tests', () => { expect(SimpleCalendar.instance.currentYear).toBeNull(); await SimpleCalendar.instance.init(); expect(Handlebars.registerHelper).toHaveBeenCalledTimes(3); - expect((game).settings.register).toHaveBeenCalledTimes(14); + expect((game).settings.register).toHaveBeenCalledTimes(13); expect((game).settings.get).toHaveBeenCalledTimes(12); expect(SimpleCalendar.instance.currentYear?.numericRepresentation).toBe(0); expect(SimpleCalendar.instance.currentYear?.months.length).toBe(1); @@ -813,6 +821,11 @@ describe('Simple Calendar Class Tests', () => { SimpleCalendar.instance.compactTimeControlClick(e); expect(y.time.seconds).toBe(3661); + (e.currentTarget).setAttribute('data-type', 'midnight'); + (e.currentTarget).setAttribute('data-amount', ''); + SimpleCalendar.instance.compactTimeControlClick(e); + expect(y.time.seconds).toBe(0); + //@ts-ignore game.user.isGM = false; }); @@ -899,8 +912,14 @@ describe('Simple Calendar Class Tests', () => { SimpleCalendar.instance.gmControlClick(event); expect((game).settings.get).toHaveBeenCalledTimes(12); + + (event.currentTarget).setAttribute('data-type', 'dawn'); + SimpleCalendar.instance.gmControlClick(event); + expect(y.time.seconds).toBe(0); + // @ts-ignore game.user.isGM = false; + (event.currentTarget).setAttribute('data-type', 'time'); SimpleCalendar.instance.gmControlClick(event); expect(ui.notifications?.warn).toHaveBeenCalled(); @@ -937,6 +956,50 @@ describe('Simple Calendar Class Tests', () => { game.users.find = orig; }); + test('Time of Day Control Click', () => { + SimpleCalendar.instance.timeOfDayControlClick('asd'); + expect(y.time.seconds).toBe(0); + + PredefinedCalendar.setToPredefined(y, PredefinedCalendars.Gregorian); + SimpleCalendar.instance.currentYear = y; + SimpleCalendar.instance.timeOfDayControlClick('asd'); + expect(y.time.seconds).toBe(0); + + SimpleCalendar.instance.timeOfDayControlClick('dawn'); + expect(y.time.seconds).toBe(21600); + y.time.seconds = 22000; + SimpleCalendar.instance.timeOfDayControlClick('dawn'); + expect(y.time.seconds).toBe(21600); + + SimpleCalendar.instance.timeOfDayControlClick('midday'); + expect(y.time.seconds).toBe(43200); + y.time.seconds = 44000; + SimpleCalendar.instance.timeOfDayControlClick('midday'); + expect(y.time.seconds).toBe(43200); + + SimpleCalendar.instance.timeOfDayControlClick('dusk'); + expect(y.time.seconds).toBe(64800); + y.time.seconds = 65000; + SimpleCalendar.instance.timeOfDayControlClick('dusk'); + expect(y.time.seconds).toBe(64800); + + SimpleCalendar.instance.timeOfDayControlClick('midnight'); + expect(y.time.seconds).toBe(0); + + y.resetMonths(); + y.months[0].current = true; + SimpleCalendar.instance.timeOfDayControlClick('dawn'); + expect(y.time.seconds).toBe(0); + SimpleCalendar.instance.timeOfDayControlClick('dusk'); + expect(y.time.seconds).toBe(0); + + y.resetMonths(); + SimpleCalendar.instance.timeOfDayControlClick('dawn'); + expect(y.time.seconds).toBe(0); + SimpleCalendar.instance.timeOfDayControlClick('dusk'); + expect(y.time.seconds).toBe(0); + }); + test('Date Control Apply', () => { // @ts-ignore game.user.isGM = true; @@ -1389,6 +1452,15 @@ describe('Simple Calendar Class Tests', () => { //@ts-ignore SimpleCalendar.instance.loadSeasonConfiguration(); expect(y.seasons[0].color).toBe('#ff0000'); + expect(y.seasons[0].sunriseTime).toBe(0); + expect(y.seasons[0].sunsetTime).toBe(0); + + (game).settings.get = () => {return [{name:'', startingMonth: 1, startingDay: 1, color: 'custom', customColor: '#ff0000', sunriseTime: 3600, sunsetTime: 7200}];} + + //@ts-ignore + SimpleCalendar.instance.loadSeasonConfiguration(); + expect(y.seasons[0].sunriseTime).toBe(3600); + expect(y.seasons[0].sunsetTime).toBe(7200); (game).settings.get = orig; }); @@ -1477,6 +1549,9 @@ describe('Simple Calendar Class Tests', () => { //@ts-ignore SimpleCalendar.instance.combatUpdate({started: true, scene: {id:"123"}}, {}, {advanceTime: 2}); expect(y.combatChangeTriggered).toBe(true); + //@ts-ignore + SimpleCalendar.instance.combatUpdate({started: true, scene: {id:"123"}}, {}, {advanceTime: 0}); + expect(y.combatChangeTriggered).toBe(true); //@ts-ignore game.scenes = null; @@ -1548,80 +1623,15 @@ describe('Simple Calendar Class Tests', () => { }); test('Time Keeping Check', async () => { - ((game).settings.get).mockClear(); - await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).not.toHaveBeenCalled(); - - SimpleCalendar.instance.currentYear = y; await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).not.toHaveBeenCalled(); - //@ts-ignore - game.user.isGM = true; - ((game).settings.get).mockReturnValueOnce(true); - y.generalSettings.gameWorldTimeIntegration = GameWorldTimeIntegrations.Self; - await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).toHaveBeenCalledTimes(1); - - ((game).modules.get) - .mockReturnValueOnce(null).mockReturnValueOnce(null) - .mockReturnValueOnce(null).mockReturnValueOnce({active:true}) - .mockReturnValueOnce({active:true}).mockReturnValueOnce(null); - await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).toHaveBeenCalledTimes(2); - - await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).toHaveBeenCalledTimes(3); - //@ts-ignore - expect(DialogRenderer).toHaveBeenCalledTimes(3); - await SimpleCalendar.instance.timeKeepingCheck(); - expect((game).settings.get).toHaveBeenCalledTimes(4); - //@ts-ignore - expect(DialogRenderer).toHaveBeenCalledTimes(4); - }); - - test('Module Import Click', async () => { - //@ts-ignore - game.user.isGM = true; - await SimpleCalendar.instance.moduleImportClick('asd'); - expect(console.error).toHaveBeenCalledTimes(1); - SimpleCalendar.instance.currentYear = y; - - await SimpleCalendar.instance.moduleImportClick('asd'); - expect((game).settings.set).toHaveBeenCalledTimes(1); - await SimpleCalendar.instance.moduleImportClick('about-time'); - expect((game).settings.set).toHaveBeenCalledTimes(2); - expect(renderSpy).toHaveBeenCalledTimes(1); - await SimpleCalendar.instance.moduleImportClick('calendar-weather'); - expect((game).settings.set).toHaveBeenCalledTimes(3); - expect(renderSpy).toHaveBeenCalledTimes(2); - }); - - test('Module Export Click', async () => { - //@ts-ignore + // @ts-ignore game.user.isGM = true; - await SimpleCalendar.instance.moduleExportClick('asd'); - expect(console.error).toHaveBeenCalledTimes(1); SimpleCalendar.instance.currentYear = y; + await SimpleCalendar.instance.timeKeepingCheck(); - await SimpleCalendar.instance.moduleExportClick('asd'); - expect((game).settings.set).toHaveBeenCalledTimes(1); - await SimpleCalendar.instance.moduleExportClick('about-time'); - expect((game).settings.set).toHaveBeenCalledTimes(2); - await SimpleCalendar.instance.moduleExportClick('calendar-weather'); - expect((game).settings.set).toHaveBeenCalledTimes(3); - }); - - test('Module Dialog No Change', async () => { - ((game).settings.set).mockClear(); - //@ts-ignore + // @ts-ignore game.user.isGM = false; - await SimpleCalendar.instance.moduleDialogNoChangeClick(); - expect((game).settings.set).not.toHaveBeenCalled(); - //@ts-ignore - game.user.isGM = true; - await SimpleCalendar.instance.moduleDialogNoChangeClick(); - expect((game).settings.set).toHaveBeenCalledTimes(1); }); test('Note Drag', () => { @@ -1653,20 +1663,22 @@ describe('Simple Calendar Class Tests', () => { (e.target).setAttribute('data-index', 'asd'); SimpleCalendar.instance.noteDragEnd(e); - expect((game).settings.set).toHaveBeenCalledTimes(1); + expect((game).settings.set).toHaveBeenCalledTimes(0); (e.target).setAttribute('data-index', SimpleCalendar.instance.notes[0].id); SimpleCalendar.instance.noteDragEnd(e); - expect((game).settings.set).toHaveBeenCalledTimes(2); + expect((game).settings.set).toHaveBeenCalledTimes(0); const orig = (game).settings.get; (game).settings.get =(moduleName: string, settingName: string) => { return [{id: SimpleCalendar.instance.notes[0].id}];}; SimpleCalendar.instance.noteDragEnd(e); - expect((game).settings.set).toHaveBeenCalledTimes(3); + expect((game).settings.set).toHaveBeenCalledTimes(0); (game).settings.get = orig; }); test('Check Note Reminders', () => { + // @ts-ignore + game.user.isGM = true; SimpleCalendar.instance.checkNoteReminders(); expect(ChatMessage.create).not.toHaveBeenCalled(); @@ -1783,5 +1795,8 @@ describe('Simple Calendar Class Tests', () => { y.time.seconds = 0; SimpleCalendar.instance.checkNoteReminders(); expect(ChatMessage.create).toHaveBeenCalledTimes(11); + + // @ts-ignore + game.user.isGM = false; }); }); diff --git a/src/classes/simple-calendar.ts b/src/classes/simple-calendar.ts index 13bde545..6ecd6a73 100644 --- a/src/classes/simple-calendar.ts +++ b/src/classes/simple-calendar.ts @@ -453,7 +453,7 @@ export default class SimpleCalendar extends Application{ } if(timeControls){ const h = timeControls.outerHeight(true); - height += h? h : 0; + height += h? h * 2 : 0; } if(noteListNote){ @@ -746,6 +746,11 @@ export default class SimpleCalendar extends Application{ //Sync the current time on apply, this will propagate to other modules this.currentYear.syncTime().catch(Logger.error); } + } else if(dataType && (dataType === 'dawn' || dataType === 'midday' || dataType === 'dusk' || dataType === 'midnight')){ + this.timeOfDayControlClick(dataType); + GameSettings.SaveCurrentDate(this.currentYear).catch(Logger.error); + //Sync the current time on apply, this will propagate to other modules + this.currentYear.syncTime(true).catch(Logger.error); } } } @@ -822,6 +827,13 @@ export default class SimpleCalendar extends Application{ this.currentYear.changeYear(isNext? 1 : -1, false, "current"); change = true; break; + case 'dawn': + case 'midday': + case 'dusk': + case 'midnight': + this.timeOfDayControlClick(dataType); + change = true; + break; } } if(change){ @@ -832,6 +844,67 @@ export default class SimpleCalendar extends Application{ } } + + public timeOfDayControlClick(type: string){ + if(this.currentYear){ + let month = this.currentYear.getMonth(); + let day: Day | undefined; + switch (type){ + case 'dawn': + if(month){ + day = month.getDay(); + if(day){ + let sunriseTime = this.currentYear.getSunriseSunsetTime(this.currentYear.numericRepresentation, month, day, true, false); + if(this.currentYear.time.seconds >= sunriseTime){ + this.currentYear.changeDay(1, 'current'); + month = this.currentYear.getMonth(); + if(month){ + day = month.getDay(); + if(day){ + sunriseTime = this.currentYear.getSunriseSunsetTime(this.currentYear.numericRepresentation, month, day, true, false); + this.currentYear.time.seconds = sunriseTime; + } + } + } else { + this.currentYear.time.seconds = sunriseTime; + } + } + } + break; + case 'midday': + const halfDay = this.currentYear.time.secondsPerDay / 2; + if(this.currentYear.time.seconds >= halfDay){ + this.currentYear.changeDay(1, 'current'); + } + this.currentYear.time.seconds = halfDay; + break; + case 'dusk': + if(month){ + day = month.getDay(); + if(day){ + let sunsetTime = this.currentYear.getSunriseSunsetTime(this.currentYear.numericRepresentation, month, day, false, false); + if(this.currentYear.time.seconds >= sunsetTime){ + this.currentYear.changeDay(1, 'current'); + month = this.currentYear.getMonth(); + if(month){ + day = month.getDay(); + if(day){ + sunsetTime = this.currentYear.getSunriseSunsetTime(this.currentYear.numericRepresentation, month, day, false, false); + this.currentYear.time.seconds = sunsetTime; + } + } + } else { + this.currentYear.time.seconds = sunsetTime; + } + } + } + break; + case 'midnight': + this.currentYear.changeTime(true, 'second', this.currentYear.time.secondsPerDay - this.currentYear.time.seconds); + break; + } + } + } /** * Click event for when a gm user clicks on the apply button for the current date controls * Will attempt to save the new current date to the world settings. @@ -1211,6 +1284,12 @@ export default class SimpleCalendar extends Application{ const newSeason = new Season(seasonData[i].name, seasonData[i].startingMonth, seasonData[i].startingDay); const sCustColor = seasonData[i].customColor; newSeason.color = seasonData[i].color === 'custom' && sCustColor? sCustColor : seasonData[i].color; + if(seasonData[i].hasOwnProperty('sunriseTime')){ + newSeason.sunriseTime = seasonData[i].sunriseTime; + } + if(seasonData[i].hasOwnProperty('sunsetTime')){ + newSeason.sunsetTime = seasonData[i].sunsetTime; + } this.currentYear.seasons.push(newSeason); } } @@ -1263,6 +1342,7 @@ export default class SimpleCalendar extends Application{ this.currentYear.time.minutesInHour = timeData.minutesInHour; this.currentYear.time.secondsInMinute = timeData.secondsInMinute; this.currentYear.time.gameTimeRatio = timeData.gameTimeRatio; + this.currentYear.time.secondsPerDay = this.currentYear.time.hoursInDay * this.currentYear.time.minutesInHour * this.currentYear.time.secondsInMinute; if(timeData.hasOwnProperty('unifyGameAndClockPause')){ this.currentYear.time.unifyGameAndClockPause = timeData.unifyGameAndClockPause; @@ -1272,6 +1352,10 @@ export default class SimpleCalendar extends Application{ this.currentYear.time.updateFrequency = timeData.updateFrequency; this.currentYear.time.timeKeeper.updateFrequency = timeData.updateFrequency; } + + if(timeData.hasOwnProperty('secondsInCombatRound')){ + this.currentYear.time.secondsInCombatRound = timeData.secondsInCombatRound; + } } } else { Logger.error('No Current year configured, can not load time data.'); @@ -1417,9 +1501,16 @@ export default class SimpleCalendar extends Application{ const activeScene = scenes? scenes.active? scenes.active.id : null : null; if(this.currentYear && combat.started && ((activeScene !== null && combat.scene && combat.scene.id === activeScene) || activeScene === null)){ this.currentYear.time.combatRunning = true; + + //If time does not have the advanceTime property the combat was just started if(time && time.hasOwnProperty('advanceTime')){ - Logger.debug('Combat Change Triggered'); - this.currentYear.combatChangeTriggered = true; + if(time.advanceTime !== 0){ + Logger.debug('Combat Change Triggered'); + this.currentYear.combatChangeTriggered = true; + } else { + // System does not advance time when combat rounds change, check our own settings + this.currentYear.processOwnCombatRoundTime(combat); + } } } } @@ -1465,107 +1556,11 @@ export default class SimpleCalendar extends Application{ async timeKeepingCheck(){ //If the current year is set up and the calendar is set up for time keeping and the user is the GM if(this.currentYear && this.currentYear.generalSettings.gameWorldTimeIntegration !== GameWorldTimeIntegrations.None && GameSettings.IsGm() ){ - const importRun = GameSettings.GetImportRan(); - // If we haven't asked about the import in the past - if(!importRun){ - const calendarWeather = (game).modules.get('calendar-weather'); - const aboutTime = (game).modules.get('about-time'); - //Ask about calendar/weather first, then about time - if(calendarWeather && calendarWeather.active){ - Logger.debug('Calendar/Weather detected.'); - const cwD = new Dialog({ - title: GameSettings.Localize('FSC.Module.CalendarWeather.Title'), - content: GameSettings.Localize('FSC.Module.CalendarWeather.Message'), - buttons:{ - import: { - label: GameSettings.Localize('FSC.Module.Import'), - callback: this.moduleImportClick.bind(this, 'calendar-weather') - }, - export: { - label: GameSettings.Localize('FSC.Module.CalendarWeather.Export'), - callback: this.moduleExportClick.bind(this,'calendar-weather') - }, - no: { - label: GameSettings.Localize('FSC.Module.NoChanges'), - callback: this.moduleDialogNoChangeClick.bind(this) - } - }, - default: "no" - }); - cwD.render(true); - } else if(aboutTime && aboutTime.active){ - Logger.debug(`About Time detected.`); - const cwD = new Dialog({ - title: GameSettings.Localize('FSC.Module.AboutTime.Title'), - content: GameSettings.Localize('FSC.Module.AboutTime.Message'), - buttons:{ - import: { - label: GameSettings.Localize('FSC.Module.Import'), - callback: this.moduleImportClick.bind(this, 'about-time') - }, - export: { - label: GameSettings.Localize('FSC.Module.AboutTime.Export'), - callback: this.moduleExportClick.bind(this,'about-time') - }, - no: { - label: GameSettings.Localize('FSC.Module.NoChanges'), - callback: this.moduleDialogNoChangeClick.bind(this) - } - }, - default: "no" - }); - cwD.render(true); - } - } - //Sync the current world time with the simple calendar await this.currentYear.syncTime(); } } - /** - * Called when the import option is selection from the importing/exporting module dialog - * @param {string} type The module - */ - async moduleImportClick(type: string) { - if(this.currentYear){ - if(type === 'about-time'){ - await Importer.importAboutTime(this.currentYear); - this.updateApp(); - } else if(type === 'calendar-weather'){ - await Importer.importCalendarWeather(this.currentYear); - this.updateApp(); - } - await GameSettings.SetImportRan(true); - } else { - Logger.error('Could not export as the current year is not defined'); - } - } - - /** - * Called when the export option is selection from the importing/exporting module dialog - * @param {string} type The module - */ - async moduleExportClick(type: string){ - if(this.currentYear){ - if(type === 'about-time'){ - await Importer.exportToAboutTime(this.currentYear); - } else if(type === 'calendar-weather'){ - await Importer.exportCalendarWeather(this.currentYear); - } - await GameSettings.SetImportRan(true); - } else { - Logger.error('Could not export as the current year is not defined'); - } - } - - /** - * Called when the no change dialog option is clicked for importing/exporting module data - */ - async moduleDialogNoChangeClick(){ - await GameSettings.SetImportRan(true); - } - /** * While a note is being dragged * @param {Event} event diff --git a/src/classes/time.test.ts b/src/classes/time.test.ts index a85f43c8..732936e0 100644 --- a/src/classes/time.test.ts +++ b/src/classes/time.test.ts @@ -17,7 +17,7 @@ describe('Time Tests', () => { }); test('Properties', () => { - expect(Object.keys(t).length).toBe(10); //Make sure no new properties have been added + expect(Object.keys(t).length).toBe(11); //Make sure no new properties have been added expect(t.hoursInDay).toBe(24); expect(t.minutesInHour).toBe(60); expect(t.secondsInMinute).toBe(60); @@ -28,6 +28,7 @@ describe('Time Tests', () => { expect(t.combatRunning).toBe(false); expect(t.updateFrequency).toBe(1); expect(t.unifyGameAndClockPause).toBe(false) + expect(t.secondsInCombatRound).toBe(6); }); test('Clone', () => { diff --git a/src/classes/time.ts b/src/classes/time.ts index d36163a3..ec3bc6c6 100644 --- a/src/classes/time.ts +++ b/src/classes/time.ts @@ -21,6 +21,11 @@ export default class Time { * @type {number} */ secondsInMinute: number; + /** + * How many seconds pass during a single round of combat + * @type {number} + */ + secondsInCombatRound: number; /** * The ratio at which to advance game time while real time passes, ratio of 1 is the same, ratio of 2 is twice as fast * @type {number} @@ -63,6 +68,7 @@ export default class Time { this.hoursInDay = hoursInDay; this.minutesInHour = minutesInHour; this.secondsInMinute = secondsInMinute; + this.secondsInCombatRound = 6; this.gameTimeRatio = 1; this.secondsPerDay = this.hoursInDay * this.minutesInHour * this.secondsInMinute; @@ -75,6 +81,7 @@ export default class Time { */ clone() { const t = new Time(this.hoursInDay, this.minutesInHour, this.secondsInMinute); + t.secondsInCombatRound = this.secondsInCombatRound; t.seconds = this.seconds; t.gameTimeRatio = this.gameTimeRatio; t.combatRunning = this.combatRunning; diff --git a/src/classes/utilities.test.ts b/src/classes/utilities.test.ts index 5e003489..b31049eb 100644 --- a/src/classes/utilities.test.ts +++ b/src/classes/utilities.test.ts @@ -83,13 +83,12 @@ describe('Utilities Class Tests', () => { hour: 0, minute: 0 }; - - expect(Utilities.FormatTime(dateToCheck)).toBe(''); - dateToCheck.allDay = false; - expect(Utilities.FormatTime(dateToCheck)).toBe('00:00'); + expect(Utilities.FormatTime(dateToCheck.hour, dateToCheck.minute, false)).toBe('00:00'); dateToCheck.hour = 10; dateToCheck.minute = 15; - expect(Utilities.FormatTime(dateToCheck)).toBe('10:15'); + expect(Utilities.FormatTime(dateToCheck.hour, dateToCheck.minute, false)).toBe('10:15'); + expect(Utilities.FormatTime(dateToCheck.hour, dateToCheck.minute, 0)).toBe('10:15:00'); + expect(Utilities.FormatTime(dateToCheck.hour, dateToCheck.minute, 12)).toBe('10:15:12'); }); test('Get Moon Phase Icon', () => { diff --git a/src/classes/utilities.ts b/src/classes/utilities.ts index ede92ee4..c24fc474 100644 --- a/src/classes/utilities.ts +++ b/src/classes/utilities.ts @@ -70,20 +70,29 @@ export default class Utilities{ } /** - * Formats an hour and minute to include pre padded 0's - * @param date + * Formats an hour, minute and optionally second to include pre padded 0's + * @param {Number} hour + * @param {Number} minute + * @param {Number|Boolean} second */ - public static FormatTime(date: SCDateSelector.Date){ + public static FormatTime(hour: number, minute: number, second: number | false){ let text = ''; - if(!date.allDay){ - let sHour: string | number = date.hour; - let sMinute: string | number = date.minute; - if(sHour < 10){ - sHour = `0${sHour}`; - } - if(sMinute < 10){ - sMinute = `0${sMinute}`; + let sHour = hour.toString(); + let sMinute = minute.toString() + if(hour < 10){ + sHour = `0${hour}`; + } + if(minute < 10){ + sMinute = `0${minute}`; + } + + if(second !== false){ + let sSecond = second.toString(); + if(second < 10){ + sSecond = `0${second}`; } + text = `${sHour}:${sMinute}:${sSecond}`; + } else { text = `${sHour}:${sMinute}`; } return text; diff --git a/src/classes/year.test.ts b/src/classes/year.test.ts index a336caf7..4fdf7e41 100644 --- a/src/classes/year.test.ts +++ b/src/classes/year.test.ts @@ -12,13 +12,21 @@ import "../../__mocks__/hooks"; import Year from "./year"; import Month from "./month"; import {Weekday} from "./weekday"; -import {GameSystems, GameWorldTimeIntegrations, LeapYearRules, TimeKeeperStatus, YearNamingRules} from "../constants"; +import { + GameSystems, + GameWorldTimeIntegrations, + LeapYearRules, + PredefinedCalendars, + TimeKeeperStatus, + YearNamingRules +} from "../constants"; import LeapYear from "./leap-year"; import Season from "./season"; import Moon from "./moon"; import SimpleCalendar from "./simple-calendar"; import {Note} from "./note"; import {SimpleCalendarConfiguration} from "./simple-calendar-configuration"; +import PredefinedCalendar from "./predefined-calendar"; describe('Year Class Tests', () => { let year: Year; @@ -1066,9 +1074,20 @@ describe('Year Class Tests', () => { test('Get Season', () => { year.months.push(month); year.months.push(new Month('Month 2', 2, 0, 20)); - year.seasons.push(new Season('Spring', 3, 5)); + year.months.push(new Month('Month 3', 3, 0, 20)); + year.seasons.push(new Season('Spring', 1, 10)); + year.seasons.push(new Season('Summer', 2, 10)); + year.seasons.push(new Season('Fall', 3, 10)); + year.seasons.push(new Season('Winter', 3, 18)); let data = year.getSeason(0, 1); + expect(data.name).toBe('Winter'); + data = year.getSeason(2, 9); + expect(data.name).toBe('Summer'); + + year.seasons[0].startingMonth = -1; + data = year.getSeason(0, 1); + expect(data.name).toBe('Spring'); }); test('Get Year Name', () => { @@ -1091,4 +1110,53 @@ describe('Year Class Tests', () => { }); + test('Process Own Combat Round Time', () => { + PredefinedCalendar.setToPredefined(year, PredefinedCalendars.Gregorian); + let curTime = year.time.seconds; + year.processOwnCombatRoundTime({}); + expect(year.time.seconds).toBe(curTime + year.time.secondsInCombatRound); + + //@ts-ignore + game.user.isGM = true; + curTime = year.time.seconds; + //@ts-ignore + year.processOwnCombatRoundTime({round: 2, previous: {round: 1}}); + expect(year.time.seconds).toBe(curTime + year.time.secondsInCombatRound); + + curTime = year.time.seconds; + //@ts-ignore + year.processOwnCombatRoundTime({round: 2, previous: {round: 2}}); + expect(year.time.seconds).toBe(curTime); + //@ts-ignore + game.user.isGM = false; + }); + + test('Get Sunrise Sunset Time', () => { + year.months.push(month); + let sunrise = year.getSunriseSunsetTime(year.numericRepresentation, month, month.days[0]); + expect(sunrise).toBe(0); + + PredefinedCalendar.setToPredefined(year, PredefinedCalendars.Gregorian); + + SimpleCalendar.instance = new SimpleCalendar(); + SimpleCalendar.instance.currentYear = year; + + sunrise = year.getSunriseSunsetTime(year.numericRepresentation, year.months[0], year.months[0].days[0], true, false); + expect(sunrise).toBe(21600); + + sunrise = year.getSunriseSunsetTime(year.numericRepresentation, year.months[2], year.months[2].days[19], false, false); + expect(sunrise).toBe(64800); + + sunrise = year.getSunriseSunsetTime(year.numericRepresentation, year.months[3], year.months[3].days[19], true, true); + expect(sunrise).toBe(1618898400); + + sunrise = year.getSunriseSunsetTime(year.numericRepresentation, year.months[11], year.months[11].days[21], true, false); + expect(sunrise).toBe(21600); + + year.seasons[1].startingMonth = 3; + year.seasons[1].startingDay = 29; + sunrise = year.getSunriseSunsetTime(year.numericRepresentation, year.months[0], year.months[0].days[0], true, false); + expect(sunrise).toBe(21600); + }); + }); diff --git a/src/classes/year.ts b/src/classes/year.ts index cbd82cf7..f103e06c 100644 --- a/src/classes/year.ts +++ b/src/classes/year.ts @@ -19,6 +19,9 @@ import {Note} from "./note"; import SimpleCalendar from "./simple-calendar"; import PF2E from "./systems/pf2e"; import Utilities from "./utilities"; +import Day from "./day"; +import DateSelector from "./date-selector"; +import API from "./api"; /** * Class for representing a year @@ -1009,16 +1012,19 @@ export default class Year { let season = new Season('', 1, 1); if(day > 0 && monthIndex >= 0){ let currentSeason: Season | null = null; - for(let i = 0; i < this.seasons.length; i++){ - const seasonMonthIndex = this.months.findIndex(m => m.numericRepresentation === this.seasons[i].startingMonth); - if(seasonMonthIndex === monthIndex && this.seasons[i].startingDay <= day){ - currentSeason = this.seasons[i]; + + const sortedSeasons = this.seasons.sort((a, b) => { return a.startingMonth - b.startingMonth || a.startingDay - b.startingDay; }); + + for(let i = 0; i < sortedSeasons.length; i++){ + const seasonMonthIndex = this.months.findIndex(m => m.numericRepresentation === sortedSeasons[i].startingMonth); + if(seasonMonthIndex === monthIndex && sortedSeasons[i].startingDay <= day){ + currentSeason = sortedSeasons[i]; } else if (seasonMonthIndex < monthIndex){ - currentSeason = this.seasons[i]; + currentSeason = sortedSeasons[i]; } } if(currentSeason === null){ - currentSeason = this.seasons[this.seasons.length - 1]; + currentSeason = sortedSeasons[sortedSeasons.length - 1]; } if(currentSeason){ @@ -1056,4 +1062,83 @@ export default class Year { return name; } + + /** + * If we have determined that the system does not change the world time when a combat round is changed we run this function to update the time by the set amount. + * @param {Combat} combat The current active combat + */ + processOwnCombatRoundTime(combat: Combat){ + let roundSeconds = this.time.secondsInCombatRound; + let roundsPassed = 1; + + if(combat.hasOwnProperty('previous') && combat['previous'].round){ + roundsPassed = combat.round - combat['previous'].round; + } + if(roundSeconds !== 0 && roundsPassed !== 0){ + const parsedDate = this.secondsToDate(this.toSeconds() + (roundSeconds * roundsPassed)); + this.updateTime(parsedDate); + // If the current player is the GM then we need to save this new value to the database + // Since the current date is updated this will trigger an update on all players as well + if(GameSettings.IsGm() && SimpleCalendar.instance.primary){ + GameSettings.SaveCurrentDate(this).catch(Logger.error); + } + } + } + + /** + * Calculates the sunrise or sunset time for the passed in date, based on the the season setup + * @param {number} year The year of the date + * @param {Month} month The month object of the date + * @param {Day} day The day object of the date + * @param {boolean} [sunrise=true] If to calculate the sunrise or sunset + * @param {boolean} [calculateTimestamp=true] If to add the date timestamp to the sunrise/sunset time + */ + getSunriseSunsetTime(year: number, month: Month, day: Day, sunrise: boolean = true, calculateTimestamp: boolean = true){ + const monthIndex = this.months.findIndex(m => m.numericRepresentation === month.numericRepresentation); + const dayIndex = month.days.findIndex(d => d.numericRepresentation === day.numericRepresentation); + + const sortedSeasons = this.seasons.sort((a, b) => { return a.startingMonth - b.startingMonth || a.startingDay - b.startingDay; }); + let seasonIndex = sortedSeasons.length - 1; + for(let i = 0; i < sortedSeasons.length; i++){ + const seasonMonthIndex = this.months.findIndex(m => m.numericRepresentation === sortedSeasons[i].startingMonth); + if(seasonMonthIndex === monthIndex && sortedSeasons[i].startingDay <= day.numericRepresentation){ + seasonIndex = i; + } else if (seasonMonthIndex < monthIndex){ + seasonIndex = i; + } + } + const nextSeasonIndex = (seasonIndex + 1) % this.seasons.length; + if(seasonIndex < sortedSeasons.length && nextSeasonIndex < sortedSeasons.length){ + let season = sortedSeasons[seasonIndex]; + const nextSeason = sortedSeasons[nextSeasonIndex]; + let seasonYear = year; + let nextSeasonYear = seasonYear; + + //If the current season is the last season of the year we need to check to see if the year for this season is the year before the current date + if(seasonIndex === sortedSeasons.length - 1){ + if(this.months[monthIndex].numericRepresentation < sortedSeasons[seasonIndex].startingMonth || (sortedSeasons[seasonIndex].startingMonth === this.months[monthIndex].numericRepresentation && this.months[monthIndex].days[dayIndex].numericRepresentation < sortedSeasons[seasonIndex].startingDay)){ + seasonYear = year - 1; + } + nextSeasonYear = seasonYear + 1 + } + const daysBetweenSeasonStartAndDay = DateSelector.DaysBetweenDates( + { year: seasonYear, month: season.startingMonth, day: season.startingDay, allDay: false, hour: 0, minute: 0 }, + { year: year, month: this.months[monthIndex].numericRepresentation, day: this.months[monthIndex].days[dayIndex].numericRepresentation, hour: 0, minute: 0, allDay: false } + ); + const daysBetweenSeasons = DateSelector.DaysBetweenDates( + { year: seasonYear, month: season.startingMonth, day: season.startingDay, allDay: false, hour: 0, minute: 0 }, + { year: nextSeasonYear, month: nextSeason.startingMonth, day: nextSeason.startingDay, allDay: false, hour: 0, minute: 0 } + ); + const diff = sunrise? nextSeason.sunriseTime - season.sunriseTime : nextSeason.sunsetTime - season.sunsetTime; + const averageChangePerDay = diff / daysBetweenSeasons; + const sunriseChangeForDay = daysBetweenSeasonStartAndDay * averageChangePerDay; + const finalSunriseTime = Math.round((sunrise? season.sunriseTime : season.sunsetTime) + sunriseChangeForDay); + if(calculateTimestamp){ + return API.dateToTimestamp({ year: year, month: monthIndex, day: dayIndex, hour: 0, minute: 0, second: 0 }) + finalSunriseTime; + } else { + return finalSunriseTime; + } + } + return 0; + } } diff --git a/src/constants.ts b/src/constants.ts index 3c21c3e8..26c4b512 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -23,7 +23,6 @@ export enum SettingNames { LeapYearRule = 'leap-year-rule', TimeConfiguration = 'time-configuration', GeneralConfiguration = 'general-configuration', - ImportRan = 'import-ran', SeasonConfiguration = 'season-configuration', MoonConfiguration = 'moon-configuration', NoteCategories = 'note-categories' diff --git a/src/index.ts b/src/index.ts index e3fbabf0..6f26f3c1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -28,3 +28,5 @@ Hooks.on("deleteCombat", SimpleCalendar.instance.combatDelete.bind(SimpleCalenda Hooks.on("pauseGame", SimpleCalendar.instance.gamePaused.bind(SimpleCalendar.instance)); Logger.debugMode = false; + +//Hooks.on(SimpleCalendarHooks.DateTimeChange, (...args: any) => {console.log(...args);}); diff --git a/src/interfaces.test.ts b/src/interfaces.test.ts index 369c1c22..e64a1aa0 100644 --- a/src/interfaces.test.ts +++ b/src/interfaces.test.ts @@ -269,14 +269,15 @@ describe('Interface Tests', () => { }); test('Time Configuration', () => { - const tc: TimeConfig = {gameTimeRatio:1, secondsInMinute: 0, minutesInHour: 0, hoursInDay: 0, unifyGameAndClockPause: false, updateFrequency: 1}; - expect(Object.keys(tc).length).toBe(6); //Make sure no new properties have been added + const tc: TimeConfig = {gameTimeRatio:1, secondsInMinute: 0, minutesInHour: 0, hoursInDay: 0, secondsInCombatRound: 6, unifyGameAndClockPause: false, updateFrequency: 1}; + expect(Object.keys(tc).length).toBe(7); //Make sure no new properties have been added expect(tc.gameTimeRatio).toBe(1); expect(tc.secondsInMinute).toBe(0); expect(tc.minutesInHour).toBe(0); expect(tc.hoursInDay).toBe(0); expect(tc.updateFrequency).toBe(1); expect(tc.unifyGameAndClockPause).toBe(false); + expect(tc.secondsInCombatRound).toBe(6); }); test('Time Template', () => { @@ -287,16 +288,15 @@ describe('Interface Tests', () => { }); test('Season Template', () => { - const st: SeasonTemplate = {name: '', startingMonth: 1, startingDay: 1, color: '', dayList: []}; + const st: SeasonTemplate = {name: '', startingMonth: 1, startingDay: 1, color: '', startDateSelectorId: '', sunriseSelectorId: ''}; expect(st.name).toBe(''); expect(st.color).toBe(''); expect(st.startingMonth).toBe(1); expect(st.startingDay).toBe(1); - expect(st.dayList).toStrictEqual([]); }); test('Season Configuration', () => { - const sc: SeasonConfiguration = {name: '', startingMonth: 1, startingDay: 1, color: '', customColor: ''}; + const sc: SeasonConfiguration = {name: '', startingMonth: 1, startingDay: 1, color: '', customColor: '', sunriseTime: 0, sunsetTime: 0}; expect(sc.name).toBe(''); expect(sc.color).toBe(''); expect(sc.customColor).toBe(''); diff --git a/src/interfaces.ts b/src/interfaces.ts index 07b6a822..c594f900 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -272,6 +272,7 @@ export interface TimeConfig { hoursInDay: number; minutesInHour: number; secondsInMinute: number; + secondsInCombatRound: number; gameTimeRatio: number; unifyGameAndClockPause: boolean; updateFrequency: number; @@ -294,7 +295,8 @@ export interface SeasonTemplate { startingMonth: number; startingDay: number; color: string; - dayList: DayTemplate[]; + startDateSelectorId: string; + sunriseSelectorId: string; } /** @@ -304,6 +306,8 @@ export interface SeasonConfiguration { name: string; startingMonth: number; startingDay: number; + sunriseTime: number; + sunsetTime: number; color: string; customColor?: string; } @@ -440,9 +444,17 @@ export namespace SCDateSelector { export interface Options { placeHolderText?: string; onDateSelect?: Function; - rangeSelect?: boolean; + dateRangeSelect?: boolean; + timeRangeSelect?: boolean; + showYear?: boolean; + inputMatchCalendarWidth?: boolean; showDate: boolean; showTime: boolean; + startDate?: DateTimeParts, + endDate?: DateTimeParts, + allDay?: boolean + timeDelimiter?: string; + showTimeLabel?: boolean; } export interface Date{ diff --git a/src/lang/en.json b/src/lang/en.json index 6c99b6e0..1e622365 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -26,6 +26,10 @@ "FSC.Back": "Back", "FSC.Clear": "Clear", "FSC.Random": "Random", + "FSC.Midnight": "Midnight", + "FSC.Dawn": "Dawn", + "FSC.Midday": "Midday", + "FSC.Dusk": "Dusk", "FSC.ShowAdvanced": "Show Advanced", "FSC.HideAdvanced": "Hide Advanced", "FSC.DateControls": "Date Controls", @@ -179,10 +183,8 @@ "FSC.Configuration.Year.Seasons": "Seasons", "FSC.Configuration.Season.Name": "Season Name", "FSC.Configuration.Season.NameHelp": "The name of this season.", - "FSC.Configuration.Season.StartingMonth": "Starting Month", - "FSC.Configuration.Season.StartingMonthHelp": "The month when this season starts every year.", - "FSC.Configuration.Season.StartingDay": "Starting Day", - "FSC.Configuration.Season.StartingDayHelp": "The day of the month when this season starts every year.", + "FSC.Configuration.Season.StartingDate": "Starting Date", + "FSC.Configuration.Season.StartingDateHelp": "The month and day when this season starts every year.", "FSC.Configuration.Season.Color": "Color", "FSC.Configuration.Season.ColorHelp": "The color to associate with this season.", "FSC.Configuration.Season.ColorWhite": "White", @@ -194,6 +196,8 @@ "FSC.Configuration.Season.ColorCustomHelp": "Set a custom hex value color for the season.", "FSC.Configuration.Season.RemoveAll": "Remove All Seasons", "FSC.Configuration.Season.Add": "Add New Season", + "FSC.Configuration.Season.SunriseSunset": "Sunrise/Sunset Time", + "FSC.Configuration.Season.SunriseSunsetHelp": "The time of day the sun rises and sun sets for the first day of the season.", "FSC.Configuration.Month.Title": "Month Settings", "FSC.Configuration.Month.Name": "Month Name", "FSC.Configuration.Month.NameHelp": "The text name of this month.", @@ -244,6 +248,8 @@ "FSC.Configuration.Time.MinutesInHourHelp": "How many minutes make up a single hour.", "FSC.Configuration.Time.SecondsInMinute": "Seconds in a Minute", "FSC.Configuration.Time.SecondsInMinuteHelp": "How many seconds make up a single minute.", + "FSC.Configuration.Time.SecondsInCombatRound": "Seconds per Combat Round", + "FSC.Configuration.Time.SecondsInCombatRoundHelp": "How many seconds pass during 1 round of combat. This is only applied if the current system does not increment time during combat rounds!", "FSC.Configuration.Time.GameTimeRatio": "Game Seconds Per Real Life Seconds", "FSC.Configuration.Time.GameTimeRatioHelp": "How many seconds pass in game for every second that passes in real time.", "FSC.Configuration.Time.Options": "Time Options", diff --git a/src/lang/es.json b/src/lang/es.json index f2870d79..7c35e96c 100644 --- a/src/lang/es.json +++ b/src/lang/es.json @@ -1,4 +1,7 @@ { + "I18N.LANGUAGE": "Español", + "I18N.MAINTAINERS": "areymoreno, @Viriato139ac#0342", + "FSC.Title": "Simple Calendar", "FSC.Compact": "Compacto", "FSC.Full": "Integro", @@ -6,7 +9,12 @@ "FSC.One": "1", "FSC.Five": "5", "FSC.Thirty": "30", + "FSC.OrdinalSuffix.st": "o", + "FSC.OrdinalSuffix.nd": "o", + "FSC.OrdinalSuffix.rd": "o", + "FSC.OrdinalSuffix.th": "o", "FSC.ButtonTitle": "Calendario", + "FSC.AllDay": "Todo el día", "FSC.Day": "Día", "FSC.Days": "Días", "FSC.Month": "Mes", @@ -19,11 +27,13 @@ "FSC.SecondShorthand": "seg", "FSC.Forward": "Avanzar", "FSC.Back": "Regresar", + "FSC.Clear": "Borrar", + "FSC.Random": "Al azar", "FSC.ShowAdvanced": "Mostrar más", "FSC.HideAdvanced": "Mostrar menos", "FSC.DateControls": "Controles de fecha", - "FSC.DateControlsHelp": "Utiliza estos controles para cambiar la fecha actual en tu juego.", - "FSC.NoDateControls": "Simple Calendar ha sido configurado para que otro movil controle la fecha y la hora. Por favor, utilice este módulo para actualizar la hora o cambiar la configuración de Simple Calendars.", + "FSC.DateControlsHelp": "Utiliza estos controles para cambiar la fecha actual en tu juego", + "FSC.NoDateControls": "Simple Calendar ha sido configurado para que otro movil controle la fecha y la hora. Por favor, utilice este módulo para actualizar la hora o cambiar la configuración de Simple Calendars", "FSC.SetCurrentDate": "Establecer la fecha actual", "FSC.SetCurrentDateDialog.Title": "Confirmar el cambio de fecha actual", "FSC.SetCurrentDateDialog.Content": "¡Ha seleccionado cambiar la fecha a un día que no es visible actualmente!
¿Está seguro de que quiere cambiar la fecha actual a {DATE}?", @@ -31,6 +41,8 @@ "FSC.AdvancedOptions": "Opciones avanzadas", "FSC.Today": "Hoy", "FSC.Configure": "Configurar", + "FSC.Import": "Importar", + "FSC.Export": "Exportar", "FSC.By": "Por", "FSC.Cancel": "Cancelar", "FSC.Edit": "Editar", @@ -48,7 +60,7 @@ "FSC.MoveMonthBack": "Retroceder un mes", "FSC.MoveDayBack": "Retroceder un día", "FSC.Time.Controls": "Controles de tiempo", - "FSC.Time.ControlsHelp": "Seleccione una unidad de tiempo para cambiar y luego use los controles para avanzar o reducir esa unidad en 1 o 5.", + "FSC.Time.ControlsHelp": "Seleccione una unidad de tiempo para cambiar y luego use los controles para avanzar o reducir esa unidad en 1 o 5", "FSC.Time.Forward": "Avanzar en el tiempo", "FSC.Time.Backward": "Retroceder en el tiempo", "FSC.Time.Start": "Comenzar a adelantar el tiempo", @@ -60,17 +72,26 @@ "FSC.Notes.AddNew": "Añadir nueva nota", "FSC.Notes.NewFor": "Nueva nota para", "FSC.Notes.Title": "Título de la nota", - "FSC.Notes.TitleHelp": "El título de esta nota.", + "FSC.Notes.TitleHelp": "El título de esta nota", + "FSC.Notes.Date": "Fecha de la nota", + "FSC.Notes.DateHelp": "Fecha a la que se refiere la nota", + "FSC.Notes.NotPlayerVisible": "No visible por los jugadores", "FSC.Notes.PlayerVisible": "Jugador visible", - "FSC.Notes.PlayerVisibleHelp": "Si esta nota es visible por los jugadores o no.", + "FSC.Notes.PlayerVisibleHelp": "Si esta nota es visible por los jugadores o no", + "FSC.Notes.Reminder": "¡Recordármelo!", + "FSC.Notes.ReminderHelp": "Se le recordará este evento", "FSC.Notes.Repeating": "Repetición de nota", - "FSC.Notes.RepeatingHelp": "Si esta nota se repite semanal, mensual, anualmente o no se repite.", + "FSC.Notes.RepeatingHelp": "Si esta nota se repite semanal, mensual, anualmente o no se repite", "FSC.Notes.Save": "Guardar Nota", "FSC.Notes.Repeats": "Se repite", "FSC.Notes.Repeat.Never": "Nunca", "FSC.Notes.Repeat.Monthly": "Mensual", "FSC.Notes.Repeat.Yearly": "Anual", "FSC.Notes.Repeat.Weekly": "Semanal", + "FSC.Notes.Time": "Hora", + "FSC.Notes.DateTime.Title": "Fecha/hora de la nota", + "FSC.Notes.DateTime.Help": "La fecha de la nota y, opcionalmente, la hora en la que ocurre", + "FSC.Notes.DateTime.AllDay": "Añadir hora", "FSC.Notes.Author": "Autor", "FSC.Date.Sunday": "Domingo", "FSC.Date.Monday": "Lunes", @@ -101,169 +122,186 @@ "FSC.Moon.Phase.LastQuarter": "Cuarto Menguante", "FSC.Moon.Phase.WaningCrescent": "Menguante", "FSC.Configuration.Title": "Configuración del calendario", - "FSC.Configuration.Description": "Este formulario le permite personalizar su calendario de juegos especificando el año en curso, cuántos meses, el nombre de cada mes y cuántos días tiene cada mes.", + "FSC.Configuration.Description": "Este formulario le permite personalizar su calendario de juegos especificando el año en curso, cuántos meses, el nombre de cada mes y cuántos días tiene cada mes", "FSC.Configuration.Help": "¡Si necesitas ayuda para configurar el calendario, no dejes de consultar la documentación!", "FSC.Configuration.Save": "Guardar Configuración", "FSC.Configuration.General.Title": "Configuración general", "FSC.Configuration.General.PreDefined": "Calendarios predefinidos", - "FSC.Configuration.General.PreDefinedHelp": "Elija uno de los calendarios predefinidos para empezar a configurarlo más rápidamente.", + "FSC.Configuration.General.PreDefinedHelp": "Elija uno de los calendarios predefinidos para empezar a configurarlo más rápidamente", "FSC.Configuration.General.GameWorldTime": "Integración del tiempo en el mundo del juego", - "FSC.Configuration.General.GameWorldTimeHelp": "Indicar al Simple Calendar cómo integrarse con la hora del mundo del juego y responder a las actualizaciones de la hora del mundo del juego.", - "FSC.Configuration.General.None": "Ninguna: No se relaciona con el tiempo del mundo del juego.", - "FSC.Configuration.General.Self": "Uno mismo: Controla el tiempo del mundo del juego ignorando las actualizaciones de otros módulos.", - "FSC.Configuration.General.ThirdParty": "Módulo de terceros: Sólo sigue las actualizaciones de la hora del mundo del juego de otros módulos.", - "FSC.Configuration.General.Mixed": "Mixto: Actualiza el tiempo del mundo del juego y sigue las actualizaciones realizadas desde otros módulos.", + "FSC.Configuration.General.GameWorldTimeHelp": "Indicar al Simple Calendar cómo integrarse con la hora del mundo del juego y responder a las actualizaciones de la hora del mundo del juego", + "FSC.Configuration.General.None": "Ninguna: No se relaciona con el tiempo del mundo del juego", + "FSC.Configuration.General.Self": "Uno mismo: Controla el tiempo del mundo del juego ignorando las actualizaciones de otros módulos", + "FSC.Configuration.General.ThirdParty": "Módulo de terceros: Sólo sigue las actualizaciones de la hora del mundo del juego de otros módulos", + "FSC.Configuration.General.Mixed": "Mixto: Actualiza el tiempo del mundo del juego y sigue las actualizaciones realizadas desde otros módulos", "FSC.Configuration.General.PF2ESync": "Pathfinder 2E: Sincronización horaria mundial", - "FSC.Configuration.General.PF2ESyncHelp": "Esto forzará al Simple Calendar a mantener sincronizado con la hora mundial de Pathfinder 2E.", + "FSC.Configuration.General.PF2ESyncHelp": "Esto forzará al Simple Calendar a mantener sincronizado con la hora mundial de Pathfinder 2E", "FSC.Configuration.General.ShowClock": "Mostrar Reloj", - "FSC.Configuration.General.ShowClockHelp": "Si se quiere mostrar el reloj de la hora debajo del calendario, si se marca los controles para cambiar las horas, los minutos y los segundos también se mostrarán.", + "FSC.Configuration.General.ShowClockHelp": "Si se quiere mostrar el reloj de la hora debajo del calendario, si se marca los controles para cambiar las horas, los minutos y los segundos también se mostrarán", "FSC.Configuration.General.PlayerAddNotes": "Añadir notas", - "FSC.Configuration.General.PlayerAddNotesHelp": "Los roles marcados podrán añadir notas a la agenda.", + "FSC.Configuration.General.PlayerAddNotesHelp": "Los roles marcados podrán añadir notas a la agenda", + "FSC.Configuration.General.PlayerReorderNotes": "Reordenar notas", + "FSC.Configuration.General.PlayerReorderNotesHelp": "Los roles marcados podrán reordenar las notas de un día", "FSC.Configuration.General.QuickSetup": "Configuración rápida", "FSC.Configuration.General.Notes": "Notas", + "FSC.Configuration.General.ImportExport.Title": "Importar/Exportar", + "FSC.Configuration.General.ImportExport.SCConfig": "Importar/Exportar configuración de calendario", + "FSC.Configuration.General.ImportExport.SCConfigHelp": "Para exportar la configuración actual del calendario Simple Calendar y compartirlo o importarlo en otro mundo", "FSC.Configuration.General.ThirdPartyModule": "Importación/exportación de módulos de terceros", - "FSC.Configuration.General.Permissions.Note": "Aquí se pueden ajustar los permisos para varias interacciones con Simple Calendar en función de los roles de Foundry. Los Game Masters siempre tendrán estos permisos.", + "FSC.Configuration.General.Permissions.Note": "Aquí se pueden ajustar los permisos para varias interacciones con Simple Calendar en función de los roles de Foundry. Los Game Masters siempre tendrán estos permisos", "FSC.Configuration.General.CalendarPlayerVisible": "Ver Calendario", - "FSC.Configuration.General.CalendarPlayerVisibleHelp": "Los roles marcados podrán abrir Simple Calendar.", + "FSC.Configuration.General.CalendarPlayerVisibleHelp": "Los roles marcados podrán abrir Simple Calendar", "FSC.Configuration.General.PlayersChangeDateTime": "Cambiar la fecha y la hora", "FSC.Configuration.General.PlayersChangeDateTimeHelp": "Los roles marcados podrán cambiar la fecha y la hora de Simple Calendar", "FSC.Configuration.Notes.Title": "Ajustes de nota", + "FSC.Configuration.Notes.NoteCategories": "Categorías de notas", + "FSC.Configuration.NoteCategories.Name": "Nombre de la categoría de notas", + "FSC.Configuration.NoteCategories.NameHelp": "El nombre que se muestra en esta categoría de notas", + "FSC.Configuration.NoteCategories.Color": "Color de la categoría de notas", + "FSC.Configuration.NoteCategories.ColorHelp": "El color asociado a la categoría de notas", + "FSC.Configuration.NoteCategories.Add": "Añadir categoría de notas", + "FSC.Configuration.NoteCategories.RemoveAll": "Borrar todas las categorías de notas", + "FSC.Configuration.Notes.NoteCategoriesHelp": "Seleccione todas las categorías asociadas con esta nota", "FSC.Configuration.Year.Title": "Ajustes de Año", "FSC.Configuration.Year.Current": "Año Actual", - "FSC.Configuration.Year.CurrentHelp": "El año actual en el que se desarrolla el juego. Esto también se puede cambiar con los controles de fecha.", + "FSC.Configuration.Year.CurrentHelp": "El año actual en el que se desarrolla el juego. Esto también se puede cambiar con los controles de fecha", "FSC.Configuration.Year.Prefix": "Prefijo del año", - "FSC.Configuration.Year.PrefixHelp": "Texto que aparece antes del año.", + "FSC.Configuration.Year.PrefixHelp": "Texto que aparece antes del año", "FSC.Configuration.Year.Postfix": "Sufijo deñ año", - "FSC.Configuration.Year.PostfixHelp": "Texto que aparece después del año.", + "FSC.Configuration.Year.PostfixHelp": "Texto que aparece después del año", "FSC.Configuration.Year.YearZero": "Año cero", - "FSC.Configuration.Year.YearZeroHelp": "Este es el año que se considera el año cero para calcular el tiempo transcurrido. Por lo general, no será necesario modificarlo.", + "FSC.Configuration.Year.YearZeroHelp": "Este es el año que se considera el año cero para calcular el tiempo transcurrido. Por lo general, no será necesario modificarlo", "FSC.Configuration.Year.YearNames": "Nombres de los años", "FSC.Configuration.Year.YearName": "Nombre del año", "FSC.Configuration.Year.YearNameAdd": "Añadir el nombre del nuevo año", "FSC.Configuration.Year.YearNameRemove": "Eliminar los nombres de todos los años", "FSC.Configuration.Year.YearNamesStart": "Año de inicio para los nombres", - "FSC.Configuration.Year.YearNamesStartHelp": "El año en que comienza el nombre del primer año de la lista.", + "FSC.Configuration.Year.YearNamesStartHelp": "El año en que comienza el nombre del primer año de la lista", "FSC.Configuration.Year.YearNameBehaviour": "Orden de los nombres de los años", - "FSC.Configuration.Year.YearNameBehaviourHelp": "Cómo determinar el orden de los nombres de los años.", + "FSC.Configuration.Year.YearNameBehaviourHelp": "Cómo determinar el orden de los nombres de los años", "FSC.Configuration.Year.Seasons": "Estaciones", "FSC.Configuration.Season.Name": "Nombre de la estación", - "FSC.Configuration.Season.NameHelp": "El nombre de esta estación.", + "FSC.Configuration.Season.NameHelp": "El nombre de esta estación", "FSC.Configuration.Season.StartingMonth": "Mes de inicio", - "FSC.Configuration.Season.StartingMonthHelp": "El mes en el que comienza esta estación cada año.", + "FSC.Configuration.Season.StartingMonthHelp": "El mes en el que comienza esta estación cada año", "FSC.Configuration.Season.StartingDay": "Día de inicio", - "FSC.Configuration.Season.StartingDayHelp": "El día en el que comienza esta estación cada año.", + "FSC.Configuration.Season.StartingDayHelp": "El día en el que comienza esta estación cada año", "FSC.Configuration.Season.Color": "Color", - "FSC.Configuration.Season.ColorHelp": "El color a asociado con esta estación.", + "FSC.Configuration.Season.ColorHelp": "El color a asociado con esta estación", "FSC.Configuration.Season.ColorWhite": "Blanco", "FSC.Configuration.Season.ColorSpring": "Primavera", "FSC.Configuration.Season.ColorSummer": "Verano", "FSC.Configuration.Season.ColorFall": "Otoño", "FSC.Configuration.Season.ColorWinter": "Invierno", "FSC.Configuration.Season.ColorCustom": "Color personalizado", - "FSC.Configuration.Season.ColorCustomHelp": "Establezca un color de valor hexadecimal personalizado para la estación.", + "FSC.Configuration.Season.ColorCustomHelp": "Establezca un color de valor hexadecimal personalizado para la estación", "FSC.Configuration.Season.RemoveAll": "Eliminar todas las estaciones", "FSC.Configuration.Season.Add": "Añadir estación", "FSC.Configuration.Month.Title": "Ajustes de mes", "FSC.Configuration.Month.Name": "Nombre del mes", - "FSC.Configuration.Month.NameHelp": "El nombre del texto de este mes.", + "FSC.Configuration.Month.NameHelp": "El nombre del texto de este mes", "FSC.Configuration.Month.Days": "Número de días", - "FSC.Configuration.Month.DaysHelp": "El número de días que componen este mes.", + "FSC.Configuration.Month.DaysHelp": "El número de días que componen este mes", "FSC.Configuration.Month.Intercalary": "Mes intercalado", - "FSC.Configuration.Month.IntercalaryHelp": "Si este mes debe ser considerado como un mes intercalado o no.", + "FSC.Configuration.Month.IntercalaryHelp": "Si este mes debe ser considerado como un mes intercalado o no", "FSC.Configuration.Month.IntercalaryInclude": "Incluir el mes intercalado en el recuento total de días", - "FSC.Configuration.Month.IntercalaryIncludeHelp": "If checked the days that make up the intercalary month will be included in the total number of days in a year.", + "FSC.Configuration.Month.IntercalaryIncludeHelp": "If checked the days that make up the intercalary month will be included in the total number of days in a year", "FSC.Configuration.Month.DayOffset": "Compensación por día", "FSC.Configuration.Month.DayOffsetHelp": "La cantidad para compensar el número del día. Se utiliza si se quiere comenzar un mes en 2 en lugar de 1", "FSC.Configuration.Month.Number": "Número de mes", - "FSC.Configuration.Month.NumberHelp": "La representación numérica de este mes.", + "FSC.Configuration.Month.NumberHelp": "La representación numérica de este mes", "FSC.Configuration.Month.StartingWeekDay": "Día en que comienza la semana", - "FSC.Configuration.Month.StartingWeekDayHelp": "Choose which day of the week this month will always start on, or leave as default to let the calendar figure out the appropriate weekday.", + "FSC.Configuration.Month.StartingWeekDayHelp": "Choose which day of the week this month will always start on, or leave as default to let the calendar figure out the appropriate weekday", "FSC.Configuration.Month.Remove": "Remove", "FSC.Configuration.Month.RemoveAll": "Remove All Months", "FSC.Configuration.Month.Add": "Add New Month", "FSC.Configuration.Months": "Months", "FSC.Configuration.Weekday.Title": "Weekday Settings", "FSC.Configuration.Weekday.ShowHeadings": "Show Weekday Headings", - "FSC.Configuration.Weekday.ShowHeadingsHelp": "If to show the weekday headings on the calendar.", + "FSC.Configuration.Weekday.ShowHeadingsHelp": "If to show the weekday headings on the calendar", "FSC.Configuration.Weekday.Name": "Weekday Name", - "FSC.Configuration.Weekday.NameHelp": "The text name of this day of the week.", + "FSC.Configuration.Weekday.NameHelp": "The text name of this day of the week", "FSC.Configuration.Weekday.Add": "Add New Weekday", "FSC.Configuration.Weekday.RemoveAll": "Remove All Weekdays", "FSC.Configuration.Weekdays": "Weekdays", "FSC.Configuration.Weekday.Options": "Weekday Options", "FSC.Configuration.Weekday.FirstWeekDay": "Starting Week Day", - "FSC.Configuration.Weekday.FirstWeekDayHelp": "This sets the day of the week that the first day of year 0 starts on.", + "FSC.Configuration.Weekday.FirstWeekDayHelp": "This sets the day of the week that the first day of year 0 starts on", "FSC.Configuration.DefaultNoteVisibility": "Note Default Player Visibility", "FSC.Configuration.DefaultNoteVisibilityHint": "For new notes, if by default the player visibility option is checked or not", "FSC.Configuration.LeapYear.Title": "Leap Year Settings", "FSC.Configuration.LeapYear.Rule": "Leap Year Rule", - "FSC.Configuration.LeapYear.RuleHelp": "The rules to follow when determining leap years.", + "FSC.Configuration.LeapYear.RuleHelp": "The rules to follow when determining leap years", "FSC.Configuration.LeapYear.CustomMod": "When Leap Years Happen", - "FSC.Configuration.LeapYear.CustomModHelp": "Every x number of years is a leap year.", + "FSC.Configuration.LeapYear.CustomModHelp": "Every x number of years is a leap year", "FSC.Configuration.LeapYear.Rules.None": "None", "FSC.Configuration.LeapYear.Rules.Gregorian": "Gregorian", "FSC.Configuration.LeapYear.Rules.Custom": "Custom", "FSC.Configuration.LeapYear.Days": "Number of Days in a Leap Year", - "FSC.Configuration.LeapYear.DaysHelp": "The number of days that make up this month during a leap year.", + "FSC.Configuration.LeapYear.DaysHelp": "The number of days that make up this month during a leap year", "FSC.Configuration.LeapYear.Options": "Leap Year Options", "FSC.Configuration.Time.Title": "Time Settings", "FSC.Configuration.Time.HoursInDay": "Hours in a Day", - "FSC.Configuration.Time.HoursInDayHelp": "How many hours make up a single day.", + "FSC.Configuration.Time.HoursInDayHelp": "How many hours make up a single day", "FSC.Configuration.Time.MinutesInHour": "Minutes in a Hour", - "FSC.Configuration.Time.MinutesInHourHelp": "How many minutes make up a single hour.", + "FSC.Configuration.Time.MinutesInHourHelp": "How many minutes make up a single hour", "FSC.Configuration.Time.SecondsInMinute": "Seconds in a Minute", - "FSC.Configuration.Time.SecondsInMinuteHelp": "How many seconds make up a single minute.", + "FSC.Configuration.Time.SecondsInMinuteHelp": "How many seconds make up a single minute", "FSC.Configuration.Time.GameTimeRatio": "Game Seconds Per Real Life Seconds", - "FSC.Configuration.Time.GameTimeRatioHelp": "How many seconds pass in game for every second that passes in real time.", + "FSC.Configuration.Time.GameTimeRatioHelp": "How many seconds pass in game for every second that passes in real time", "FSC.Configuration.Time.Options": "Opciones de hora", "FSC.Configuration.Time.ClockSettings": "Ajustes del reloj", + "FSC.Configuration.Time.UpdateFrequency": "Actualizar frecuencia", + "FSC.Configuration.Time.UpdateFrequencyHelp": "Esto determina como de a menudo se actualiza este reloj", + "FSC.Configuration.Time.UnifyGameAndClock": "Sincronizar el reloj con la pausa de juego", + "FSC.Configuration.Time.UnifyGameAndClockHelp": "Vincula los botones de inicio/parada del reloj con la pausa de juego", "FSC.Configuration.Moon.Title": "Ajustes de la Luna", "FSC.Configuration.Moon.Name": "Nombre de la Luna", - "FSC.Configuration.Moon.NameHelp": "El nombre de esta luna.", + "FSC.Configuration.Moon.NameHelp": "El nombre de esta luna", "FSC.Configuration.Moon.CycleLength": "Longitud del ciclo", - "FSC.Configuration.Moon.CycleLengthHelp": "La duración del ciclo lunar en días. Acepta decimales.", + "FSC.Configuration.Moon.CycleLengthHelp": "La duración del ciclo lunar en días. Acepta decimales", "FSC.Configuration.Moon.CycleAdjustment": "Ajuste del ciclo", - "FSC.Configuration.Moon.CycleAdjustmentHelp": "La cantidad de días para ajustar el cálculo por cuando se determina la fase actual.", + "FSC.Configuration.Moon.CycleAdjustmentHelp": "La cantidad de días para ajustar el cálculo por cuando se determina la fase actual", "FSC.Configuration.Moon.Color": "Color de la Luna", - "FSC.Configuration.Moon.ColorHelp": "El color que se asocia a esta luna.", + "FSC.Configuration.Moon.ColorHelp": "El color que se asocia a esta luna", "FSC.Configuration.Moon.Add": "Añadir Luna Nueva", "FSC.Configuration.Moon.RemoveAll": "Eliminar todas las lunas", "FSC.Configuration.Moon.Phases": "Fases", "FSC.Configuration.Moon.PhaseName": "Nombre de Fase", - "FSC.Configuration.Moon.PhaseNameHelp": "El nombre de esta fase de la Luna.", + "FSC.Configuration.Moon.PhaseNameHelp": "El nombre de esta fase de la Luna", "FSC.Configuration.Moon.PhaseLength": "Longitud de la Fase", - "FSC.Configuration.Moon.PhaseLengthHelp": "Cuánto tiempo dura la fase en días.", + "FSC.Configuration.Moon.PhaseLengthHelp": "Cuánto tiempo dura la fase en días", "FSC.Configuration.Moon.PhaseSingleDay": "Fase de un día", - "FSC.Configuration.Moon.PhaseSingleDayHelp": "Si esta fase lunar debe ocurrir sólo en un día.", + "FSC.Configuration.Moon.PhaseSingleDayHelp": "Si esta fase lunar debe ocurrir sólo en un día", "FSC.Configuration.Moon.PhaseIcon": "Icono de Fase", - "FSC.Configuration.Moon.PhaseIconHelp": "El icono para asociar con esta fase lunar.", + "FSC.Configuration.Moon.PhaseIconHelp": "El icono para asociar con esta fase lunar", "FSC.Configuration.Moon.PhaseAdd": "Añadir fase lunar nueva", "FSC.Configuration.Moon.PhaseRemoveAll": "Eliminar todas las fases lunares", "FSC.Configuration.Moon.FirstNewMoon": "Referencia de Luna Nueva", "FSC.Configuration.Moon.YearReset": "Reinciar la referencia del año lunar", - "FSC.Configuration.Moon.YearResetHelp": "Si el año para la luna de referencia debe resetearse y en caso afirmativo, cuando lo haga.", + "FSC.Configuration.Moon.YearResetHelp": "Si el año para la luna de referencia debe resetearse y en caso afirmativo, cuando lo haga", "FSC.Configuration.Moon.YearResetNo": "No restablecer año de referencia", "FSC.Configuration.Moon.YearResetLeap": "Restablecer año de referencia cada año bisiesto", "FSC.Configuration.Moon.YearResetX": "Restablecer año de referencia cada X años", "FSC.Configuration.Moon.YearX": "Restablecer los años de referencia lunar", - "FSC.Configuration.Moon.YearXHelp": "Restablecer el año de referencia lunas nuevas cada x número de años.", + "FSC.Configuration.Moon.YearXHelp": "Restablecer el año de referencia lunas nuevas cada x número de años", "FSC.Configuration.Moon.Year": "Nuevo año lunar", - "FSC.Configuration.Moon.YearHelp": "El año de una luna nueva a utilizar como referencia.", + "FSC.Configuration.Moon.YearHelp": "El año de una luna nueva a utilizar como referencia", "FSC.Configuration.Moon.Month": "Mes Lunar Nuevo", - "FSC.Configuration.Moon.MonthHelp": "El mes de una luna nueva para usar como referencia.", + "FSC.Configuration.Moon.MonthHelp": "El mes de una luna nueva para usar como referencia", "FSC.Configuration.Moon.Day": "Día de la Luna Nueva", - "FSC.Configuration.Moon.DayHelp": "El día de una luna nueva para usar como referencia.", + "FSC.Configuration.Moon.DayHelp": "El día de una luna nueva para usar como referencia", "FSC.Configuration.Moons": "Lunas", - "FSC.Warn.Time.ActiveCombats": "Se está ejecutando un combate/combate activo, por favor resuelve antes de iniciar el reloj en tiempo real.", - "FSC.Warn.Notes.NotGM": "No hay ningún GM presente en el juego, un GM necesita estar conectado para que los jugadores añadan notas.", + "FSC.Warn.Time.ActiveCombats": "Se está ejecutando un combate/combate activo, por favor resuelve antes de iniciar el reloj en tiempo real", + "FSC.Warn.Notes.NotGM": "No hay ningún GM presente en el juego, un GM necesita estar conectado para que los jugadores añadan notas", "FSC.Warn.Macros.GMUpdate": "¡Sólo el GM puede actualizar la fecha del calendario!", - "FSC.Warn.Calendar.NotGM": "No hay ningún GM presente en el juego, es necesario iniciar sesión en un GM para que los jugadores cambien la fecha/hora.", + "FSC.Warn.Calendar.NotGM": "No hay ningún GM presente en el juego, es necesario iniciar sesión en un GM para que los jugadores cambien la fecha/hora", "FSC.Error.Note.NoTitle": "¡No se puede guardar una nota sin título!", - "FSC.Error.Note.RichText": "Por favor, guarda el contenido del editor enriquecido.", - "FSC.Error.Note.NoSelectedDay": "No se puede agregar una nueva nota, no hay ningún día seleccionado.", - "FSC.Error.Note.NoSelectedMonth": "No se puede agregar una nueva nota, no hay ningún mes seleccionado.", - "FSC.Error.Calendar.GMConfigure": "Necesitas ser un GM para configurar el calendario.", - "FSC.Error.Calendar.GMCurrent": "Debe ser un GM para cambiar la fecha actual.", + "FSC.Error.Note.RichText": "Por favor, guarda el contenido del editor enriquecido", + "FSC.Error.Note.NoSelectedDay": "No se puede agregar una nueva nota, no hay ningún día seleccionado", + "FSC.Error.Note.NoSelectedMonth": "No se puede agregar una nueva nota, no hay ningún mes seleccionado", + "FSC.Error.Calendar.GMConfigure": "Necesitas ser un GM para configurar el calendario", + "FSC.Error.Calendar.GMCurrent": "Debe ser un GM para cambiar la fecha actual", "FSC.Module.Import": "Importar en el Simple Calendar", "FSC.Module.NoChanges": "Sin cambios", "FSC.Module.CalendarWeather.Title": "¡Módulo de Calendario/Tiempo detectado!", @@ -273,5 +311,7 @@ "FSC.Module.AboutTime.Title": "Acerca de Módulo de Tiempo detectado", "FSC.Module.AboutTime.Message": "Hemos detectado que el módulo about-time está/ha sido activado para este mundo.

Si desea importar la configuración del calendario about-time en el calendario simple seleccione \"Importar en el calendario simple\", esto hará que el Calendario Simple coincida con los ajustes de about-time.

Si desea que coincida con Simple Calendar elija \"Exportar en Acerca de tiempo\", esto hará que los ajustes de about-time coincidan con la configuración Simple Calendars .

De lo contrario, puede elegir \"Sin Cambios\" y las cosas se dejarán como están. Si desea realizar una importación/exportación más adelante, la opción estará disponible en la configuración general de Simple Calendar.
", "FSC.Module.AboutTime.Configuration.Message": "Hemos detectado que el módulo about-time está/ha sido habilitado para este mundo.

Si desea importar la configuración del calendario about-time en el calendario simple elija \"Importar en el calendario simple\", esto hará que el Calendario Simple coincida con la configuración de about-time.

Si desea que coincida con Simple Calendar seleccione \"Exportar en Acerca de tiempo\", esto hará que los ajustes de about-time coincidan con la configuración de Simple Calendars .
", - "FSC.Module.AboutTime.Export": "Exportar en Acerca del Tiempo" + "FSC.Module.AboutTime.Export": "Exportar en Acerca del Tiempo", + "FSC.Importer.NoFile": "Por favor, seleccione un fichero a importar", + "FSC.Importer.InvalidSCConfig": "Fichero subido no válido, por favor, seleccione un fichero JSON de exportación de Simple Calendar" } \ No newline at end of file diff --git a/src/lang/fr.json b/src/lang/fr.json new file mode 100644 index 00000000..7ad31dd5 --- /dev/null +++ b/src/lang/fr.json @@ -0,0 +1,314 @@ +{ + "FSC.Title": "Simple Calendar", + "FSC.Compact": "Compact", + "FSC.Full": "Complet", + "FSC.Help": "Aide", + "FSC.One": "1", + "FSC.Five": "5", + "FSC.Thirty": "30", + "FSC.OrdinalSuffix.st": "er", + "FSC.OrdinalSuffix.nd": "e", + "FSC.OrdinalSuffix.rd": "e", + "FSC.OrdinalSuffix.th": "e", + "FSC.ButtonTitle": "Calendrier", + "FSC.AllDay": "Toute la journée", + "FSC.Day": "Jour", + "FSC.Days": "Jours", + "FSC.Month": "Mois", + "FSC.Year": "Année", + "FSC.Hour": "Heure", + "FSC.HourShorthand": "hr", + "FSC.Minute": "Minute", + "FSC.MinuteShorthand": "min", + "FSC.Second": "Seconde", + "FSC.SecondShorthand": "sec", + "FSC.Forward": "Avancer", + "FSC.Back": "Reculer", + "FSC.Clear": "Effacer", + "FSC.Random": "Aléatoire", + "FSC.ShowAdvanced": "Afficher Avancé", + "FSC.HideAdvanced": "Masquer Avancé", + "FSC.DateControls": "Contrôles de date", + "FSC.DateControlsHelp": "Utilisez ces commandes pour modifier la date actuelle dans votre jeu.", + "FSC.NoDateControls": "Simple Calendar a été configuré pour laisser un autre module contrôler la date et l'heure. Veuillez utiliser ce module pour mettre à jour l'heure ou modifier la configuration de Simple Calendars.", + "FSC.SetCurrentDate": "Définir la date actuelle", + "FSC.SetCurrentDateDialog.Title": "Confirmer le changement de date actuelle", + "FSC.SetCurrentDateDialog.Content": "Vous avez choisi de changer la date en un jour qui n'est actuellement pas visible !
Voulez-vous vraiment changer la date du jour en {DATE} ?", + "FSC.Apply": "Appliquer", + "FSC.AdvancedOptions": "Options Avancées", + "FSC.Today": "Ajourd'hui", + "FSC.Configure": "Configurer", + "FSC.Import": "Importer", + "FSC.Export": "Exporter", + "FSC.By": "Par", + "FSC.Cancel": "Annuler", + "FSC.Edit": "Éditer", + "FSC.Delete": "Supprimer", + "FSC.DeleteConfirm": "Confirmer la suppression", + "FSC.DeleteConfirmText": "Vous voulez vraiment supprimer cette note?", + "FSC.OverwriteConfirm": "Écraser", + "FSC.OverwriteConfirmText": "L'application de cette modification écrasera toutes les configurations de calendrier existantes. Êtes-vous sûr?", + "FSC.ChangeNextMonth": "Passer au mois suivant", + "FSC.ChangePreviousMonth": "Passer au mois précédent", + "FSC.MoveYearForward": "Avancer d'un an", + "FSC.MoveMonthForward": "Avancer d'un mois", + "FSC.MoveDayForward": "Avancer d'un jour", + "FSC.MoveYearBack": "Reculer d'un an", + "FSC.MoveMonthBack": "Reculer d'un mois", + "FSC.MoveDayBack": "Retour d'un jour", + "FSC.Time.Controls": "Contrôles de temps", + "FSC.Time.ControlsHelp": "Sélectionnez une unité de temps à modifier puis utilisez les commandes pour augmenter ou réduire cette unité de 1 ou 5", + "FSC.Time.Forward": "Avancer le temps.", + "FSC.Time.Backward": "Reculer le temps.", + "FSC.Time.Start": "Commencer à avancer le temps de jeu", + "FSC.Time.Stop": "Arrêter d'avancer le temps de jeu", + "FSC.Notes.DialogTitle": "Note", + "FSC.Notes.New": "Nouvelle note", + "FSC.Notes.Empty": "Aucune note pour cette date", + "FSC.Notes.For": "Notes pour", + "FSC.Notes.AddNew": "Ajouter une nouvelle note", + "FSC.Notes.NewFor": "Nouvelle note pour", + "FSC.Notes.Title": "Titre de la note", + "FSC.Notes.TitleHelp": "Le titre de cette note.", + "FSC.Notes.Date": "Date de la note", + "FSC.Notes.DateHelp": "La date de la note.", + "FSC.Notes.NotPlayerVisible": "Non visible aux Joueurs", + "FSC.Notes.PlayerVisible": "Visible aux Joueurs", + "FSC.Notes.PlayerVisibleHelp": "Si cette note est visible par les joueurs ou non.", + "FSC.Notes.Reminder": "Rappelez-moi!", + "FSC.Notes.ReminderHelp": "Cet événement vous sera rappelé.", + "FSC.Notes.Repeating": "Récurrence de la note", + "FSC.Notes.RepeatingHelp": "Si cette note se répète hebdomadairement, mensuellement, annuellement ou pas du tout.", + "FSC.Notes.Save": "Enregistrer la note", + "FSC.Notes.Repeats": "Récurrence", + "FSC.Notes.Repeat.Never": "Jamais", + "FSC.Notes.Repeat.Monthly": "Mensuel", + "FSC.Notes.Repeat.Yearly": "Annuel", + "FSC.Notes.Repeat.Weekly": "Hebdomadaire", + "FSC.Notes.Time": "Temps", + "FSC.Notes.DateTime.Title": "Note Date/Heure", + "FSC.Notes.DateTime.Help": "La date de la note et éventuellement l'heure à laquelle la note se produit.", + "FSC.Notes.DateTime.AllDay": "Ajouter une heure", + "FSC.Notes.Author": "Auteur", + "FSC.Date.Sunday": "Dimanche", + "FSC.Date.Monday": "Lundi", + "FSC.Date.Tuesday": "Mardi", + "FSC.Date.Wednesday": "Mercredi", + "FSC.Date.Thursday": "Jeudi", + "FSC.Date.Friday": "Vendredi", + "FSC.Date.Saturday": "Samedi", + "FSC.Date.January": "Janvier", + "FSC.Date.February": "Février", + "FSC.Date.March": "Mars", + "FSC.Date.April": "Avril", + "FSC.Date.May": "Mai", + "FSC.Date.June": "Juin", + "FSC.Date.July": "Juillet", + "FSC.Date.August": "Août", + "FSC.Date.September": "Septembre", + "FSC.Date.October": "Octobre", + "FSC.Date.November": "Novembre", + "FSC.Date.December": "Décembre", + "FSC.Time.Current": "Heure actuelle", + "FSC.Moon.Phase.New": "Nouvelle Lune", + "FSC.Moon.Phase.WaxingCrescent": "Croissante", + "FSC.Moon.Phase.FirstQuarter": "Premier trimestre", + "FSC.Moon.Phase.WaxingGibbous": "Gibbeuse Croissante", + "FSC.Moon.Phase.Full": "Pleine Lune", + "FSC.Moon.Phase.WaningGibbous": "Gibbeuse Décroissante", + "FSC.Moon.Phase.LastQuarter": "Dernier trimestre", + "FSC.Moon.Phase.WaningCrescent": "Décroissante", + "FSC.Configuration.Title": "Configuration du calendrier", + "FSC.Configuration.Description": "Ce formulaire vous permet de personnaliser votre calendrier de jeux en précisant l'année en cours, le nombre de mois, le nom de chaque mois et le nombre de jours de chaque mois.", + "FSC.Configuration.Help": "Pour obtenir de l'aide sur la configuration du calendrier, assurez-vous de consulter la documentation!", + "FSC.Configuration.Save": "Enregistrer la configuration", + "FSC.Configuration.General.Title": "Paramètres généraux", + "FSC.Configuration.General.PreDefined": "Calendriers prédéfinis", + "FSC.Configuration.General.PreDefinedHelp": "Choisissez l'un des calendriers prédéfinis pour démarrer la configuration plus rapidement.", + "FSC.Configuration.General.GameWorldTime": "Intégration du temps dans le monde du jeu", + "FSC.Configuration.General.GameWorldTimeHelp": "Dites à Simple Calendar comment s'intégrer au temps du monde de jeu et répondre aux mises à jour du temps du monde de jeu.", + "FSC.Configuration.General.None": "Aucun : N'est pas lié au temps du monde de jeu.", + "FSC.Configuration.General.Self": "Local: Contrôlez le temps du monde de jeu en ignorant les mises à jour des autres modules.", + "FSC.Configuration.General.ThirdParty": "Module tiers : Suit uniquement les mises à jour du temps du monde de jeu provenant d'autres modules.", + "FSC.Configuration.General.Mixed": "Hybride : Mettre à jour le temps du monde de jeu et suivre les mises à jour effectuées à partir d'autres modules.", + "FSC.Configuration.General.PF2ESync": "Pathfinder 2E : synchronisation du temps du monde de jeu", + "FSC.Configuration.General.PF2ESyncHelp": "Cela forcera Simple Calendar à rester synchronisé avec le temps du monde de jeu intégrée de Pathfinder 2E.", + "FSC.Configuration.General.ShowClock": "Afficher l'horloge", + "FSC.Configuration.General.ShowClockHelp": "Pour afficher l'horloge sous le calendrier, si coché. Les commandes pour changer les heures, les minutes et les secondes s'afficheront également.", + "FSC.Configuration.General.PlayerAddNotes": "Ajouter des notes", + "FSC.Configuration.General.PlayerAddNotesHelp": "Les rôles sélectionnés pourront ajouter des notes au calendrier.", + "FSC.Configuration.General.PlayerReorderNotes": "Réorganiser les notes", + "FSC.Configuration.General.PlayerReorderNotesHelp": "Les rôles sélectionnés pourront réorganiser les notes d'une journée.", + "FSC.Configuration.General.QuickSetup": "Configuration rapide", + "FSC.Configuration.General.Notes": "Notes", + "FSC.Configuration.General.ImportExport.Title": "Importer/Exporter", + "FSC.Configuration.General.ImportExport.SCConfig": "Importer/Exporter la configuration du calendrier", + "FSC.Configuration.General.ImportExport.SCConfigHelp": "Pour importer ou exporter la configuration actuelle de Simple Calendar pour partager ou charger la réplication dans un autre monde.", + "FSC.Configuration.General.ThirdPartyModule": "Importation/Exportation de modules tiers", + "FSC.Configuration.General.Permissions.Note": "Ici, les autorisations pour diverses interactions avec Simple Calendar peuvent être ajustées en fonction des rôles de Foundry. Les maîtres de jeu auront toujours ces autorisations.", + "FSC.Configuration.General.CalendarPlayerVisible": "Afficher le calendrier", + "FSC.Configuration.General.CalendarPlayerVisibleHelp": "Les rôles cochés pourront ouvrir Simple Calendar.", + "FSC.Configuration.General.PlayersChangeDateTime": "Modifier la date et l'heure", + "FSC.Configuration.General.PlayersChangeDateTimeHelp": "Les rôles cochés pourront changer la date et l'heure de Simple Calendar", + "FSC.Configuration.Notes.Title": "Paramètres des notes", + "FSC.Configuration.Notes.NoteCategories": "Catégories de notes", + "FSC.Configuration.NoteCategories.Name": "Nom de la catégorie de note", + "FSC.Configuration.NoteCategories.NameHelp": "Le nom d'affichage de cette catégorie de note.", + "FSC.Configuration.NoteCategories.Color": "Couleur de la catégorie de note", + "FSC.Configuration.NoteCategories.ColorHelp": "La couleur associée à la catégorie de note.", + "FSC.Configuration.NoteCategories.Add": "Ajouter une catégorie de note", + "FSC.Configuration.NoteCategories.RemoveAll": "Supprimer toutes les catégories de notes", + "FSC.Configuration.Notes.NoteCategoriesHelp": "Sélectionnez toutes les différentes catégories de notes associées à cette note.", + "FSC.Configuration.Year.Title": "Paramètres de l'année", + "FSC.Configuration.Year.Current": "Année Courante", + "FSC.Configuration.Year.CurrentHelp": "L'année en cours pendant laquelle le jeu se déroule. Cela peut également être modifié avec les contrôles de date.", + "FSC.Configuration.Year.Prefix": "Année Préfixe", + "FSC.Configuration.Year.PrefixHelp": "Texte qui apparaît avant le numéro de l'année.", + "FSC.Configuration.Year.Postfix": "Année Suffix", + "FSC.Configuration.Year.PostfixHelp": "Texte qui apparaît après le numéro de l'année.", + "FSC.Configuration.Year.YearZero": "Année zéro", + "FSC.Configuration.Year.YearZeroHelp": "C'est l'année qui est considérée comme l'année zéro pour calculer combien de temps s'est écoulé. Cela n'a généralement pas besoin d'être modifié.", + "FSC.Configuration.Year.YearNames": "Noms des années", + "FSC.Configuration.Year.YearName": "Nom de l'année", + "FSC.Configuration.Year.YearNameAdd": "Ajouter le nom du nouvel an", + "FSC.Configuration.Year.YearNameRemove": "Supprimer tous les noms d'année", + "FSC.Configuration.Year.YearNamesStart": "Année de début pour les noms", + "FSC.Configuration.Year.YearNamesStartHelp": "L'année de début du premier nom de l'année sur la liste.", + "FSC.Configuration.Year.YearNameBehaviour": "Comportement des noms d'années", + "FSC.Configuration.Year.YearNameBehaviourHelp": "Comment déterminer l'ordre des noms d'année.", + "FSC.Configuration.Year.Seasons": "Saisons", + "FSC.Configuration.Season.Name": "Nom de la saison", + "FSC.Configuration.Season.NameHelp": "Le nom de cette saison.", + "FSC.Configuration.Season.StartingMonth": "Mois de début", + "FSC.Configuration.Season.StartingMonthHelp": "Le mois où cette saison commence chaque année.", + "FSC.Configuration.Season.StartingDay": "Jour de début", + "FSC.Configuration.Season.StartingDayHelp": "Le jour du mois où cette saison commence chaque année.", + "FSC.Configuration.Season.Color": "Couleur", + "FSC.Configuration.Season.ColorHelp": "La couleur à associer à cette saison.", + "FSC.Configuration.Season.ColorWhite": "Blanc", + "FSC.Configuration.Season.ColorSpring": "Printemps", + "FSC.Configuration.Season.ColorSummer": "Été", + "FSC.Configuration.Season.ColorFall": "Automne", + "FSC.Configuration.Season.ColorWinter": "Hiver", + "FSC.Configuration.Season.ColorCustom": "Couleur personnalisée", + "FSC.Configuration.Season.ColorCustomHelp": "Définir une couleur de valeur hexadécimale personnalisée pour la saison.", + "FSC.Configuration.Season.RemoveAll": "Supprimer toutes les saisons", + "FSC.Configuration.Season.Add": "Ajouter une nouvelle saison", + "FSC.Configuration.Month.Title": "Paramètres du mois", + "FSC.Configuration.Month.Name": "Nom du mois", + "FSC.Configuration.Month.NameHelp": "Le nom textuel de ce mois.", + "FSC.Configuration.Month.Days": "Nombre de jours", + "FSC.Configuration.Month.DaysHelp": "Le nombre de jours qui composent ce mois.", + "FSC.Configuration.Month.Intercalaire": "Mois Intercalaire", + "FSC.Configuration.Month.IntercalaryHelp": "Si ce mois doit être considéré comme un mois intercalaire ou non.", + "FSC.Configuration.Month.IntercalaryInclude": "Inclure le mois intercalaire dans les calculs de jour", + "FSC.Configuration.Month.IntercalaryIncludeHelp": "Si coché, le mois intercalaire sera traité comme un mois normal pour calculer le jour de la semaine et le nombre total de jours dans une année, mais sera toujours répertorié comme un mois intercalaire.", + "FSC.Configuration.Month.DayOffset": "Décalage du jour", + "FSC.Configuration.Month.DayOffsetHelp": "Le montant pour décaler le numéro du jour. Utilisé si vous voulez commencer un mois à 2 au lieu de 1", + "FSC.Configuration.Month.Number": "Numéro de mois", + "FSC.Configuration.Month.NumberHelp": "La représentation numérique de ce mois.", + "FSC.Configuration.Month.StartingWeekDay": "Démarre le jour de la semaine", + "FSC.Configuration.Month.StartingWeekDayHelp": "Choisissez par quel jour de la semaine ce mois commencera toujours, ou laissez par défaut pour laisser le calendrier déterminer le jour de la semaine approprié.", + "FSC.Configuration.Month.Remove": "Supprimer", + "FSC.Configuration.Month.RemoveAll": "Supprimer tous les mois", + "FSC.Configuration.Month.Add": "Ajouter un nouveau mois", + "FSC.Configuration.Months": "Mois", + "FSC.Configuration.Weekday.Title": "Paramètres des jours de la semaine", + "FSC.Configuration.Weekday.ShowHeadings": "Afficher les titres des jours de la semaine", + "FSC.Configuration.Weekday.ShowHeadingsHelp": "Cochez pour afficher.", + "FSC.Configuration.Weekday.Name": "Nom du jour de la semaine", + "FSC.Configuration.Weekday.NameHelp": "Le nom textuel de ce jour de la semaine.", + "FSC.Configuration.Weekday.Add": "Ajouter un nouveau jour de la semaine", + "FSC.Configuration.Weekday.RemoveAll": "Supprimer tous les jours de la semaine", + "FSC.Configuration.Weekdays": "Jours de la semaine", + "FSC.Configuration.Weekday.Options": "Options des jours de la semaine", + "FSC.Configuration.Weekday.FirstWeekDay": "Premier jour de la semaine", + "FSC.Configuration.Weekday.FirstWeekDayHelp": "Ceci définit le jour de la semaine où commence le premier jour de l'année 0.", + "FSC.Configuration.DefaultNoteVisibility": "Notez la visibilité par défaut du lecteur", + "FSC.Configuration.DefaultNoteVisibilityHint": "Pour les nouvelles notes, la visibilité par défaut pour les Joueurs", + "FSC.Configuration.LeapYear.Title": "Paramètres des années bissextiles", + "FSC.Configuration.LeapYear.Rule": "Règles des années bissextiles", + "FSC.Configuration.LeapYear.RuleHelp": "Les règles à suivre pour déterminer les années bissextiles.", + "FSC.Configuration.LeapYear.CustomMod": "Quand les années bissextiles arrivent", + "FSC.Configuration.LeapYear.CustomModHelp": "Chaque x nombre d'années est une année bissextile.", + "FSC.Configuration.LeapYear.Rules.None": "Aucun", + "FSC.Configuration.LeapYear.Rules.Gregorian": "Grégorien", + "FSC.Configuration.LeapYear.Rules.Custom": "Personnalisé", + "FSC.Configuration.LeapYear.Days": "Nombre de jours dans une année bissextile", + "FSC.Configuration.LeapYear.DaysHelp": "Le nombre de jours qui composent ce mois au cours d'une année bissextile.", + "FSC.Configuration.LeapYear.Options": "Options des années bissextiles", + "FSC.Configuration.Time.Title": "Paramètres de temps", + "FSC.Configuration.Time.HoursInDay": "Heures dans une journée", + "FSC.Configuration.Time.HoursInDayHelp": "Combien d'heures composent une journée.", + "FSC.Configuration.Time.MinutesInHour": "Minutes dans une heure", + "FSC.Configuration.Time.MinutesInHourHelp": "Combien de minutes composent une heure.", + "FSC.Configuration.Time.SecondsInMinute": "Secondes dans une minute", + "FSC.Configuration.Time.SecondsInMinuteHelp": "Combien de secondes composent une minute.", + "FSC.Configuration.Time.GameTimeRatio": " Secondes de jeu par secondes de vie réelle ", + "FSC.Configuration.Time.GameTimeRatioHelp": "Combien de secondes s'écoulent dans le jeu pour chaque seconde qui passe en temps réel.", + "FSC.Configuration.Time.Options": "Options de temps", + "FSC.Configuration.Time.ClockSettings": "Paramètres de l'horloge", + "FSC.Configuration.Time.UpdateFrequency": "Fréquence de mise à jour", + "FSC.Configuration.Time.UpdateFrequencyHelp": "Ceci détermine la fréquence à laquelle l'horloge se met à jour.", + "FSC.Configuration.Time.UnifyGameAndClock": "Unifier le démarrage/pause de l'horloge avec l'horloge du jeu", + "FSC.Configuration.Time.UnifyGameAndClockHelp": "Lie le bouton de démarrage/pause des horloges avec l'option de pause/reprise des jeux", + "FSC.Configuration.Moon.Title": "Paramètres de la lune", + "FSC.Configuration.Moon.Name": "Nom de la Lune", + "FSC.Configuration.Moon.NameHelp": "Le nom de cette lune.", + "FSC.Configuration.Moon.CycleLength": "Durée du cycle", + "FSC.Configuration.Moon.CycleLengthHelp": "La longueur du cycle lunaire en jours. Accepte les décimales.", + "FSC.Configuration.Moon.CycleAdjustment": "Réglage du cycle", + "FSC.Configuration.Moon.CycleAdjustmentHelp": "Le nombre de jours pour ajuster le calcul lors de la détermination de la phase actuelle.", + "FSC.Configuration.Moon.Color": "Couleur de la lune", + "FSC.Configuration.Moon.ColorHelp": "La couleur à associer à cette lune.", + "FSC.Configuration.Moon.Add": "Ajouter une nouvelle lune", + "FSC.Configuration.Moon.RemoveAll": "Supprimer toutes les lunes", + "FSC.Configuration.Moon.Phases": "Phases", + "FSC.Configuration.Moon.PhaseName": "Nom de phase", + "FSC.Configuration.Moon.PhaseNameHelp": "Le nom de cette phase de la lune.", + "FSC.Configuration.Moon.PhaseLength": "Longueur de phase", + "FSC.Configuration.Moon.PhaseLengthHelp": "Combien de temps dure la phase en jours.", + "FSC.Configuration.Moon.PhaseSingleDay": "Phase d'une journée", + "FSC.Configuration.Moon.PhaseSingleDayHelp": "Si cette phase de lune ne doit se produire que sur 1 jour.", + "FSC.Configuration.Moon.PhaseIcon": "Icône de phase", + "FSC.Configuration.Moon.PhaseIconHelp": "L'icône à associer à cette phase de lune.", + "FSC.Configuration.Moon.PhaseAdd": "Ajouter une nouvelle phase de lune", + "FSC.Configuration.Moon.PhaseRemoveAll": "Supprimer toutes les phases de la lune", + "FSC.Configuration.Moon.FirstNewMoon": "Référence Nouvelle Lune", + "FSC.Configuration.Moon.YearReset": "Réinitialiser l'année de la lune de référence", + "FSC.Configuration.Moon.YearResetHelp": "Si l'année de la lune de référence doit être réinitialisée et si c'est le cas quand.", + "FSC.Configuration.Moon.YearResetNo": "Ne pas réinitialiser l'année de référence", + "FSC.Configuration.Moon.YearResetLeap": "Réinitialiser l'année de référence chaque année bissextile", + "FSC.Configuration.Moon.YearResetX": "Réinitialiser l'année de référence tous les X ans", + "FSC.Configuration.Moon.YearX": "Réinitialiser les années lunaires de référence", + "FSC.Configuration.Moon.YearXHelp": "Réinitialiser l'année de référence des nouvelles lunes tous les x nombre d'années.", + "FSC.Configuration.Moon.Year": "Année de la Nouvelle Lune", + "FSC.Configuration.Moon.YearHelp": "L'année d'une nouvelle lune à utiliser comme référence.", + "FSC.Configuration.Moon.Month": "Mois de la Nouvelle Lune", + "FSC.Configuration.Moon.MonthHelp": "Le mois d'une nouvelle lune à utiliser comme référence.", + "FSC.Configuration.Moon.Day": "Jour de la Nouvelle Lune", + "FSC.Configuration.Moon.DayHelp": "Le jour d'une nouvelle lune à utiliser comme référence.", + "FSC.Configuration.Moons": "Lunes", + "FSC.Warn.Time.ActiveCombats": "Il y a un ou des combats actifs en cours, veuillez les résoudre avant de démarrer l'horloge en temps réel.", + "FSC.Warn.Notes.NotGM": "Il n'y a pas de Maître de Jeu présent dans le jeu, un Maître de Jeu doit être connecté pour que les joueurs puissent ajouter des notes.", + "FSC.Warn.Macros.GMUpdate": "Seul le Maître de Jeu peut mettre à jour la date du calendrier!", + "FSC.Warn.Calendar.NotGM": "Il n'y a pas de Maître de Jeu présent dans le jeu, un Maître de Jeu doit être connecté pour que les joueurs puissent changer la date/l'heure.", + "FSC.Error.Note.NoTitle": "Impossible d'enregistrer une note sans titre !", + "FSC.Error.Note.RichText": "Veuillez enregistrer le contenu de l'éditeur enrichi.", + "FSC.Error.Note.NoSelectedDay": "Impossible d'ajouter une nouvelle note, il n'y a pas de jour sélectionné.", + "FSC.Error.Note.NoSelectedMonth": "Impossible d'ajouter une nouvelle note, il n'y a pas de mois sélectionné.", + "FSC.Error.Calendar.GMConfigure": "Vous devez être Maître de Jeu pour configurer le calendrier.", + "FSC.Error.Calendar.GMCurrent": "Vous devez être Maître de Jeu pour changer la date actuelle.", + "FSC.Module.Import": "Importer dans Simple Calendar", + "FSC.Module.NoChanges": "Aucun changement", + "FSC.Module.CalendarWeather.Title": "Module Calendar/Weather détecté !", + "FSC.Module.CalendarWeather.Message": "Nous avons détecté que le module Calendar/Weather est activé pour ce monde.

Si vous souhaitez importer les paramètres de Calendar/Weather vers Simple Calendar, choisissez \"Importer vers Simple Calendar\", cela fera correspondre le Simple Calendar aux paramètres de Calendar/Weather.

Si vous souhaitez que Calendar/Weather corresponde a Simple Calendar, choisissez \"Exporter vers Calendar/Weather \", cela fera correspondre les paramètres de Calendar/Weather à la configuration de Simple Calendar.

Sinon, vous pouvez choisir \"Aucun changement\" et les choses resteront telles quelles. Si vous souhaitez importer/exporter plus tard, l'option sera disponible dans les paramètres généraux de Simple Calendar.
", + "FSC.Module.CalendarWeather.Configuration.Message": "Nous avons détecté que le module Calendar/Weather est activé pour ce monde.

Si vous souhaitez importer les paramètres de Calendar/Weather vers Simple Calendar, choisissez \"Importer vers Simple Calendar\", cela fera correspondre Simple Calendar aux paramètres de Calendar/Weather.

Si vous souhaitez que Calendar/Weather corresponde à Simple Calendar, choisissez \"Exporter vers Calendar/Weather\", cela fera correspondre les paramètres de Calendar/Weather à la configuration de Simple Calendar.
", + "FSC.Module.CalendarWeather.Export": "Exporter vers Calendar/Weather", + "FSC.Module.AboutTime.Title": "Module About-Time détecté", + "FSC.Module.AboutTime.Message": "Nous avons détecté que le module About-Time est/a été activé pour ce monde.

Si vous souhaitez importer les paramètres de About-Time vers Simple Calendar, choisissez \"Importer vers Simple Calendar\", cela fera correspondre Simple Calendar aux paramètres de About-Time.

Si vous souhaitez faire correspondre Simple Calendar, choisissez \"Exporter vers About-Time\", cela fera correspondre les paramètres de About-Time à la configuration de Simple Calendar.

Sinon, vous pouvez choisir \"Aucune modification\" et les choses resteront telles quelles. Si vous le souhaitez importer/exporter plus tard, l'option sera disponible dans les paramètres généraux de Simple Calendar.
", + "FSC.Module.AboutTime.Configuration.Message": "Nous avons détecté que le module About-Time est/a été activé pour ce monde.

Si vous souhaitez importer le calendrier de About-Time vers Simple Calendar, choisissez \"Importer vers Simple Calendar\", cela fera correspondre Simple Calendar aux paramètres de About-Time.

Si vous souhaitez que About-Time corresponde à Simple Calendar, choisissez \" Exporter vers About-Time\", cela fera correspondre les paramètres de About-Time à la configuration de Simple Calendar.
", + "FSC.Module.AboutTime.Export": "Exporter vers About-Time", + "FSC.Importer.NoFile": "Veuillez sélectionner un fichier à importer.", + "FSC.Importer.InvalidSCConfig": "Fichier non valide téléchargé, veuillez télécharger un fichier JSON exporté par Simple Calendar." +} \ No newline at end of file diff --git a/src/module.json b/src/module.json index db53fe7b..ae12801b 100644 --- a/src/module.json +++ b/src/module.json @@ -2,7 +2,7 @@ "name": "foundryvtt-simple-calendar", "title": "Simple Calendar", "description": "A simple calendar module for keeping track of game days and events.", - "version": "1.3.28", + "version": "1.3.39", "author": "Dean Vigoren (Vigorator)", "authors": [ { @@ -13,7 +13,7 @@ } ], "minimumCoreVersion": "0.7.9", - "compatibleCoreVersion": "0.8.8", + "compatibleCoreVersion": "0.8.9", "url": "https://github.com/vigoren/foundryvtt-simple-calendar", "bugs": "https://github.com/vigoren/foundryvtt-simple-calendar/issues", "allowBugReporter": true, @@ -63,6 +63,11 @@ "lang": "pt-BR", "name": "Português (Brasil)", "path": "lang/pt-BR.json" + }, + { + "lang": "fr", + "name": "Français", + "path": "lang/fr.json" } ], "socket": true, diff --git a/src/styles/date-selector.scss b/src/styles/date-selector.scss index afba913d..73b5ab6a 100644 --- a/src/styles/date-selector.scss +++ b/src/styles/date-selector.scss @@ -16,6 +16,10 @@ overflow-y: auto; z-index: 100; + &.just-time{ + overflow-y: visible; + } + .header{ position: sticky; top: 0; @@ -105,6 +109,10 @@ padding-top: 0.5rem; border-top: 1px solid #ccc; + &.just-time{ + overflow-y: auto; + } + .add-time{ text-align: center; margin: 0.5rem 0; @@ -140,26 +148,16 @@ max-width: 60px; position: relative; - .time-dropdown{ + .time-dropdown { position: absolute; bottom: 25px; right: 0; z-index: 100; - max-height: 100px; overflow: auto; background-color: #ffffff; color: #000000; border: 1px solid #c3c3c3; box-shadow: 2px 2px 2px #c3c3c3; - - .time-option{ - padding: 0.5rem 1rem; - cursor: pointer; - - &:hover, &.selected{ - background-color: #d8d8d8; - } - } } } @@ -169,5 +167,21 @@ } } + .time-dropdown{ + max-height: 100px; + &.hide{ + display: none; + } + + .time-option{ + padding: 0.5rem 1rem; + cursor: pointer; + + &:hover, &.selected{ + background-color: #d8d8d8; + } + } + } + } } diff --git a/src/styles/gm-controls.scss b/src/styles/gm-controls.scss index e09577ed..3d8a9dfa 100644 --- a/src/styles/gm-controls.scss +++ b/src/styles/gm-controls.scss @@ -87,10 +87,16 @@ } } &.time-amount{ + margin-bottom: 0.5rem; .control{ margin: 0 8px; } } + &.time-day{ + .control{ + margin: 0 4px; + } + } } } diff --git a/src/templates/calendar-config.html b/src/templates/calendar-config.html index 30d956ca..a2cc3e26 100644 --- a/src/templates/calendar-config.html +++ b/src/templates/calendar-config.html @@ -267,8 +267,8 @@

{{localize 'FSC.Configuration.Year.Seasons'}}
{{localize 'FSC.Configuration.Season.Name'}}
-
{{localize 'FSC.Configuration.Season.StartingMonth'}}
-
{{localize 'FSC.Configuration.Season.StartingDay'}}
+
{{localize 'FSC.Configuration.Season.StartingDate'}}
+
{{localize 'FSC.Configuration.Season.SunriseSunset'}}
{{localize 'FSC.Configuration.Season.Color'}}
@@ -278,18 +278,10 @@

{{localize 'FSC.Configuration.Year.Seasons'}}

- + {{sc-date-selector id=startDateSelectorId }}
- + {{sc-date-selector id=sunriseSelectorId }}
@@ -491,6 +483,13 @@

{{localize 'FSC.Configuration.Time.Options'}} {{localize 'FSC.Configuration.Time.SecondsInMinuteHelp'}}

+
+ +
+ +
+

{{localize 'FSC.Configuration.Time.SecondsInCombatRoundHelp'}}

+

{{localize 'FSC.Configuration.Time.ClockSettings'}}

diff --git a/src/templates/calendar.html b/src/templates/calendar.html index 5251a2be..e682f854 100644 --- a/src/templates/calendar.html +++ b/src/templates/calendar.html @@ -60,6 +60,12 @@
{{localize 'FSC.Five'}} {{localize 'FSC.MinuteShorthand'}}
{{localize 'FSC.One'}} {{localize 'FSC.HourShorthand'}}
+
+
{{localize 'FSC.Dawn'}}
+
{{localize 'FSC.Midday'}}
+
{{localize 'FSC.Dusk'}}
+
{{localize 'FSC.Midnight'}}
+
{{/if}} {{/if}} {{#if compactViewShowNotes}} @@ -201,6 +207,12 @@

{{localize 'FSC.Time.Controls'}}

+
+ {{localize 'FSC.Dawn'}} + {{localize 'FSC.Midday'}} + {{localize 'FSC.Dusk'}} + {{localize 'FSC.Midnight'}} +
{{/if}} {{#if currentYear.showDateControls}}