From c738b2b25d926915c79b7a4a407ae544afe1fae2 Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Fri, 30 Apr 2021 21:04:43 +0800 Subject: [PATCH 001/276] chore: initial commit --- .env.sample | 2 - api-references.md | 207 - package-lock.json | 21040 ++-------------- package.json | 62 +- run-tests.js | 119 - src/app-datepicker-dialog.ts | 12 - src/app-datepicker-icons.ts | 6 - src/app-datepicker.ts | 11 - src/common-styles.ts | 62 - src/constants.ts | 28 - src/custom_typings.ts | 95 - src/datepicker-dialog.ts | 378 - src/datepicker.ts | 1236 - src/helpers/animate-element.ts | 41 - src/helpers/compute-next-focus-date.ts | 146 - src/helpers/custom-elements-define.ts | 5 - src/helpers/dispatch-custom-event.ts | 11 - src/helpers/find-shadow-target.ts | 11 - src/helpers/get-date-range.ts | 3 - src/helpers/get-formatters.ts | 39 - src/helpers/get-multi-calendars.ts | 154 - src/helpers/get-resolved-date.ts | 45 - src/helpers/get-resolved-locale.ts | 9 - src/helpers/get-selectable-date.ts | 79 - src/helpers/has-class.ts | 3 - src/helpers/is-valid-date.ts | 3 - src/helpers/make-number-precise.ts | 11 - src/helpers/passive-handler.ts | 3 - src/helpers/set-focus-trap.ts | 50 - src/helpers/split-string.ts | 16 - src/helpers/target-scroll-to.ts | 19 - src/helpers/to-formatted-date-string.ts | 8 - src/helpers/to-shifted-disabled-day.ts | 4 - src/helpers/to-year-list.ts | 8 - src/helpers/update-year-with-min-max.ts | 10 - src/helpers/wait-for-next-frame.ts | 3 - src/{tests/snapshots/.gitignore => test.ts} | 0 src/tests/app-datepicker-dialog/a11y.spec.ts | 102 - .../app-datepicker-dialog/attributes.spec.ts | 653 - .../app-datepicker-dialog/events.spec.ts | 189 - .../app-datepicker-dialog/gestures.spec.ts | 92 - .../initial-render.spec.ts | 223 - .../app-datepicker-dialog/keyboards.spec.ts | 603 - .../app-datepicker-dialog/mouses.spec.ts | 491 - .../app-datepicker-dialog/properties.spec.ts | 605 - src/tests/app-datepicker-dialog/tests.ts | 8 - src/tests/app-datepicker/a11y.spec.ts | 102 - src/tests/app-datepicker/attributes.spec.ts | 688 - src/tests/app-datepicker/edge-cases.spec.ts | 329 - src/tests/app-datepicker/events.spec.ts | 221 - src/tests/app-datepicker/gestures.spec.ts | 192 - .../app-datepicker/initial-render.spec.ts | 295 - src/tests/app-datepicker/keyboards.spec.ts | 632 - src/tests/app-datepicker/mouses.spec.ts | 751 - src/tests/app-datepicker/properties.spec.ts | 699 - src/tests/app-datepicker/tests.ts | 10 - src/tests/app-datepicker/timezones.spec.ts | 81 - src/tests/constants.ts | 1 - src/tests/custom_typings.ts | 6 - src/tests/custom_wdio.ts | 225 - src/tests/full-icu.spec.ts | 25 - src/tests/helpers/clean-html.ts | 6 - src/tests/helpers/interaction.ts | 420 - src/tests/helpers/pretty-html.ts | 10 - src/tests/helpers/sanitize-text.ts | 62 - src/tests/helpers/to-selector.ts | 6 - src/tests/helpers/typed-assert.ts | 47 - src/tests/index.html | 104 - .../app-datepicker-dialog/.gitignore | 0 .../attributes-0-MicrosoftEdge.png | Bin 19292 -> 0 bytes .../attributes-0-Safari.png | Bin 47400 -> 0 bytes .../attributes-0-chrome.png | Bin 26478 -> 0 bytes .../attributes-0-firefox.png | Bin 23048 -> 0 bytes .../attributes-0-msedge.png | Bin 25487 -> 0 bytes .../attributes-1-MicrosoftEdge.png | Bin 18311 -> 0 bytes .../attributes-1-Safari.png | Bin 46163 -> 0 bytes .../attributes-1-chrome.png | Bin 23620 -> 0 bytes .../attributes-1-firefox.png | Bin 22126 -> 0 bytes .../attributes-1-msedge.png | Bin 24104 -> 0 bytes ...ial-render-calendar-view-MicrosoftEdge.png | Bin 19471 -> 0 bytes .../initial-render-calendar-view-Safari.png | Bin 47621 -> 0 bytes .../initial-render-calendar-view-chrome.png | Bin 26106 -> 0 bytes .../initial-render-calendar-view-firefox.png | Bin 23002 -> 0 bytes .../initial-render-calendar-view-msedge.png | Bin 25068 -> 0 bytes .../properties-0-MicrosoftEdge.png | Bin 19471 -> 0 bytes .../properties-0-Safari.png | Bin 47621 -> 0 bytes .../properties-0-chrome.png | Bin 26106 -> 0 bytes .../properties-0-firefox.png | Bin 23002 -> 0 bytes .../properties-0-msedge.png | Bin 25068 -> 0 bytes .../properties-1-MicrosoftEdge.png | Bin 18311 -> 0 bytes .../properties-1-Safari.png | Bin 46163 -> 0 bytes .../properties-1-chrome.png | Bin 23620 -> 0 bytes .../properties-1-firefox.png | Bin 22126 -> 0 bytes .../properties-1-msedge.png | Bin 24104 -> 0 bytes src/tests/snapshots/app-datepicker/.gitignore | 0 .../attributes-0-MicrosoftEdge.png | Bin 14261 -> 0 bytes .../app-datepicker/attributes-0-Safari.png | Bin 34005 -> 0 bytes .../app-datepicker/attributes-0-chrome.png | Bin 14529 -> 0 bytes .../app-datepicker/attributes-0-firefox.png | Bin 12641 -> 0 bytes .../app-datepicker/attributes-0-msedge.png | Bin 15776 -> 0 bytes .../attributes-1-MicrosoftEdge.png | Bin 13224 -> 0 bytes .../app-datepicker/attributes-1-Safari.png | Bin 32413 -> 0 bytes .../app-datepicker/attributes-1-chrome.png | Bin 13212 -> 0 bytes .../app-datepicker/attributes-1-firefox.png | Bin 11800 -> 0 bytes .../app-datepicker/attributes-1-msedge.png | Bin 15304 -> 0 bytes ...ial-render-calendar-view-MicrosoftEdge.png | Bin 13350 -> 0 bytes .../initial-render-calendar-view-Safari.png | Bin 32241 -> 0 bytes .../initial-render-calendar-view-chrome.png | Bin 13172 -> 0 bytes .../initial-render-calendar-view-firefox.png | Bin 11866 -> 0 bytes .../initial-render-calendar-view-msedge.png | Bin 15384 -> 0 bytes ...initial-render-year-view-MicrosoftEdge.png | Bin 10809 -> 0 bytes .../initial-render-year-view-Safari.png | Bin 27506 -> 0 bytes .../initial-render-year-view-chrome.png | Bin 10405 -> 0 bytes .../initial-render-year-view-firefox.png | Bin 9633 -> 0 bytes .../initial-render-year-view-msedge.png | Bin 9964 -> 0 bytes .../properties-0-MicrosoftEdge.png | Bin 14385 -> 0 bytes .../app-datepicker/properties-0-Safari.png | Bin 34329 -> 0 bytes .../app-datepicker/properties-0-chrome.png | Bin 14607 -> 0 bytes .../app-datepicker/properties-0-firefox.png | Bin 12637 -> 0 bytes .../app-datepicker/properties-0-msedge.png | Bin 15819 -> 0 bytes .../properties-1-MicrosoftEdge.png | Bin 13224 -> 0 bytes .../app-datepicker/properties-1-Safari.png | Bin 32413 -> 0 bytes .../app-datepicker/properties-1-chrome.png | Bin 13212 -> 0 bytes .../app-datepicker/properties-1-firefox.png | Bin 11800 -> 0 bytes .../app-datepicker/properties-1-msedge.png | Bin 15304 -> 0 bytes .../timezones-MicrosoftEdge.png | Bin 13705 -> 0 bytes .../app-datepicker/timezones-Safari.png | Bin 32909 -> 0 bytes .../app-datepicker/timezones-chrome.png | Bin 13386 -> 0 bytes .../app-datepicker/timezones-firefox.png | Bin 11998 -> 0 bytes .../app-datepicker/timezones-msedge.png | Bin 15609 -> 0 bytes src/tests/timezones.ts | 86 - src/tests/wdio.config.ts | 60 - src/tests/wdio.sl.config.ts | 68 - src/tracker.ts | 138 - tsconfig.json | 7 +- tsconfig.test.json | 6 - tsconfig.wdio.json | 9 - tslint.json | 6 - tslint.prod.json | 6 - 139 files changed, 1734 insertions(+), 30469 deletions(-) delete mode 100644 .env.sample delete mode 100644 api-references.md delete mode 100644 run-tests.js delete mode 100644 src/app-datepicker-dialog.ts delete mode 100644 src/app-datepicker-icons.ts delete mode 100644 src/app-datepicker.ts delete mode 100644 src/common-styles.ts delete mode 100644 src/constants.ts delete mode 100644 src/custom_typings.ts delete mode 100644 src/datepicker-dialog.ts delete mode 100644 src/datepicker.ts delete mode 100644 src/helpers/animate-element.ts delete mode 100644 src/helpers/compute-next-focus-date.ts delete mode 100644 src/helpers/custom-elements-define.ts delete mode 100644 src/helpers/dispatch-custom-event.ts delete mode 100644 src/helpers/find-shadow-target.ts delete mode 100644 src/helpers/get-date-range.ts delete mode 100644 src/helpers/get-formatters.ts delete mode 100644 src/helpers/get-multi-calendars.ts delete mode 100644 src/helpers/get-resolved-date.ts delete mode 100644 src/helpers/get-resolved-locale.ts delete mode 100644 src/helpers/get-selectable-date.ts delete mode 100644 src/helpers/has-class.ts delete mode 100644 src/helpers/is-valid-date.ts delete mode 100644 src/helpers/make-number-precise.ts delete mode 100644 src/helpers/passive-handler.ts delete mode 100644 src/helpers/set-focus-trap.ts delete mode 100644 src/helpers/split-string.ts delete mode 100644 src/helpers/target-scroll-to.ts delete mode 100644 src/helpers/to-formatted-date-string.ts delete mode 100644 src/helpers/to-shifted-disabled-day.ts delete mode 100644 src/helpers/to-year-list.ts delete mode 100644 src/helpers/update-year-with-min-max.ts delete mode 100644 src/helpers/wait-for-next-frame.ts rename src/{tests/snapshots/.gitignore => test.ts} (100%) delete mode 100644 src/tests/app-datepicker-dialog/a11y.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/attributes.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/events.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/gestures.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/initial-render.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/keyboards.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/mouses.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/properties.spec.ts delete mode 100644 src/tests/app-datepicker-dialog/tests.ts delete mode 100644 src/tests/app-datepicker/a11y.spec.ts delete mode 100644 src/tests/app-datepicker/attributes.spec.ts delete mode 100644 src/tests/app-datepicker/edge-cases.spec.ts delete mode 100644 src/tests/app-datepicker/events.spec.ts delete mode 100644 src/tests/app-datepicker/gestures.spec.ts delete mode 100644 src/tests/app-datepicker/initial-render.spec.ts delete mode 100644 src/tests/app-datepicker/keyboards.spec.ts delete mode 100644 src/tests/app-datepicker/mouses.spec.ts delete mode 100644 src/tests/app-datepicker/properties.spec.ts delete mode 100644 src/tests/app-datepicker/tests.ts delete mode 100644 src/tests/app-datepicker/timezones.spec.ts delete mode 100644 src/tests/constants.ts delete mode 100644 src/tests/custom_typings.ts delete mode 100644 src/tests/custom_wdio.ts delete mode 100644 src/tests/full-icu.spec.ts delete mode 100644 src/tests/helpers/clean-html.ts delete mode 100644 src/tests/helpers/interaction.ts delete mode 100644 src/tests/helpers/pretty-html.ts delete mode 100644 src/tests/helpers/sanitize-text.ts delete mode 100644 src/tests/helpers/to-selector.ts delete mode 100644 src/tests/helpers/typed-assert.ts delete mode 100644 src/tests/index.html delete mode 100644 src/tests/snapshots/app-datepicker-dialog/.gitignore delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-0-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-0-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-0-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-0-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-0-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-1-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-1-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-1-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-1-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/attributes-1-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-0-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-0-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-0-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-0-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-0-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-1-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-1-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-1-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-1-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker-dialog/properties-1-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/.gitignore delete mode 100644 src/tests/snapshots/app-datepicker/attributes-0-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-0-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-0-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-0-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-0-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-1-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-1-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-1-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-1-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/attributes-1-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-calendar-view-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-calendar-view-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-calendar-view-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-calendar-view-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-calendar-view-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-year-view-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-year-view-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-year-view-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-year-view-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/initial-render-year-view-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-0-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-0-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-0-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-0-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-0-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-1-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-1-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-1-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-1-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/properties-1-msedge.png delete mode 100644 src/tests/snapshots/app-datepicker/timezones-MicrosoftEdge.png delete mode 100644 src/tests/snapshots/app-datepicker/timezones-Safari.png delete mode 100644 src/tests/snapshots/app-datepicker/timezones-chrome.png delete mode 100644 src/tests/snapshots/app-datepicker/timezones-firefox.png delete mode 100644 src/tests/snapshots/app-datepicker/timezones-msedge.png delete mode 100644 src/tests/timezones.ts delete mode 100644 src/tests/wdio.config.ts delete mode 100644 src/tests/wdio.sl.config.ts delete mode 100644 src/tracker.ts delete mode 100644 tsconfig.test.json delete mode 100644 tsconfig.wdio.json delete mode 100644 tslint.json delete mode 100644 tslint.prod.json diff --git a/.env.sample b/.env.sample deleted file mode 100644 index 174cf90ba..000000000 --- a/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -SAUCE_USERNAME= -SAUCE_ACCESS_KEY= diff --git a/api-references.md b/api-references.md deleted file mode 100644 index c5dad5de5..000000000 --- a/api-references.md +++ /dev/null @@ -1,207 +0,0 @@ -# API References - -## AppDatepicker - -![app-datepicker](https://user-images.githubusercontent.com/10607759/67633824-ce170c80-f8ef-11e9-8d20-856eb0e62409.jpg) - -### Properties - -| Property | Type | Default | Description | -| --- | --- | --- | --- | -| `firstDayOfWeek` | Number | `0` | First day of week | -| `showWeekNumber` | Boolean | `false` | If true, week number renders. | -| `weekNumberType` | String | `first-4-day-week` | Week number type. Possible values: `first-day-of-year`, `first-full-week`. -| `landscape` | Boolean | `false` | If true, datepicker renders in landscape mode. | -| `startView` | String | `calendar` | Initial view when datepicker renders. Possible values: `yearList`. | -| `min` | String | | Minimum date that is selectable/ focusable. Accepts [ISO 8601 date format][iso-8601-date-format-url], e.g. `2020-02-02`, `2020-02-02T00:00:00.000Z`, etc. | -| `max` | String | | Maximum date that is selectable/ focusable. Accepts [ISO 8601 date format][iso-8601-date-format-url], e.g. `2020-02-02`, `2020-02-02T00:00:00.000Z`, etc. | -| `value` | String | __ | Selected/ focused date in the format of `yyyy-MM-dd`, e.g. `2020-02-02`. | -| `locale` | String | __ | [ISO 639][iso-639-url] language code, e.g. `en-US`. | -| `disabledDays` | String | | Week days to be disabled for selection, e.g. `0,6` disables selection for dates that are weekends (Saturday, Sunday). | -| `disabledDates` | String | | Dates to be disabled for selection. Accepts [ISO 8601 date format][iso-8601-date-format-url], e.g. `2020-02-02`, `2020-02-02T00:00:00.000Z`. | -| `inline` | Boolean | `false` | If true, datepicker renders in inline mode without datepicker header. | -| `dragRatio` | Number | `.15` | Minimum distance to drag to switch to new calendar month, e.g. `0.15 * 300px = 45px`. The calendar returns to its original position without updating the month if the distance being dragged is less than the minimum distance required. | -| `weekLabel` | String | `Wk` | Label for week number when `showWeekNumber` is true. | - -### Methods - -_None_ - -### Events - -| Event | Description | -| --- | --- | -| `datepicker-first-updated` | Fires when datepicker first renders. Returns an object of type [DatepickerFirstUpdated]. | -| `datepicker-animation-finished` | Fires when drag animation finishes during the switch between calendars. Returns no value. | -| `datepicker-value-updated` | Fires when datepicker updates its `value` via keyboard input (Enter or Space key) or mouse clicks. Returns an object of type [DatepickerValueUpdated]. | - -### CSS Custom properties - -| Custom property | Default | Description | -| --- | --- | --- | -| `--app-datepicker-accent-color` | `#1a73e8` | Accent color. | -| `--app-datepicker-bg-color` | `#fff` | Background color. | -| `--app-datepicker-border-bottom-left-radius` | `0` | Radius of outer bottom-left border edge. | -| `--app-datepicker-border-bottom-right-radius` | `0` | Radius of outer bottom-right border edge. | -| `--app-datepicker-border-top-left-radius` | `0` | Radius of outer top-left border edge. | -| `--app-datepicker-border-top-right-radius` | `0` | Radius of outer top-right border edge. | -| `--app-datepicker-color` | `#000` | Text color. | -| `--app-datepicker-disabled-day-color` | `rgba(0, 0, 0, .55)` | Text color of disabled day. | -| `--app-datepicker-focused-day-color` | `#fff` | Text color of focused day. | -| `--app-datepicker-focused-year-bg-color` | `#000` | Background color of focused year. | -| `--app-datepicker-scrollbar-thumb-bg-color` | `rgba(0, 0, 0, .35)` | Background color of scrollbar thumb in year list view. | -| `--app-datepicker-scrollbar-thumb-hover-bg-color` | `rgba(0, 0, 0, .5)` | Background color of scrollbar thumb in year list view when hovered. | -| `--app-datepicker-selector-color` | `rgba(0, 0, 0, .55)` | Text color of selector buttons. | -| `--app-datepicker-separator-color` | `#ddd` | Separator color between selector and calendar. | -| `--app-datepicker-weekday-color` | `rgba(0, 0, 0, .55)` | Text color of weekday. | - -### CSS Shadow Parts - -| Name | Description | -| --- | --- | -| `body` | Datepicker body, contain `calendar-view` or `year-list-view` | -| `calendar-day` | Container of `day` | -| `calendar-selector` | Button in `header` to show `calendar-view` when clicked | -| `calendar-view` | Container of `month-selectors` and `calendars` | -| `calendar-weekday` | Container of `weekday` | -| `calendar` | Container of `label` and `table` | -| `calendars` | Container of multiple `calendar`s | -| `day` | Calendar day | -| `header` | Datepicker header, contains `year-selector` and `toolbar` | -| `label` | Calendar label | -| `month-selector` | Button to navigate to previous or next month | -| `month-selectors` | Container of multiple `month-selector`s | -| `table` | Calendar table | -| `toolbar` | Container of `calendar-selector` | -| `weekday` | Weekday | -| `weekdays` | Container of multiple `calendar-weekday`s | -| `year-list-view` | Container of `year-list` | -| `year-list` | Year list, contains multiple `year`s | -| `year-selector` | Button in `header` to show `year-list-view` when clicked | -| `year` | Year | - -___ - -## AppDatepickerDialog - -![app-datepicker-dialog](https://user-images.githubusercontent.com/10607759/67633823-ce170c80-f8ef-11e9-9e21-e670b2acbed2.jpg) - -It inherits all the properties, events, and custom properties from [AppDatepicker] by default, except the `inline` property. - -### Properties - -| Property | Type | Default | Description | -| --- | --- | --- | --- | -| `alwaysResetValue` | Boolean | `false` | If true, the datepicker always resets to the `value` when opened. | -| `clearLabel` | String | `clear` | Label of clear button. | -| `confirmLabel` | String | `set` | Label of confirm button. | -| `dismissLabel` | String | `cancel` | Label of dismiss button. | -| `noFocusTrap` | Boolean | `false` | If true, focus will be _trapped_ inside the datepicker dialog. | - -### Methods - -| Method | Description | -| --- | --- | -| `open()` | Open the datepicker dialog. | -| `close()` | Close the datepicker dialog. | - -### Events - -| Event | Description | -| --- | --- | -| `datepicker-dialog-first-updated` | Fires when datepicker dialog first renders. Returns an object of type [DatepickerFirstUpdated]. | -| `datepicker-dialog-opened` | Fires when datepicker dialog opens. Returns an object of type [DatepickerDialogOpened]. | -| `datepicker-dialog-closed` | Fires when datepicker dialog closes. Returns an object of type [DatepickerDialogClosed]. | - -### CSS Custom properties - -| Custom property | Default | Description | -| --- | --- | --- | -| `--app-datepicker-dialog-border-radius` | `8px` | Radius of outer border edge. | -| `--app-datepicker-dialog-scrim-bg-color` | `rgba(0, 0, 0, .55)` | Background color of dialog's scrim. | -| `--app-datepicker-dialog-z-index` | `24` | Stack order of datepicker dialog. | - -### CSS Shadow Parts - -| Name | Description | -| --- | --- | -| `actions` | Container of `clear`, `dismiss`, and `confirm` | -| `clear` | Clear button | -| `confirm` | Confirm button | -| `dialog-content` | Dialog content, contains `` and `actions` | -| `dismiss` | Dismiss button | -| `scrim` | Dialog scrim | - -## Interfaces - -### KEY_CODES_MAP - -```ts -enum KEY_CODES_MAP { - ESCAPE = 27, - SHIFT = 16, - TAB = 9, - ENTER = 13, - SPACE = 32, - PAGE_UP = 33, - PAGE_DOWN = 34, - END = 35, - HOME = 36, - ARROW_LEFT = 37, - ARROW_UP = 38, - ARROW_RIGHT = 39, - ARROW_DOWN = 40, -} -``` - -### DatepickerFirstUpdated - -```ts -interface DatepickerFirstUpdated { - firstFocusableElement: HTMLElement; - value: string; -} -``` - -### DatepickerValueUpdated - -```ts -interface DatepickerValueUpdated { - isKeypress: boolean; - keyCode?: number; // See KEY_CODE_MAP enum. - value: string; -} -``` - -### DatepickerDialogClosed - -```ts -interface DatepickerDialogClosed { - opened: boolean; - value: string; -} -``` - -### DatepickerDialogOpened - -```ts -interface DatepickerDialogOpened { - firstFocusableElement: HTMLElement, - opened: boolean; - value: string; -} -``` - - -[AppDatepicker]: #appdatepicker -[iso-8601-date-format-url]: https://en.wikipedia.org/wiki/ISO_8601 -[iso-639-url]: https://en.wikipedia.org/wiki/ISO_639 -[DatepickerFirstUpdated]: #datepickerfirstupdated -[DatepickerValueUpdated]: #datepickervalueupdated -[DatepickerDialogClosed]: #datepickerdialogclosed -[DatepickerDialogOpened]: #datepickerdialogopened - - -[htmlelement-mdn-url]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement -[boolean-mdn-url]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean -[string-mdn-url]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String diff --git a/package-lock.json b/package-lock.json index 0f648842b..614bc126c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,36 +8,15 @@ "version": "4.5.1", "license": "MIT", "dependencies": { - "@material/mwc-button": "^0.20.0", - "lit-element": "^2.4.0", - "lit-html": "^1.4.0", - "nodemod": "^2.7.2", - "tslib": "^2.0.3" + "lit": "^2.0.0-rc.1", + "nodemod": "^2.7.3", + "tslib": "^2.2.0" }, "devDependencies": { "@reallyland/tsconfig": "^3.0.2", - "@reallyland/tslint-config": "^1.1.1", "@skypack/package-check": "^0.2.2", - "@types/mocha": "^7.0.2", - "@types/pretty": "^2.0.0", - "@types/request": "^2.48.5", - "@wdio/cli": "^5.23.0", - "@wdio/local-runner": "^5.23.0", - "@wdio/mocha-framework": "^5.23.0", - "@wdio/sauce-service": "^5.22.1", - "@wdio/selenium-standalone-service": "^5.16.10", - "@wdio/spec-reporter": "^5.23.0", - "axe-core": "^4.0.2", - "env-cmd": "^10.1.0", - "es-dev-server": "^2.1.0", - "husky": "^4.3.0", - "pretty": "^2.0.0", - "pwa-helpers": "^0.9.1", - "reify": "^0.20.12", - "shx": "^0.3.2", - "tslint": "^6.1.3", - "typescript": "^4.0.3", - "webdriverio": "^5.23.0" + "eslint": "^7.25.0", + "typescript": "^4.2.4" }, "engines": { "node": ">= 10.18.1", @@ -45,307 +24,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true - }, - "node_modules/@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.0.tgz", - "integrity": "sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.0.tgz", - "integrity": "sha512-6pXDPguA5zC40Y8oI5mqr+jEUpjMJonKvknvA+vD8CYDz5uuXEwWBK8sRAsE/t3gfb1k15AQb9RhwpscC4nUJQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", - "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.16" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.1" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" + "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { @@ -354,35 +38,6 @@ "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", "dev": true }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, "node_modules/@babel/highlight": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", @@ -456,19616 +111,2357 @@ "node": ">=4" } }, - "node_modules/@babel/parser": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz", - "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==", + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "type-fest": "^0.8.1" }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "engines": { + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "node_modules/@lit/reactive-element": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.1.tgz", + "integrity": "sha512-TLRPKOhQLNOMcpCXHiTKrNKX5eNzhf9y07jp27MXkjTH1IbXFvcT9/mVdOG/3qfMkip+iO6CEfv5a+y0wFhQig==" + }, + "node_modules/@reallyland/tsconfig": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", + "integrity": "sha512-a4lj2jtMC19MwkwjmHnjH1fw0TmUjfQ0RitxqX+LbV1ZzH51dGn3ZtWwnSjnpi/9sAeVKCGFmlUOhbC6UfbaHg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "engines": { + "node": ">= 14.15.3", + "npm": ">= 6.14.9", + "typescript": ">= 4.1.3" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "node_modules/@skypack/package-check": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@skypack/package-check/-/package-check-0.2.2.tgz", + "integrity": "sha512-T4Wyi9lUuz0a1C2OHuzqZ0aFOCI0AmaGTb2LP9sHgWdoHXlB3JU02gfBpa0Y081G/gFsJYpQ/R0iCJRzF/nknw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "kleur": "^4.1.3", + "yargs-parser": "^20.2.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "package-check": "index.bin.js" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prismjs": { + "version": "1.16.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.5.tgz", + "integrity": "sha512-nSU7U6FQDJJCraFNwaHmH5YDsd/VA9rTnJ7B7AGFdn+m+VSt3FjLWN7+AbqxZ67dbFazqtrDFUto3HK4ljrHIg==" + }, + "node_modules/@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "bin": { + "acorn": "bin/acorn" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "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": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "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": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "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": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "sprintf-js": "~1.0.2" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "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/@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "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": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "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, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "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": { - "@babel/helper-plugin-utils": "^7.12.13" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.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/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "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/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": { - "@babel/helper-plugin-utils": "^7.8.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "ms": "2.1.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "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/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "esutils": "^2.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "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/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "ansi-colors": "^4.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8.6" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "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": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/eslint": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz", + "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "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": { - "@babel/helper-plugin-utils": "^7.8.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "eslint-visitor-keys": "^1.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "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, - "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "estraverse": "^5.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz", - "integrity": "sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg==", + "node_modules/esquery/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": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4.0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "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": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" + "estraverse": "^5.2.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4.0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "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": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "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": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "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-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/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "flat-cache": "^3.0.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "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/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "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" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "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": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "is-glob": "^4.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 6" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "node_modules/globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "type-fest": "^0.20.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 4" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", - "babel-plugin-dynamic-import-node": "^2.3.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" + "engines": { + "node": ">=6" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "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": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.8.19" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "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/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": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "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": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "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": { - "@babel/helper-plugin-utils": "^7.13.0" + "is-extglob": "^2.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "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/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", "dev": true, - "dependencies": { - "regenerator-transform": "^0.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", - "dev": true, + "node_modules/lit": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.1.tgz", + "integrity": "sha512-cf4r18feMhu56sO963a5MaHUn6OX2Am9sj9lzyGTYx2IPDhC9NP/Xh4rj9Ialo9dA+lI4brD7+9cxSzRIWHOmw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@lit/reactive-element": "^1.0.0-rc.1", + "lit-element": "^3.0.0-rc.1", + "lit-html": "^2.0.0-rc.1" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", - "dev": true, + "node_modules/lit-ntml": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/lit-ntml/-/lit-ntml-2.18.2.tgz", + "integrity": "sha512-5jJwlcFvamwzv55HFpNXpYTJRTXKpkLXZrr4gh+Vkj+3VrjbdpMOgZSKHpNZ5j/uVccEYTadM34UR9k++94lDw==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "parse5": "^6.0.1", + "tslib": "^2.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 10.18.1", + "npm": ">= 6.13.4" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", - "dev": true, + "node_modules/lit/node_modules/lit-element": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0-rc.1.tgz", + "integrity": "sha512-SQH7LODMy+42UTOGiyHUTXronvv8Cud0Y/8Q8/1jd/9Putuh66GjN7FEjyNRxVbpIygnPqMbG854J9Ct9IJlFw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@lit/reactive-element": "^1.0.0-rc.1", + "lit-html": "^2.0.0-rc.1" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", - "dev": true, + "node_modules/lit/node_modules/lit-html": { + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0-rc.2.tgz", + "integrity": "sha512-rl3vtIQ0jq6r0GVbg+57Et9ra+iNhiz/v5V7uPTb6VxnjJaCCYKI7WkzKNlyzjMM2N/ytih3Uxb5vyyaOpjb0Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/trusted-types": "^1.0.1" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "yallist": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "brace-expansion": "^1.1.7" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "*" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", - "dev": true, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nodemod": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/nodemod/-/nodemod-2.7.3.tgz", + "integrity": "sha512-N9BJ0/EadFYzgc4L31EMWWmMQDCPABJYfyaoYmWhdjB9ig2zQdh0GdbPbPEGchx1SHfcs85yXdohu9CxDotIfA==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@types/parse5": "^5.0.2", + "@types/prismjs": "^1.16.0", + "lit-ntml": "^2.16.1", + "normalize-diacritics": "^2.11.1", + "tslib": "^2.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 10.18.1", + "npm": ">= 6.13.4" } }, - "node_modules/@babel/preset-env": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.0.tgz", - "integrity": "sha512-GWRCdBv2whxqqaSi7bo/BEXf070G/fWFMEdCnmoRg2CZJy4GK06ovFuEjJrZhDRXYgBsYtxVbG8GUHvw+UWBkQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.13.16", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.0", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", - "semver": "^6.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/normalize-diacritics": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/normalize-diacritics/-/normalize-diacritics-2.13.2.tgz", + "integrity": "sha512-LZL2gF7eakya7lIIqIHohYMsjLY4udTycCs7+RoLJozhaMSKFK77Mxqy9keb1lLkHiTTyAhoaueDaZQBzAuMkQ==", + "hasInstallScript": true, + "engines": { + "node": ">= 10.18.1", + "npm": ">= 6.13.4" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "wrappy": "1" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/types": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.0.tgz", - "integrity": "sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@koa/cors": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz", - "integrity": "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "dependencies": { - "vary": "^1.1.2" - }, "engines": { - "node": ">= 8.0.0" + "node": ">=0.4.0" } }, - "node_modules/@material/animation": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-m3eUpFRwxcP1tEWJlIH5q77YGSYEe5ITRw5OtyDvxU7ZzF0xKJbBeauQEdCmyig9UvK+J7jUUnCgkT/t/ldLtw==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/@material/animation/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@material/base": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-r98qY6EsPx6BlzT0Pj+H+BTI7r76GEX/zZPgajxZjbPAJSeeK+uCh69Dmhf63meLKaFkKgvLwH5udKJLMqqjpQ==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/@material/base/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@material/dom": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-AwiQDzquolB7rqy8k4+QMVQ8Njb6k0CT+otJ/UNJbj0qNVXZB4njVaWRWrWCt70hYp1rG0cRNkZ01ZJDqABUFw==", - "dependencies": { - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0", - "tslib": "^1.9.3" - } - }, - "node_modules/@material/dom/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@material/feature-targeting": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-HWd0+GMnkVB3anmUc9+MeWCNoogAbb4U7ihzwq7lzLCQyC+i/kunppkUVV7DhL3ZVl1O6zIw1eAT+dgQpN8x4Q==" - }, - "node_modules/@material/mwc-base": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.20.0.tgz", - "integrity": "sha512-q35jN1TGBts3LzKk2RVtgBpLDfBfRrx2hJ4GEVAeJsEGiO5CZrCD0bPlZSRTammzQBbDAh7szvhMiWo0TkRaWw==", - "dependencies": { - "@material/base": "=9.0.0-canary.1c156d69d.0", - "@material/dom": "=9.0.0-canary.1c156d69d.0", - "lit-element": "^2.3.0", - "tslib": "^2.0.1" - } - }, - "node_modules/@material/mwc-button": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.20.0.tgz", - "integrity": "sha512-kqQpeuLfaqfH4PZbENT9rwx1sgeFPLHuKy5M31ZeKG1deRTxw11FDGeMxSkePfm1QFfY6DNTsIAG5qC56tUNlw==", - "dependencies": { - "@material/mwc-icon": "^0.20.0", - "@material/mwc-ripple": "^0.20.0", - "lit-element": "^2.3.0", - "lit-html": "^1.1.2", - "tslib": "^2.0.1" - } - }, - "node_modules/@material/mwc-icon": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.20.0.tgz", - "integrity": "sha512-YCtzWbJVSZGcvWKVHwIhwfGMLEqAmRSVGcXTCAH/rOzGU7RkOxQkfNDkLAuTRAX9a7HYQStIJ39ENVcysElljg==", - "dependencies": { - "lit-element": "^2.3.0", - "tslib": "^2.0.1" - } - }, - "node_modules/@material/mwc-ripple": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.20.0.tgz", - "integrity": "sha512-4rlIu+Kk//NsW/u3CnU1kz3dsvwEozax0Zf2CUp+ao0ozclHfQ2+sTZVY0Mr8+GJLn7Oz51gT5OHoarZuWWljA==", - "dependencies": { - "@material/dom": "=9.0.0-canary.1c156d69d.0", - "@material/mwc-base": "^0.20.0", - "@material/ripple": "=9.0.0-canary.1c156d69d.0", - "lit-element": "^2.3.0", - "lit-html": "^1.1.2", - "tslib": "^2.0.1" - } - }, - "node_modules/@material/ripple": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-F1e/LQmYHQFORM/C3hchmANnRwJCXlc7Cp7W+VGpvJdtdzYlTd8DKKcShuOozxUQOjutbNf+Ql8gpZIdYRQaoQ==", - "dependencies": { - "@material/animation": "9.0.0-canary.1c156d69d.0", - "@material/base": "9.0.0-canary.1c156d69d.0", - "@material/dom": "9.0.0-canary.1c156d69d.0", - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0", - "@material/theme": "9.0.0-canary.1c156d69d.0", - "tslib": "^1.9.3" - } - }, - "node_modules/@material/ripple/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@material/theme": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-r1610TPwUplt4FHMk7cR06Oz1jU/G31wBIh4Frs/YIB0ZonVlI5cZdIkG0IFtNt9ZYWoDwfP/1nQBxdqrDPPhg==", - "dependencies": { - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0" - } - }, - "node_modules/@open-wc/building-utils": { - "version": "2.18.4", - "resolved": "https://registry.npmjs.org/@open-wc/building-utils/-/building-utils-2.18.4.tgz", - "integrity": "sha512-wjNp9oE1SFsiBEqaI67ff60KHDpDbGMNF+82pvCHe412SFY4q8DNy8A+hesj1nZsuZHH1/olDfzBDbYKAnmgMg==", + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "dependencies": { - "@babel/core": "^7.11.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@webcomponents/shadycss": "^1.10.2", - "@webcomponents/webcomponentsjs": "^2.5.0", - "arrify": "^2.0.1", - "browserslist": "^4.16.0", - "chokidar": "^3.4.3", - "clean-css": "^4.2.3", - "clone": "^2.1.2", - "core-js-bundle": "^3.8.1", - "deepmerge": "^4.2.2", - "es-module-shims": "^0.4.7", - "html-minifier-terser": "^5.1.1", - "lru-cache": "^5.1.1", - "minimatch": "^3.0.4", - "parse5": "^5.1.1", - "path-is-inside": "^1.0.2", - "regenerator-runtime": "^0.13.7", - "resolve": "^1.19.0", - "rimraf": "^3.0.2", - "shady-css-scoped-element": "^0.0.2", - "systemjs": "^6.8.3", - "terser": "^4.6.7", - "valid-url": "^1.0.9", - "whatwg-fetch": "^3.5.0", - "whatwg-url": "^7.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/@reallyland/tsconfig": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", - "integrity": "sha512-a4lj2jtMC19MwkwjmHnjH1fw0TmUjfQ0RitxqX+LbV1ZzH51dGn3ZtWwnSjnpi/9sAeVKCGFmlUOhbC6UfbaHg==", + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true, "engines": { - "node": ">= 14.15.3", - "npm": ">= 6.14.9", - "typescript": ">= 4.1.3" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/@reallyland/tslint-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@reallyland/tslint-config/-/tslint-config-1.1.1.tgz", - "integrity": "sha512-9g8E2DvORelAtR9qs/X5ZD01hGlPZeg4Io2obTePVU4TtvyPWqXoROa9q/WpaObsA5BgRC6lAWjNz2RUUebRzA==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "dependencies": { - "tslint-config-airbnb": "^5.11.1", - "tslint-immutable": "^6.0.1" - }, "engines": { - "node": ">= 8.16.0", - "npm": ">= 6.4.1" + "node": ">=0.10.0" } }, - "node_modules/@reallyland/tslint-config/node_modules/@fimbul/bifrost": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@fimbul/bifrost/-/bifrost-0.21.0.tgz", - "integrity": "sha512-ou8VU+nTmOW1jeg+FT+sn+an/M0Xb9G16RucrfhjXGWv1Q97kCoM5CG9Qj7GYOSdu7km72k7nY83Eyr53Bkakg==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "@fimbul/ymir": "^0.21.0", - "get-caller-file": "^2.0.0", - "tslib": "^1.8.1", - "tsutils": "^3.5.0" - }, - "peerDependencies": { - "tslint": "^5.0.0", - "typescript": ">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev" + "engines": { + "node": ">=4" } }, - "node_modules/@reallyland/tslint-config/node_modules/@fimbul/bifrost/node_modules/@fimbul/ymir": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@fimbul/ymir/-/ymir-0.21.0.tgz", - "integrity": "sha512-T/y7WqPsm4n3zhT08EpB5sfdm2Kvw3gurAxr2Lr5dQeLi8ZsMlNT/Jby+ZmuuAAd1PnXYzKp+2SXgIkQIIMCUg==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "inversify": "^5.0.0", - "reflect-metadata": "^0.1.12", - "tslib": "^1.8.1" + "glob": "^7.1.3" }, - "peerDependencies": { - "tsutils": ">=2.29.0", - "typescript": ">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@reallyland/tslint-config/node_modules/@fimbul/bifrost/node_modules/tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "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": { - "tslib": "^1.8.1" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">= 6" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "engines": { + "node": ">=10" } }, - "node_modules/@reallyland/tslint-config/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "peer": true, "dependencies": { - "color-convert": "^1.9.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@reallyland/tslint-config/node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@reallyland/tslint-config/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@reallyland/tslint-config/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@reallyland/tslint-config/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "node_modules/@reallyland/tslint-config/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, - "peer": true - }, - "node_modules/@reallyland/tslint-config/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, - "peer": true, - "engines": { - "node": ">=0.3.1" - } + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, - "node_modules/@reallyland/tslint-config/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@reallyland/tslint-config/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^3.0.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@reallyland/tslint-config/node_modules/tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, "engines": { - "node": ">=4.8.0" + "node": ">=8" }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-config-airbnb": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/tslint-config-airbnb/-/tslint-config-airbnb-5.11.2.tgz", - "integrity": "sha512-mUpHPTeeCFx8XARGG/kzYP4dPSOgoCqNiYbGHh09qTH8q+Y1ghsOgaeZKYYQT7IyxMos523z/QBaiv2zKNBcow==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "tslint-consistent-codestyle": "^1.14.1", - "tslint-eslint-rules": "^5.4.0", - "tslint-microsoft-contrib": "~5.2.1" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "tslint": "^5.11.0" + "engines": { + "node": ">=8" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-consistent-codestyle": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.16.0.tgz", - "integrity": "sha512-ebR/xHyMEuU36hGNOgCfjGBNYxBPixf0yU1Yoo6s3BrpBRFccjPOmIVaVvQsWAUAMdmfzHOCihVkcaMfimqvHw==", + "node_modules/table": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.6.0.tgz", + "integrity": "sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==", "dev": true, "dependencies": { - "@fimbul/bifrost": "^0.21.0", - "tslib": "^1.7.1", - "tsutils": "^2.29.0" + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, - "peerDependencies": { - "tslint": "^5.0.0", - "typescript": ">=2.1.4 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >=3.1.0-dev || >=3.2.0-dev || >=3.3.0-dev || >=3.4.0-dev" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-eslint-rules": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz", - "integrity": "sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==", + "node_modules/table/node_modules/ajv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", + "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", "dev": true, "dependencies": { - "doctrine": "0.7.2", - "tslib": "1.9.0", - "tsutils": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "tslint": "^5.0.0", - "typescript": "^2.2.0 || ^3.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-eslint-rules/node_modules/tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-eslint-rules/node_modules/tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">= 0.8.0" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-immutable": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/tslint-immutable/-/tslint-immutable-6.0.1.tgz", - "integrity": "sha512-3GQ6HffN64gLmT/N1YzyVMqyf6uBjMvhNaevK8B0K01/QC0OU5AQZrH4TjMHo1IdG3JpqsZvuRy9IW1LA3zjwA==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "tsutils": "^2.28.0 || ^3.0.0" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "tslint": "^5.8.0", - "typescript": "^2.8.0 || ^3.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-microsoft-contrib": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz", - "integrity": "sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==", + "node_modules/typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", "dev": true, - "dependencies": { - "tsutils": "^2.27.2 <2.29.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "peerDependencies": { - "tslint": "^5.1.0", - "typescript": "^2.1.0 || ^3.0.0" + "engines": { + "node": ">=4.2.0" } }, - "node_modules/@reallyland/tslint-config/node_modules/tslint-microsoft-contrib/node_modules/tsutils": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz", - "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + "punycode": "^2.1.0" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">= 10.0.0" + "bin": { + "node-which": "bin/node-which" }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=0.10.0" } }, - "node_modules/@sindresorhus/is": { + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" } - }, - "node_modules/@skypack/package-check": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@skypack/package-check/-/package-check-0.2.2.tgz", - "integrity": "sha512-T4Wyi9lUuz0a1C2OHuzqZ0aFOCI0AmaGTb2LP9sHgWdoHXlB3JU02gfBpa0Y081G/gFsJYpQ/R0iCJRzF/nknw==", + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "dependencies": { - "kleur": "^4.1.3", - "yargs-parser": "^20.2.3" - }, - "bin": { - "package-check": "index.bin.js" + "requires": { + "@babel/highlight": "^7.10.4" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, "dependencies": { - "@types/node": "*" + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, - "node_modules/@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } + "@lit/reactive-element": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.1.tgz", + "integrity": "sha512-TLRPKOhQLNOMcpCXHiTKrNKX5eNzhf9y07jp27MXkjTH1IbXFvcT9/mVdOG/3qfMkip+iO6CEfv5a+y0wFhQig==" }, - "node_modules/@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } + "@reallyland/tsconfig": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", + "integrity": "sha512-a4lj2jtMC19MwkwjmHnjH1fw0TmUjfQ0RitxqX+LbV1ZzH51dGn3ZtWwnSjnpi/9sAeVKCGFmlUOhbC6UfbaHg==", + "dev": true }, - "node_modules/@types/babel__traverse": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", - "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", + "@skypack/package-check": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@skypack/package-check/-/package-check-0.2.2.tgz", + "integrity": "sha512-T4Wyi9lUuz0a1C2OHuzqZ0aFOCI0AmaGTb2LP9sHgWdoHXlB3JU02gfBpa0Y081G/gFsJYpQ/R0iCJRzF/nknw==", "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" + "requires": { + "kleur": "^4.1.3", + "yargs-parser": "^20.2.3" } }, - "node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } + "@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, - "node_modules/@types/browserslist": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@types/browserslist/-/browserslist-4.15.0.tgz", - "integrity": "sha512-h9LyKErRGZqMsHh9bd+FE8yCIal4S0DxKTOeui56VgVXqa66TKiuaIUxCAI7c1O0LjaUzOTcsMyOpO9GetozRA==", - "deprecated": "This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "browserslist": "*" - } + "@types/prismjs": { + "version": "1.16.5", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.5.tgz", + "integrity": "sha512-nSU7U6FQDJJCraFNwaHmH5YDsd/VA9rTnJ7B7AGFdn+m+VSt3FjLWN7+AbqxZ67dbFazqtrDFUto3HK4ljrHIg==" }, - "node_modules/@types/browserslist-useragent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/browserslist-useragent/-/browserslist-useragent-3.0.3.tgz", - "integrity": "sha512-8ZVSxTKdGLAIWt5NaYR+VoD7G0zVTG0yvuAmPRDXBs/pR+SKbPwkiw/gac2IxBc5IBA59orlSJh4/aYF4o0QAg==", + "@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, - "node_modules/@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } + "requires": {} }, - "node_modules/@types/caniuse-api": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/caniuse-api/-/caniuse-api-3.0.1.tgz", - "integrity": "sha512-VcjPciJLx86btwWypSo6vRzZSOC6asS3/SGgn7r7Xk7jAWNyMoxCy+IQzI2vuW2Bvs3iytyOEwsjLJKmHXBvmA==", - "dev": true + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } }, - "node_modules/@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "node_modules/@types/command-line-args": { + "ansi-regex": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.0.0.tgz", - "integrity": "sha512-4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg==", - "dev": true - }, - "node_modules/@types/command-line-usage": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.1.tgz", - "integrity": "sha512-/xUgezxxYePeXhg5S04hUjxG9JZi+rJTs1+4NwpYPfSaS7BeDa6tVJkH6lN9Cb6rl8d24Fi2uX0s0Ngg2JT6gg==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "node_modules/@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "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": { - "@types/node": "*" + "requires": { + "color-convert": "^2.0.1" } }, - "node_modules/@types/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg==", - "dev": true - }, - "node_modules/@types/cookies": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.6.tgz", - "integrity": "sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" + "requires": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@types/debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-bWG5wapaWgbss9E238T0R6bfo5Fh3OkeoSt245CM7JJwVwpw6MEBCbIxLq5z8KzsE3uJhzcIuQkyiZmzV3M/Dw==", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "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/@types/etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/etag/-/etag-1.8.0.tgz", - "integrity": "sha512-EdSN0x+Y0/lBv7YAb8IU4Jgm6DWM+Bqtz7o5qozl96fzaqdqbdfHS5qjdpFeIv7xQ8jSLyjMMNShgYtMajEHyQ==", + "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": { - "@types/node": "*" + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", - "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "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": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "requires": { + "color-name": "~1.1.4" } }, - "node_modules/@types/http-assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz", - "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ==", - "dev": true - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", - "dev": true - }, - "node_modules/@types/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA==", + "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/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "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/@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", + "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": { - "@types/node": "*" + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "node_modules/@types/koa": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.1.tgz", - "integrity": "sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q==", + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, - "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" + "requires": { + "ms": "2.1.2" } }, - "node_modules/@types/koa__cors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/koa__cors/-/koa__cors-3.0.2.tgz", - "integrity": "sha512-gBetQR0DJ9JTG1YQoW33BADHCrDPJGiJUKUUcEPJwW1A2unzpIMhorEpXB6eMaaXTaqHLemcGnq3RmH9XaryRQ==", - "dev": true, - "dependencies": { - "@types/koa": "*" - } + "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/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "dependencies": { - "@types/koa": "*" + "requires": { + "esutils": "^2.0.2" } }, - "node_modules/@types/koa-compress": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-2.0.9.tgz", - "integrity": "sha512-1Sa9OsbHd2N2N7gLpdIRHe8W99EZbfIR31D7Iisx16XgwZCnWUtGXzXQejhu74Y1pE/wILqBP6VL49ch/MVpZw==", + "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 + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "dependencies": { - "@types/koa": "*", - "@types/node": "*" + "requires": { + "ansi-colors": "^4.1.1" } }, - "node_modules/@types/koa-etag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/koa-etag/-/koa-etag-3.0.0.tgz", - "integrity": "sha512-gXQUtKGEnCy0sZLG+uE3wL4mvY1CBPcb6ECjpAoD8RGYy/8ACY1B084k8LTFPIdVcmy7GD6Y4n3up3jnupofcQ==", + "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 + }, + "eslint": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz", + "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==", "dev": true, - "dependencies": { - "@types/etag": "*", - "@types/koa": "*" + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" } }, - "node_modules/@types/koa-send": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.2.tgz", - "integrity": "sha512-rfqKIv9bFds39Jxvsp8o3YJLnEQVPVriYA14AuO2OY65IHh/4UX4U/iMs5L0wATpcRmm1bbe0BNk23TRwx3VQQ==", + "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": { - "@types/koa": "*" + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "node_modules/@types/koa-static": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.1.tgz", - "integrity": "sha512-SSpct5fEcAeRkBHa3RiwCIRfDHcD1cZRhwRF///ZfvRt8KhoqRrhK6wpDlYPk/vWHVFE9hPGqh68bhzsHkir4w==", + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, "dependencies": { - "@types/koa": "*", - "@types/koa-send": "*" + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, - "node_modules/@types/lru-cache": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", - "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, - "node_modules/@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } }, - "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "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 }, - "node_modules/@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", - "dev": true + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } }, - "node_modules/@types/node": { - "version": "14.14.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", - "integrity": "sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A==", - "dev": true + "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, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, - "node_modules/@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "node_modules/@types/path-is-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/path-is-inside/-/path-is-inside-1.0.0.tgz", - "integrity": "sha512-hfnXRGugz+McgX2jxyy5qz9sB21LRzlGn24zlwN2KEgoPtEvjzNRrLtUkOOebPDPZl3Rq7ywKxYvylVcEZDnEw==", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "node_modules/@types/pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha512-nojaE6CV03swMxoHnAisV2Rl0Ma6WPUtQo87hUmaotu/YPugPlmiRB60sthbyppXdMFTdJV3wm6zCENY4q1tKA==", + "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/@types/prismjs": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.2.tgz", - "integrity": "sha512-1M/j21xgTde7RPtpJVQebW5rzrquj7S+wnqt4x9uWrIPpr0Ya/uXypcqC2aUQL5gtLXFCKSH7GnjfAijMdfbuA==" - }, - "node_modules/@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "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/@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "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/@types/request": { - "version": "2.48.5", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", - "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" + "requires": { + "flat-cache": "^3.0.4" } }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "dependencies": { - "@types/node": "*" + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, - "node_modules/@types/responselike": { + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, - "dependencies": { - "@types/node": "*" + "requires": { + "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" } }, - "node_modules/@types/selenium-standalone": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-6.15.2.tgz", - "integrity": "sha512-Jnt4AHHcUOPGuZ5cJRYfP3IpPalNc/o1BmFvuFFmLtU2PtvEGvyyJPdpErqzZDxsP8E4yjTst0GL+QMJiEWuBA==", + "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": { - "@types/node": "*" + "requires": { + "is-glob": "^4.0.1" } }, - "node_modules/@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "requires": { + "type-fest": "^0.20.2" } }, - "node_modules/@types/tough-cookie": { + "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "node_modules/@types/whatwg-url": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-6.4.0.tgz", - "integrity": "sha512-tonhlcbQ2eho09am6RHnHOgvtDfDYINd5rgxD+2YSkKENooVCFsWizJz139MQW/PV8FfClyKrNe9ZbdHrSCxGg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true }, - "node_modules/@wdio/cli": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-5.23.0.tgz", - "integrity": "sha512-QYhVQUIBamgr627dU88XE7yyiZ/Oe6gQR2ZGiZMyxDQ3zxXnf9BRhKtn1x+AKLO7Dwag8+Apy/3xNeY4OOsfog==", + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "dependencies": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "async-exit-hook": "^2.0.1", - "chalk": "^3.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^8.0.1", - "inquirer": "^7.0.0", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "log-update": "^3.2.0", - "webdriverio": "5.23.0", - "yargs": "^15.0.1", - "yarn-install": "^1.0.0" - }, - "bin": { - "wdio": "bin/wdio.js" - }, - "engines": { - "node": ">= 8.11.0" + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "node_modules/@wdio/config": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-5.22.4.tgz", - "integrity": "sha512-i5dJQWb80darcRA//tfG0guMeQCeRUXroZNnHjGNb1qzvTRZmcIIhdxaD+DbK/5dWEx6aoMfoi6wjVp/CXwdAg==", - "dev": true, - "dependencies": { - "@wdio/logger": "5.16.10", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">= 8.11.0" - } + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, - "node_modules/@wdio/local-runner": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-5.23.0.tgz", - "integrity": "sha512-+hlkaLemsOodCq19DEWi6ILu4qi8q023LZfLj6ZJdxLdVxkqrvm6VlRhI3B7u6T5CGA7CaOe500LeKK4strKwA==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "dependencies": { - "@wdio/logger": "5.16.10", - "@wdio/repl": "5.23.0", - "@wdio/runner": "5.23.0", - "async-exit-hook": "^2.0.1", - "stream-buffers": "^3.0.2" - }, - "engines": { - "node": ">= 8.11.0" - }, - "peerDependencies": { - "@wdio/cli": "^5.0.0" + "requires": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/@wdio/logger": { - "version": "5.16.10", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-5.16.10.tgz", - "integrity": "sha512-hRKhxgd9uB48Dtj2xe2ckxU4KwI/RO8IwguySuaI2SLFj6EDbdonwzpVkq111/fjBuq7R1NauAaNcm3AMEbIFA==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">= 8.11.0" - } + "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/@wdio/mocha-framework": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-5.23.0.tgz", - "integrity": "sha512-TLkl07wGWxHmIi46GNr9napeZ6ojEWMtHp5hsSeM7/9fabBWiSHq0aSFrvw6y8GIPZHr6Qp8sQ7CXX33R0uzRg==", - "dev": true, - "dependencies": { - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "mocha": "^7.0.1" - }, - "engines": { - "node": ">= 8.11.0" - }, - "peerDependencies": { - "webdriverio": "^5.0.0" - } + "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 }, - "node_modules/@wdio/protocols": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-5.22.1.tgz", - "integrity": "sha512-GdoWb/HTrb09Qb0S/7sLp1NU94LAhTsF1NnFj5sEFSUpecrl0S07pnhVg54pUImectN/woaqSl7uJGjlSGZcdQ==", - "dev": true, - "engines": { - "node": ">= 4.8.5" - } + "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 }, - "node_modules/@wdio/repl": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-5.23.0.tgz", - "integrity": "sha512-cKG9m0XuqcQenQmoup0yJX1fkDQEdY06QXuwt636ZQf6XgDoeoAdNOgnRnNruQ0+JsC2eqHFoSNto1q8wcLH/g==", + "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": { - "@wdio/utils": "5.23.0" - }, - "engines": { - "node": ">= 8.11.0" + "requires": { + "is-extglob": "^2.1.1" } }, - "node_modules/@wdio/reporter": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-5.22.4.tgz", - "integrity": "sha512-y/HIKGJHsKXroWWH1B7upynoYmFMuAwJs3LEVwdnpiJIBF4DxzIrRGCY/SSA6U1a/+cRTdI5m1+vA1gcFxcmwQ==", - "dev": true, - "dependencies": { - "fs-extra": "^8.0.1" - }, - "engines": { - "node": ">= 8.11.0" - } + "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/@wdio/runner": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-5.23.0.tgz", - "integrity": "sha512-G4ddjgYeaopF3L+1+48V/MgCVSTOpiNXfHpQG3RBi9iw2dCYraZtn1bZEiBqTZaGd+tqd+DBvfQ0HjP0JUT8Kw==", + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "dependencies": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "deepmerge": "^4.0.0", - "gaze": "^1.1.2", - "webdriverio": "5.23.0" - }, - "engines": { - "node": ">= 8.11.0" + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "node_modules/@wdio/sauce-service": { - "version": "5.22.5", - "resolved": "https://registry.npmjs.org/@wdio/sauce-service/-/sauce-service-5.22.5.tgz", - "integrity": "sha512-8PA11lFRu+iojnLRGztf799fgOcCUt8IOXsjTC73ea+7oBfNo01UpFiMFuVNIiz2BymEfUR7mLQOzzgaqxeIpA==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "dependencies": { - "@wdio/logger": "5.16.10", - "sauce-connect-launcher-update": "^1.3.2", - "saucelabs": "^4.0.0" - }, - "engines": { - "node": ">= 8.11.0" - }, - "peerDependencies": { - "@wdio/cli": "^5.0.0" + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "node_modules/@wdio/selenium-standalone-service": { - "version": "5.16.10", - "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-5.16.10.tgz", - "integrity": "sha512-IudfrPgFoejkM+UT4sPv9g5pAGax7+CyHDZkbPDl2XXsct3gdAXDVe57KWuNYX+s0jFu8MSR/4nLnvJjdydNjw==", - "dev": true, - "dependencies": { - "@types/selenium-standalone": "^6.15.0", - "@wdio/logger": "5.16.10", - "fs-extra": "^8.0.1", - "selenium-standalone": "^6.15.1" - }, - "engines": { - "node": ">= 8.11.0" - }, - "peerDependencies": { - "@wdio/cli": "^5.0.0" - } - }, - "node_modules/@wdio/spec-reporter": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-5.23.0.tgz", - "integrity": "sha512-dqVqo5+wbSaJhQfOOnw8o53StFtPOlUwrsMsp80YATZZxGjtLLuNFWlT9xGVhMDzTnzBUNO8ZxsSIl8gSE2Iew==", - "dev": true, - "dependencies": { - "@wdio/reporter": "5.22.4", - "chalk": "^3.0.0", - "easy-table": "^1.1.1", - "pretty-ms": "^6.0.0" - }, - "engines": { - "node": ">= 8.11.0" - }, - "peerDependencies": { - "@wdio/cli": "^5.0.0" - } - }, - "node_modules/@wdio/utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dWPEkDiaNUqJXPO6L2di2apI7Rle7Er4euh67Wlb5+3MrPNjCKhiF8gHcpQeL8oe6A1MH/f89kpSEEXe4BMkAw==", - "dev": true, - "dependencies": { - "@wdio/logger": "5.16.10", - "deepmerge": "^4.0.0" - }, - "engines": { - "node": ">= 8.11.0" - } - }, - "node_modules/@webcomponents/shadycss": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.10.2.tgz", - "integrity": "sha512-9Iseu8bRtecb0klvv+WXZOVZatsRkbaH7M97Z+f+Pt909R4lDfgUODAnra23DOZTpeMTAkVpf4m/FZztN7Ox1A==", - "dev": true - }, - "node_modules/@webcomponents/webcomponentsjs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.5.0.tgz", - "integrity": "sha512-C0l51MWQZ9kLzcxOZtniOMohpIFdCLZum7/TEHv3XWFc1Fvt5HCpbSX84x8ltka/JuNKcuiDnxXFkiB2gaePcg==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.1.tgz", - "integrity": "sha512-yml9NiDEH4M4p0G4AcPkg8AAa4mF3nfYF28VQxaokpO67j9H7gWgmsVWJ/f1Rn+PzsnDYvzJzWIQzCqDKRvWlA==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0" - } - }, - "node_modules/adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true, - "engines": { - "node": ">=0.3.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/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/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "dependencies": { - "type-fest": "^0.11.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "dev": true, - "dependencies": { - "file-type": "^4.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/archive-type/node_modules/file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/archiver/node_modules/bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "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-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "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/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/axe-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", - "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "dependencies": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", - "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "find-versions": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version-check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", - "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", - "dev": true, - "dependencies": { - "bin-version": "^3.0.0", - "semver": "^5.6.0", - "semver-truncate": "^1.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/bin-version/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version/node_modules/find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "dependencies": { - "semver-regex": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-version/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-version/node_modules/semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/bin-version/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-version/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bin-version/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", - "dev": true, - "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "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/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "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-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.5.tgz", - "integrity": "sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001214", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.719", - "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/browserslist-useragent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browserslist-useragent/-/browserslist-useragent-3.0.3.tgz", - "integrity": "sha512-8KKO6kOXu/93IkMi8zVqzU72BgpoxcITIHtkM1qmlnxJtIMF9Y+2uWL9JS2uUbzj/PaS3kaA6LcICBThMojGjA==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "semver": "^7.3.2", - "useragent": "^2.3.0" - }, - "engines": { - "node": ">= 6.x.x" - } - }, - "node_modules/browserslist-useragent/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/browserslist-useragent/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/browserslist-useragent/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "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/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "dependencies": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dev": true, - "dependencies": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "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/camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001219", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz", - "integrity": "sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ==", - "dev": true - }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "node_modules/caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dev": true, - "dependencies": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "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/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/command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", - "dev": true, - "dependencies": { - "array-back": "^4.0.1", - "chalk": "^2.4.2", - "table-layout": "^1.0.1", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/command-line-usage/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/command-line-usage/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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/condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dev": true, - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/core-js-bundle": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.11.1.tgz", - "integrity": "sha512-G53levuILfTBZaMuglvFe8+pPu7JgLO3PLuNj2AOOMeoy16HjfkqI62UAtUOlS+ZW9ySXxiiC9nFCjaXMukm1g==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.1.tgz", - "integrity": "sha512-aZ0e4tmlG/aOBHj92/TuOuZwp6jFvn1WNabU5VOVixzhu5t5Ao+JZkQOPlgNXu6ynwLrwJxklT4Gw1G1VGEh+g==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.5", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "dependencies": { - "buffer": "^5.1.0" - } - }, - "node_modules/crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "dependencies": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "dev": true, - "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "dev": true, - "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tar/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tar/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dev": true, - "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-tarbz2/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "dev": true, - "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-targz/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-targz/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", - "dev": true, - "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-unzip/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "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/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "optional": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", - "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", - "dev": true, - "dependencies": { - "esutils": "^1.1.6", - "isarray": "0.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/doctrine/node_modules/esutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/doctrine/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "dev": true, - "dependencies": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/download/node_modules/@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "dependencies": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - } - }, - "node_modules/download/node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/download/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "node_modules/download/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/download/node_modules/keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/download/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/download/node_modules/normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/download/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/download/node_modules/sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/dynamic-import-polyfill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dynamic-import-polyfill/-/dynamic-import-polyfill-0.1.1.tgz", - "integrity": "sha512-m953zv0w5oDagTItWm6Auhmk/pY7EiejaqiVbnzSS3HIjh1FCUeK7WzuaVtWPNs58A+/xpIE+/dVk6pKsrua8g==", - "dev": true - }, - "node_modules/easy-table": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.1.tgz", - "integrity": "sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "optionalDependencies": { - "wcwidth": ">=1.0.1" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - } - }, - "node_modules/editorconfig/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/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", - "dev": true, - "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.723", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.723.tgz", - "integrity": "sha512-L+WXyXI7c7+G1V8ANzRsPI5giiimLAUDC6Zs1ojHHPhYXb3k/iTABFmWjivEtsWrRQymjnO66/rO2ZTABGdmWg==", - "dev": true - }, - "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-cmd": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", - "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", - "dev": true, - "dependencies": { - "commander": "^4.0.0", - "cross-spawn": "^7.0.0" - }, - "bin": { - "env-cmd": "bin/env-cmd.js" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-dev-server": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-dev-server/-/es-dev-server-2.1.0.tgz", - "integrity": "sha512-Vrq/4PyMzWz33QmOdSncvoWLTJVcv2e96z8FLHQwP9zK7DyLeDZCckII8VTW+btUGtM7aErvLH/d/R2pjjjs8w==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/preset-env": "^7.9.0", - "@koa/cors": "^3.1.0", - "@open-wc/building-utils": "^2.18.3", - "@rollup/plugin-node-resolve": "^11.0.0", - "@rollup/pluginutils": "^3.0.0", - "@types/babel__core": "^7.1.3", - "@types/browserslist": "^4.8.0", - "@types/browserslist-useragent": "^3.0.0", - "@types/caniuse-api": "^3.0.0", - "@types/command-line-args": "^5.0.0", - "@types/command-line-usage": "^5.0.1", - "@types/debounce": "^1.2.0", - "@types/koa": "^2.0.48", - "@types/koa__cors": "^3.0.1", - "@types/koa-compress": "^2.0.9", - "@types/koa-etag": "^3.0.0", - "@types/koa-static": "^4.0.1", - "@types/lru-cache": "^5.1.0", - "@types/mime-types": "^2.1.0", - "@types/minimatch": "^3.0.3", - "@types/path-is-inside": "^1.0.0", - "@types/whatwg-url": "^6.4.0", - "browserslist": "^4.9.1", - "browserslist-useragent": "^3.0.2", - "builtin-modules": "^3.1.0", - "camelcase": "^5.3.1", - "caniuse-api": "^3.0.0", - "caniuse-lite": "^1.0.30001033", - "chokidar": "^3.0.0", - "command-line-args": "^5.0.2", - "command-line-usage": "^6.1.0", - "debounce": "^1.2.0", - "deepmerge": "^4.2.2", - "es-module-lexer": "^0.3.13", - "get-stream": "^5.1.0", - "is-stream": "^2.0.0", - "isbinaryfile": "^4.0.2", - "koa": "^2.7.0", - "koa-compress": "^3.0.0", - "koa-etag": "^3.0.0", - "koa-static": "^5.0.0", - "lru-cache": "^5.1.1", - "mime-types": "^2.1.27", - "minimatch": "^3.0.4", - "open": "^7.0.3", - "parse5": "^5.1.1", - "path-is-inside": "^1.0.2", - "polyfills-loader": "^1.7.4", - "portfinder": "^1.0.21", - "rollup": "^2.7.2", - "strip-ansi": "^5.2.0", - "systemjs": "^6.3.1", - "tslib": "^1.11.1", - "useragent": "^2.3.0", - "whatwg-url": "^7.0.0" - }, - "bin": { - "es-dev-server": "dist/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/es-dev-server/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/es-dev-server/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/es-dev-server/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", - "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", - "dev": true - }, - "node_modules/es-module-shims": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-0.4.7.tgz", - "integrity": "sha512-0LTiSQoPWwdcaTVIQXhGlaDwTneD0g9/tnH1PNs3zHFFH+xoCeJclDM3rQeqF9nurXPfMKm3l9+kfPRa5VpbKg==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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/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/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "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/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "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/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/filelist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", - "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dev": true, - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", - "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/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "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-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dev": true, - "dependencies": { - "npm-conf": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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, - "engines": { - "node": ">=4" - } - }, - "node_modules/globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/got": { - "version": "11.8.1", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", - "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "dependencies": { - "has-symbol-support-x": "^1.4.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/http-assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz", - "integrity": "sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw==", - "dev": true, - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.7.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-assert/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-assert/node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-assert/node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.0-beta.5.2", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", - "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.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==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/husky" - } - }, - "node_modules/husky/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/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/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/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/intersection-observer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz", - "integrity": "sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg==", - "dev": true - }, - "node_modules/into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "dependencies": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inversify": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.5.tgz", - "integrity": "sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "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": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", - "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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": ">=0.12.0" - } - }, - "node_modules/is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "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/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/jake/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/js-beautify": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.4.tgz", - "integrity": "sha512-M5yEWwonlEO3kPcCZ3K3KBSpFRZAEO3FAWC6wtbIGeyg7dusStxvF0WG+HRLBoMZqREXSRSxkkqClDE865x1sg==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "^1.0.4", - "nopt": "^5.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-beautify/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/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.3.tgz", - "integrity": "sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/koa": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.1.tgz", - "integrity": "sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w==", - "dev": true, - "dependencies": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "~3.1.0", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^1.2.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "engines": { - "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" - } - }, - "node_modules/koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true - }, - "node_modules/koa-compress": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-3.1.0.tgz", - "integrity": "sha512-0m24/yS/GbhWI+g9FqtvStY+yJwTObwoxOvPok6itVjRen7PBWkjsJ8pre76m+99YybXLKhOJ62mJ268qyBFMQ==", - "dev": true, - "dependencies": { - "bytes": "^3.0.0", - "compressible": "^2.0.0", - "koa-is-json": "^1.0.0", - "statuses": "^1.0.0" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/koa-convert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", - "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "koa-compose": "^3.0.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/koa-convert/node_modules/koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", - "dev": true, - "dependencies": { - "any-promise": "^1.1.0" - } - }, - "node_modules/koa-etag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-3.0.0.tgz", - "integrity": "sha1-nvc4Ld1agqsN6xU0FckVg293HT8=", - "dev": true, - "dependencies": { - "etag": "^1.3.0", - "mz": "^2.1.0" - } - }, - "node_modules/koa-is-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", - "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=", - "dev": true - }, - "node_modules/koa-send": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", - "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "http-errors": "^1.7.3", - "resolve-path": "^1.4.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/koa-static": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", - "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "koa-send": "^5.0.0" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/koa-static/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/koa/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/koa/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/lit-element": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.4.0.tgz", - "integrity": "sha512-pBGLglxyhq/Prk2H91nA0KByq/hx/wssJBQFiYqXhGDvEnY31PRGYf1RglVzyLeRysu0IHm2K0P196uLLWmwFg==", - "dependencies": { - "lit-html": "^1.1.1" - } - }, - "node_modules/lit-html": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.0.tgz", - "integrity": "sha512-cgaqPSgqHRaTH/P1DnWD/dQxudtrHqD0xo1AoyOGJZir2rXgsvTg77z6Pitwk9B+kL23EakD62HV3x8sT01aWQ==" - }, - "node_modules/lit-ntml": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/lit-ntml/-/lit-ntml-2.18.0.tgz", - "integrity": "sha512-TRRBSADH5yaVl269ypt6PdF29d8iC0TOmXPmTP1cUYFdhYKQ7kMNH1mNg0ZrzZDZzrLMwbQkWf/rICO4QSPaeg==", - "hasInstallScript": true, - "dependencies": { - "parse5": "^6.0.1", - "tslib": "^2.0.2" - }, - "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4" - } - }, - "node_modules/lit-ntml/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "node_modules/lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "node_modules/lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", - "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/make-dir/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "dev": true, - "dependencies": { - "mime-db": "1.45.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/mocha/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/mocha/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/mocha/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/mocha/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mocha/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/mocha/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node_modules/nodemod": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/nodemod/-/nodemod-2.7.2.tgz", - "integrity": "sha512-+aGsXURjJIiNH0nsphBFw5Bt+4uzmtrNQ3XP3DdeUfYBo+4GMsPbdn1tr/B322R9fy3xZSAakPtEyMCApn/U2Q==", - "hasInstallScript": true, - "dependencies": { - "@types/parse5": "^5.0.2", - "@types/prismjs": "^1.16.0", - "lit-ntml": "^2.16.1", - "normalize-diacritics": "^2.11.1", - "tslib": "^2.1.0" - }, - "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-diacritics": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/normalize-diacritics/-/normalize-diacritics-2.13.0.tgz", - "integrity": "sha512-2YE92pRgW1/zOUkXDvzimlvf9wfmPhsw3trbYjNZzoMQaIm2/7MbNOn10Uf77q1W2o9BnRQrQnzTmp4nD/7Saw==", - "hasInstallScript": true, - "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-conf/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", - "dev": true - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "node_modules/os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "dependencies": { - "arch": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "dev": true, - "dependencies": { - "p-timeout": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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/pkg-dir/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/polyfills-loader": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/polyfills-loader/-/polyfills-loader-1.7.6.tgz", - "integrity": "sha512-AiLIgmGFmzcvsqewyKsqWb7H8CnWNTSQBoM0u+Mauzmp0DsjObXmnZdeqvTn0HNwc1wYHHTOta82WjSjG341eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.1", - "@open-wc/building-utils": "^2.18.3", - "@webcomponents/webcomponentsjs": "^2.4.0", - "abortcontroller-polyfill": "^1.4.0", - "core-js-bundle": "^3.6.0", - "deepmerge": "^4.2.2", - "dynamic-import-polyfill": "^0.1.1", - "es-module-shims": "^0.4.6", - "intersection-observer": "^0.7.0", - "parse5": "^5.1.1", - "regenerator-runtime": "^0.13.3", - "resize-observer-polyfill": "^1.5.1", - "systemjs": "^6.3.1", - "terser": "^4.6.7", - "whatwg-fetch": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dev": true, - "dependencies": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pretty-ms": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-6.0.1.tgz", - "integrity": "sha512-ke4njoVmlotekHlHyCZ3wI/c5AMT8peuHs8rKJqekj/oR5G8lND2dVpicFlUz5cbZgE290vvkMuDwfj/OcW1kw==", - "dev": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pwa-helpers": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz", - "integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA==", - "dev": true - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/reify": { - "version": "0.20.12", - "resolved": "https://registry.npmjs.org/reify/-/reify-0.20.12.tgz", - "integrity": "sha512-4BzKwDWyJJbukwI6xIJRh+BDTitoGzxdgYPiQQ1zbcTZW6I8xgHPw1DnVuEs/mEZQlYm1e09DcFSApb4UaR5bQ==", - "dev": true, - "dependencies": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "magic-string": "^0.25.3", - "semver": "^5.4.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", - "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", - "dev": true, - "dependencies": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/resolve-path/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/resolve-path/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - } - }, - "node_modules/resq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.0.tgz", - "integrity": "sha512-hCUd0xMalqtPDz4jXIqs0M5Wnv/LZXN8h7unFOo4/nvExT9dDPbhwd3udRxLlp0HgBnHcV009UlduE9NZi7A6w==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rgb2hex": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.1.10.tgz", - "integrity": "sha512-vKz+kzolWbL3rke/xeTE2+6vHmZnNxGyDnaVW4OckntAIcc7DcZzWkQSfxMDwqHS8vhgySnIFyBUH7lIk6PxvQ==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.46.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.46.0.tgz", - "integrity": "sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sauce-connect-launcher-update": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/sauce-connect-launcher-update/-/sauce-connect-launcher-update-1.3.2.tgz", - "integrity": "sha512-apAhE+VSN0DgsbepqSb0xCPgnFu6YmOTkJAytPyu1oQU9t2MdAhMPJbhgBDAJzbIbesm9w8ZOTbfBKXW73rMAw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "adm-zip": "^0.4.14", - "async": "^3.2.0", - "https-proxy-agent": "^5.0.0", - "lodash": "^4.17.15", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/sauce-connect-launcher-update/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "node_modules/saucelabs": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-4.6.3.tgz", - "integrity": "sha512-LQEA7ENXq03MWs5sTbvRPlDiaR9PFEfqiMUHtiXEJQUGQ5JAmIXOB39/4hL3CUvZKZ2Bv7Ook6ZCDsqUFY7Vmw==", - "dev": true, - "dependencies": { - "bin-wrapper": "^4.1.0", - "change-case": "^4.1.1", - "form-data": "^3.0.0", - "got": "^11.7.0", - "hash.js": "^1.1.7", - "tunnel": "0.0.6", - "yargs": "^16.0.3" - }, - "bin": { - "sl": "bin/sl" - } - }, - "node_modules/saucelabs/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/saucelabs/node_modules/form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/saucelabs/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/saucelabs/node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/saucelabs/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "dev": true, - "dependencies": { - "commander": "^2.8.1" - }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" - } - }, - "node_modules/seek-bzip/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/selenium-standalone": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.23.0.tgz", - "integrity": "sha512-6dVLSEvbixd/MRSEmrcRQD8dmABrzNsxRqroKFQY+RVzm1JVPgGHIlo6qJzG6akfjc2V8SadHslE6lN4BFVM3w==", - "dev": true, - "dependencies": { - "commander": "^2.20.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.1", - "got": "^11.8.0", - "lodash.mapvalues": "^4.6.0", - "lodash.merge": "^4.6.2", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "progress": "2.0.3", - "tar-stream": "2.1.4", - "which": "^2.0.2", - "yauzl": "^2.10.0" - }, - "bin": { - "selenium-standalone": "bin/selenium-standalone", - "start-selenium": "bin/start-selenium" - } - }, - "node_modules/selenium-standalone/node_modules/bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/selenium-standalone/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/selenium-standalone/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/selenium-standalone/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/selenium-standalone/node_modules/tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "node_modules/semver-regex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", - "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "dependencies": { - "semver": "^5.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/serialize-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shady-css-scoped-element": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/shady-css-scoped-element/-/shady-css-scoped-element-0.0.2.tgz", - "integrity": "sha512-Dqfl70x6JiwYDujd33ZTbtCK0t52E7+H2swdWQNSTzfsolSa6LJHnTpN4T9OpJJEq4bxuzHRLFO9RBcy/UfrMQ==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shx": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz", - "integrity": "sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.3", - "shelljs": "^0.8.4" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "dev": true, - "dependencies": { - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-buffers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", - "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi/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/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, - "dependencies": { - "is-natural-number": "^4.0.1" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/systemjs": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.8.3.tgz", - "integrity": "sha512-UcTY+FEA1B7e+bpJk1TI+a9Na6LG7wFEqW7ED16cLqLuQfI/9Ri0rsXm3tKlIgNoHyLHZycjdAOijzNbzelgwA==", - "dev": true - }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser/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/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "node_modules/tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" - } - }, - "node_modules/tslint/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslint/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/tslint/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/tslint/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/tslint/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/tslint/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslint/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true, - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "dependencies": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - } - }, - "node_modules/useragent/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/useragent/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "optional": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webdriver": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-5.23.0.tgz", - "integrity": "sha512-r7IrbZ2SuTIRyWV8mv4a4hZoFcT9Qt4MznOkdRWPE1sPpZ8lyLZsIEjKCEbHelOzPwURqk+biwGrm4z2OZRAiw==", - "dev": true, - "dependencies": { - "@types/request": "^2.48.4", - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/protocols": "5.22.1", - "@wdio/utils": "5.23.0", - "lodash.merge": "^4.6.1", - "request": "^2.83.0" - }, - "engines": { - "node": ">= 8.11.0" - } - }, - "node_modules/webdriverio": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-5.23.0.tgz", - "integrity": "sha512-hxt6Nuu2bBrTsVk7GfoFRTh63l4fRVXlK9U30RtPbHoWO5tcFdyUz2UTgeHEZ54ea1DQEVPfsgFiLnJULkWp1Q==", - "dev": true, - "dependencies": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/repl": "5.23.0", - "@wdio/utils": "5.23.0", - "archiver": "^3.0.0", - "css-value": "^0.0.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "resq": "^1.6.0", - "rgb2hex": "^0.1.0", - "serialize-error": "^5.0.0", - "webdriver": "5.23.0" - }, - "engines": { - "node": ">= 8.11.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/yargs-unparser/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/yargs-unparser/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs-unparser/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-unparser/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs/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/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", - "dev": true, - "dependencies": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "bin": { - "yarn-install": "bin/yarn-install.js", - "yarn-remove": "bin/yarn-remove.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yarn-install/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/yarn-install/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yarn-install/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/yarn-install/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/ylru": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", - "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true - }, - "@babel/core": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", - "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.0.tgz", - "integrity": "sha512-C6u00HbmsrNPug6A+CiNl8rEys7TsdcXwg12BHi2ca5rUfAs3+UwZsuDQSXnc+wCElCXMB8gMaJ3YXDdh8fAlg==", - "dev": true, - "requires": { - "@babel/types": "^7.14.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.0.tgz", - "integrity": "sha512-6pXDPguA5zC40Y8oI5mqr+jEUpjMJonKvknvA+vD8CYDz5uuXEwWBK8sRAsE/t3gfb1k15AQb9RhwpscC4nUJQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", - "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.16" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", - "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", - "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.0.tgz", - "integrity": "sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q==", - "dev": true - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", - "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", - "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.13.16.tgz", - "integrity": "sha512-ad3PHUxGnfWF4Efd3qFuznEtZKoBp0spS+DgqzVzRPV7urEBvPLue3y2j80w4Jf2YLzZHj8TOv/Lmvdmh3b2xg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", - "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/preset-env": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.0.tgz", - "integrity": "sha512-GWRCdBv2whxqqaSi7bo/BEXf070G/fWFMEdCnmoRg2CZJy4GK06ovFuEjJrZhDRXYgBsYtxVbG8GUHvw+UWBkQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.15", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.13.16", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.0", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.0", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", - "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.0", - "@babel/types": "^7.14.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.0.tgz", - "integrity": "sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", - "to-fast-properties": "^2.0.0" - } - }, - "@koa/cors": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz", - "integrity": "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==", - "dev": true, - "requires": { - "vary": "^1.1.2" - } - }, - "@material/animation": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-m3eUpFRwxcP1tEWJlIH5q77YGSYEe5ITRw5OtyDvxU7ZzF0xKJbBeauQEdCmyig9UvK+J7jUUnCgkT/t/ldLtw==", - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@material/base": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-r98qY6EsPx6BlzT0Pj+H+BTI7r76GEX/zZPgajxZjbPAJSeeK+uCh69Dmhf63meLKaFkKgvLwH5udKJLMqqjpQ==", - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@material/dom": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-AwiQDzquolB7rqy8k4+QMVQ8Njb6k0CT+otJ/UNJbj0qNVXZB4njVaWRWrWCt70hYp1rG0cRNkZ01ZJDqABUFw==", - "requires": { - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@material/feature-targeting": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-HWd0+GMnkVB3anmUc9+MeWCNoogAbb4U7ihzwq7lzLCQyC+i/kunppkUVV7DhL3ZVl1O6zIw1eAT+dgQpN8x4Q==" - }, - "@material/mwc-base": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.20.0.tgz", - "integrity": "sha512-q35jN1TGBts3LzKk2RVtgBpLDfBfRrx2hJ4GEVAeJsEGiO5CZrCD0bPlZSRTammzQBbDAh7szvhMiWo0TkRaWw==", - "requires": { - "@material/base": "=9.0.0-canary.1c156d69d.0", - "@material/dom": "=9.0.0-canary.1c156d69d.0", - "lit-element": "^2.3.0", - "tslib": "^2.0.1" - } - }, - "@material/mwc-button": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.20.0.tgz", - "integrity": "sha512-kqQpeuLfaqfH4PZbENT9rwx1sgeFPLHuKy5M31ZeKG1deRTxw11FDGeMxSkePfm1QFfY6DNTsIAG5qC56tUNlw==", - "requires": { - "@material/mwc-icon": "^0.20.0", - "@material/mwc-ripple": "^0.20.0", - "lit-element": "^2.3.0", - "lit-html": "^1.1.2", - "tslib": "^2.0.1" - } - }, - "@material/mwc-icon": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.20.0.tgz", - "integrity": "sha512-YCtzWbJVSZGcvWKVHwIhwfGMLEqAmRSVGcXTCAH/rOzGU7RkOxQkfNDkLAuTRAX9a7HYQStIJ39ENVcysElljg==", - "requires": { - "lit-element": "^2.3.0", - "tslib": "^2.0.1" - } - }, - "@material/mwc-ripple": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.20.0.tgz", - "integrity": "sha512-4rlIu+Kk//NsW/u3CnU1kz3dsvwEozax0Zf2CUp+ao0ozclHfQ2+sTZVY0Mr8+GJLn7Oz51gT5OHoarZuWWljA==", - "requires": { - "@material/dom": "=9.0.0-canary.1c156d69d.0", - "@material/mwc-base": "^0.20.0", - "@material/ripple": "=9.0.0-canary.1c156d69d.0", - "lit-element": "^2.3.0", - "lit-html": "^1.1.2", - "tslib": "^2.0.1" - } - }, - "@material/ripple": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-F1e/LQmYHQFORM/C3hchmANnRwJCXlc7Cp7W+VGpvJdtdzYlTd8DKKcShuOozxUQOjutbNf+Ql8gpZIdYRQaoQ==", - "requires": { - "@material/animation": "9.0.0-canary.1c156d69d.0", - "@material/base": "9.0.0-canary.1c156d69d.0", - "@material/dom": "9.0.0-canary.1c156d69d.0", - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0", - "@material/theme": "9.0.0-canary.1c156d69d.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@material/theme": { - "version": "9.0.0-canary.1c156d69d.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-9.0.0-canary.1c156d69d.0.tgz", - "integrity": "sha512-r1610TPwUplt4FHMk7cR06Oz1jU/G31wBIh4Frs/YIB0ZonVlI5cZdIkG0IFtNt9ZYWoDwfP/1nQBxdqrDPPhg==", - "requires": { - "@material/feature-targeting": "9.0.0-canary.1c156d69d.0" - } - }, - "@open-wc/building-utils": { - "version": "2.18.4", - "resolved": "https://registry.npmjs.org/@open-wc/building-utils/-/building-utils-2.18.4.tgz", - "integrity": "sha512-wjNp9oE1SFsiBEqaI67ff60KHDpDbGMNF+82pvCHe412SFY4q8DNy8A+hesj1nZsuZHH1/olDfzBDbYKAnmgMg==", - "dev": true, - "requires": { - "@babel/core": "^7.11.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@webcomponents/shadycss": "^1.10.2", - "@webcomponents/webcomponentsjs": "^2.5.0", - "arrify": "^2.0.1", - "browserslist": "^4.16.0", - "chokidar": "^3.4.3", - "clean-css": "^4.2.3", - "clone": "^2.1.2", - "core-js-bundle": "^3.8.1", - "deepmerge": "^4.2.2", - "es-module-shims": "^0.4.7", - "html-minifier-terser": "^5.1.1", - "lru-cache": "^5.1.1", - "minimatch": "^3.0.4", - "parse5": "^5.1.1", - "path-is-inside": "^1.0.2", - "regenerator-runtime": "^0.13.7", - "resolve": "^1.19.0", - "rimraf": "^3.0.2", - "shady-css-scoped-element": "^0.0.2", - "systemjs": "^6.8.3", - "terser": "^4.6.7", - "valid-url": "^1.0.9", - "whatwg-fetch": "^3.5.0", - "whatwg-url": "^7.1.0" - } - }, - "@reallyland/tsconfig": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", - "integrity": "sha512-a4lj2jtMC19MwkwjmHnjH1fw0TmUjfQ0RitxqX+LbV1ZzH51dGn3ZtWwnSjnpi/9sAeVKCGFmlUOhbC6UfbaHg==", - "dev": true - }, - "@reallyland/tslint-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@reallyland/tslint-config/-/tslint-config-1.1.1.tgz", - "integrity": "sha512-9g8E2DvORelAtR9qs/X5ZD01hGlPZeg4Io2obTePVU4TtvyPWqXoROa9q/WpaObsA5BgRC6lAWjNz2RUUebRzA==", - "dev": true, - "requires": { - "tslint-config-airbnb": "^5.11.1", - "tslint-immutable": "^6.0.1" - }, - "dependencies": { - "@fimbul/bifrost": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@fimbul/bifrost/-/bifrost-0.21.0.tgz", - "integrity": "sha512-ou8VU+nTmOW1jeg+FT+sn+an/M0Xb9G16RucrfhjXGWv1Q97kCoM5CG9Qj7GYOSdu7km72k7nY83Eyr53Bkakg==", - "dev": true, - "requires": { - "@fimbul/ymir": "^0.21.0", - "get-caller-file": "^2.0.0", - "tslib": "^1.8.1", - "tsutils": "^3.5.0" - }, - "dependencies": { - "@fimbul/ymir": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@fimbul/ymir/-/ymir-0.21.0.tgz", - "integrity": "sha512-T/y7WqPsm4n3zhT08EpB5sfdm2Kvw3gurAxr2Lr5dQeLi8ZsMlNT/Jby+ZmuuAAd1PnXYzKp+2SXgIkQIIMCUg==", - "dev": true, - "requires": { - "inversify": "^5.0.0", - "reflect-metadata": "^0.1.12", - "tslib": "^1.8.1" - } - }, - "tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "peer": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "peer": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true - }, - "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, - "peer": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - } - }, - "tslint-config-airbnb": { - "version": "5.11.2", - "resolved": "https://registry.npmjs.org/tslint-config-airbnb/-/tslint-config-airbnb-5.11.2.tgz", - "integrity": "sha512-mUpHPTeeCFx8XARGG/kzYP4dPSOgoCqNiYbGHh09qTH8q+Y1ghsOgaeZKYYQT7IyxMos523z/QBaiv2zKNBcow==", - "dev": true, - "requires": { - "tslint-consistent-codestyle": "^1.14.1", - "tslint-eslint-rules": "^5.4.0", - "tslint-microsoft-contrib": "~5.2.1" - } - }, - "tslint-consistent-codestyle": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.16.0.tgz", - "integrity": "sha512-ebR/xHyMEuU36hGNOgCfjGBNYxBPixf0yU1Yoo6s3BrpBRFccjPOmIVaVvQsWAUAMdmfzHOCihVkcaMfimqvHw==", - "dev": true, - "requires": { - "@fimbul/bifrost": "^0.21.0", - "tslib": "^1.7.1", - "tsutils": "^2.29.0" - } - }, - "tslint-eslint-rules": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz", - "integrity": "sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==", - "dev": true, - "requires": { - "doctrine": "0.7.2", - "tslib": "1.9.0", - "tsutils": "^3.0.0" - }, - "dependencies": { - "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", - "dev": true - }, - "tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "tslint-immutable": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/tslint-immutable/-/tslint-immutable-6.0.1.tgz", - "integrity": "sha512-3GQ6HffN64gLmT/N1YzyVMqyf6uBjMvhNaevK8B0K01/QC0OU5AQZrH4TjMHo1IdG3JpqsZvuRy9IW1LA3zjwA==", - "dev": true, - "requires": { - "tsutils": "^2.28.0 || ^3.0.0" - } - }, - "tslint-microsoft-contrib": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz", - "integrity": "sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==", - "dev": true, - "requires": { - "tsutils": "^2.27.2 <2.29.0" - }, - "dependencies": { - "tsutils": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz", - "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } - } - } - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@sindresorhus/is": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", - "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", - "dev": true - }, - "@skypack/package-check": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@skypack/package-check/-/package-check-0.2.2.tgz", - "integrity": "sha512-T4Wyi9lUuz0a1C2OHuzqZ0aFOCI0AmaGTb2LP9sHgWdoHXlB3JU02gfBpa0Y081G/gFsJYpQ/R0iCJRzF/nknw==", - "dev": true, - "requires": { - "kleur": "^4.1.3", - "yargs-parser": "^20.2.3" - } - }, - "@szmarczak/http-timer": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", - "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", - "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/browserslist": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@types/browserslist/-/browserslist-4.15.0.tgz", - "integrity": "sha512-h9LyKErRGZqMsHh9bd+FE8yCIal4S0DxKTOeui56VgVXqa66TKiuaIUxCAI7c1O0LjaUzOTcsMyOpO9GetozRA==", - "dev": true, - "requires": { - "browserslist": "*" - } - }, - "@types/browserslist-useragent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/browserslist-useragent/-/browserslist-useragent-3.0.3.tgz", - "integrity": "sha512-8ZVSxTKdGLAIWt5NaYR+VoD7G0zVTG0yvuAmPRDXBs/pR+SKbPwkiw/gac2IxBc5IBA59orlSJh4/aYF4o0QAg==", - "dev": true - }, - "@types/cacheable-request": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", - "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "@types/caniuse-api": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/caniuse-api/-/caniuse-api-3.0.1.tgz", - "integrity": "sha512-VcjPciJLx86btwWypSo6vRzZSOC6asS3/SGgn7r7Xk7jAWNyMoxCy+IQzI2vuW2Bvs3iytyOEwsjLJKmHXBvmA==", - "dev": true - }, - "@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", - "dev": true - }, - "@types/command-line-args": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.0.0.tgz", - "integrity": "sha512-4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg==", - "dev": true - }, - "@types/command-line-usage": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.1.tgz", - "integrity": "sha512-/xUgezxxYePeXhg5S04hUjxG9JZi+rJTs1+4NwpYPfSaS7BeDa6tVJkH6lN9Cb6rl8d24Fi2uX0s0Ngg2JT6gg==", - "dev": true - }, - "@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg==", - "dev": true - }, - "@types/cookies": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.6.tgz", - "integrity": "sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "@types/debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-bWG5wapaWgbss9E238T0R6bfo5Fh3OkeoSt245CM7JJwVwpw6MEBCbIxLq5z8KzsE3uJhzcIuQkyiZmzV3M/Dw==", - "dev": true - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/etag/-/etag-1.8.0.tgz", - "integrity": "sha512-EdSN0x+Y0/lBv7YAb8IU4Jgm6DWM+Bqtz7o5qozl96fzaqdqbdfHS5qjdpFeIv7xQ8jSLyjMMNShgYtMajEHyQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", - "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/http-assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz", - "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ==", - "dev": true - }, - "@types/http-cache-semantics": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", - "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", - "dev": true - }, - "@types/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA==", - "dev": true - }, - "@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", - "dev": true - }, - "@types/keyv": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", - "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/koa": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.1.tgz", - "integrity": "sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q==", - "dev": true, - "requires": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "@types/koa__cors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/koa__cors/-/koa__cors-3.0.2.tgz", - "integrity": "sha512-gBetQR0DJ9JTG1YQoW33BADHCrDPJGiJUKUUcEPJwW1A2unzpIMhorEpXB6eMaaXTaqHLemcGnq3RmH9XaryRQ==", - "dev": true, - "requires": { - "@types/koa": "*" - } - }, - "@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "dev": true, - "requires": { - "@types/koa": "*" - } - }, - "@types/koa-compress": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-2.0.9.tgz", - "integrity": "sha512-1Sa9OsbHd2N2N7gLpdIRHe8W99EZbfIR31D7Iisx16XgwZCnWUtGXzXQejhu74Y1pE/wILqBP6VL49ch/MVpZw==", - "dev": true, - "requires": { - "@types/koa": "*", - "@types/node": "*" - } - }, - "@types/koa-etag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/koa-etag/-/koa-etag-3.0.0.tgz", - "integrity": "sha512-gXQUtKGEnCy0sZLG+uE3wL4mvY1CBPcb6ECjpAoD8RGYy/8ACY1B084k8LTFPIdVcmy7GD6Y4n3up3jnupofcQ==", - "dev": true, - "requires": { - "@types/etag": "*", - "@types/koa": "*" - } - }, - "@types/koa-send": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.2.tgz", - "integrity": "sha512-rfqKIv9bFds39Jxvsp8o3YJLnEQVPVriYA14AuO2OY65IHh/4UX4U/iMs5L0wATpcRmm1bbe0BNk23TRwx3VQQ==", - "dev": true, - "requires": { - "@types/koa": "*" - } - }, - "@types/koa-static": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.1.tgz", - "integrity": "sha512-SSpct5fEcAeRkBHa3RiwCIRfDHcD1cZRhwRF///ZfvRt8KhoqRrhK6wpDlYPk/vWHVFE9hPGqh68bhzsHkir4w==", - "dev": true, - "requires": { - "@types/koa": "*", - "@types/koa-send": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", - "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, - "@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", - "dev": true - }, - "@types/node": { - "version": "14.14.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", - "integrity": "sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "@types/path-is-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/path-is-inside/-/path-is-inside-1.0.0.tgz", - "integrity": "sha512-hfnXRGugz+McgX2jxyy5qz9sB21LRzlGn24zlwN2KEgoPtEvjzNRrLtUkOOebPDPZl3Rq7ywKxYvylVcEZDnEw==", - "dev": true - }, - "@types/pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha512-nojaE6CV03swMxoHnAisV2Rl0Ma6WPUtQo87hUmaotu/YPugPlmiRB60sthbyppXdMFTdJV3wm6zCENY4q1tKA==", - "dev": true - }, - "@types/prismjs": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.2.tgz", - "integrity": "sha512-1M/j21xgTde7RPtpJVQebW5rzrquj7S+wnqt4x9uWrIPpr0Ya/uXypcqC2aUQL5gtLXFCKSH7GnjfAijMdfbuA==" - }, - "@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", - "dev": true - }, - "@types/request": { - "version": "2.48.5", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", - "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", - "dev": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/selenium-standalone": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-6.15.2.tgz", - "integrity": "sha512-Jnt4AHHcUOPGuZ5cJRYfP3IpPalNc/o1BmFvuFFmLtU2PtvEGvyyJPdpErqzZDxsP8E4yjTst0GL+QMJiEWuBA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", - "dev": true - }, - "@types/whatwg-url": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-6.4.0.tgz", - "integrity": "sha512-tonhlcbQ2eho09am6RHnHOgvtDfDYINd5rgxD+2YSkKENooVCFsWizJz139MQW/PV8FfClyKrNe9ZbdHrSCxGg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@wdio/cli": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-5.23.0.tgz", - "integrity": "sha512-QYhVQUIBamgr627dU88XE7yyiZ/Oe6gQR2ZGiZMyxDQ3zxXnf9BRhKtn1x+AKLO7Dwag8+Apy/3xNeY4OOsfog==", - "dev": true, - "requires": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "async-exit-hook": "^2.0.1", - "chalk": "^3.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^8.0.1", - "inquirer": "^7.0.0", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "log-update": "^3.2.0", - "webdriverio": "5.23.0", - "yargs": "^15.0.1", - "yarn-install": "^1.0.0" - } - }, - "@wdio/config": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-5.22.4.tgz", - "integrity": "sha512-i5dJQWb80darcRA//tfG0guMeQCeRUXroZNnHjGNb1qzvTRZmcIIhdxaD+DbK/5dWEx6aoMfoi6wjVp/CXwdAg==", - "dev": true, - "requires": { - "@wdio/logger": "5.16.10", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/local-runner": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-5.23.0.tgz", - "integrity": "sha512-+hlkaLemsOodCq19DEWi6ILu4qi8q023LZfLj6ZJdxLdVxkqrvm6VlRhI3B7u6T5CGA7CaOe500LeKK4strKwA==", - "dev": true, - "requires": { - "@wdio/logger": "5.16.10", - "@wdio/repl": "5.23.0", - "@wdio/runner": "5.23.0", - "async-exit-hook": "^2.0.1", - "stream-buffers": "^3.0.2" - } - }, - "@wdio/logger": { - "version": "5.16.10", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-5.16.10.tgz", - "integrity": "sha512-hRKhxgd9uB48Dtj2xe2ckxU4KwI/RO8IwguySuaI2SLFj6EDbdonwzpVkq111/fjBuq7R1NauAaNcm3AMEbIFA==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/mocha-framework": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-5.23.0.tgz", - "integrity": "sha512-TLkl07wGWxHmIi46GNr9napeZ6ojEWMtHp5hsSeM7/9fabBWiSHq0aSFrvw6y8GIPZHr6Qp8sQ7CXX33R0uzRg==", - "dev": true, - "requires": { - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "mocha": "^7.0.1" - } - }, - "@wdio/protocols": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-5.22.1.tgz", - "integrity": "sha512-GdoWb/HTrb09Qb0S/7sLp1NU94LAhTsF1NnFj5sEFSUpecrl0S07pnhVg54pUImectN/woaqSl7uJGjlSGZcdQ==", - "dev": true - }, - "@wdio/repl": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-5.23.0.tgz", - "integrity": "sha512-cKG9m0XuqcQenQmoup0yJX1fkDQEdY06QXuwt636ZQf6XgDoeoAdNOgnRnNruQ0+JsC2eqHFoSNto1q8wcLH/g==", - "dev": true, - "requires": { - "@wdio/utils": "5.23.0" - } - }, - "@wdio/reporter": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-5.22.4.tgz", - "integrity": "sha512-y/HIKGJHsKXroWWH1B7upynoYmFMuAwJs3LEVwdnpiJIBF4DxzIrRGCY/SSA6U1a/+cRTdI5m1+vA1gcFxcmwQ==", - "dev": true, - "requires": { - "fs-extra": "^8.0.1" - } - }, - "@wdio/runner": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-5.23.0.tgz", - "integrity": "sha512-G4ddjgYeaopF3L+1+48V/MgCVSTOpiNXfHpQG3RBi9iw2dCYraZtn1bZEiBqTZaGd+tqd+DBvfQ0HjP0JUT8Kw==", - "dev": true, - "requires": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/utils": "5.23.0", - "deepmerge": "^4.0.0", - "gaze": "^1.1.2", - "webdriverio": "5.23.0" - } - }, - "@wdio/sauce-service": { - "version": "5.22.5", - "resolved": "https://registry.npmjs.org/@wdio/sauce-service/-/sauce-service-5.22.5.tgz", - "integrity": "sha512-8PA11lFRu+iojnLRGztf799fgOcCUt8IOXsjTC73ea+7oBfNo01UpFiMFuVNIiz2BymEfUR7mLQOzzgaqxeIpA==", - "dev": true, - "requires": { - "@wdio/logger": "5.16.10", - "sauce-connect-launcher-update": "^1.3.2", - "saucelabs": "^4.0.0" - } - }, - "@wdio/selenium-standalone-service": { - "version": "5.16.10", - "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-5.16.10.tgz", - "integrity": "sha512-IudfrPgFoejkM+UT4sPv9g5pAGax7+CyHDZkbPDl2XXsct3gdAXDVe57KWuNYX+s0jFu8MSR/4nLnvJjdydNjw==", - "dev": true, - "requires": { - "@types/selenium-standalone": "^6.15.0", - "@wdio/logger": "5.16.10", - "fs-extra": "^8.0.1", - "selenium-standalone": "^6.15.1" - } - }, - "@wdio/spec-reporter": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-5.23.0.tgz", - "integrity": "sha512-dqVqo5+wbSaJhQfOOnw8o53StFtPOlUwrsMsp80YATZZxGjtLLuNFWlT9xGVhMDzTnzBUNO8ZxsSIl8gSE2Iew==", - "dev": true, - "requires": { - "@wdio/reporter": "5.22.4", - "chalk": "^3.0.0", - "easy-table": "^1.1.1", - "pretty-ms": "^6.0.0" - } - }, - "@wdio/utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dWPEkDiaNUqJXPO6L2di2apI7Rle7Er4euh67Wlb5+3MrPNjCKhiF8gHcpQeL8oe6A1MH/f89kpSEEXe4BMkAw==", - "dev": true, - "requires": { - "@wdio/logger": "5.16.10", - "deepmerge": "^4.0.0" - } - }, - "@webcomponents/shadycss": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.10.2.tgz", - "integrity": "sha512-9Iseu8bRtecb0klvv+WXZOVZatsRkbaH7M97Z+f+Pt909R4lDfgUODAnra23DOZTpeMTAkVpf4m/FZztN7Ox1A==", - "dev": true - }, - "@webcomponents/webcomponentsjs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.5.0.tgz", - "integrity": "sha512-C0l51MWQZ9kLzcxOZtniOMohpIFdCLZum7/TEHv3XWFc1Fvt5HCpbSX84x8ltka/JuNKcuiDnxXFkiB2gaePcg==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "abortcontroller-polyfill": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.1.tgz", - "integrity": "sha512-yml9NiDEH4M4p0G4AcPkg8AAa4mF3nfYF28VQxaokpO67j9H7gWgmsVWJ/f1Rn+PzsnDYvzJzWIQzCqDKRvWlA==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true, - "requires": {} - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "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 - } - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, - "archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "dev": true, - "requires": { - "file-type": "^4.2.0" - }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true - } - } - }, - "archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axe-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", - "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "executable": "^4.1.0" - } - }, - "bin-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", - "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "find-versions": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "requires": { - "semver-regex": "^2.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "bin-version-check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", - "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", - "dev": true, - "requires": { - "bin-version": "^3.0.0", - "semver": "^5.6.0", - "semver-truncate": "^1.1.2" - } - }, - "bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", - "dev": true, - "requires": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - } - }, - "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 - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "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, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.5.tgz", - "integrity": "sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001214", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.719", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "browserslist-useragent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browserslist-useragent/-/browserslist-useragent-3.0.3.tgz", - "integrity": "sha512-8KKO6kOXu/93IkMi8zVqzU72BgpoxcITIHtkM1qmlnxJtIMF9Y+2uWL9JS2uUbzj/PaS3kaA6LcICBThMojGjA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "semver": "^7.3.2", - "useragent": "^2.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "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 - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "requires": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "cache-content-type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", - "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", - "dev": true, - "requires": { - "mime-types": "^2.1.18", - "ylru": "^1.2.0" - } - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", - "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001219", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz", - "integrity": "sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ==", - "dev": true - }, - "capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "caw": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", - "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "dev": true, - "requires": { - "get-proxy": "^2.0.0", - "isurl": "^1.0.0-alpha5", - "tunnel-agent": "^0.6.0", - "url-to-options": "^1.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", - "dev": true - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "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, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-line-args": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz", - "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==", - "dev": true, - "requires": { - "array-back": "^3.0.1", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "command-line-usage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", - "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", - "dev": true, - "requires": { - "array-back": "^4.0.1", - "chalk": "^2.4.2", - "table-layout": "^1.0.1", - "typical": "^5.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "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 - }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dev": true, - "requires": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - } - }, - "core-js-bundle": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/core-js-bundle/-/core-js-bundle-3.11.1.tgz", - "integrity": "sha512-G53levuILfTBZaMuglvFe8+pPu7JgLO3PLuNj2AOOMeoy16HjfkqI62UAtUOlS+ZW9ySXxiiC9nFCjaXMukm1g==", - "dev": true - }, - "core-js-compat": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.11.1.tgz", - "integrity": "sha512-aZ0e4tmlG/aOBHj92/TuOuZwp6jFvn1WNabU5VOVixzhu5t5Ao+JZkQOPlgNXu6ynwLrwJxklT4Gw1G1VGEh+g==", - "dev": true, - "requires": { - "browserslist": "^4.16.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - } - }, - "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "requires": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "dev": true, - "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "dev": true, - "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - } - } - }, - "decompress-tarbz2": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dev": true, - "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" - }, - "dependencies": { - "file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - } - } - }, - "decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "dev": true, - "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" - }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - } - } - }, - "decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", - "dev": true, - "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "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 - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "optional": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "optional": true - } - } - }, - "defer-to-connect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", - "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "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 - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "doctrine": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", - "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", - "dev": true, - "requires": { - "esutils": "^1.1.6", - "isarray": "0.0.1" - }, - "dependencies": { - "esutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "dev": true, - "requires": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - } - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "dynamic-import-polyfill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dynamic-import-polyfill/-/dynamic-import-polyfill-0.1.1.tgz", - "integrity": "sha512-m953zv0w5oDagTItWm6Auhmk/pY7EiejaqiVbnzSS3HIjh1FCUeK7WzuaVtWPNs58A+/xpIE+/dVk6pKsrua8g==", - "dev": true - }, - "easy-table": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.1.tgz", - "integrity": "sha512-C9Lvm0WFcn2RgxbMnTbXZenMIWcBtkzMr+dWqq/JsVoGFSVUVlPqeOa5LP5kM0I3zoOazFpckOEb2/0LDFfToQ==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "wcwidth": ">=1.0.1" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "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 - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", - "dev": true, - "requires": { - "jake": "^10.6.1" - } - }, - "electron-to-chromium": { - "version": "1.3.723", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.723.tgz", - "integrity": "sha512-L+WXyXI7c7+G1V8ANzRsPI5giiimLAUDC6Zs1ojHHPhYXb3k/iTABFmWjivEtsWrRQymjnO66/rO2ZTABGdmWg==", - "dev": true - }, - "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 - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "env-cmd": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", - "integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==", - "dev": true, - "requires": { - "commander": "^4.0.0", - "cross-spawn": "^7.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-dev-server": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-dev-server/-/es-dev-server-2.1.0.tgz", - "integrity": "sha512-Vrq/4PyMzWz33QmOdSncvoWLTJVcv2e96z8FLHQwP9zK7DyLeDZCckII8VTW+btUGtM7aErvLH/d/R2pjjjs8w==", - "dev": true, - "requires": { - "@babel/core": "^7.11.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/preset-env": "^7.9.0", - "@koa/cors": "^3.1.0", - "@open-wc/building-utils": "^2.18.3", - "@rollup/plugin-node-resolve": "^11.0.0", - "@rollup/pluginutils": "^3.0.0", - "@types/babel__core": "^7.1.3", - "@types/browserslist": "^4.8.0", - "@types/browserslist-useragent": "^3.0.0", - "@types/caniuse-api": "^3.0.0", - "@types/command-line-args": "^5.0.0", - "@types/command-line-usage": "^5.0.1", - "@types/debounce": "^1.2.0", - "@types/koa": "^2.0.48", - "@types/koa__cors": "^3.0.1", - "@types/koa-compress": "^2.0.9", - "@types/koa-etag": "^3.0.0", - "@types/koa-static": "^4.0.1", - "@types/lru-cache": "^5.1.0", - "@types/mime-types": "^2.1.0", - "@types/minimatch": "^3.0.3", - "@types/path-is-inside": "^1.0.0", - "@types/whatwg-url": "^6.4.0", - "browserslist": "^4.9.1", - "browserslist-useragent": "^3.0.2", - "builtin-modules": "^3.1.0", - "camelcase": "^5.3.1", - "caniuse-api": "^3.0.0", - "caniuse-lite": "^1.0.30001033", - "chokidar": "^3.0.0", - "command-line-args": "^5.0.2", - "command-line-usage": "^6.1.0", - "debounce": "^1.2.0", - "deepmerge": "^4.2.2", - "es-module-lexer": "^0.3.13", - "get-stream": "^5.1.0", - "is-stream": "^2.0.0", - "isbinaryfile": "^4.0.2", - "koa": "^2.7.0", - "koa-compress": "^3.0.0", - "koa-etag": "^3.0.0", - "koa-static": "^5.0.0", - "lru-cache": "^5.1.1", - "mime-types": "^2.1.27", - "minimatch": "^3.0.4", - "open": "^7.0.3", - "parse5": "^5.1.1", - "path-is-inside": "^1.0.2", - "polyfills-loader": "^1.7.4", - "portfinder": "^1.0.21", - "rollup": "^2.7.2", - "strip-ansi": "^5.2.0", - "systemjs": "^6.3.1", - "tslib": "^1.11.1", - "useragent": "^2.3.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "es-module-lexer": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", - "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", - "dev": true - }, - "es-module-shims": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/es-module-shims/-/es-module-shims-0.4.7.tgz", - "integrity": "sha512-0LTiSQoPWwdcaTVIQXhGlaDwTneD0g9/tnH1PNs3zHFFH+xoCeJclDM3rQeqF9nurXPfMKm3l9+kfPRa5VpbKg==", - "dev": true - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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 - }, - "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 - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "requires": { - "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "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 - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", - "dev": true - }, - "filelist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", - "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true - }, - "filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "dev": true, - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.0", - "trim-repeated": "^1.0.0" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "requires": { - "array-back": "^3.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - } - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "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 - }, - "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 - }, - "get-intrinsic": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", - "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-proxy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", - "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "dev": true, - "requires": { - "npm-conf": "^1.1.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "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 - }, - "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "got": { - "version": "11.8.1", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", - "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.1", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "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 - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - } - }, - "http-assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz", - "integrity": "sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw==", - "dev": true, - "requires": { - "deep-equal": "~1.0.1", - "http-errors": "~1.7.2" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - } - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2-wrapper": { - "version": "1.0.0-beta.5.2", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", - "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "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, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "intersection-observer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.7.0.tgz", - "integrity": "sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg==", - "dev": true - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "inversify": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.5.tgz", - "integrity": "sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "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, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true - }, - "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, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "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 - }, - "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 - }, - "is-generator-function": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", - "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", - "dev": true - }, - "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, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "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 - }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true - }, - "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 - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-beautify": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.4.tgz", - "integrity": "sha512-M5yEWwonlEO3kPcCZ3K3KBSpFRZAEO3FAWC6wtbIGeyg7dusStxvF0WG+HRLBoMZqREXSRSxkkqClDE865x1sg==", - "dev": true, - "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "^1.0.4", - "nopt": "^5.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "requires": { - "tsscmp": "1.0.6" - } - }, - "keyv": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", - "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.3.tgz", - "integrity": "sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw==", - "dev": true - }, - "koa": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.1.tgz", - "integrity": "sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w==", - "dev": true, - "requires": { - "accepts": "^1.3.5", - "cache-content-type": "^1.0.0", - "content-disposition": "~0.5.2", - "content-type": "^1.0.4", - "cookies": "~0.8.0", - "debug": "~3.1.0", - "delegates": "^1.0.0", - "depd": "^2.0.0", - "destroy": "^1.0.4", - "encodeurl": "^1.0.2", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.3.0", - "http-errors": "^1.6.3", - "is-generator-function": "^1.0.7", - "koa-compose": "^4.1.0", - "koa-convert": "^1.2.0", - "on-finished": "^2.3.0", - "only": "~0.0.2", - "parseurl": "^1.3.2", - "statuses": "^1.5.0", - "type-is": "^1.6.16", - "vary": "^1.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true - }, - "koa-compress": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-3.1.0.tgz", - "integrity": "sha512-0m24/yS/GbhWI+g9FqtvStY+yJwTObwoxOvPok6itVjRen7PBWkjsJ8pre76m+99YybXLKhOJ62mJ268qyBFMQ==", - "dev": true, - "requires": { - "bytes": "^3.0.0", - "compressible": "^2.0.0", - "koa-is-json": "^1.0.0", - "statuses": "^1.0.0" - } - }, - "koa-convert": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", - "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", - "dev": true, - "requires": { - "co": "^4.6.0", - "koa-compose": "^3.0.0" - }, - "dependencies": { - "koa-compose": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", - "dev": true, - "requires": { - "any-promise": "^1.1.0" - } - } - } - }, - "koa-etag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-3.0.0.tgz", - "integrity": "sha1-nvc4Ld1agqsN6xU0FckVg293HT8=", - "dev": true, - "requires": { - "etag": "^1.3.0", - "mz": "^2.1.0" - } - }, - "koa-is-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", - "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=", - "dev": true - }, - "koa-send": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", - "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "http-errors": "^1.7.3", - "resolve-path": "^1.4.0" - } - }, - "koa-static": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", - "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "koa-send": "^5.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "lit-element": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.4.0.tgz", - "integrity": "sha512-pBGLglxyhq/Prk2H91nA0KByq/hx/wssJBQFiYqXhGDvEnY31PRGYf1RglVzyLeRysu0IHm2K0P196uLLWmwFg==", - "requires": { - "lit-html": "^1.1.1" - } - }, - "lit-html": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.0.tgz", - "integrity": "sha512-cgaqPSgqHRaTH/P1DnWD/dQxudtrHqD0xo1AoyOGJZir2rXgsvTg77z6Pitwk9B+kL23EakD62HV3x8sT01aWQ==" - }, - "lit-ntml": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/lit-ntml/-/lit-ntml-2.18.0.tgz", - "integrity": "sha512-TRRBSADH5yaVl269ypt6PdF29d8iC0TOmXPmTP1cUYFdhYKQ7kMNH1mNg0ZrzZDZzrLMwbQkWf/rICO4QSPaeg==", - "requires": { - "parse5": "^6.0.1", - "tslib": "^2.0.2" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "log-update": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.4.0.tgz", - "integrity": "sha512-ILKe88NeMt4gmDvk/eb615U/IVn7K9KWGkoYbdatQ69Z65nj1ZzjM6fHXfcs0Uge+e+EGnMW7DY4T9yko8vWFg==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - } - } - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, - "loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", - "dev": true - }, - "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "dev": true, - "requires": { - "mime-db": "1.45.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "nodemod": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/nodemod/-/nodemod-2.7.2.tgz", - "integrity": "sha512-+aGsXURjJIiNH0nsphBFw5Bt+4uzmtrNQ3XP3DdeUfYBo+4GMsPbdn1tr/B322R9fy3xZSAakPtEyMCApn/U2Q==", - "requires": { - "@types/parse5": "^5.0.2", - "@types/prismjs": "^1.16.0", - "lit-ntml": "^2.16.1", - "normalize-diacritics": "^2.11.1", - "tslib": "^2.1.0" - } - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-diacritics": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/normalize-diacritics/-/normalize-diacritics-2.13.0.tgz", - "integrity": "sha512-2YE92pRgW1/zOUkXDvzimlvf9wfmPhsw3trbYjNZzoMQaIm2/7MbNOn10Uf77q1W2o9BnRQrQnzTmp4nD/7Saw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", - "dev": true - }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, - "os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "requires": { - "arch": "^2.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", - "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", - "dev": true - }, - "p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "dev": true, - "requires": { - "p-timeout": "^2.0.1" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "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, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "polyfills-loader": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/polyfills-loader/-/polyfills-loader-1.7.6.tgz", - "integrity": "sha512-AiLIgmGFmzcvsqewyKsqWb7H8CnWNTSQBoM0u+Mauzmp0DsjObXmnZdeqvTn0HNwc1wYHHTOta82WjSjG341eQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.1", - "@open-wc/building-utils": "^2.18.3", - "@webcomponents/webcomponentsjs": "^2.4.0", - "abortcontroller-polyfill": "^1.4.0", - "core-js-bundle": "^3.6.0", - "deepmerge": "^4.2.2", - "dynamic-import-polyfill": "^0.1.1", - "es-module-shims": "^0.4.6", - "intersection-observer": "^0.7.0", - "parse5": "^5.1.1", - "regenerator-runtime": "^0.13.3", - "resize-observer-polyfill": "^1.5.1", - "systemjs": "^6.3.1", - "terser": "^4.6.7", - "whatwg-fetch": "^3.0.0" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - } - }, - "pretty-ms": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-6.0.1.tgz", - "integrity": "sha512-ke4njoVmlotekHlHyCZ3wI/c5AMT8peuHs8rKJqekj/oR5G8lND2dVpicFlUz5cbZgE290vvkMuDwfj/OcW1kw==", - "dev": true, - "requires": { - "parse-ms": "^2.1.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "pwa-helpers": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/pwa-helpers/-/pwa-helpers-0.9.1.tgz", - "integrity": "sha512-4sP/C9sSxQ3w80AATmvCEI3R+MHzCwr2RSZEbLyMkeJgV3cRk7ySZRUrQnBDSA7A0/z6dkYtjuXlkhN1ZFw3iA==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "reify": { - "version": "0.20.12", - "resolved": "https://registry.npmjs.org/reify/-/reify-0.20.12.tgz", - "integrity": "sha512-4BzKwDWyJJbukwI6xIJRh+BDTitoGzxdgYPiQQ1zbcTZW6I8xgHPw1DnVuEs/mEZQlYm1e09DcFSApb4UaR5bQ==", - "dev": true, - "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "magic-string": "^0.25.3", - "semver": "^5.4.1" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "dev": true - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "resolve-alpn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", - "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", - "dev": true, - "requires": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "dependencies": { - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "resq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.0.tgz", - "integrity": "sha512-hCUd0xMalqtPDz4jXIqs0M5Wnv/LZXN8h7unFOo4/nvExT9dDPbhwd3udRxLlp0HgBnHcV009UlduE9NZi7A6w==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rgb2hex": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.1.10.tgz", - "integrity": "sha512-vKz+kzolWbL3rke/xeTE2+6vHmZnNxGyDnaVW4OckntAIcc7DcZzWkQSfxMDwqHS8vhgySnIFyBUH7lIk6PxvQ==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.46.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.46.0.tgz", - "integrity": "sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sauce-connect-launcher-update": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/sauce-connect-launcher-update/-/sauce-connect-launcher-update-1.3.2.tgz", - "integrity": "sha512-apAhE+VSN0DgsbepqSb0xCPgnFu6YmOTkJAytPyu1oQU9t2MdAhMPJbhgBDAJzbIbesm9w8ZOTbfBKXW73rMAw==", - "dev": true, - "requires": { - "adm-zip": "^0.4.14", - "async": "^3.2.0", - "https-proxy-agent": "^5.0.0", - "lodash": "^4.17.15", - "rimraf": "^3.0.2" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - } - } - }, - "saucelabs": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-4.6.3.tgz", - "integrity": "sha512-LQEA7ENXq03MWs5sTbvRPlDiaR9PFEfqiMUHtiXEJQUGQ5JAmIXOB39/4hL3CUvZKZ2Bv7Ook6ZCDsqUFY7Vmw==", - "dev": true, - "requires": { - "bin-wrapper": "^4.1.0", - "change-case": "^4.1.1", - "form-data": "^3.0.0", - "got": "^11.7.0", - "hash.js": "^1.1.7", - "tunnel": "0.0.6", - "yargs": "^16.0.3" - }, - "dependencies": { - "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, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "seek-bzip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", - "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "dev": true, - "requires": { - "commander": "^2.8.1" - }, - "dependencies": { - "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 - } - } - }, - "selenium-standalone": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.23.0.tgz", - "integrity": "sha512-6dVLSEvbixd/MRSEmrcRQD8dmABrzNsxRqroKFQY+RVzm1JVPgGHIlo6qJzG6akfjc2V8SadHslE6lN4BFVM3w==", - "dev": true, - "requires": { - "commander": "^2.20.3", - "cross-spawn": "^7.0.3", - "debug": "^4.3.1", - "got": "^11.8.0", - "lodash.mapvalues": "^4.6.0", - "lodash.merge": "^4.6.2", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "progress": "2.0.3", - "tar-stream": "2.1.4", - "which": "^2.0.2", - "yauzl": "^2.10.0" - }, - "dependencies": { - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "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 - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - } - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-regex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.2.tgz", - "integrity": "sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "serialize-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", - "dev": true, - "requires": { - "type-fest": "^0.8.0" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shady-css-scoped-element": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/shady-css-scoped-element/-/shady-css-scoped-element-0.0.2.tgz", - "integrity": "sha512-Dqfl70x6JiwYDujd33ZTbtCK0t52E7+H2swdWQNSTzfsolSa6LJHnTpN4T9OpJJEq4bxuzHRLFO9RBcy/UfrMQ==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shx": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz", - "integrity": "sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==", - "dev": true, - "requires": { - "minimist": "^1.2.3", - "shelljs": "^0.8.4" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "dev": true, - "requires": { - "sort-keys": "^1.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-buffers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", - "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - }, - "dependencies": { - "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 - } - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, - "requires": { - "is-natural-number": "^4.0.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "systemjs": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.8.3.tgz", - "integrity": "sha512-UcTY+FEA1B7e+bpJk1TI+a9Na6LG7wFEqW7ED16cLqLuQfI/9Ri0rsXm3tKlIgNoHyLHZycjdAOijzNbzelgwA==", - "dev": true - }, - "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "dependencies": { - "array-back": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", - "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==", - "dev": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "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 - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, + "lit": { + "version": "2.0.0-rc.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.1.tgz", + "integrity": "sha512-cf4r18feMhu56sO963a5MaHUn6OX2Am9sj9lzyGTYx2IPDhC9NP/Xh4rj9Ialo9dA+lI4brD7+9cxSzRIWHOmw==", "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" + "@lit/reactive-element": "^1.0.0-rc.1", + "lit-element": "^3.0.0-rc.1", + "lit-html": "^2.0.0-rc.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "lit-element": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.0-rc.1.tgz", + "integrity": "sha512-SQH7LODMy+42UTOGiyHUTXronvv8Cud0Y/8Q8/1jd/9Putuh66GjN7FEjyNRxVbpIygnPqMbG854J9Ct9IJlFw==", "requires": { - "color-name": "1.1.3" + "@lit/reactive-element": "^1.0.0-rc.1", + "lit-html": "^2.0.0-rc.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "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 - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "lit-html": { + "version": "2.0.0-rc.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.0-rc.2.tgz", + "integrity": "sha512-rl3vtIQ0jq6r0GVbg+57Et9ra+iNhiz/v5V7uPTb6VxnjJaCCYKI7WkzKNlyzjMM2N/ytih3Uxb5vyyaOpjb0Q==", "requires": { - "has-flag": "^3.0.0" + "@types/trusted-types": "^1.0.1" } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true } } }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, + "lit-ntml": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/lit-ntml/-/lit-ntml-2.18.2.tgz", + "integrity": "sha512-5jJwlcFvamwzv55HFpNXpYTJRTXKpkLXZrr4gh+Vkj+3VrjbdpMOgZSKHpNZ5j/uVccEYTadM34UR9k++94lDw==", "requires": { - "safe-buffer": "^5.0.1" + "parse5": "^6.0.1", + "tslib": "^2.0.2" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "yallist": "^4.0.0" } }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "brace-expansion": "^1.1.7" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, + "nodemod": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/nodemod/-/nodemod-2.7.3.tgz", + "integrity": "sha512-N9BJ0/EadFYzgc4L31EMWWmMQDCPABJYfyaoYmWhdjB9ig2zQdh0GdbPbPEGchx1SHfcs85yXdohu9CxDotIfA==", "requires": { - "tslib": "^2.0.3" + "@types/parse5": "^5.0.2", + "@types/prismjs": "^1.16.0", + "lit-ntml": "^2.16.1", + "normalize-diacritics": "^2.11.1", + "tslib": "^2.1.0" } }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "normalize-diacritics": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/normalize-diacritics/-/normalize-diacritics-2.13.2.tgz", + "integrity": "sha512-LZL2gF7eakya7lIIqIHohYMsjLY4udTycCs7+RoLJozhaMSKFK77Mxqy9keb1lLkHiTTyAhoaueDaZQBzAuMkQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "tslib": "^2.0.3" + "wrappy": "1" } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "punycode": "^2.1.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "prepend-http": "^2.0.0" + "callsites": "^3.0.0" } }, - "url-to-options": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "glob": "^7.1.3" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "optional": true, "requires": { - "defaults": "^1.0.3" + "lru-cache": "^6.0.0" } }, - "webdriver": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-5.23.0.tgz", - "integrity": "sha512-r7IrbZ2SuTIRyWV8mv4a4hZoFcT9Qt4MznOkdRWPE1sPpZ8lyLZsIEjKCEbHelOzPwURqk+biwGrm4z2OZRAiw==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "@types/request": "^2.48.4", - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/protocols": "5.22.1", - "@wdio/utils": "5.23.0", - "lodash.merge": "^4.6.1", - "request": "^2.83.0" + "shebang-regex": "^3.0.0" } }, - "webdriverio": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-5.23.0.tgz", - "integrity": "sha512-hxt6Nuu2bBrTsVk7GfoFRTh63l4fRVXlK9U30RtPbHoWO5tcFdyUz2UTgeHEZ54ea1DQEVPfsgFiLnJULkWp1Q==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/repl": "5.23.0", - "@wdio/utils": "5.23.0", - "archiver": "^3.0.0", - "css-value": "^0.0.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "resq": "^1.6.0", - "rgb2hex": "^0.1.0", - "serialize-error": "^5.0.0", - "webdriver": "5.23.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "isexe": "^2.0.0" + "ansi-regex": "^5.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "dependencies": { - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true - } + "has-flag": "^4.0.0" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "table": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.6.0.tgz", + "integrity": "sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "ajv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.2.0.tgz", + "integrity": "sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA==", "dev": true, "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", "dev": true }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "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, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "punycode": "^2.1.0" } }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } + "isexe": "^2.0.0" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, - "ylru": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", - "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true } } } diff --git a/package.json b/package.json index 27e62ce32..f9e669121 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,20 @@ { "name": "app-datepicker", - "version": "4.5.1", - "description": "A custom datepicker element based on Google's Material Design built from scratch with lit-element", + "version": "5.0.0-rc.0", + "description": "Google Material Design based date picker built with lit", "keywords": [ + "buildwithlit", "cal", "calendar", - "date", "date-picker", + "date", "datepicker", "lit-element", "lit-html", + "lit", "picker", + "polymer-project", + "polymer", "web-component", "web-components" ], @@ -48,66 +52,30 @@ "dist/helpers/*.d.ts" ], "scripts": { - "build": "tsc -p tsconfig.json", - "build:clean": "npm run lint && npm run clean && npm run build:test", - "build:config": "tsc -p tsconfig.wdio.json", - "build:prod": "tsc -p tsconfig.prod.json", - "build:test": "tsc -p tsconfig.test.json", + "build": "tsc -p tsconfig.prod.json", "check": "package-check", "clean": "shx rm -rf dist/ src/tests/snapshots/*.png logs/ .*cache *.log", "lint": "tslint --project tsconfig.json --config tslint.prod.json --format stylish", "lint:dev": "tslint --config tslint.json --project tsconfig.json --format stylish", "prepublishOnly": "npm run lint && npm run build:prod", "serve": "es-dev-server --watch --port 3000 --node-resolve --dedupe", - "test": "npm run build:config && npm run test:dev", - "test:clean": "npm run build:clean && npm t", - "test:dev": "node ./run-tests.js --config-file ./dist/tests/wdio.config.js", - "test:sl": "npm run build:config && env-cmd -f ./.env npm run test:sl:dev", - "test:sl:clean": "npm run build:clean && npm run test:sl", - "test:sl:dev": "node ./run-tests.js --config-file ./dist/tests/wdio.sl.config.js", "ts": "tsc", "watch": "tsc --watch" }, - "husky": { - "hooks": { - "pre-commit": "npm run check && npm run lint && tsc --noEmit" - } - }, "dependencies": { - "@material/mwc-button": "^0.20.0", - "lit-element": "^2.4.0", - "lit-html": "^1.4.0", - "nodemod": "^2.7.2", - "tslib": "^2.0.3" + "lit": "^2.0.0-rc.1", + "nodemod": "^2.7.3", + "tslib": "^2.2.0" }, "devDependencies": { "@reallyland/tsconfig": "^3.0.2", - "@reallyland/tslint-config": "^1.1.1", "@skypack/package-check": "^0.2.2", - "@types/mocha": "^7.0.2", - "@types/pretty": "^2.0.0", - "@types/request": "^2.48.5", - "@wdio/cli": "^5.23.0", - "@wdio/local-runner": "^5.23.0", - "@wdio/mocha-framework": "^5.23.0", - "@wdio/sauce-service": "^5.22.1", - "@wdio/selenium-standalone-service": "^5.16.10", - "@wdio/spec-reporter": "^5.23.0", - "axe-core": "^4.0.2", - "env-cmd": "^10.1.0", - "es-dev-server": "^2.1.0", - "husky": "^4.3.0", - "pretty": "^2.0.0", - "pwa-helpers": "^0.9.1", - "reify": "^0.20.12", - "shx": "^0.3.2", - "tslint": "^6.1.3", - "typescript": "^4.0.3", - "webdriverio": "^5.23.0" + "eslint": "^7.25.0", + "typescript": "^4.2.4" }, "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4" + "node": ">= 14.16.1", + "npm": ">= 6.14.12" }, "publishConfig": { "access": "public" diff --git a/run-tests.js b/run-tests.js deleted file mode 100644 index 9ad20dad8..000000000 --- a/run-tests.js +++ /dev/null @@ -1,119 +0,0 @@ -const { createConfig, startServer } = require('es-dev-server'); -const { performance } = require('perf_hooks'); -const Launcher = require('@wdio/cli').default; - -function debug(message, ...args) { - const timestamp = new Date().toJSON() - .replace('T', ' ') - .replace('Z', '') - - console.debug( - `[${timestamp}] ${message}`, - ...args - ); -} - -function to3Dp(x) { - return Math.floor(x * 1e3) / 1e3; -} - -function toHumanTime(timestamp) { - if (timestamp < 1e3) return `${timestamp}ms`; - if (timestamp < (1e3 * 60)) return `${to3Dp(timestamp / 1e3)}s`; - if (timestamp < (1e3 * 60 * 60)) return `${to3Dp(timestamp / (1e3 * 60))}m`; - if (timestamp < (1e3 * 60 * 60 * 24)) return `${to3Dp(timestamp / (1e3 * 60 * 60))}h`; - - return `${to3Dp(timestamp / (1e3 * 60 * 60 * 24))}`; -} - -function readArg(argName) { - const args = process.argv; - const configFileIdx = process.argv.findIndex(n => n === argName); - - if (configFileIdx < 0 || configFileIdx === args.length - 1) { - throw new Error(`${argName} is not defined`); - } - - return args[configFileIdx + 1]; -} - -async function main() { - /** - * Not all ports are supported by Sauce Connect Proxy. - * - * @see https://wiki.saucelabs.com/display/DOCS/Sauce+Connect+Proxy+FAQs, - */ - const PORT = process.env.PORT || 4000; - const mainStartAt = performance.now(); - const config = createConfig({ - port: PORT, - nodeResolve: true, - logStartup: false, - logCompileErrors: false, - logErrorsToBrowser: true, - // babel = false, - // babelConfig, - // babelExclude = [], - // babelModernExclude = [], - // babelModuleExclude = [], - // basePath, - // compress = true, - // fileExtensions = [], - // hostname, - // http2 = false, - // logStartup, - // moduleDirs = ['node_modules'], - // nodeResolve = false, - // open = false, - // port, - // preserveSymlinks = false, - // sslCert, - // sslKey, - // watch = false, - // logErrorsToBrowser = false, - // polyfills = _constants.polyfillsModes.AUTO, - // responseTransformers, - // debug = false - }); - - const { server } = await startServer(config); - const gracefulShutdown = (code) => { - server.close((err) => { - const mainDuration = performance.now() - mainStartAt; - - debug(`Finished in ${toHumanTime(mainDuration)}`); - - if (err) console.error(`[ERROR] Failed to close server`, err); - else { - debug(`Server closed`); - } - - process.exit(code); - }); - - // force shutdown after 15s timeout - setTimeout(() => { - debug(`Could not close server in time, forcefully shutting down`); - process.exit(code); - }, (15e3)); - }; - - debug(`es-dev-server running at port ${PORT}...`); - - [ - 'SIGTERM', // kill - 'SIGINT', // Ctrl or Cmd + C - ].forEach(n => process.on(n, gracefulShutdown)); - - const wdio = new Launcher(readArg('--config-file')); - const code = await wdio.run(); - - debug(`Completed. Closing server...`); - - gracefulShutdown(code); -} - -main().catch((err) => { - console.error('Fail to run tests', err); - process.exit(1); -}); diff --git a/src/app-datepicker-dialog.ts b/src/app-datepicker-dialog.ts deleted file mode 100644 index 9e613ce9a..000000000 --- a/src/app-datepicker-dialog.ts +++ /dev/null @@ -1,12 +0,0 @@ -import './app-datepicker.js'; -import { DATEPICKER_DIALOG_NAME } from './constants.js'; -import { DatepickerDialog } from './datepicker-dialog.js'; -import { customElementsDefine } from './helpers/custom-elements-define.js'; - -customElementsDefine(DATEPICKER_DIALOG_NAME, DatepickerDialog); - -declare global { - interface HTMLElementTagNameMap { - 'app-datepicker-dialog': DatepickerDialog; - } -} diff --git a/src/app-datepicker-icons.ts b/src/app-datepicker-icons.ts deleted file mode 100644 index e5267be89..000000000 --- a/src/app-datepicker-icons.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { html } from 'lit-element'; - -// tslint:disable:max-line-length -export const iconChevronLeft = html``; -export const iconChevronRight = html``; -// tslint:enable:max-line-length diff --git a/src/app-datepicker.ts b/src/app-datepicker.ts deleted file mode 100644 index f281881a2..000000000 --- a/src/app-datepicker.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DATEPICKER_NAME } from './constants.js'; -import { Datepicker } from './datepicker.js'; -import { customElementsDefine } from './helpers/custom-elements-define.js'; - -customElementsDefine(DATEPICKER_NAME, Datepicker); - -declare global { - interface HTMLElementTagNameMap { - 'app-datepicker': Datepicker; - } -} diff --git a/src/common-styles.ts b/src/common-styles.ts deleted file mode 100644 index b3cb15cef..000000000 --- a/src/common-styles.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { css } from 'lit-element'; - -export const resetButton = css` -button { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - - position: relative; - display: block; - margin: 0; - padding: 0; - background: none; /** NOTE: IE11 fix */ - color: inherit; - border: none; - font: inherit; - text-align: left; - text-transform: inherit; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -`; -export const resetAnchor = css` -a { - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - - position: relative; - display: inline-block; - background: initial; - color: inherit; - font: inherit; - text-transform: inherit; - text-decoration: none; - outline: none; -} -a:focus, -a:focus.page-selected { - text-decoration: underline; -} -`; -export const resetSvgIcon = css` -svg { - display: block; - min-width: var(--svg-icon-min-width, 24px); - min-height: var(--svg-icon-min-height, 24px); - fill: var(--svg-icon-fill, currentColor); - pointer-events: none; -} -`; -export const absoluteHidden = css`[hidden] { display: none !important; }`; -export const datepickerVariables = css` -:host { - display: block; - - /* --app-datepicker-width: 300px; */ - /* --app-datepicker-primary-color: #4285f4; */ - /* --app-datepicker-header-height: 80px; */ -} - -* { - box-sizing: border-box; -} -`; diff --git a/src/constants.ts b/src/constants.ts deleted file mode 100644 index 89b870767..000000000 --- a/src/constants.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { KEY_CODES_MAP } from './custom_typings.js'; - -export const INTL_DATE_TIME_FORMAT = Intl && Intl.DateTimeFormat; - -const UP_KEYS = [ - KEY_CODES_MAP.ARROW_UP, - KEY_CODES_MAP.PAGE_UP, - KEY_CODES_MAP.HOME, -]; -const DOWN_KEYS = [ - KEY_CODES_MAP.ARROW_DOWN, - KEY_CODES_MAP.PAGE_DOWN, - KEY_CODES_MAP.END, -]; - -export const PREV_KEY_CODES_SET = new Set([KEY_CODES_MAP.ARROW_LEFT, ...UP_KEYS]); -export const NEXT_KEY_CODES_SET = new Set([KEY_CODES_MAP.ARROW_RIGHT, ...DOWN_KEYS]); -export const NEXT_DAY_KEY_CODES_SET = new Set([KEY_CODES_MAP.ARROW_RIGHT, ...UP_KEYS]); -export const PREV_DAY_KEY_CODES_SET = new Set([KEY_CODES_MAP.ARROW_LEFT, ...DOWN_KEYS]); -export const ALL_NAV_KEYS_SET = new Set([ - KEY_CODES_MAP.ARROW_LEFT, - KEY_CODES_MAP.ARROW_RIGHT, - ...UP_KEYS, - ...DOWN_KEYS, -]); - -export const DATEPICKER_NAME = 'app-datepicker'; -export const DATEPICKER_DIALOG_NAME = 'app-datepicker-dialog'; diff --git a/src/custom_typings.ts b/src/custom_typings.ts deleted file mode 100644 index 4c47a332c..000000000 --- a/src/custom_typings.ts +++ /dev/null @@ -1,95 +0,0 @@ -import type { DateTimeFormatter } from 'nodemod/dist/calendar/calendar_typing.js'; - -// #region TS helpers -export type Nullable = { - [P in keyof T]: T[P] | null; -}; -// #endregion TS helpers - -// #region part attribute -type HTMLButtonElementPart = - | 'calendar-selector' - | 'month-selector' - | 'year-selector' - | 'year'; -type HTMLDivElementPart = - | 'actions' - | 'body' - | 'calendar-view' - | 'calendar' - | 'calendars' - | 'day' - | 'dialog-content' - | 'header' - | 'label' - | 'month-selectors' - | 'scrim' - | 'toolbar' - | 'weekday' - | 'year-list-view' - | 'year-list'; -type HTMLElementMWCButtonPart = - | 'clear' - | 'confirm' - | 'dismiss'; -type HTMLTableCellElementPart = /** Both td and th have the same instance */ - | 'calendar-day' - | 'calendar-weekday'; -type HTMLTableElementPart = 'table'; -type HTMLTableRowElementPart = 'weekdays'; -export type HTMLElementPart = - | HTMLButtonElementPart - | HTMLDivElementPart - | HTMLElementMWCButtonPart - | HTMLTableCellElementPart - | HTMLTableElementPart - | HTMLTableRowElementPart; -// #endregion part attribute - -export type StartView = 'calendar' | 'yearList'; - -export type MonthUpdateType = 'previous' | 'next'; - -export interface Formatters { - dayFormat: DateTimeFormatter; - fullDateFormat: DateTimeFormatter; - longWeekdayFormat: DateTimeFormatter; - narrowWeekdayFormat: DateTimeFormatter; - longMonthYearFormat: DateTimeFormatter; - dateFormat: DateTimeFormatter; - yearFormat: DateTimeFormatter; - - locale: string; -} - -export const enum KEY_CODES_MAP { - // CTRL = 17, - // ALT = 18, - ESCAPE = 27, - SHIFT = 16, - TAB = 9, - ENTER = 13, - SPACE = 32, - PAGE_UP = 33, - PAGE_DOWN = 34, - END = 35, - HOME = 36, - ARROW_LEFT = 37, - ARROW_UP = 38, - ARROW_RIGHT = 39, - ARROW_DOWN = 40, -} - -export interface FocusTrap { - disconnect(): void; -} - -export interface DatepickerValueUpdated { - isKeypress: boolean; - keyCode?: KEY_CODES_MAP; - value: string; -} - -export interface DatepickerFirstUpdated extends Pick { - firstFocusableElement: HTMLElement; -} diff --git a/src/datepicker-dialog.ts b/src/datepicker-dialog.ts deleted file mode 100644 index b7787e587..000000000 --- a/src/datepicker-dialog.ts +++ /dev/null @@ -1,378 +0,0 @@ -export interface DatepickerDialogClosed extends Pick { - opened: boolean; -} -export type DatepickerDialogOpened = DatepickerDialogClosed & DatepickerFirstUpdated; - -import '@material/mwc-button/mwc-button.js'; -import { css, html, LitElement, property, query } from 'lit-element'; - -import type { WeekNumberType } from 'nodemod/dist/calendar/calendar_typing.js'; -import { datepickerVariables } from './common-styles.js'; -import type { - DatepickerFirstUpdated, - DatepickerValueUpdated, - FocusTrap, - HTMLElementPart, - StartView, -} from './custom_typings.js'; -import { KEY_CODES_MAP } from './custom_typings.js'; -import type { Datepicker } from './datepicker.js'; -import { animateElement } from './helpers/animate-element.js'; -import { dispatchCustomEvent } from './helpers/dispatch-custom-event.js'; -import { getResolvedDate } from './helpers/get-resolved-date.js'; -import { getResolvedLocale } from './helpers/get-resolved-locale.js'; -import { setFocusTrap } from './helpers/set-focus-trap.js'; -import { toFormattedDateString } from './helpers/to-formatted-date-string.js'; - -export class DatepickerDialog extends LitElement { - static get styles() { - // tslint:disable: max-line-length - return [ - datepickerVariables, - css` - :host { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - display: none; - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - pointer-events: none; - z-index: var(--app-datepicker-dialog-z-index, 24); - -webkit-tap-highlight-color: rgba(0,0,0,0); - } - - .scrim, - .content-container { - pointer-events: auto; - } - - .scrim { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: var(--app-datepicker-dialog-scrim-bg-color, rgba(0, 0, 0, .55)); - visibility: hidden; - z-index: 22; - } - - .content-container { - position: absolute; - top: 50%; - left: 50%; - max-width: 100%; - max-height: 100%; - background-color: var(--app-datepicker-bg-color, #fff); - transform: translate3d(-50%, -50%, 0); - border-radius: var(--app-datepicker-dialog-border-radius, 8px); - will-change: transform, opacity; - overflow: hidden; - visibility: hidden; - opacity: 0; - z-index: 23; - box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), - 0 9px 46px 8px rgba(0, 0, 0, 0.12), - 0 11px 15px -7px rgba(0, 0, 0, 0.4); - } - - .datepicker { - --app-datepicker-border-top-left-radius: 8px; - --app-datepicker-border-top-right-radius: 8px; - } - - .actions-container { - display: flex; - align-items: center; - justify-content: flex-end; - - margin: 0; - padding: 12px; - background-color: inherit; - --mdc-theme-primary: var(--app-datepicker-accent-color, #1a73e8); - } - - mwc-button[dialog-confirm] { - margin: 0 0 0 8px; - } - - .clear { - margin: 0 auto 0 0; - } - - /** - * NOTE: IE11-only fix via CSS hack. - * Visit https://bit.ly/2DEUNZu|CSS for more relevant browsers' hacks. - */ - @media screen and (-ms-high-contrast: none) { - mwc-button[dialog-dismiss] { - min-width: 10ch; - } - } - `, - ]; - // tslint:enable: max-line-length - } - - @property({ type: Number, reflect: true }) - public firstDayOfWeek: number = 0; - - @property({ type: Boolean, reflect: true }) - public showWeekNumber: boolean = false; - - @property({ type: String, reflect: true }) - public weekNumberType: WeekNumberType = 'first-4-day-week'; - - @property({ type: Boolean, reflect: true }) - public landscape: boolean = false; - - @property({ type: String, reflect: true }) - public startView: StartView = 'calendar'; - - @property({ type: String, reflect: true }) - public min?: string; - - @property({ type: String, reflect: true }) - public max?: string; - - @property({ type: String }) - public value: string = toFormattedDateString(getResolvedDate()); - - @property({ type: String }) - public locale: string = getResolvedLocale(); - - @property({ type: String }) - public disabledDays: string = ''; - - @property({ type: String }) - public disabledDates?: string; - - @property({ type: String }) - public weekLabel: string = 'Wk'; - - @property({ type: Number }) - public dragRatio: number = .15; - - @property({ type: String }) - public clearLabel: string = 'clear'; - - @property({ type: String }) - public dismissLabel: string = 'cancel'; - - @property({ type: String }) - public confirmLabel: string = 'set'; - - @property({ type: Boolean }) - public noFocusTrap: boolean = false; - - @property({ type: Boolean }) - public alwaysResetValue: boolean = false; - - @query('.content-container') - private _contentContainer?: HTMLDivElement; - - @query('mwc-button[dialog-confirm]') - private _dialogConfirm?: HTMLElement; - - private _hasNativeWebAnimation: boolean = 'animate' in HTMLElement.prototype; - private _focusable?: HTMLElement; - private _focusTrap?: FocusTrap; - private _opened: boolean = false; - - public async open(): Promise { - await this.updateComplete; - - if (this._opened) return; - - this.removeAttribute('aria-hidden'); - this.style.display = 'block'; - this._opened = true; - - if (this.alwaysResetValue && this._datepicker) this._datepicker.value = this.value; - - await this.requestUpdate(); - - const contentContainer = this._contentContainer!; - - this._scrim!.style.visibility = contentContainer.style.visibility = 'visible'; - - await animateElement(contentContainer, { - hasNativeWebAnimation: this._hasNativeWebAnimation, - keyframes: [ - { opacity: '0' }, - { opacity: '1' }, - ], - }); - - contentContainer.style.opacity = '1'; - - const focusable = this._focusable!; - - if (!this.noFocusTrap) { - this._focusTrap = setFocusTrap(this, [focusable, this._dialogConfirm!])!; - } - - focusable.focus(); - - dispatchCustomEvent(this, 'datepicker-dialog-opened', { - firstFocusableElement: focusable, - opened: true, - value: this.value, - }); - } - - public async close(): Promise { - await this.updateComplete; - - if (!this._opened) return; - - this._opened = false; - this._scrim!.style.visibility = ''; - - const contentContainer = this._contentContainer!; - - await animateElement(contentContainer, { - hasNativeWebAnimation: this._hasNativeWebAnimation, - keyframes: [ - { opacity: '1' }, - { opacity: '0' }, - ], - }); - - contentContainer.style.opacity = - contentContainer.style.visibility = ''; - - this.setAttribute('aria-hidden', 'true'); - this.style.display = 'none'; - - if (!this.noFocusTrap) this._focusTrap!.disconnect(); - - dispatchCustomEvent( - this, 'datepicker-dialog-closed', { opened: false, value: this.value }); - } - - protected shouldUpdate() { - return !this.hasAttribute('aria-hidden'); - } - - protected firstUpdated() { - this.setAttribute('role', 'dialog'); - this.setAttribute('aria-label', 'datepicker'); - this.setAttribute('aria-modal', 'true'); - this.setAttribute('aria-hidden', 'true'); - this.addEventListener('keyup', (ev: KeyboardEvent) => { - if (ev.keyCode === KEY_CODES_MAP.ESCAPE) this.close(); - }); - - dispatchCustomEvent(this, 'datepicker-dialog-first-updated', { - value: this.value, - firstFocusableElement: this._focusable!, - }); - } - - // tslint:disable-next-line: function-name - protected _getUpdateComplete() { - const datepicker = this._datepicker; - - return ( - datepicker ? datepicker.updateComplete : Promise.resolve() - ).then(() => super._getUpdateComplete()); - } - - protected render() { - return html` -
- - ${this._opened ? html`
- - -
- ${this.clearLabel} - - ${this.dismissLabel} - ${this.confirmLabel} -
-
` : null} - `; - } - - private _padStart(val: number) { - return `0${val}`.slice(-2); - } - - private _setToday() { - const today = getResolvedDate(); - const fy = today.getFullYear(); - const m = today.getMonth(); - const d = today.getDate(); - - this._datepicker!.value = [`${fy}`].concat([1 + m, d].map(this._padStart)).join('-'); - } - - private _updateValue() { - this.value = this._datepicker!.value; - } - - private _update() { - this._updateValue(); - - return this.close(); - } - - private _updateWithKey(ev: CustomEvent) { - const { isKeypress, keyCode } = ev.detail; - - if (!isKeypress || keyCode !== KEY_CODES_MAP.ENTER && keyCode !== KEY_CODES_MAP.SPACE) return; - - return this._update(); - } - - private _setFocusable(ev: CustomEvent) { - this._focusable = ev.detail && ev.detail.firstFocusableElement; - this._updateValue(); - } - - private get _datepicker() { - return this.shadowRoot!.querySelector('.datepicker'); - } - - private get _scrim() { - return this.shadowRoot!.querySelector('.scrim'); - } - -} - -declare global { - // #region HTML element type extension - interface HTMLElement { - part: HTMLElementPart; - } - // #endregion HTML element type extension - - interface HTMLElementEventMap { - 'datepicker-dialog-closed': CustomEvent; - 'datepicker-dialog-first-updated': CustomEvent; - 'datepicker-dialog-opened': CustomEvent; - } -} diff --git a/src/datepicker.ts b/src/datepicker.ts deleted file mode 100644 index 45227724f..000000000 --- a/src/datepicker.ts +++ /dev/null @@ -1,1236 +0,0 @@ -interface ParamUpdatedChanged extends Omit { - _selectedDate: Date; - _focusedDate: Date; - _startView: StartView; -} - -import { - css, - eventOptions, - html, - LitElement, - property, - query, - TemplateResult, -} from 'lit-element'; -import { cache } from 'lit-html/directives/cache.js'; -import { classMap } from 'lit-html/directives/class-map.js'; -import { repeat } from 'lit-html/directives/repeat.js'; - -import type { WeekNumberType } from 'nodemod/dist/calendar/calendar_typing.js'; -import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; -import { iconChevronLeft, iconChevronRight } from './app-datepicker-icons.js'; -import { datepickerVariables, resetButton } from './common-styles.js'; -import { ALL_NAV_KEYS_SET } from './constants.js'; -import type { - DatepickerFirstUpdated, - DatepickerValueUpdated, - Formatters, - HTMLElementPart, - MonthUpdateType, - StartView, -} from './custom_typings.js'; -import { KEY_CODES_MAP } from './custom_typings.js'; -import { animateElement } from './helpers/animate-element.js'; -import { computeNextFocusedDate } from './helpers/compute-next-focus-date.js'; -import { dispatchCustomEvent } from './helpers/dispatch-custom-event.js'; -import { findShadowTarget } from './helpers/find-shadow-target.js'; -import { getDateRange } from './helpers/get-date-range.js'; -import { getFormatters } from './helpers/get-formatters.js'; -import { getMultiCalendars } from './helpers/get-multi-calendars.js'; -import { getResolvedDate } from './helpers/get-resolved-date.js'; -import { getResolvedLocale } from './helpers/get-resolved-locale.js'; -import { hasClass } from './helpers/has-class.js'; -import { isValidDate } from './helpers/is-valid-date.js'; -import { makeNumberPrecise } from './helpers/make-number-precise.js'; -import { passiveHandler } from './helpers/passive-handler.js'; -import { splitString } from './helpers/split-string.js'; -import { targetScrollTo } from './helpers/target-scroll-to.js'; -import { toFormattedDateString } from './helpers/to-formatted-date-string.js'; -import { toYearList } from './helpers/to-year-list.js'; -import { updateYearWithMinMax } from './helpers/update-year-with-min-max.js'; -import type { TrackerHandlers } from './tracker.js'; -import { Tracker } from './tracker.js'; - -export class Datepicker extends LitElement { - public static styles = [ - // tslint:disable:max-line-length - datepickerVariables, - resetButton, - css` - :host { - width: 312px; - /** NOTE: Magic number as 16:9 aspect ratio does not look good */ - /* height: calc((var(--app-datepicker-width) / .66) - var(--app-datepicker-footer-height, 56px)); */ - background-color: var(--app-datepicker-bg-color, #fff); - color: var(--app-datepicker-color, #000); - border-radius: - var(--app-datepicker-border-top-left-radius, 0) - var(--app-datepicker-border-top-right-radius, 0) - var(--app-datepicker-border-bottom-right-radius, 0) - var(--app-datepicker-border-bottom-left-radius, 0); - contain: content; - overflow: hidden; - } - :host([landscape]) { - display: flex; - - /** - */ - min-width: calc(568px - 16px * 2); - width: calc(568px - 16px * 2); - } - - .datepicker-header + .datepicker-body { - border-top: 1px solid var(--app-datepicker-separator-color, #ddd); - } - :host([landscape]) > .datepicker-header + .datepicker-body { - border-top: none; - border-left: 1px solid var(--app-datepicker-separator-color, #ddd); - } - - .datepicker-header { - display: flex; - flex-direction: column; - align-items: flex-start; - - position: relative; - padding: 16px 24px; - } - :host([landscape]) > .datepicker-header { - /** :this. + :this. */ - min-width: calc(14ch + 24px * 2); - } - - .btn__year-selector, - .btn__calendar-selector { - color: var(--app-datepicker-selector-color, rgba(0, 0, 0, .55)); - cursor: pointer; - /* outline: none; */ - } - .btn__year-selector.selected, - .btn__calendar-selector.selected { - color: currentColor; - } - - /** - * NOTE: IE11-only fix. This prevents formatted focused date from overflowing the container. - */ - .datepicker-toolbar { - width: 100%; - } - - .btn__year-selector { - font-size: 16px; - font-weight: 700; - } - .btn__calendar-selector { - font-size: 36px; - font-weight: 700; - line-height: 1; - } - - .datepicker-body { - position: relative; - width: 100%; - overflow: hidden; - } - - .datepicker-body__calendar-view { - min-height: 56px; - } - - .calendar-view__month-selector { - display: flex; - align-items: center; - - position: absolute; - top: 0; - left: 0; - width: 100%; - padding: 0 8px; - z-index: 1; - } - - .month-selector-container { - max-height: 56px; - height: 100%; - } - .month-selector-container + .month-selector-container { - margin: 0 0 0 auto; - } - - .btn__month-selector { - padding: calc((56px - 24px) / 2); - /** - * NOTE: button element contains no text, only SVG. - * No extra height will incur with such setting. - */ - line-height: 0; - } - .btn__month-selector > svg { - fill: currentColor; - } - - .calendars-container { - display: flex; - justify-content: center; - - position: relative; - top: 0; - left: calc(-100%); - width: calc(100% * 3); - transform: translateZ(0); - will-change: transform; - /** - * NOTE: Required for Pointer Events API to work on touch devices. - * Native \`pan-y\` action will be fired by the browsers since we only care about the - * horizontal direction. This is great as vertical scrolling still works even when touch - * event happens on a datepicker's calendar. - */ - touch-action: pan-y; - /* outline: none; */ - } - - .year-list-view__full-list { - max-height: calc(48px * 7); - overflow-y: auto; - - scrollbar-color: var(--app-datepicker-scrollbar-thumb-bg-color, rgba(0, 0, 0, .35)) rgba(0, 0, 0, 0); - scrollbar-width: thin; - } - .year-list-view__full-list::-webkit-scrollbar { - width: 8px; - background-color: rgba(0, 0, 0, 0); - } - .year-list-view__full-list::-webkit-scrollbar-thumb { - background-color: var(--app-datepicker-scrollbar-thumb-bg-color, rgba(0, 0, 0, .35)); - border-radius: 50px; - } - .year-list-view__full-list::-webkit-scrollbar-thumb:hover { - background-color: var(--app-datepicker-scrollbar-thumb-hover-bg-color, rgba(0, 0, 0, .5)); - } - - .calendar-weekdays > th, - .weekday-label { - color: var(--app-datepicker-weekday-color, rgba(0, 0, 0, .55)); - font-weight: 400; - transform: translateZ(0); - will-change: transform; - } - - .calendar-container, - .calendar-label, - .calendar-table { - width: 100%; - } - - .calendar-container { - position: relative; - padding: 0 16px 16px; - } - - .calendar-table { - -moz-user-select: none; - -webkit-user-select: none; - user-select: none; - - border-collapse: collapse; - border-spacing: 0; - text-align: center; - } - - .calendar-label { - display: flex; - align-items: center; - justify-content: center; - - height: 56px; - font-weight: 500; - text-align: center; - } - - .calendar-weekday, - .full-calendar__day { - position: relative; - width: calc(100% / 7); - height: 0; - padding: calc(100% / 7 / 2) 0; - outline: none; - text-align: center; - } - .full-calendar__day:not(.day--disabled):focus { - outline: #000 dotted 1px; - outline: -webkit-focus-ring-color auto 1px; - } - :host([showweeknumber]) .calendar-weekday, - :host([showweeknumber]) .full-calendar__day { - width: calc(100% / 8); - padding-top: calc(100% / 8); - padding-bottom: 0; - } - :host([showweeknumber]) th.weekday-label { - padding: 0; - } - - /** - * NOTE: Interesting fact! That is ::after will trigger paint when dragging. This will trigger - * layout and paint on **ONLY** affected nodes. This is much cheaper as compared to rendering - * all :::after of all calendar day elements. When dragging the entire calendar container, - * because of all layout and paint trigger on each and every ::after, this becomes a expensive - * task for the browsers especially on low-end devices. Even though animating opacity is much - * cheaper, the technique does not work here. Adding 'will-change' will further reduce overall - * painting at the expense of memory consumption as many cells in a table has been promoted - * a its own layer. - */ - .full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label) { - transform: translateZ(0); - will-change: transform; - } - .full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label).day--focused::after, - .full-calendar__day:not(.day--empty):not(.day--disabled):not(.day--focused):not(.weekday-label):hover::after { - content: ''; - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: var(--app-datepicker-accent-color, #1a73e8); - border-radius: 50%; - opacity: 0; - pointer-events: none; - } - .full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label) { - cursor: pointer; - pointer-events: auto; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - } - .full-calendar__day.day--focused:not(.day--empty):not(.day--disabled):not(.weekday-label)::after, - .full-calendar__day.day--today.day--focused:not(.day--empty):not(.day--disabled):not(.weekday-label)::after { - opacity: 1; - } - - .calendar-weekday > .weekday, - .full-calendar__day > .calendar-day { - display: flex; - align-items: center; - justify-content: center; - - position: absolute; - top: 5%; - left: 5%; - width: 90%; - height: 90%; - color: currentColor; - font-size: 14px; - pointer-events: none; - z-index: 1; - } - .full-calendar__day.day--today { - color: var(--app-datepicker-accent-color, #1a73e8); - } - .full-calendar__day.day--focused, - .full-calendar__day.day--today.day--focused { - color: var(--app-datepicker-focused-day-color, #fff); - } - .full-calendar__day.day--empty, - .full-calendar__day.weekday-label, - .full-calendar__day.day--disabled > .calendar-day { - pointer-events: none; - } - .full-calendar__day.day--disabled:not(.day--today) { - color: var(--app-datepicker-disabled-day-color, rgba(0, 0, 0, .55)); - } - - .year-list-view__list-item { - position: relative; - width: 100%; - padding: 12px 16px; - text-align: center; - /** NOTE: Reduce paint when hovering and scrolling, but this increases memory usage */ - /* will-change: opacity; */ - /* outline: none; */ - } - .year-list-view__list-item::after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: var(--app-datepicker-focused-year-bg-color, #000); - opacity: 0; - pointer-events: none; - } - .year-list-view__list-item:focus::after { - opacity: .05; - } - .year-list-view__list-item.year--selected { - color: var(--app-datepicker-accent-color, #1a73e8); - font-size: 24px; - font-weight: 500; - } - - @media (any-hover: hover) { - .btn__month-selector:hover, - .year-list-view__list-item:hover { - cursor: pointer; - } - .full-calendar__day:not(.day--empty):not(.day--disabled):not(.day--focused):not(.weekday-label):hover::after { - opacity: .15; - } - .year-list-view__list-item:hover::after { - opacity: .05; - } - } - - @supports (background: -webkit-canvas(squares)) { - .calendar-container { - padding: 56px 16px 16px; - } - - table > caption { - position: absolute; - top: 0; - left: 50%; - transform: translate3d(-50%, 0, 0); - will-change: transform; - } - } - `, - // tslint:enable:max-line-length - ]; - - @property({ type: Number, reflect: true }) - public firstDayOfWeek: number = 0; - - @property({ type: Boolean, reflect: true }) - public showWeekNumber: boolean = false; - - @property({ type: String, reflect: true }) - public weekNumberType: WeekNumberType = 'first-4-day-week'; - - @property({ type: Boolean, reflect: true }) - public landscape: boolean = false; - - @property({ type: String, reflect: true }) - public get startView() { - return this._startView!; - } - public set startView(val: StartView) { - /** - * NOTE: Defaults to `START_VIEW.CALENDAR` when `val` is falsy. - */ - const defaultVal: StartView = !val ? 'calendar' : val; - - /** - * NOTE: No-op when `val` is not falsy and not valid accepted values. - */ - if (defaultVal !== 'calendar' && defaultVal !== 'yearList') return; - - const oldVal = this._startView; - - this._startView = defaultVal; - this.requestUpdate('startView', oldVal); - } - - @property({ type: String, reflect: true }) - public get min() { - return this._hasMin ? toFormattedDateString(this._min!) : ''; - } - public set min(val: string) { - const valDate = getResolvedDate(val); - const isValidMin = isValidDate(val, valDate); - - this._min = isValidMin ? valDate : this._todayDate; - this._hasMin = isValidMin; - this.requestUpdate('min'); - } - - @property({ type: String, reflect: true }) - public get max() { - return this._hasMax ? toFormattedDateString(this._max!) : ''; - } - public set max(val: string) { - const valDate = getResolvedDate(val); - const isValidMax = isValidDate(val, valDate); - - this._max = isValidMax ? valDate : this._maxDate; - this._hasMax = isValidMax; - this.requestUpdate('max'); - } - - @property({ type: String }) - public get value() { - return toFormattedDateString(this._focusedDate); - } - public set value(val: string) { - const valDate = getResolvedDate(val); - const validValue = isValidDate(val, valDate) ? valDate : this._todayDate; - - this._focusedDate = new Date(validValue); - this._selectedDate = this._lastSelectedDate = new Date(validValue); - // this.valueAsDate = newDate; - // this.valueAsNumber = +newDate; - } - - @property({ type: String }) - public locale: string = getResolvedLocale(); - - @property({ type: String }) - public disabledDays: string = ''; - - @property({ type: String }) - public disabledDates: string = ''; - - @property({ type: String }) - public weekLabel: string = 'Wk'; - - @property({ type: Boolean }) - public inline: boolean = false; - - @property({ type: Number }) - public dragRatio: number = .15; - - public get datepickerBodyCalendarView() { - return this.shadowRoot!.querySelector('.datepicker-body__calendar-view'); - } - - public get calendarsContainer() { - return this.shadowRoot!.querySelector('.calendars-container'); - } - - @property({ type: Date, attribute: false }) - private _selectedDate: Date; - - @property({ type: Date, attribute: false }) - private _focusedDate: Date; - - @property({ type: String, attribute: false }) - private _startView?: StartView; - - @query('.year-list-view__full-list') - private _yearViewFullList?: HTMLDivElement; - - @query('.btn__year-selector') - private _buttonSelectorYear?: HTMLButtonElement; - - @query('.year-list-view__list-item') - private _yearViewListItem?: HTMLButtonElement; - - private _min: Date; - private _max: Date; - private _hasMin: boolean = false; - private _hasMax: boolean = false; - private _todayDate: Date; - private _maxDate: Date; - private _yearList: number[]; - private _formatters: Formatters; - private _disabledDaysSet: Set = new Set(); - private _disabledDatesSet: Set = new Set(); - private _lastSelectedDate?: Date; - private _tracker?: Tracker; - private _dx: number = -Infinity; - private _hasNativeWebAnimation: boolean = 'animate' in HTMLElement.prototype; - private _updatingDateWithKey: boolean = false; - - public constructor() { - super(); - - const todayDate = getResolvedDate(); - const allFormatters = getFormatters(this.locale); - const formattedTodayDate = toFormattedDateString(todayDate); - const max = getResolvedDate('2100-12-31'); - - this.value = formattedTodayDate; - this.startView = 'calendar'; - - this._min = new Date(todayDate); - this._max = new Date(max); - this._todayDate = todayDate; - this._maxDate = max; - this._yearList = toYearList(todayDate, max); - this._selectedDate = new Date(todayDate); - this._focusedDate = new Date(todayDate); - this._formatters = allFormatters; - } - - public disconnectedCallback() { - super.disconnectedCallback(); - - if (this._tracker) { - this._tracker.disconnect(); - this._tracker = undefined; - } - } - - protected render() { - /** - * NOTE: Update `_formatters` when `locale` changes. - */ - if (this._formatters.locale !== this.locale) this._formatters = getFormatters(this.locale); - - /** - * NOTE(motss): For perf reason, initialize all formatters for calendar rendering - */ - const datepickerBodyContent: TemplateResult = - 'yearList' === this._startView ? - this._renderDatepickerYearList() : this._renderDatepickerCalendar(); - const datepickerHeaderContent: null | TemplateResult = this.inline ? - null : - html`
${ - this._renderHeaderSelectorButton() - }
`; - - return html` - ${datepickerHeaderContent} -
${cache(datepickerBodyContent)}
- `; - } - - protected firstUpdated() { - let firstFocusableElement: HTMLElement; - - if ('calendar' === this._startView) { - firstFocusableElement = ( - this.inline ? - this.shadowRoot!.querySelector('.btn__month-selector') : - this._buttonSelectorYear - )!; - } else { - firstFocusableElement = this._yearViewListItem!; - } - - dispatchCustomEvent( - this, 'datepicker-first-updated', { firstFocusableElement, value: this.value }); - } - - protected updated(changed: Map) { - const startView = this._startView; - - if (changed.has('min') || changed.has('max')) { - this._yearList = toYearList(this._min, this._max); - - if ('yearList' === startView) this.requestUpdate(); - - /** - * Reset 'value' when 'value' is not withing the date range. - * - * 1. Check if there is valid date range which has >= 1 day - * 2. Check if 'value' < 'min'. If true, set to 'min'. Else, proceed to 3.. - * 3. Check if 'value' > 'max'. If true, set to 'max'. - */ - const minTime = +this._min; - const maxTime = +this._max; - - if (getDateRange(minTime, maxTime) > 864e5) { - const focusedDateTime = +this._focusedDate; - - let newValue = focusedDateTime; - - if (focusedDateTime < minTime) newValue = minTime; - if (focusedDateTime > maxTime) newValue = maxTime; - - this.value = toFormattedDateString(new Date(newValue)); - } - } - - if (changed.has('_startView') || changed.has('startView')) { - if ('yearList' === startView) { - const selectedYearScrollTop = - 48 * (this._selectedDate.getUTCFullYear() - this._min.getUTCFullYear() - 2); - - targetScrollTo(this._yearViewFullList!, { top: selectedYearScrollTop, left: 0 }); - } - - if ('calendar' === startView && null == this._tracker) { - const calendarsContainer = this.calendarsContainer; - - let $down = false; - let $move = false; - let $transitioning = false; - - if (calendarsContainer) { - const handlers: TrackerHandlers = { - down: () => { - if ($transitioning) return; - - $down = true; - this._dx = 0; - }, - move : (pointer, oldPointer) => { - if ($transitioning || !$down) return; - - const dx = this._dx; - const hasMin = - (dx < 0 && hasClass(calendarsContainer, 'has-max-date')) || - (dx > 0 && hasClass(calendarsContainer, 'has-min-date')); - - if (!hasMin && Math.abs(dx) > 0 && $down) { - $move = true; - calendarsContainer.style.transform = `translateX(${makeNumberPrecise(dx)}px)`; - } - - this._dx = hasMin ? 0 : dx + (pointer.x - oldPointer.x); - }, - up: async (_$, _$$, ev) => { - if ($down && $move) { - const dx = this._dx; - const maxWidth = calendarsContainer.getBoundingClientRect().width / 3; - const didPassThreshold = Math.abs(dx) > (Number(this.dragRatio) * maxWidth); - const transitionDuration = 350; - const transitionEasing = 'cubic-bezier(0, 0, .4, 1)'; - const transformTo = - didPassThreshold ? makeNumberPrecise(maxWidth * (dx < 0 ? -1 : 1)) : 0; - - $transitioning = true; - - await animateElement(calendarsContainer, { - hasNativeWebAnimation: this._hasNativeWebAnimation, - keyframes: [ - { transform: `translateX(${dx}px)` }, - { - transform: `translateX(${transformTo}px)`, - }, - ], - options: { - duration: transitionDuration, - easing: transitionEasing, - }, - }); - - if (didPassThreshold) { - this._updateMonth(dx < 0 ? 'next' : 'previous').handleEvent(); - } - - $down = $move = $transitioning = false; - this._dx = -Infinity; - - calendarsContainer.removeAttribute('style'); - dispatchCustomEvent(this, 'datepicker-animation-finished'); - } else if ($down) { - this._updateFocusedDate(ev as MouseEvent); - - $down = $move = false; - this._dx = -Infinity; - } - }, - }; - - this._tracker = new Tracker(calendarsContainer, handlers); - } - } - - /** - * When `_startView` is previously defined which means not first updated but switching from - * another view, focus year selector button. - */ - if (changed.get('_startView') && 'calendar' === startView) { - this._focusElement('[part="year-selector"]'); - } - } - - /** - * Focus to new focused date when updating with keyboard. - * It is to provide better support for screen reader. - */ - if (this._updatingDateWithKey) { - this._focusElement('[part="calendars"]:nth-of-type(2) .day--focused'); - this._updatingDateWithKey = false; - } - } - - private _focusElement(selector: string) { - const focusedTarget = this.shadowRoot!.querySelector(selector); - - if (focusedTarget) focusedTarget.focus(); - } - - private _renderHeaderSelectorButton() { - const { yearFormat, dateFormat } = this._formatters!; - const isCalendarView = this.startView === 'calendar'; - const focusedDate = this._focusedDate; - const formattedDate = dateFormat(focusedDate); - const formatterFy = yearFormat(focusedDate); - - return html` - - -
- -
- `; - } - - private _renderDatepickerYearList() { - const { yearFormat } = this._formatters; - const focusedDateFy = this._focusedDate.getUTCFullYear(); - - return html` -
-
- ${this._yearList.map(n => - html``) - }
-
- `; - } - - private _renderDatepickerCalendar() { - const { - longMonthYearFormat, - dayFormat, - fullDateFormat, - longWeekdayFormat, - narrowWeekdayFormat, - } = this._formatters; - const disabledDays = splitString(this.disabledDays, Number); - const disabledDates = splitString(this.disabledDates, getResolvedDate); - const showWeekNumber = this.showWeekNumber; - const $focusedDate = this._focusedDate; - const firstDayOfWeek = this.firstDayOfWeek; - const todayDate = getResolvedDate(); - const $selectedDate = this._selectedDate; - const $max = this._max; - const $min = this._min; - - const { calendars, disabledDaysSet, disabledDatesSet, weekdays } = getMultiCalendars({ - dayFormat, - fullDateFormat, - longWeekdayFormat, - narrowWeekdayFormat, - firstDayOfWeek, - - disabledDays, - disabledDates, - locale: this.locale, - selectedDate: $selectedDate, - showWeekNumber: this.showWeekNumber, - weekNumberType: this.weekNumberType, - max: $max, - min: $min, - weekLabel: this.weekLabel, - }); - const hasMinDate = !calendars[0].calendar.length; - const hasMaxDate = !calendars[2].calendar.length; - - const weekdaysContent = weekdays.map( - o => html` -
${o.value}
- ` - ); - const calendarsContent = repeat(calendars, n => n.key, ({ calendar }, ci) => { - if (!calendar.length) { - return html`
`; - } - - const calendarAriaId = `calendarcaption${ci}`; - const midCalendarFullDate = calendar[1][1].fullDate; - const isMidCalendar = ci === 1; - const $newFocusedDate: Date = - isMidCalendar && !this._isInVisibleMonth($focusedDate, $selectedDate) ? - computeNextFocusedDate({ - disabledDaysSet, - disabledDatesSet, - hasAltKey: false, - keyCode: KEY_CODES_MAP.HOME, - focusedDate: $focusedDate, - selectedDate: $selectedDate, - minTime: +$min, - maxTime: +$max, - }) : - $focusedDate; - - return html` -
- - - - - ${weekdaysContent} - - - ${ - calendar.map((calendarRow) => { - return html`${ - calendarRow.map((calendarCol, i) => { - const { disabled, fullDate, label, value } = calendarCol; - - /** Week label, if any */ - if (!fullDate && value && showWeekNumber && i < 1) { - return html``; - } - - /** Empty day */ - if (!value || !fullDate) { - return html``; - } - - const curTime = +new Date(fullDate); - const isCurrentDate = +$focusedDate === curTime; - const shouldTab = isMidCalendar && $newFocusedDate.getUTCDate() === Number(value); - - return html` - - `; - }) - }`; - }) - } -
-
${ - midCalendarFullDate ? longMonthYearFormat(midCalendarFullDate) : '' - }
-
${value} -
${value}
-
-
- `; - }); - - /** NOTE: Updates disabled dates and days with computed Sets. */ - this._disabledDatesSet = disabledDatesSet; - this._disabledDaysSet = disabledDaysSet; - - /** - * FIXME(motss): Allow users to customize the aria-label for accessibility and i18n reason. - */ - return html` -
-
-
${hasMinDate ? null : html` - - `}
- -
${hasMaxDate ? null : html` - - `}
-
- -
${calendarsContent}
-
- `; - } - - private _updateView(view: StartView) { - const handleUpdateView = () => { - if ('calendar' === view) { - this._selectedDate = this._lastSelectedDate = - new Date(updateYearWithMinMax(this._focusedDate, this._min, this._max)); - } - - this._startView = view; - }; - - return passiveHandler(handleUpdateView); - } - - private _updateMonth(updateType: MonthUpdateType) { - const handleUpdateMonth = () => { - const calendarsContainer = this.calendarsContainer; - - if (null == calendarsContainer) return this.updateComplete; - - const dateDate = this._lastSelectedDate || this._selectedDate; - const minDate = this._min; - const maxDate = this._max; - - const isPreviousMonth = updateType === 'previous'; - - const newSelectedDate = toUTCDate( - dateDate.getUTCFullYear(), - dateDate.getUTCMonth() + (isPreviousMonth ? -1 : 1), - 1); - const newSelectedDateFy = newSelectedDate.getUTCFullYear(); - const newSelectedDateM = newSelectedDate.getUTCMonth(); - - const minDateFy = minDate.getUTCFullYear(); - const minDateM = minDate.getUTCMonth(); - - const maxDateFy = maxDate.getUTCFullYear(); - const maxDateM = maxDate.getUTCMonth(); - - /** - * NOTE: Instead of debouncing/ throttling the animation when switching between - * calendar months, this prevents subsequent animation that can cause an issue - * where a blank calendar comes into view to be queued by ensuring the new updated - * selected date's month always fall between the defined `_min` and `_max` values. - * Not only does it prevents the aforementioned issue but also avoid adding too much - * delay in between animations. Happy spamming the animations as you wish! 😄 🎉 - */ - const isLessThanYearAndMonth = newSelectedDateFy < minDateFy || - (newSelectedDateFy <= minDateFy && newSelectedDateM < minDateM); - const isMoreThanYearAndMonth = newSelectedDateFy > maxDateFy || - (newSelectedDateFy >= maxDateFy && newSelectedDateM > maxDateM); - if (isLessThanYearAndMonth || isMoreThanYearAndMonth) return this.updateComplete; - - /** - * NOTE: This improves spamming animations via gestures but relying on another property - * to keep track of the last/ latest selected date so that when you spam click on - * the navigate next button 3 times, based on the expected mental model and behavior, - * the calendar month should switch 3 times, e.g. Jan 2020 -> 3 clicks -> Apr 2020. - */ - this._lastSelectedDate = newSelectedDate; - this._selectedDate = this._lastSelectedDate!; - - return this.updateComplete; - }; - - return passiveHandler(handleUpdateMonth); - } - - @eventOptions({ passive: true }) - private _updateYear(ev: MouseEvent) { - const selectedYearEl = findShadowTarget( - ev, - (n: HTMLElement) => hasClass(n, 'year-list-view__list-item') - ); - - if (selectedYearEl == null) return; - - /** - * 2 things to do here: - * - Update `_selectedDate` and `_focusedDate` with update `year` value of old focused date - * - Update `_startView` to `START_VIEW.CALENDAR` - */ - - const newFocusedDate = updateYearWithMinMax( - new Date(this._focusedDate).setUTCFullYear(+selectedYearEl.year), - this._min, - this._max - ); - - this._selectedDate = this._lastSelectedDate = new Date(newFocusedDate); - this._focusedDate = new Date(newFocusedDate); - this._startView = 'calendar'; - } - - private _updateFocusedDate(ev: MouseEvent) { - const selectedDayEl = findShadowTarget( - ev, - (n: HTMLElement) => hasClass(n, 'full-calendar__day') - ); - - /** NOTE: Required condition check else these will trigger unwanted re-rendering */ - if (selectedDayEl == null || - [ - 'day--empty', - 'day--disabled', - 'day--focused', - 'weekday-label', - ].some(n => hasClass(selectedDayEl, n))) return; - - this._focusedDate = new Date(selectedDayEl.fullDate); - - dispatchCustomEvent(this, 'datepicker-value-updated', { - isKeypress: false, - value: this.value, - }); - } - - // Left Move focus to the previous day. Will move to the last day of the previous month, - // if the current day is the first day of a month. - // Right Move focus to the next day. Will move to the first day of the following month, - // if the current day is the last day of a month. - // Up Move focus to the same day of the previous week. - // Will wrap to the appropriate day in the previous month. - // Down Move focus to the same day of the following week. - // Will wrap to the appropriate day in the following month. - // PgUp Move focus to the same date of the previous month. If that date does not exist, - // focus is placed on the last day of the month. - // PgDn Move focus to the same date of the following month. If that date does not exist, - // focus is placed on the last day of the month. - // Alt+PgUp Move focus to the same date of the previous year. - // If that date does not exist (e.g leap year), focus is placed on the last day of the month. - // Alt+PgDn Move focus to the same date of the following year. - // If that date does not exist (e.g leap year), focus is placed on the last day of the month. - // Home Move to the first day of the month. - // End Move to the last day of the month - // Tab / Shift+Tab If the datepicker is in modal mode, navigate between calender grid and - // close/previous/next selection buttons, otherwise move to the field following/preceding the - // date textbox associated with the datepicker - // Enter / Space Fill the date textbox with the selected date then close the datepicker widget. - @eventOptions({ passive: true }) - private _updateFocusedDateWithKeyboard(ev: KeyboardEvent) { - const keyCode = ev.keyCode; - - /** NOTE: Skip updating and fire an event to notify of updated focused date. */ - if (KEY_CODES_MAP.ENTER === keyCode || KEY_CODES_MAP.SPACE === keyCode) { - dispatchCustomEvent(this, 'datepicker-value-updated', { - keyCode, - - isKeypress: true, - value: this.value, - }); - - /** - * Always update focused date to avoid the following scenario: - * - * 1. Navigate to March 2020 via mouse clicks - * 2. Click to select '2020-03-30' - * 3. Navigate to February 2020 via mouse clicks - * 4. Tab to first focusable calendar day and hit Enter or Space - * 5. Focused date should update to first focusable calendar day instead of '2020-03-20' - */ - this._focusedDate = new Date(this._selectedDate); - - return; - } - - /** NOTE: Skip for TAB key and other non-related keys */ - if (keyCode === KEY_CODES_MAP.TAB || !ALL_NAV_KEYS_SET.has(keyCode)) return; - - const selectedDate = this._selectedDate; - const nextFocusedDate = computeNextFocusedDate({ - keyCode, - selectedDate, - - disabledDatesSet: this._disabledDatesSet, - disabledDaysSet: this._disabledDaysSet, - focusedDate: this._focusedDate, - hasAltKey: ev.altKey, - maxTime: +this._max, - minTime: +this._min, - }); - - /** - * NOTE: Update `_selectedDate` and `_lastSelectedDate` if - * new focused date is no longer in the same month or year. - */ - if (!this._isInVisibleMonth(nextFocusedDate, selectedDate)) { - this._selectedDate = this._lastSelectedDate = nextFocusedDate; - } - - this._focusedDate = nextFocusedDate; - this._updatingDateWithKey = true; - - dispatchCustomEvent(this, 'datepicker-value-updated', { - keyCode, - - isKeypress: true, - value: this.value, - }); - } - - private _isInVisibleMonth(dateA: Date, dateB: Date) { - const dateAFy = dateA.getUTCFullYear(); - const dateAM = dateA.getUTCMonth(); - const dateBFY = dateB.getUTCFullYear(); - const dateBM = dateB.getUTCMonth(); - - return dateAFy === dateBFY && dateAM === dateBM; - } - -} - -declare global { - // #region HTML element type extensions - interface HTMLButtonElement { - year: number; - } - - interface HTMLElement { - part: HTMLElementPart; - } - - interface HTMLTableCellElement { - day: string; - fullDate: Date; - } - // #endregion HTML element type extensions - - interface HTMLElementEventMap { - 'datepicker-first-updated': CustomEvent; - 'datepicker-animation-finished': CustomEvent; - 'datepicker-value-updated': CustomEvent; - } -} - -// FIXED: To look into `passive` event listener option in future. -// FIXED: To reflect value on certain properties according to specs/ browser impl: min, max, value. -// FIXED: `disabledDates` are not supported -// FIXED: Updating `min` via attribute or property breaks entire UI -// FIXED: To improve date navigation using keyboard. Disabled date are selectable with Left, Right -// arrows. -// FIXED: To add support for labels such week number for better i18n -// FIXED: To fix hardcoded `_yearList` when `min` has no initial value. -// FIXED: PgUp/ PgDown on new date that does not exist should fallback to last day of month. -// FIXED: Update year should update `_lastSelectedDate` -// FIXED: Showing blank calendar when updating year -// FIXED: Buggy condition check for max date when updating month -// FIXED: Gestures are broken on landscape mode. -// FIXED: `landscape` attribute breaks layout. -// FIXED: Do not update focused date while dragging/ swiping calendar -// FIXED: app-datepicker's initial-render.spec.ts fails for unknown reason -// FIXED: `disabledDays` is broken with `firstDayOfWeek` -// FIXED: When a new property is set, it re-renders the calendar to last focused date but -// FIXED: Add test for custom events never updates the selected date -// FIXED: Replace Web Animations for better support for animations on older browsers. -// FIXED: Keyboard navigate to next month (Mar) and click on left arrow, (Jan) is shown. -// FIXED: To finalize cases where focused date does not exist in current month for each key pressed -// TODO: To support `valueAsDate` and `valueAsNumber`. -// TODO: To support RTL layout. diff --git a/src/helpers/animate-element.ts b/src/helpers/animate-element.ts deleted file mode 100644 index 4f498b626..000000000 --- a/src/helpers/animate-element.ts +++ /dev/null @@ -1,41 +0,0 @@ -interface AnimateElementOptions { - hasNativeWebAnimation?: boolean; - keyframes?: Keyframe[]; - options?: KeyframeAnimationOptions; -} - -export async function animateElement( - node: HTMLElement, - opts: AnimateElementOptions -): Promise { - const { - hasNativeWebAnimation = false, - keyframes = [], - options = { duration: 100 }, - } = opts || {}; - - if (!Array.isArray(keyframes) || !keyframes.length) return; - - return new Promise((y) => { - if (hasNativeWebAnimation) { - const animationEnd = node.animate(keyframes, options); - - animationEnd.onfinish = () => y(); - } else { - const [, endFrame] = keyframes || []; - const transitionEnd = () => { - node.removeEventListener('transitionend', transitionEnd); - y(); - }; - - node.addEventListener('transitionend', transitionEnd); - node.style.transitionDuration = `${options.duration}ms`; - - if (options.easing) node.style.transitionTimingFunction = options.easing; - - Object.keys(endFrame).forEach((n) => { - if (n) (node.style as any)[n] = endFrame[n]; - }); - } - }); -} diff --git a/src/helpers/compute-next-focus-date.ts b/src/helpers/compute-next-focus-date.ts deleted file mode 100644 index ca7e54f50..000000000 --- a/src/helpers/compute-next-focus-date.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; -import { NEXT_KEY_CODES_SET, PREV_KEY_CODES_SET } from '../constants.js'; -import { KEY_CODES_MAP } from '../custom_typings.js'; -import { getNextSelectableDate } from './get-selectable-date.js'; - -interface ParamsComputeNextFocusedDate { - hasAltKey: boolean; - keyCode: KeyboardEvent['keyCode']; - focusedDate: Date; - selectedDate: Date; - disabledDaysSet: Set; - disabledDatesSet: Set; - minTime: number; - maxTime: number; -} - -export function computeNextFocusedDate({ - hasAltKey, - keyCode, - focusedDate, - selectedDate, - disabledDaysSet, - disabledDatesSet, - minTime, - maxTime, -}: ParamsComputeNextFocusedDate) { - /** - * To update focused date, - * - * 1. Checks if focused date is not in the same month, skip update by focusing 1st selectable - * day of the new focused month. Continue at `Step 4.`. - * 2. Checks if current focused date is either `min` or `max` then bails out immediately. - * 3. Compute new focused date based on key pressed. - * a. `UP` - `d -= 7` - * b. `DOWN` - `d += 7` - * c. `LEFT` - `d -= 1` - * d. `RIGHT` - `d += 1` - * e. `PAGE_DOWN` - `m += 1` - * f. `PAGE_UP` - `m -= 1` - * g. `Alt` + `PAGE_DOWN` - `fy += 1` - * h. `Alt` + `PAGE_UP` - `fy -= 1` - * i. `END` - `m += 1; d = 0` - * j. `HOME` - `d = 1` - * 4. Compute selectable date based on new focused date with `while` loop for any disabled date: - * a. UP, RIGHT, PAGE_UP, Alt + PAGE_UP - `d += 1` - * b. DOWN, LEFT, PAGE_DOWN, Alt + PAGE_DOWN - `d -= 1` - * c. If new focused date is either `min` or `max`, reverse order `d += 1` -> `d -= 1` and - * continue the loop until new selectable focused date. - */ - const oldFy = focusedDate.getUTCFullYear(); - const oldM = focusedDate.getUTCMonth(); - const oldD = focusedDate.getUTCDate(); - const focusedDateTime = +focusedDate; - - const sdFy = selectedDate.getUTCFullYear(); - const sdM = selectedDate.getUTCMonth(); - - const notInCurrentMonth = sdM !== oldM || sdFy !== oldFy; - - let fy = oldFy; - let m = oldM; - let d = oldD; - let shouldRunSwitch = true; - - // If the focused date is not in the current month, focus the first day of the month - // Only run switch case, when one of the following keys is pressed: - // * PageDown (w/ or w/o Alt) - // * PageUp (w/ or w/o Alt) - // * End - if (notInCurrentMonth) { - fy = sdFy; - m = sdM; - d = 1; - - shouldRunSwitch = - keyCode === KEY_CODES_MAP.PAGE_DOWN || - keyCode === KEY_CODES_MAP.PAGE_UP || - keyCode === KEY_CODES_MAP.END; - } - - switch (shouldRunSwitch) { - case focusedDateTime === minTime && PREV_KEY_CODES_SET.has(keyCode): - case focusedDateTime === maxTime && NEXT_KEY_CODES_SET.has(keyCode): - break; - case keyCode === KEY_CODES_MAP.ARROW_UP: { - d -= 7; - break; - } - case keyCode === KEY_CODES_MAP.ARROW_DOWN: { - d += 7; - break; - } - case keyCode === KEY_CODES_MAP.ARROW_LEFT: { - d -= 1; - break; - } - case keyCode === KEY_CODES_MAP.ARROW_RIGHT: { - d += 1; - break; - } - case keyCode === KEY_CODES_MAP.PAGE_DOWN: { - hasAltKey ? fy += 1 : m += 1; - break; - } - case keyCode === KEY_CODES_MAP.PAGE_UP: { - hasAltKey ? fy -= 1 : m -= 1; - break; - } - case keyCode === KEY_CODES_MAP.END: { - m += 1; - d = 0; - break; - } - case keyCode === KEY_CODES_MAP.HOME: - default: { - d = 1; - } - } - - /** - * NOTE(motss): When updating month and year, check if the value of day exceeds - * the total days of the updated date. If true, then focus the last day of the new month. - * This also applies to the following cases: - * - * - `2020-01-31` -> next month -> `2020-02-31` (invalid) -> fallback to `2020-02-29` - * - `2020-02-29` -> next year -> `2021-02-29` (invalid) -> fallback to `2021-02-28` - */ - if (keyCode === KEY_CODES_MAP.PAGE_DOWN || keyCode === KEY_CODES_MAP.PAGE_UP) { - const totalDaysOfMonth = toUTCDate(fy, m + 1, 0).getUTCDate(); - if (d > totalDaysOfMonth) { - d = totalDaysOfMonth; - } - } - - /** Get next selectable focused date */ - const newFocusedDate = getNextSelectableDate({ - keyCode, - maxTime, - minTime, - disabledDaysSet, - disabledDatesSet, - focusedDate: toUTCDate(fy, m, d), - }); - - return newFocusedDate; -} diff --git a/src/helpers/custom-elements-define.ts b/src/helpers/custom-elements-define.ts deleted file mode 100644 index 223b192bf..000000000 --- a/src/helpers/custom-elements-define.ts +++ /dev/null @@ -1,5 +0,0 @@ -export function customElementsDefine(tagName: string, baseClass: T) { - if (window.customElements && !window.customElements.get(tagName)) { - window.customElements.define(tagName, baseClass as unknown as any); - } -} diff --git a/src/helpers/dispatch-custom-event.ts b/src/helpers/dispatch-custom-event.ts deleted file mode 100644 index 5e571b2a1..000000000 --- a/src/helpers/dispatch-custom-event.ts +++ /dev/null @@ -1,11 +0,0 @@ -export function dispatchCustomEvent( - target: HTMLElement, - eventName: string, - detail?: T -) { - return target.dispatchEvent(new CustomEvent(eventName, { - detail, - bubbles: true, - composed: true, - })); -} diff --git a/src/helpers/find-shadow-target.ts b/src/helpers/find-shadow-target.ts deleted file mode 100644 index 839226508..000000000 --- a/src/helpers/find-shadow-target.ts +++ /dev/null @@ -1,11 +0,0 @@ -type AnyEventType = CustomEvent | KeyboardEvent | MouseEvent | PointerEvent; - -export function findShadowTarget( - ev: AnyEventType, - callback: (n: HTMLElement) => boolean -): T { - return (ev.composedPath() as HTMLElement[]).find((n) => { - if (n instanceof HTMLElement) return callback(n); - return false; - }) as T; -} diff --git a/src/helpers/get-date-range.ts b/src/helpers/get-date-range.ts deleted file mode 100644 index 9f6411171..000000000 --- a/src/helpers/get-date-range.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function getDateRange(min: number | Date, max: number | Date): number { - return +max - +min; -} diff --git a/src/helpers/get-formatters.ts b/src/helpers/get-formatters.ts deleted file mode 100644 index 7d06eb165..000000000 --- a/src/helpers/get-formatters.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { getFormatter } from 'nodemod/dist/calendar/get-formatter.js'; -import { INTL_DATE_TIME_FORMAT } from '../constants.js'; -import type { Formatters } from '../custom_typings.js'; - -export function getFormatters(locale: string): Formatters { - const dateFmt = INTL_DATE_TIME_FORMAT(locale, { - timeZone: 'UTC', - weekday: 'short', - month: 'short', - day: 'numeric', - }); - const dayFmt = INTL_DATE_TIME_FORMAT(locale, { timeZone: 'UTC', day: 'numeric' }); - const fullDateFmt = INTL_DATE_TIME_FORMAT(locale, { - timeZone: 'UTC', - year: 'numeric', - month: 'short', - day: 'numeric', - }); - const longMonthYearFmt = INTL_DATE_TIME_FORMAT(locale, { - timeZone: 'UTC', - year: 'numeric', - month: 'long', - }); - const longWeekdayFmt = INTL_DATE_TIME_FORMAT(locale, { timeZone: 'UTC', weekday: 'long' }); - const narrowWeekdayFmt = INTL_DATE_TIME_FORMAT(locale, { timeZone: 'UTC', weekday: 'narrow' }); - const yearFmt = INTL_DATE_TIME_FORMAT(locale, { timeZone: 'UTC', year: 'numeric' }); - - return { - locale, - - dateFormat: getFormatter(dateFmt), - dayFormat: getFormatter(dayFmt), - fullDateFormat: getFormatter(fullDateFmt), - longMonthYearFormat: getFormatter(longMonthYearFmt), - longWeekdayFormat: getFormatter(longWeekdayFmt), - narrowWeekdayFormat: getFormatter(narrowWeekdayFmt), - yearFormat: getFormatter(yearFmt), - }; -} diff --git a/src/helpers/get-multi-calendars.ts b/src/helpers/get-multi-calendars.ts deleted file mode 100644 index bce3327eb..000000000 --- a/src/helpers/get-multi-calendars.ts +++ /dev/null @@ -1,154 +0,0 @@ -import type { - Calendar, - CalendarWeekday, - DateTimeFormatter, - WeekNumberType, -} from 'nodemod/dist/calendar/calendar_typing.js'; -import { getWeekdays } from 'nodemod/dist/calendar/get-weekdays.js'; -import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; -import { calendar } from 'nodemod/dist/calendar/index.js'; - -interface MultiCalendars extends NonNullable> { - key: string; - weekdays: CalendarWeekday[]; - calendars: Pick[]; -} - -interface GetMultiCalendarsOption { - dayFormat: DateTimeFormatter; - fullDateFormat: DateTimeFormatter; - locale: string; - longWeekdayFormat: DateTimeFormatter; - narrowWeekdayFormat: DateTimeFormatter; - selectedDate: Date; - - disabledDates?: Date[]; - disabledDays?: number[]; - firstDayOfWeek?: number; - max?: Date; - min?: Date; - showWeekNumber?: boolean; - weekLabel?: string; - weekNumberType?: WeekNumberType; -} - -export function getMultiCalendars( - options: GetMultiCalendarsOption -): MultiCalendars { - const { - dayFormat, - fullDateFormat, - locale, - longWeekdayFormat, - narrowWeekdayFormat, - selectedDate, - - disabledDates, - disabledDays, - firstDayOfWeek, - max, - min, - showWeekNumber, - weekLabel, - weekNumberType, - } = options; - - const minTime = min == null ? Number.MIN_SAFE_INTEGER : +min; - const maxTime = max == null ? Number.MAX_SAFE_INTEGER : +max; - const weekdays = getWeekdays({ - longWeekdayFormat, - narrowWeekdayFormat, - firstDayOfWeek, - showWeekNumber, - weekLabel, - }); - const getKey = (date: Date) => [ - locale, - date.toJSON(), - disabledDates?.join('_'), - disabledDays?.join('_'), - firstDayOfWeek, - max?.toJSON(), - min?.toJSON(), - showWeekNumber, - weekLabel, - weekNumberType, - ].filter(Boolean).join(':'); - - const ify = selectedDate.getUTCFullYear(); - const im = selectedDate.getUTCMonth(); - const calendarsList = [-1, 0, 1].map((n) => { - const firstDayOfMonth = toUTCDate(ify, im + n, 1); - const lastDayOfMonthTime = +toUTCDate(ify, im + n + 1, 0); - const key = getKey(firstDayOfMonth); - - /** - * NOTE: Return `null` when one of the followings fulfills:- - * - * minTime maxTime - * |--------|--------o--------|--------| - * last day | valid dates | first day - * - * - last day of the month < `minTime` - entire month should be disabled - * - first day of the month > `maxTime` - entire month should be disabled - */ - if (lastDayOfMonthTime < minTime || +firstDayOfMonth > maxTime) { - return { - key, - - calendar: [], - disabledDatesSet: new Set(), - disabledDaysSet: new Set(), - }; - } - - const calendarDays = calendar({ - dayFormat, - fullDateFormat, - locale, - disabledDates, - disabledDays, - firstDayOfWeek, - max, - min, - showWeekNumber, - weekNumberType, - selectedDate: firstDayOfMonth, - }); - - return { ...calendarDays, key }; - }); - - const calendars: MultiCalendars['calendars'] = []; - const $disabledDatesSet: MultiCalendars['disabledDatesSet'] = new Set(); - const $disabledDaysSet: MultiCalendars['disabledDaysSet'] = new Set(); - - for (const cal of calendarsList) { - const { - disabledDatesSet, - disabledDaysSet, - ...rest - } = cal; - - if (rest.calendar.length > 0) { - if (disabledDaysSet.size > 0) { - for (const o of disabledDaysSet) $disabledDaysSet.add(o); - } - - if (disabledDatesSet.size > 0) { - for (const o of disabledDatesSet) $disabledDatesSet.add(o); - } - } - - calendars.push(rest); - } - - return { - calendars, - weekdays, - - disabledDatesSet: $disabledDatesSet, - disabledDaysSet: $disabledDaysSet, - key: getKey(selectedDate), - }; -} diff --git a/src/helpers/get-resolved-date.ts b/src/helpers/get-resolved-date.ts deleted file mode 100644 index 99249ec5d..000000000 --- a/src/helpers/get-resolved-date.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; - -export function getResolvedDate(date?: number | Date | string | undefined): Date { - const dateDate = date == null ? new Date() : new Date(date); - const isUTCDateFormat = typeof date === 'string' && ( - /^\d{4}-\d{2}-\d{2}$/i.test(date) || - /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|\+00:00|-00:00)$/i.test(date)); - const isUnixTimestamp = typeof date === 'number' && date > 0 && isFinite(date); - - let fy = dateDate.getFullYear(); - let m = dateDate.getMonth(); - let d = dateDate.getDate(); - - /** - * NOTE: Depends on the input date string, browser will interpret the Date object differently. - * For instance, a simple date string `2020-01-03` will default to UTC timezone. In order to get - * the correct expected date that is `3`, `.getUTCDate` is required as `.getDate` will return a - * date value that is based on the local timezone after the date conversion by the browser. In PST - * timezone, that will return `2`. - * - * ```ts - * // In PST (UTC-08:00) timezone, the following code will output: - * const dateString = '2020-01-03'; - * const dateDate = new Date(dateString); // UTC time is '2020-01-03T00:00:00.000+08:00' - * - * dateDate.getUTCDate(); // 3 - * dateDate.getDate(); // 2 - * ``` - */ - if (isUTCDateFormat || isUnixTimestamp) { - fy = dateDate.getUTCFullYear(); - m = dateDate.getUTCMonth(); - d = dateDate.getUTCDate(); - } - - /** - * NOTE: Converts local datetime to UTC by extracting only the values locally using `get*` methods - * instead of the `getUTC*` methods. - * - * FWIW, there could be still cases where `get*` methods returns something different than what is - * expected but that is acceptable since we're relying on browser to tell us the local datetime - * and we just use those values and treated them as if they were datetime to UTC. - */ - return toUTCDate(fy, m, d); -} diff --git a/src/helpers/get-resolved-locale.ts b/src/helpers/get-resolved-locale.ts deleted file mode 100644 index 7eb8d9814..000000000 --- a/src/helpers/get-resolved-locale.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { INTL_DATE_TIME_FORMAT } from '../constants.js'; - -export function getResolvedLocale() { - return ( - INTL_DATE_TIME_FORMAT && - INTL_DATE_TIME_FORMAT().resolvedOptions && - INTL_DATE_TIME_FORMAT().resolvedOptions().locale - ) || 'en-US'; -} diff --git a/src/helpers/get-selectable-date.ts b/src/helpers/get-selectable-date.ts deleted file mode 100644 index 83b516fe8..000000000 --- a/src/helpers/get-selectable-date.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; -import { NEXT_DAY_KEY_CODES_SET, PREV_DAY_KEY_CODES_SET } from '../constants.js'; -import { getDateRange } from './get-date-range.js'; - -interface ParamsGetNextSelectableDate { - keyCode: KeyboardEvent['keyCode']; - disabledDaysSet: Set; - disabledDatesSet: Set; - focusedDate: Date; - maxTime: number; - minTime: number; -} - -export function getNextSelectableDate({ - keyCode, - disabledDaysSet, - disabledDatesSet, - focusedDate, - maxTime, - minTime, -}: ParamsGetNextSelectableDate): Date { - const focusedDateTime = +focusedDate; - - let isLessThanMinTime = focusedDateTime < minTime; - let isMoreThanMaxTime = focusedDateTime > maxTime; - - // Bail when there is no valid date range (< 1 day). - if (getDateRange(minTime, maxTime) < 864e5) return focusedDate; - - let isDisabledDay = - isLessThanMinTime || - isMoreThanMaxTime || - disabledDaysSet.has((focusedDate as Date).getUTCDay()) || - disabledDatesSet.has(focusedDateTime); - - if (!isDisabledDay) return focusedDate; - - let selectableFocusedDateTime = 0; - let selectableFocusedDate = isLessThanMinTime === isMoreThanMaxTime ? - focusedDate : new Date(isLessThanMinTime ? minTime - 864e5 : 864e5 + maxTime); - - const fy = selectableFocusedDate.getUTCFullYear(); - const m = selectableFocusedDate.getUTCMonth(); - let d = selectableFocusedDate.getUTCDate(); - - while (isDisabledDay) { - if (isLessThanMinTime || (!isMoreThanMaxTime && NEXT_DAY_KEY_CODES_SET.has(keyCode))) d += 1; - if (isMoreThanMaxTime || (!isLessThanMinTime && PREV_DAY_KEY_CODES_SET.has(keyCode))) d -= 1; - - selectableFocusedDate = toUTCDate(fy, m, d); - selectableFocusedDateTime = +selectableFocusedDate; - - if (!isLessThanMinTime) { - isLessThanMinTime = selectableFocusedDateTime < minTime; - - if (isLessThanMinTime) { - selectableFocusedDate = new Date(minTime); - selectableFocusedDateTime = +selectableFocusedDate; - d = selectableFocusedDate.getUTCDate(); - } - } - - if (!isMoreThanMaxTime) { - isMoreThanMaxTime = selectableFocusedDateTime > maxTime; - - if (isMoreThanMaxTime) { - selectableFocusedDate = new Date(maxTime); - selectableFocusedDateTime = +selectableFocusedDate; - d = selectableFocusedDate.getUTCDate(); - } - } - - isDisabledDay = - disabledDaysSet.has(selectableFocusedDate.getUTCDay()) || - disabledDatesSet.has(selectableFocusedDateTime); - } - - return selectableFocusedDate; -} diff --git a/src/helpers/has-class.ts b/src/helpers/has-class.ts deleted file mode 100644 index ee97ef213..000000000 --- a/src/helpers/has-class.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function hasClass(target: HTMLElement, className: string) { - return target.classList.contains(className); -} diff --git a/src/helpers/is-valid-date.ts b/src/helpers/is-valid-date.ts deleted file mode 100644 index d481e5de5..000000000 --- a/src/helpers/is-valid-date.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function isValidDate(date: string, dateDate: Date) { - return !(date == null || !(dateDate instanceof Date) || isNaN(+dateDate)); -} diff --git a/src/helpers/make-number-precise.ts b/src/helpers/make-number-precise.ts deleted file mode 100644 index 25e87e0c4..000000000 --- a/src/helpers/make-number-precise.ts +++ /dev/null @@ -1,11 +0,0 @@ -export function makeNumberPrecise(num: number) { - /** - * NOTE(motss): Different browser will use different precision in CSS `transform`: - * - * * Edge 17/ FF63 - use 2 decimals - * * Safari 10.1/ Chrome 41 - use as many decimals as possible - * * Chrome 70 - use 3 decimals - * - */ - return (num - Math.floor(num)) > 0 ? +num.toFixed(3) : num; -} diff --git a/src/helpers/passive-handler.ts b/src/helpers/passive-handler.ts deleted file mode 100644 index 9af8d77f4..000000000 --- a/src/helpers/passive-handler.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function passiveHandler(cb: (...params: any[]) => any) { - return { passive: true, handleEvent: cb }; -} diff --git a/src/helpers/set-focus-trap.ts b/src/helpers/set-focus-trap.ts deleted file mode 100644 index a849713c5..000000000 --- a/src/helpers/set-focus-trap.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { FocusTrap } from '../custom_typings.js'; -import { KEY_CODES_MAP } from '../custom_typings.js'; -import { findShadowTarget } from './find-shadow-target.js'; - -export function setFocusTrap( - target: HTMLElement, - focusableElements: HTMLElement[] -): FocusTrap | null { - if (target == null || focusableElements == null) return null; - - const [firstEl, lastEl] = focusableElements; - const keydownCallback = (ev: KeyboardEvent) => { - const isTabKey = ev.keyCode === KEY_CODES_MAP.TAB; - const isShiftTabKey = ev.shiftKey && isTabKey; - - if (!isTabKey && !isShiftTabKey) return; - - // const focusedTarget = ev.target as HTMLElement; - const isFocusingLastEl = findShadowTarget(ev, n => n.isEqualNode(lastEl)) != null; - - if (isFocusingLastEl && !isShiftTabKey) { - ev.preventDefault(); - ev.stopImmediatePropagation(); - - // focusedTarget.blur(); - firstEl.focus(); - return; - } - - const isFocusingFirstEl = findShadowTarget(ev, n => n.isEqualNode(firstEl)) != null; - - if (isFocusingFirstEl && isShiftTabKey) { - ev.preventDefault(); - ev.stopImmediatePropagation(); - - // focusedTarget.blur(); - /** - * NOTE: `.focus()` native `` - ); - }); - - it(`renders with defined 'alwaysresetvalue'`, async () => { - type A = [boolean, boolean, boolean, string, string, string]; - - const expectedAlwaysResetValue: boolean = true; - const [ - initialProp, - attr, - prop, - - value, - value2, - - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const n2 = root.querySelector(b)!; - const initialAlwaysResetValue = n.alwaysResetValue; - - n.min = '2000-01-01'; - n.value = '2020-02-02'; - n.setAttribute('alwaysresetvalue', d); - n2.value = '2020-02-20'; - - await n2.updateComplete; - await n.updateComplete; - - await n.close(); - await n.open(); - await n.updateComplete; - - const focusedDate = n2.shadowRoot!.querySelector(c); - - done([ - initialAlwaysResetValue, - n.hasAttribute('alwaysresetvalue'), - n.alwaysResetValue, - - n.value, - n2.value, - focusedDate?.outerHTML ?? '', - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - toSelector('.day--focused'), - expectedAlwaysResetValue); - - strictEqual(initialProp, false); - allStrictEqual([prop, attr], expectedAlwaysResetValue); - allStrictEqual([value, value2], '2020-02-02'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
2
- `); - }); - - it(`renders with different 'firstdayofweek' and 'disableddays'`, async () => { - type A = [ - string, - string, - - string, - null, - - number, - number, - - string, - string, - ]; - - const expectedFirstdayofweek: string = '1'; - const expectedDisableddays: string = '3,5'; - const values: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.setAttribute('firstdayofweek', c); - n.setAttribute('disableddays', d); - - await n.updateComplete; - - done([ - n.getAttribute('firstdayofweek'), - n2.getAttribute('firstdayofweek'), - - n.getAttribute('disableddays'), - n2.getAttribute('disableddays'), - - n.firstDayOfWeek, - n2.firstDayOfWeek, - - n.disabledDays, - n2.disabledDays, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedFirstdayofweek, expectedDisableddays); - - deepStrictEqual(values, [ - expectedFirstdayofweek, - expectedFirstdayofweek, - - expectedDisableddays, - null, - - Number(expectedFirstdayofweek), - Number(expectedFirstdayofweek), - - expectedDisableddays, - expectedDisableddays, - ] as A); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/events.spec.ts b/src/tests/app-datepicker-dialog/events.spec.ts deleted file mode 100644 index c5c989b3c..000000000 --- a/src/tests/app-datepicker-dialog/events.spec.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import type { DatepickerValueUpdated } from '../../custom_typings.js'; -import { KEY_CODES_MAP } from '../../custom_typings.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe(`${DATEPICKER_DIALOG_NAME}::events`, () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - it(`fires 'datepicker-value-updated' event (Enter, Space)`, async () => { - const keys = [ - KEY_CODES_MAP.ENTER, - KEY_CODES_MAP.SPACE, - ]; - const results: boolean[] = []; - - for (const k of keys) { - const result: boolean = await browser.executeAsync(async (a, b, c, done) => { - const domTriggerKey = (root: HTMLElement, keyCode: number) => { - const ev = new CustomEvent('keyup', { keyCode } as any); - - Object.defineProperty(ev, 'keyCode', { value: keyCode }); - - root.dispatchEvent(ev); - }; - - const n: DatepickerDialog = document.createElement(a); - - n.locale = 'en-US'; - n.min = '2000-01-01'; - n.value = '2020-02-20'; - - document.body.appendChild(n); - - await n.open(); - await n.updateComplete; - - const n2 = n.shadowRoot!.querySelector(b)!; - const n3 = n2.shadowRoot!.querySelector('.calendars-container')!; - - domTriggerKey(n3, KEY_CODES_MAP.ARROW_LEFT); - - const enteredValue = new Promise((yay) => { - let timer = -1; - - n.addEventListener( - 'datepicker-value-updated', - function handler(ev: CustomEvent) { - const { isKeypress, keyCode, value } = ev.detail; - const selectedValue = isKeypress && ( - keyCode === KEY_CODES_MAP.ENTER || keyCode === KEY_CODES_MAP.SPACE - ) ? value : ''; - - clearTimeout(timer); - yay(selectedValue); - n.removeEventListener('datepicker-value-updated', handler); - } - ); - - timer = window.setTimeout(() => yay(''), 15e3); - }); - - domTriggerKey(n3, c); - - await n.updateComplete; - - document.body.removeChild(n); - - done((await enteredValue) === '2020-02-19'); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, k); - - results.push(result); - } - - deepStrictEqual(results, [true, true]); - }); - - it(`fires 'datepicker-dialog-first-updated'`, async () => { - const result = await browser.executeAsync(async (a, done) => { - const n: DatepickerDialog = document.createElement(a); - - const firstUpdated = new Promise((yay) => { - let timer = -1; - - function handler() { - clearTimeout(timer); - yay(true); - n.removeEventListener('datepicker-dialog-first-updated', handler); - } - n.addEventListener('datepicker-dialog-first-updated', handler); - - timer = window.setTimeout(() => yay(false), 15e3); - }); - - document.body.appendChild(n); - - n.locale = 'en-US'; - - await n.updateComplete; - - const firstUpdatedResult = await firstUpdated; - - document.body.removeChild(n); - - done(firstUpdatedResult); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(result, true); - }); - - it(`fires 'datepicker-dialog-opened'`, async () => { - const result = await browser.executeAsync(async (a, done) => { - const n: DatepickerDialog = document.createElement(a)!; - - const dialogOpened = new Promise((yay) => { - let timer = -1; - - function handler() { - clearTimeout(timer); - yay(true); - n.removeEventListener('datepicker-dialog-opened', handler); - } - n.addEventListener('datepicker-dialog-opened', handler); - - timer = window.setTimeout(() => yay(false), 15e3); - }); - - document.body.appendChild(n); - - n.locale = 'en-US'; - - await n.open(); - await n.updateComplete; - - const dialogOpenedResult = await dialogOpened; - - document.body.removeChild(n); - - done(dialogOpenedResult); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(result, true); - }); - - it(`fires 'datepicker-dialog-closed'`, async () => { - const result = await browser.executeAsync(async (a, done) => { - const n: DatepickerDialog = document.createElement(a)!; - - const dialogClosed = new Promise((yay) => { - let timer = -1; - - function handler() { - clearTimeout(timer); - yay(true); - n.removeEventListener('datepicker-dialog-closed', handler); - } - n.addEventListener('datepicker-dialog-closed', handler); - - timer = window.setTimeout(() => yay(false), 15e3); - }); - - document.body.appendChild(n); - - n.locale = 'en-US'; - - await n.open(); - await n.updateComplete; - - await n.close(); - await n.updateComplete; - - const dialogClosedResult = await dialogClosed; - - document.body.removeChild(n); - - done(dialogClosedResult); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(result, true); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/gestures.spec.ts b/src/tests/app-datepicker-dialog/gestures.spec.ts deleted file mode 100644 index f883852b9..000000000 --- a/src/tests/app-datepicker-dialog/gestures.spec.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { DragOptions } from '../helpers/interaction.js'; -import { interaction } from '../helpers/interaction.js'; -import { - allStrictEqual, -} from '../helpers/typed-assert.js'; - -describe('gestures', () => { - const isSafari = browser.capabilities.browserName === 'Safari'; - const actionTypes: DragOptions['type'][] = ['mouse', 'touch']; - const setup = () => browser.executeAsync(async (a, done) => { - const el: DatepickerDialog = document.createElement(a); - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.open(); - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - const cleanup = () => browser.executeAsync((a, done) => { - const el = document.body.querySelector(a); - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_DIALOG_NAME); - - const { dragCalendarsContainer } = interaction({ - isSafari, - elementName: DATEPICKER_DIALOG_NAME, - elementName2: DATEPICKER_NAME, - }); - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - it(`drags calendar to the left`, async () => { - const results: string[] = []; - - for (const a of actionTypes) { - await setup(); - - const labelText = await dragCalendarsContainer({ - x: 50, - type: a, - }, { - props: { - min: '2000-01-01', - value: '2020-02-02', - }, - }); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'January 2020'); - }); - - it(`drags calendar to the right`, async () => { - const results: string[] = []; - - for (const a of actionTypes) { - await setup(); - - const labelText = await dragCalendarsContainer({ - x: -50, - type: a, - }, { - props: { - min: '2020-02-01', - max: '2021-02-02', - value: '2020-02-02', - }, - }); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'March 2020'); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/initial-render.spec.ts b/src/tests/app-datepicker-dialog/initial-render.spec.ts deleted file mode 100644 index 2e5f45be4..000000000 --- a/src/tests/app-datepicker-dialog/initial-render.spec.ts +++ /dev/null @@ -1,223 +0,0 @@ -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import type { HTMLElementPart } from '../../custom_typings.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { sanitizeText } from '../helpers/sanitize-text.js'; -import { - allStrictEqual, - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe(`${DATEPICKER_DIALOG_NAME}::initial_render`, () => { - describe('calendar view', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: DatepickerDialog = document.createElement(a); - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - it(`takes snapshot`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - await n.open(); - await n.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_DIALOG_NAME}/initial-render-calendar-view-${browserName}.png` - ); - }); - - it(`renders with accessibility-specific attributes`, async () => { - type A = [string, string, string, string]; - - const values: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - done([ - n.getAttribute('role'), - n.getAttribute('aria-label'), - n.getAttribute('aria-modal'), - n.getAttribute('aria-hidden'), - ] as A); - }, DATEPICKER_DIALOG_NAME); - - deepStrictEqual(values, [ - 'dialog', - 'datepicker', - 'true', - 'true', - ]); - }); - - it(`has 'display: none'`, async () => { - const el = await $(DATEPICKER_DIALOG_NAME); - - const displayValue = await el.getCSSProperty('display'); - - strictEqual(displayValue.value, 'none'); - }); - - it(`renders no and scrim is hidden`, async () => { - type A = [boolean, boolean]; - - const values: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b); - const n3 = n.shadowRoot!.querySelector('.scrim')!; - - done([ - n2 == null, - getComputedStyle(n3).visibility === 'hidden', - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - allStrictEqual(values, true); - }); - - it(`renders today's date`, async () => { - type A = [string, string]; - - const [ - prop, - todayValue, - ]: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - /** - * NOTE: Get the today's date from the browser instead of - * from the environment where the testing command is run. - */ - const now = new Date(); - const today = [`${now.getFullYear()}`] - .concat([1 + now.getMonth(), now.getDate()].map(o => `0${o}`.slice(-2))) - .join('-'); - - done([ - n.value, - today, - ] as A); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(prop, todayValue); - }); - - it(`renders year list view`, async () => { - const hasYearListView: boolean = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.startView = 'yearList'; - - await n.open(); - await n.updateComplete; - - const n2 = n.shadowRoot!.querySelector(b)!; - - done( - n2.shadowRoot!.querySelector('.datepicker-body__year-list-view') == null - ); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - strictEqual(hasYearListView, false); - }); - - it(`renders with scrim and action buttons when opened`, async () => { - type A = [boolean, boolean, string[]]; - - const [ - hasVisibleScrim, - hasActionButtons, - actionLabels, - ]: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - await n.open(); - await n.updateComplete; - - const root = n.shadowRoot!; - const n2 = root.querySelector('.scrim')!; - const n3s = Array.from(root.querySelectorAll('mwc-button')!); - - done([ - getComputedStyle(n2).visibility === 'visible', - n3s.length === 3, - n3s.map(o => o.textContent), - ]); - }, DATEPICKER_DIALOG_NAME); - - allStrictEqual([hasVisibleScrim, hasActionButtons], true); - deepStrictEqual(actionLabels.map(n => sanitizeText(n)), ['clear', 'cancel', 'set']); - }); - - it(`has contents with 'part' attributes`, async () => { - type A = boolean; - - const results: A[] = []; - const parts = [ - [['scrim'], false], - [ - [ - 'actions', - 'clear', - 'confirm', - 'dialog-content', - 'dismiss', - 'scrim', - ], - true, - ], - ] as [HTMLElementPart[], boolean][]; - - for (const part of parts) { - const result: A = await browser.executeAsync(async (a, [b, c], done) => { - const n = document.body.querySelector(a)!; - - if (c) { - await n.open(); - await n.updateComplete; - } - - const partContents = - (b as HTMLElementPart[]).map(o => n.shadowRoot!.querySelector(`[part="${o}"]`)); - - done(partContents.every(o => o instanceof HTMLElement) as A); - }, DATEPICKER_DIALOG_NAME, part); - - results.push(result); - } - - allStrictEqual(results, true); - }); - - }); - -}); diff --git a/src/tests/app-datepicker-dialog/keyboards.spec.ts b/src/tests/app-datepicker-dialog/keyboards.spec.ts deleted file mode 100644 index 2b270f3bf..000000000 --- a/src/tests/app-datepicker-dialog/keyboards.spec.ts +++ /dev/null @@ -1,603 +0,0 @@ -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import { KEY_CODES_MAP } from '../../custom_typings.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - ok, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe(`${DATEPICKER_DIALOG_NAME}::keyboards`, () => { - const focusElement = async (selector: string, inDialog: boolean = false) => { - return browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - const n3 = (d ? n : n2).shadowRoot!.querySelector(c)!; - - n3.focus(); - - await n.updateComplete; - await new Promise(y => setTimeout(() => y(n3.focus()))); - await n.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, selector, inDialog); - }; - const tapElements = async ( - selectors: string[], - keys: string[] - ): Promise => { - for (const s of selectors) { - await focusElement(s); - await browser.keys(keys); - } - }; - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: DatepickerDialog = document.createElement(a); - - el.locale = 'en-US'; - // Reset `min` and `value` here before running tests - el.min = '2000-01-01'; - el.value = '2020-02-20'; - - document.body.appendChild(el); - - await el.open(); - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a); - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - it(`switches to year list view`, async () => { - await tapElements(['.btn__year-selector'], ['Space']); - - const hasYearListView: boolean = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const yearListView = n2.shadowRoot!.querySelector(c)!; - - done(yearListView != null); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - ok(hasYearListView); - }); - - it(`switches to calendar view`, async () => { - await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - n.startView = 'yearList'; - - await n.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - - await tapElements(['.btn__calendar-selector'], ['Space']); - - const hasCalendarView: boolean = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const yearListView = n2.shadowRoot!.querySelector(c)!; - - done(yearListView != null); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.datepicker-body__calendar-view'); - - ok(hasCalendarView); - }); - - it(`focuses date after navigating away when switching to calendar view`, async () => { - type A = [boolean, string]; - - await tapElements([ - `.btn__month-selector[aria-label="Next month"]`, - `.btn__year-selector`, - ], ['Space']); - - const hasYearListView: boolean = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const yearListView = n2.shadowRoot!.querySelector(c)!; - - done(yearListView != null); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - await tapElements([`.btn__calendar-selector`], ['Space']); - - const [ - hasCalendarView, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const yearListView = root.querySelector(c)!; - const focusedDate = root.querySelector(d)!; - - done([ - yearListView != null, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - '.datepicker-body__calendar-view', - toSelector('.day--focused')); - - allStrictEqual([hasCalendarView, hasYearListView], true); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
20
- - `); - }); - - it(`switches back to calendar view when new year is selected`, async () => { - type A = [string, string]; - type B = [string, string, string, string, string[]]; - - const [ - prop, - prop2, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - n2.value, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - await tapElements([ - '.btn__year-selector', - [ - `.year-list-view__list-item.year--selected`, - `+ .year-list-view__list-item`, - `+ .year-list-view__list-item`, - ].join(' '), - ], ['Space']); - - const [ - prop3, - prop4, - yearSelectorButtonContent, - calendarLabelContent, - calendarDaysContents, - ]: B = await browser.executeAsync(async (a, b, c, d, e, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const yearSelectorButton = root.querySelector(c)!; - const calendarLabel = root.querySelector(d)!; - const calendarDays = Array.from( - root.querySelectorAll(e), o => o.textContent); - - done([ - n.value, - n2.value, - yearSelectorButton.outerHTML, - calendarLabel.outerHTML, - calendarDays, - ] as B); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - '.btn__year-selector', - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - allStrictEqual([prop, prop2, prop3], '2020-02-20'); - strictEqual(prop4, '2022-02-20'); - - strictEqual(cleanHtml(yearSelectorButtonContent), prettyHtml` - - `); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
February 2022
- `); - deepStrictEqual(calendarDaysContents.map(n => cleanHtml(n.trim())), [ - '', '', 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, - 27, 28, '', '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`closes dialog when dismiss button is tapped`, async () => { - type A = [string, string]; - - await focusElement(`.actions-container > mwc-button[dialog-dismiss]`, true); - - await browser.keys(['Space']); - - // Wait for dialog closes - await (await $(DATEPICKER_DIALOG_NAME)).waitForDisplayed(undefined, true); - - const [ - cssDisplay, - ariaHiddenAttr, - ]: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - await n.updateComplete; - - done([ - getComputedStyle(n).display, - n.getAttribute('aria-hidden'), - ] as A); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(cssDisplay, 'none'); - strictEqual(ariaHiddenAttr, 'true'); - }); - - it(`closes dialog with new focused date when confirm button is tapped`, async () => { - type A = [string, string, string]; - type B = [string, string, string]; - - // FIXME: Using keyboard to select new focused date is tedious and inconsistent. - // Here updates via `value` property. - const [ - prop, - prop2, - focusedDateContent, - ]: C = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n2.value = '2020-02-13'; - - await n2.updateComplete; - - const focusedDate = n2.shadowRoot!.querySelector(c)!; - - done([ - n.value, - n2.value, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, toSelector('.day--focused')); - - await focusElement(`.actions-container > mwc-button[dialog-confirm]`, true); - - await browser.keys(['Space']); - - await (await $(DATEPICKER_DIALOG_NAME)).waitForDisplayed(undefined, true); - - const [ - prop3, - cssDisplay, - ariaHiddenAttr, - ]: B = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - await n.updateComplete; - - done([ - n.value, - getComputedStyle(n).display, - n.getAttribute('aria-hidden'), - // === '2020-02-13' - ] as B); - }, DATEPICKER_DIALOG_NAME); - - strictEqual(prop, '2020-02-20'); - allStrictEqual([prop2, prop3], '2020-02-13'); - strictEqual(cssDisplay, 'none'); - strictEqual(ariaHiddenAttr, 'true'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13
- - `); - }); - - it(`reset value when clear button is tapped`, async () => { - type A = [string, string]; - type B = string; - - const [ - initialVal, - todayValue, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const padStart = (v: number) => `0${v}`.slice(-2); - const today = new Date(); - const fy = today.getFullYear(); - const m = today.getMonth(); - const d = today.getDate(); - const todayVal = [`${fy}`].concat([1 + m, d].map(padStart)).join('-'); - - n.min = `${fy - 10}-01-01`; - n2.value = `${fy - 1}-01-01`; - n.max = `${fy + 10}-01-01`; - - await n2.updateComplete; - await n.updateComplete; - - done([n2.value, todayVal] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - await focusElement('mwc-button.clear', true); - await browser.keys(['Space']); - - const prop: B = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - done(n2.value as B); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - strictEqual(initialVal, `${Number(todayValue.slice(0, 4)) - 1}-01-01`); - strictEqual(prop, todayValue); - }); - - // region helpers - type C = [string, string, string]; - - const focusCalendarsContainer = async (): Promise => { - return await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - const n3 = n2.shadowRoot!.querySelector(c)!; - - n3.focus(); - - await n.updateComplete; - await new Promise(y => setTimeout(() => y(n3.focus()))); - await n.updateComplete; - - let activeElement = document.activeElement; - - while (activeElement?.shadowRoot) { - activeElement = activeElement.shadowRoot.activeElement; - } - - done( - `.${Array.from(activeElement?.classList.values() ?? []).join('.')}` - ); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.calendars-container'); - }; - // FIXME: Helper as a workaround until `browser.keys()` supports Alt - // on all browsers on local and CI. - const browserKeys = async (keyCode: number, altKey: boolean = false) => { - await focusCalendarsContainer(); - - return browser.executeAsync(async (a, b, c, d, e, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - const n3 = n2.shadowRoot!.querySelector(c)!; - - const opt: any = { keyCode: d, altKey: e }; - const ev = new CustomEvent('keyup', opt); - - Object.keys(opt).forEach((o) => { - Object.defineProperty(ev, o, { value: opt[o] }); - }); - - n3.dispatchEvent(ev); - - done(); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.calendars-container', keyCode, altKey); - }; - const getValuesAfterKeys = async ( - key: number, - altKey: boolean = false - ): Promise => { - await focusCalendarsContainer(); - - await browserKeys(key, altKey); - - const [prop, prop2, content]: C = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const focusedDate = n2.shadowRoot!.querySelector(c)!; - - done([ - n.value, - n2.value, - focusedDate.outerHTML, - ] as C); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, toSelector('.day--focused')); - - return [prop, prop2, cleanHtml(content)]; - }; - // #endregion helpers - - it(`focuses date (ArrowLeft)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_LEFT); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-19'); - strictEqual(focusedDateContent, prettyHtml` - -
19
- - `); - }); - - it(`focuses date (ArrowRight)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_RIGHT); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-21'); - strictEqual(focusedDateContent, prettyHtml` - -
21
- - `); - }); - - it(`focuses date (ArrowUp)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_UP); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, `2020-02-13`); - strictEqual(focusedDateContent, prettyHtml` - -
13
- - `); - }); - - it(`focuses date (ArrowDown)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_DOWN); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-27'); - strictEqual(focusedDateContent, prettyHtml` - -
27
- - `); - }); - - it(`focuses date (PageUp)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_UP); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-01-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it(`focuses date (PageDown)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_DOWN); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-03-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it(`focuses date (Home)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.HOME); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-01'); - strictEqual(focusedDateContent, prettyHtml` - -
1
- - `); - }); - - it(`focuses date (End)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.END); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-29'); - strictEqual(focusedDateContent, prettyHtml` - -
29
- - `); - }); - - it(`focuses date (Alt + PageUp)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_UP, true); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2019-02-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it(`focuses date (Alt + PageDown)`, async () => { - const [ - prop, - prop2, - focusedDateContent, - ]: C = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_DOWN, true); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2021-02-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/mouses.spec.ts b/src/tests/app-datepicker-dialog/mouses.spec.ts deleted file mode 100644 index ceb66254d..000000000 --- a/src/tests/app-datepicker-dialog/mouses.spec.ts +++ /dev/null @@ -1,491 +0,0 @@ -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - ok, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe(`${DATEPICKER_DIALOG_NAME}::mouses`, () => { - const isSafari = browser.capabilities.browserName === 'Safari'; - - const clickElements = async (classes: string[], prepareOptions?: PrepareOptions) => { - if (prepareOptions) { - await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const { props, attrs }: PrepareOptions = b; - - if (props) { - Object.keys(props).forEach((o) => { - (n as any)[o] = (props as any)[o]; - }); - } - - if (attrs) { - Object.keys(attrs).forEach((o) => { - n.setAttribute(o.toLowerCase(), String((attrs as any)[o])); - }); - } - - await n.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME, prepareOptions); - } - - /** - * NOTE: [20191229] Due to a bug in Safari 13, Safari is not able - * to recognize any clicks but it has yet to release the patch to - * stable Safari and any older versions of Safari. As of writing, - * only Safari TP has it fixed. - * - * Therefore, this helper is here to imperatively calling `.click()` - * in the browser the tests run when it detects a Safari browser. - * - * @see https://bugs.webkit.org/show_bug.cgi?id=202589 - */ - for (const cls of classes) { - if (isSafari) { - await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - const n3 = n2.shadowRoot!.querySelector(c)!; - - if (n3 instanceof HTMLButtonElement || n3.tagName === 'MWC-BUTTON') { - n3.click(); - } else { - // Simulate click event on non natively focusable elements. - // This is for selecting new focused date in the table. - ['touchstart', 'touchend'].forEach((o) => { - n3.dispatchEvent(new CustomEvent(o, { bubbles: true, composed: true })); - }); - } - - await n.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, cls); - } else { - const el = await $(DATEPICKER_DIALOG_NAME); - const el2 = (await el.shadow$(DATEPICKER_NAME)) as unknown as WebdriverIOAsync.Element; - const el3 = (await el2.shadow$(cls)) as unknown as WebdriverIOAsync.Element; - - await el3.click(); - } - } - }; - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: DatepickerDialog = document.createElement(a); - - el.locale = 'en-US'; - // Reset `min` and `value` here before running tests - el.min = '2000-01-01'; - el.value = '2020-02-20'; - - document.body.appendChild(el); - - await el.open(); - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a); - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - it(`switches to year list view`, async () => { - await clickElements(['.btn__year-selector']); - - const hasYearListView: boolean = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const yearListView = n2.shadowRoot!.querySelector(c); - - done(yearListView != null); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - ok(hasYearListView); - }); - - it(`switches to calendar view`, async () => { - await clickElements(['.btn__calendar-selector'], { - props: { - startView: 'yearList', - }, - }); - - const hasCalendarView: boolean = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const calendarView = n2.shadowRoot!.querySelector(c); - - done(calendarView != null); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, '.datepicker-body__calendar-view'); - - ok(hasCalendarView); - }); - - it(`selects new year`, async () => { - type A = [string, string, string, string, string[]]; - - await clickElements([ - '.btn__year-selector', - [ - `.year-list-view__list-item.year--selected`, - `+ .year-list-view__list-item`, - `+ .year-list-view__list-item`, - ].join(' '), - ]); - - const [ - prop, - prop2, - yearSelectorButtonContent, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, e, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const yearSelectorButton = root.querySelector(c)!; - const calendarLabel = root.querySelector(d)!; - const calendarDays = Array.from( - root.querySelectorAll(e), o => o.textContent); - - done([ - n.value, - n2.value, - yearSelectorButton.outerHTML, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - '.btn__year-selector', - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2022-02-20'); - - strictEqual(cleanHtml(yearSelectorButtonContent), prettyHtml` - - `); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
February 2022
- `); - deepStrictEqual(calendarDaysContents.map(n => cleanHtml(n.trim())), [ - '', '', 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, - 27, 28, '', '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`navigates to next month`, async () => { - type A = [string, string[]]; - - await clickElements([`.btn__month-selector[aria-label="Next month"]`]); - - const [ - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - strictEqual( - cleanHtml(calendarLabelContent), - prettyHtml`
March 2020
` - ); - deepStrictEqual(calendarDaysContents.map(n => cleanHtml(n.trim())), [ - 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`navigates to previous month`, async () => { - type A = [string, string[]]; - - await clickElements([`.btn__month-selector[aria-label="Previous month"]`]); - - const [ - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - strictEqual( - cleanHtml(calendarLabelContent), - prettyHtml`
January 2020
` - ); - deepStrictEqual(calendarDaysContents.map(n => cleanHtml(n.trim())), [ - '', '', '', 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`selects new focused date`, async () => { - type A = [string, string, string]; - - await clickElements([ - toSelector(`.full-calendar__day[aria-label="Feb 13, 2020"]`), - ]); - - const [ - prop, - prop2, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const root = n2.shadowRoot!; - - const focusedDate = root.querySelector(c)!; - - done([ - n.value, - n2.value, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - toSelector('.day--focused')); - - strictEqual(prop, '2020-02-20'); - strictEqual(prop2, '2020-02-13'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13
- - `); - }); - - it(`closes dialog when dismiss button is clicked`, async () => { - type A = [string, string]; - - const [ - cssDisplay, - ariaHiddenAttr, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const dialogDismissButton = n.shadowRoot!.querySelector(b)!; - - const dialogClosed = new Promise((yay) => { - let timer = -1; - - function handler() { - clearTimeout(timer); - yay(true); - n.removeEventListener('datepicker-dialog-closed', handler); - } - n.addEventListener('datepicker-dialog-closed', handler); - - timer = window.setTimeout(() => yay(false), 15e3); - }); - - dialogDismissButton.click(); - - await n.updateComplete; - await dialogClosed; - - done([ - getComputedStyle(n).display, - n.getAttribute('aria-hidden'), - ] as A); - }, DATEPICKER_DIALOG_NAME, `.actions-container > mwc-button[dialog-dismiss]`); - - strictEqual(cssDisplay, 'none'); - strictEqual(ariaHiddenAttr, 'true'); - }); - - it(`closes dialog with new focused date when confirm button is clicked`, async () => { - type A = [string, string, string, string, string, string]; - - await clickElements([ - toSelector(`.full-calendar__day[aria-label="Feb 13, 2020"]`), - ]); - - const [ - prop, - prop2, - prop3, - cssDisplay, - ariaHiddenAttr, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const dialogConfirmButton = root.querySelector(c)!; - const n2 = root.querySelector(b)!; - - const focusedDate = n2.shadowRoot!.querySelector(d)!; - - const propVal = n.value; - const propVal2 = n2.value; - const focusedDateVal = focusedDate.outerHTML; - - const dialogClosed = new Promise((yay) => { - let timer = -1; - - function handler() { - clearTimeout(timer); - yay(true); - n.removeEventListener('datepicker-dialog-closed', handler); - } - n.addEventListener('datepicker-dialog-closed', handler); - - timer = window.setTimeout(() => yay(false), 15e3); - }); - - dialogConfirmButton.click(); - - await n.updateComplete; - await dialogClosed; - - done([ - propVal, - propVal2, - n.value, - - getComputedStyle(n).display, - n.getAttribute('aria-hidden'), - focusedDateVal, - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - `.actions-container > mwc-button[dialog-confirm]`, - toSelector('.day--focused')); - - strictEqual(prop, '2020-02-20'); - allStrictEqual([prop2, prop3], '2020-02-13'); - strictEqual(cssDisplay, 'none'); - strictEqual(ariaHiddenAttr, 'true'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13
- - `); - }); - - it(`reset value when clear button is clicked`, async () => { - type A = [string, string, string]; - - const [ - initialProp, - prop, - todayValue, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const n2 = root.querySelector(b)!; - - const padStart = (v: number) => `0${v}`.slice(-2); - const today = new Date(); - const fy = today.getFullYear(); - const m = today.getMonth(); - const d = today.getDate(); - const todayVal = [`${fy}`].concat([1 + m, d].map(padStart)).join('-'); - - n.min = `${fy - 10}-01-01`; - n2.value = `${fy - 1}-01-01`; - n.max = `${fy + 10}-01-01`; - - await n2.updateComplete; - await n.updateComplete; - - const propVal = n2.value; - - const clearButton = root.querySelector(c)!; - - clearButton.click(); - - const propVal2 = n2.value; - - done([ - propVal, - propVal2, - todayVal, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, 'mwc-button.clear'); - - strictEqual(initialProp, `${Number(todayValue.slice(0, 4)) - 1}-01-01`); - strictEqual(prop, todayValue); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/properties.spec.ts b/src/tests/app-datepicker-dialog/properties.spec.ts deleted file mode 100644 index dda964f45..000000000 --- a/src/tests/app-datepicker-dialog/properties.spec.ts +++ /dev/null @@ -1,605 +0,0 @@ -import type { WeekNumberType } from 'nodemod/dist/calendar/calendar_typing.js'; -import { DATEPICKER_DIALOG_NAME, DATEPICKER_NAME } from '../../constants.js'; -import type { StartView } from '../../custom_typings.js'; -import type { DatepickerDialog } from '../../datepicker-dialog.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe(`${DATEPICKER_DIALOG_NAME}::properties`, () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: DatepickerDialog = document.createElement(a); - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.open(); - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_DIALOG_NAME); - }); - - it(`takes snapshot`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_DIALOG_NAME}/properties-0-${browserName}.png`); - - await browser.executeAsync(async (a, done) => { - const el = document.body.querySelector(a)!; - - el.min = '2020-01-15'; - el.value = '2020-01-17'; - - await el.updateComplete; - - done(); - }, DATEPICKER_DIALOG_NAME); - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_DIALOG_NAME}/properties-1-${browserName}.png`); - }); - - it(`renders with initial properties`, async () => { - type A = [ - number, number, - WeekNumberType, WeekNumberType, - StartView, StartView, - ]; - - const values: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - done([ - n.firstDayOfWeek, - n2.firstDayOfWeek, - - n.weekNumberType, - n2.weekNumberType, - - n.startView, - n2.startView, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME); - - deepStrictEqual(values, [ - 0, 0, - 'first-4-day-week', 'first-4-day-week', - 'calendar', 'calendar', - ] as A); - }); - - it(`renders with defined 'min'`, async () => { - type A = [string, string]; - - const expectedMin = '2000-01-01'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.min = c; - - await n.updateComplete; - - done([ - n.min, - n2.min, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedMin); - - allStrictEqual(values, expectedMin); - }); - - it(`renders with defined 'max'`, async () => { - type A = [string, string]; - - const expectedMax = '2020-02-27'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.min = '2000-01-01'; - n.max = c; - - await n.updateComplete; - - done([ - n.max, - n2.max, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedMax); - - allStrictEqual(values, expectedMax); - }); - - it(`renders with defined 'value'`, async () => { - type A = [string, string]; - - const expectedValue = '2020-02-20'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.min = '2000-01-01'; - n.max = '2020-12-31'; - n.value = c; - - await n.updateComplete; - - done([ - n.value, - n2.value, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedValue); - - allStrictEqual(values, expectedValue); - }); - - it(`renders with defined 'startView'`, async () => { - type A = [StartView, StartView]; - - const expectedStartView: StartView = 'calendar'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.startView = c; - - await n.updateComplete; - - done([ - n.startView, - n2.startView, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedStartView); - - allStrictEqual(values, expectedStartView); - }); - - it(`renders with defined 'firstDayOfWeek'`, async () => { - type A = [number, number]; - - const expectedFirstDayOfWeek = 1; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.firstDayOfWeek = c; - - await n.updateComplete; - - done([ - n.firstDayOfWeek, - n2.firstDayOfWeek, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedFirstDayOfWeek); - - allStrictEqual(values, expectedFirstDayOfWeek); - }); - - it(`renders with defined 'showWeekNumber'`, async () => { - type A = [boolean, boolean]; - - const expectedShowWeekNumber: boolean = true; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.showWeekNumber = c; - - await n.updateComplete; - - done([ - n.showWeekNumber, - n2.showWeekNumber, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedShowWeekNumber); - - allStrictEqual(values, expectedShowWeekNumber); - }); - - it(`renders with defined 'weekNumberType'`, async () => { - type A = [WeekNumberType, WeekNumberType]; - - const expectedWeekNumberType: WeekNumberType = 'first-4-day-week'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.weekNumberType = c; - - await n.updateComplete; - - done([ - n.weekNumberType, - n2.weekNumberType, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedWeekNumberType); - - allStrictEqual(values, expectedWeekNumberType); - }); - - it(`renders with defined 'landscape'`, async () => { - type A = [boolean, boolean]; - - const expectedLandscape: boolean = true; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.landscape = c; - - await n.updateComplete; - - done([ - n.landscape, - n2.landscape, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedLandscape); - - allStrictEqual(values, expectedLandscape); - }); - - it(`renders with defined 'locale'`, async () => { - type A = [string, string]; - - const expectedLocale: string = 'ja-JP'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.locale = c; - - await n.updateComplete; - - done([ - n.locale, - n2.locale, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedLocale); - - allStrictEqual(values, expectedLocale); - }); - - it(`renders with defined 'disabledDays'`, async () => { - type A = [string, string]; - - const expectedDisabledDays: string = '3,5'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.disabledDays = c; - - await n.updateComplete; - - done([ - n.disabledDays, - n2.disabledDays, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedDisabledDays); - - allStrictEqual(values, expectedDisabledDays); - }); - - it(`renders with defined 'disabledDates'`, async () => { - type A = [string, string]; - - const expectedDisabledDates: string = '2020-02-02,2020-02-15'; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.disabledDates = c; - - await n.updateComplete; - - done([ - n.disabledDates, - n2.disabledDates, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedDisabledDates); - - allStrictEqual(values, expectedDisabledDates); - }); - - it(`renders with defined 'dragRatio'`, async () => { - type A = [number, number]; - - const dragRatio = .5; - const values: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.querySelector(a)!; - - n.dragRatio = c; - - await n.updateComplete; - - const n2 = n.shadowRoot!.querySelector(b)!; - - done([ - n.dragRatio, - n2.dragRatio, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, dragRatio); - - allStrictEqual(values, dragRatio); - }); - - it(`renders with defined 'weekLabel'`, async () => { - type A = [string, string, string]; - - const expectedWeekLabel: string = '周数'; - const [ - initialLabel, - ...others - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - const iniialWeekLabel = n.weekLabel; - - n.weekLabel = c; - - await n.updateComplete; - - done([ - iniialWeekLabel, - n.weekLabel, - n2.weekLabel, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedWeekLabel); - - strictEqual(initialLabel, 'Wk'); - allStrictEqual(others, expectedWeekLabel); - }); - - it(`renders with defined 'clearLabel'`, async () => { - type A = [string, string, string]; - - const expectedClearLabel: string = '重設'; - const [ - initialClearLabel, - ...others - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const initialLabel = n.clearLabel; - - n.clearLabel = c; - - await n.updateComplete; - - const clearButton = root.querySelector(b); - - done([ - initialLabel, - n.clearLabel, - clearButton?.textContent ?? '', - ] as A); - }, DATEPICKER_DIALOG_NAME, `[part="clear"]`, expectedClearLabel); - - strictEqual(initialClearLabel, 'clear'); - allStrictEqual(others, expectedClearLabel); - }); - - it(`renders with defined 'dismissLabel'`, async () => { - type A = [string, string, string]; - - const expectedDismissLabel: string = '取消'; - const [ - initialDismissLabel, - ...others - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const initialLabel = n.dismissLabel; - - n.dismissLabel = c; - - await n.updateComplete; - - const clearButton = root.querySelector(b); - - done([ - initialLabel, - n.dismissLabel, - clearButton?.textContent ?? '', - ] as A); - }, DATEPICKER_DIALOG_NAME, `[part="dismiss"]`, expectedDismissLabel); - - strictEqual(initialDismissLabel, 'cancel'); - allStrictEqual(others, expectedDismissLabel); - }); - - it(`renders with defined 'confirmLabel'`, async () => { - type A = [string, string, string]; - - const expectedConfirmLabel: string = '取消'; - const [ - initialConfirmLabel, - ...others - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const initialLabel = n.confirmLabel; - - n.confirmLabel = c; - - await n.updateComplete; - - const clearButton = root.querySelector(b); - - done([ - initialLabel, - n.confirmLabel, - clearButton?.textContent ?? '', - ] as A); - }, DATEPICKER_DIALOG_NAME, `[part="confirm"]`, expectedConfirmLabel); - - strictEqual(initialConfirmLabel, 'set'); - allStrictEqual(others, expectedConfirmLabel); - }); - - it(`renders with defined 'noFocusTrap'`, async () => { - type A = [boolean, boolean, string]; - - const expectedNoFocusTap: boolean = true; - const [ - initialProp, - prop, - activeElementContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const getDeepActiveElement = () => { - let $n = document.activeElement; - while ($n?.shadowRoot) { $n = $n.shadowRoot.activeElement; } - return $n; - }; - - const n = document.body.querySelector(a)!; - const initialNoFocusTrap = n.noFocusTrap; - - n.min = '2000-01-01'; - n.value = '2020-02-02'; - n.noFocusTrap = c; - - await n.updateComplete; - - const confirmButton = n.querySelector(b); - - confirmButton?.focus(); - - const tabEvent = new CustomEvent('keyup'); - - Object.defineProperty(tabEvent, 'keyCode', { value: 9 }); - n.dispatchEvent(tabEvent); - - await n.updateComplete; - - done([ - initialNoFocusTrap, - n.noFocusTrap, - - getDeepActiveElement()?.outerHTML ?? '', - ] as A); - }, DATEPICKER_DIALOG_NAME, `[part="confirm"]`, expectedNoFocusTap); - - strictEqual(initialProp, false); - strictEqual(prop, expectedNoFocusTap); - strictEqual( - cleanHtml(activeElementContent), - prettyHtml`` - ); - }); - - it(`renders with defined 'alwaysResetValue'`, async () => { - type A = [boolean, boolean, string, string, string]; - - const expectedAlwaysResetValue: boolean = true; - const [ - initialProp, - prop, - - value, - value2, - - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - const n2 = root.querySelector(b)!; - const initialAlwaysResetValue = n.alwaysResetValue; - - n.min = '2000-01-01'; - n.value = '2020-02-02'; - n.alwaysResetValue = d; - n2.value = '2020-02-20'; - - await n2.updateComplete; - await n.updateComplete; - - await n.close(); - await n.open(); - await n.updateComplete; - - const focusedDate = n2.shadowRoot!.querySelector(c); - - done([ - initialAlwaysResetValue, - n.alwaysResetValue, - - n.value, - n2.value, - focusedDate?.outerHTML ?? '', - ] as A); - }, - DATEPICKER_DIALOG_NAME, - DATEPICKER_NAME, - toSelector('.day--focused'), - expectedAlwaysResetValue); - - strictEqual(initialProp, false); - strictEqual(prop, expectedAlwaysResetValue); - allStrictEqual([value, value2], '2020-02-02'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
2
- `); - }); - - it(`renders with different 'firstDayOfWeek' and 'disabledDays'`, async () => { - type A = [number, number, string, string]; - - const expectedFirstDayOfWeek: number = 1; - const expectedDisabledDays: string = '3,5'; - const values: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - n.firstDayOfWeek = c; - n.disabledDays = d; - - await n.updateComplete; - - done([ - n.firstDayOfWeek, - n2.firstDayOfWeek, - - n.disabledDays, - n2.disabledDays, - ] as A); - }, DATEPICKER_DIALOG_NAME, DATEPICKER_NAME, expectedFirstDayOfWeek, expectedDisabledDays); - - deepStrictEqual(values, [ - expectedFirstDayOfWeek, - expectedFirstDayOfWeek, - - expectedDisabledDays, - expectedDisabledDays, - ]); - }); - -}); diff --git a/src/tests/app-datepicker-dialog/tests.ts b/src/tests/app-datepicker-dialog/tests.ts deleted file mode 100644 index 9bac050c0..000000000 --- a/src/tests/app-datepicker-dialog/tests.ts +++ /dev/null @@ -1,8 +0,0 @@ -import './a11y.spec.js'; -import './attributes.spec.js'; -import './events.spec.js'; -import './gestures.spec.js'; -import './initial-render.spec.js'; -import './keyboards.spec.js'; -import './mouses.spec.js'; -import './properties.spec.js'; diff --git a/src/tests/app-datepicker/a11y.spec.ts b/src/tests/app-datepicker/a11y.spec.ts deleted file mode 100644 index b6bc59ffc..000000000 --- a/src/tests/app-datepicker/a11y.spec.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { StartView } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { deepStrictEqual } from '../helpers/typed-assert.js'; - -interface A11ySuccess { - type: 'success'; -} -interface A11yError { - type: 'error'; - name: string; - message: string; - stack: string; -} -type A11yReport = A11ySuccess | A11yError; - -describe('a11y', () => { - const toError = (result: null | A11yReport) => { - if (result?.type === 'success') return ''; - - const { message, name, stack } = (result ?? {}) as A11yError; - - const err = new Error(message); - - if (name) err.name = name; - if (stack) err.stack = stack; - - return err; - }; - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a)!; - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync(async (a, done) => { - const el = document.body.querySelector(a)!; - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`is accessible`, async () => { - const resultsTasks = [ - 'calendar' as StartView, - 'yearList' as StartView, - ].map>(async (startView) => { - const report = await browser.executeAsync(async (a, b, done) => { - try { - const el = document.body.querySelector(a)!; - - el.startView = b; - - await el.updateComplete; - - await (window as any).axeReport(el); - - done({ type: 'success' }); - } catch (e) { - done({ - type: 'error', - name: e.name, - message: e.message, - stack: e.stack, - }); - } - }, DATEPICKER_NAME, startView); - - return report; - }); - const results = await Promise.all(resultsTasks); - - deepStrictEqual( - (results).every(n => n.type === 'success'), - true, - toError(results.find(n => n.type === 'error') ?? { - type: 'error', - message: 'Test failed with unknown accessibility error', - name: 'error', - stack: '', - }) - ); - }); - -}); diff --git a/src/tests/app-datepicker/attributes.spec.ts b/src/tests/app-datepicker/attributes.spec.ts deleted file mode 100644 index 168e9f951..000000000 --- a/src/tests/app-datepicker/attributes.spec.ts +++ /dev/null @@ -1,688 +0,0 @@ -import type { WeekNumberType } from 'nodemod/dist/calendar/calendar_typing.js'; - -import { DATEPICKER_NAME } from '../../constants.js'; -import type { StartView } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - ok, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('attributes', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - el.min = '2000-01-01'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`takes snapshot (attributes)`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/attributes-0-${browserName}.png`); - - await browser.executeAsync(async (a, done) => { - const el = document.body.querySelector(a)!; - - el.min = '2020-01-15'; - el.value = '2020-01-17'; - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/attributes-1-${browserName}.png`); - }); - - it(`renders with defined 'min'`, async () => { - type A = [string, string, string, string]; - const [ - prop, - attr, - lastDisabledDateContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.value = '2020-01-17'; - n.setAttribute('min', '2020-01-15'); - await n.updateComplete; - - const root = n.shadowRoot!; - - const disabledDates = Array.from(root.querySelectorAll(b)); - const lastDisabledDate = disabledDates[disabledDates.length - 1]; - - const focusedDate = root.querySelector(c); - - done([ - n.min, - n.getAttribute('min'), - lastDisabledDate.outerHTML, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--disabled'), toSelector('.day--focused')); - - allStrictEqual([prop, attr], '2020-01-15'); - strictEqual(cleanHtml(lastDisabledDateContent), prettyHtml` - -
14
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
17
- - `); - }); - - it(`renders with defined 'max'`, async () => { - type A = [string, string, string, string]; - - const [ - prop, - attr, - firstDisabledDateContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.value = '2020-01-15'; - n.min = '2000-01-01'; - n.setAttribute('max', '2020-01-17'); - - await n.updateComplete; - - const root = n.shadowRoot!; - - const firstDisabledDate = root.querySelector(b)!; - const focusedDate = root.querySelector(c)!; - - done([ - n.max, - n.getAttribute('max'), - firstDisabledDate.outerHTML, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--disabled'), toSelector('.day--focused')); - - allStrictEqual([prop, attr], '2020-01-17'); - strictEqual(cleanHtml(firstDisabledDateContent), prettyHtml` - -
18
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'value'`, async () => { - type A = [string, string, string, string]; - - const [ - prop, - attr, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.max = '2020-12-31'; - n.setAttribute('value', '2020-01-15'); - - await n.updateComplete; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - n.getAttribute('value'), - focusedDate.outerHTML, - ]); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - allStrictEqual([prop, attr], '2020-01-15'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'startview'`, async () => { - type A = [StartView, StartView, boolean]; - - const [ - prop, - attr, - hasYearListView, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.setAttribute('startview', 'yearList' as StartView); - - await n.updateComplete; - - const yearListView = n.shadowRoot!.querySelector(b)!; - - done([ - n.startView, - n.getAttribute('startview'), - yearListView != null, - ] as A); - }, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - allStrictEqual([prop, attr], 'yearList'); - ok(hasYearListView); - }); - - it(`renders with defined 'firstdayofweek'`, async () => { - type A = [number, string, string, string]; - - const [ - prop, - attr, - firstWeekdayLabelContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.setAttribute('firstdayofweek', '2'); - - await n.updateComplete; - - const root = n.shadowRoot!; - - const firstWeekdayLabel = root.querySelector(b)!; - const focusedDate = root.querySelector(c)!; - - done([ - n.firstDayOfWeek, - n.getAttribute('firstdayofweek'), - firstWeekdayLabel.outerHTML, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - toSelector('th'), - toSelector('tbody > tr:nth-of-type(3) > td:nth-of-type(2)')); - - strictEqual(prop, 2); - strictEqual(attr, '2'); - strictEqual(cleanHtml(firstWeekdayLabelContent), prettyHtml` - -
T
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'showweeknumber'`, async () => { - type A = [boolean, string, string, string[]]; - - const [ - prop, - attr, - weekNumberLabelContent, - weekNumbersContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.value = '2020-01-15'; - n.setAttribute('showweeknumber', ''); - - await n.updateComplete; - - const root = n.shadowRoot!; - - const weekNumberLabel = root.querySelector(b)!; - const weekNumbers = Array.from( - root.querySelectorAll(c), o => o.outerHTML); - - done([ - n.showWeekNumber, - n.getAttribute('showweeknumber'), - weekNumberLabel.outerHTML, - weekNumbers, - ] as A); - }, - DATEPICKER_NAME, - toSelector(`th[aria-label="Week"]`), - toSelector('tbody > tr > th')); - - strictEqual(prop, true); - strictEqual(attr, ''); - strictEqual( - cleanHtml(weekNumberLabelContent), - prettyHtml` - -
Wk
- - ` - ); - deepStrictEqual( - weekNumbersContents.map(n => cleanHtml(n)), - [1, 2, 3, 4, 5].map((n) => { - return prettyHtml( - `${n}` - ); - }) - ); - }); - - it(`renders with defined 'weeknumbertype'`, async () => { - type A = [WeekNumberType, WeekNumberType, string[]]; - - const [ - prop, - attr, - weekNumbersContents, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.value = '2020-01-15'; - n.showWeekNumber = true; - n.setAttribute('weeknumbertype', 'first-full-week' as WeekNumberType); - - await n.updateComplete; - - const weekNumbers = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.outerHTML); - - done([ - n.weekNumberType, - n.getAttribute('weeknumbertype'), - weekNumbers, - ] as A); - }, DATEPICKER_NAME, toSelector('tbody > tr > th')); - - allStrictEqual([prop, attr], 'first-full-week'); - deepStrictEqual( - weekNumbersContents.map(n => cleanHtml(n)), - [52, 1, 2, 3, 4].map((n) => { - return prettyHtml( - `${n}` - ); - }) - ); - - }); - - it(`renders with defined 'landscape'`, async () => { - type A = [boolean, string, string]; - - const [ - prop, - attr, - cssDisplay, - ]: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - n.setAttribute('landscape', ''); - - await n.updateComplete; - - done([ - n.landscape, - n.getAttribute('landscape'), - getComputedStyle(n).display, - ] as A); - }, DATEPICKER_NAME); - - strictEqual(prop, true); - strictEqual(attr, ''); - strictEqual(cssDisplay, 'flex'); - }); - - it(`renders with defined 'locale'`, async () => { - type A = [string, string, string, string[]]; - - const [ - prop, - attr, - focusedDateContent, - weekdayLabelsContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.setAttribute('locale', 'ja-JP'); - - await n.updateComplete; - - const root = n.shadowRoot!; - - const focusedDate = root.querySelector(b)!; - const weekdayLabels = Array.from( - root.querySelectorAll(c), o => o.outerHTML); - - done([ - n.locale, - n.getAttribute('locale'), - focusedDate.outerHTML, - weekdayLabels, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused'), toSelector('.calendar-weekdays > th')); - - allStrictEqual([prop, attr], 'ja-JP'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15日
- - `); - deepStrictEqual(weekdayLabelsContents.map(n => cleanHtml(n)), [ - '日', - '月', - '火', - '水', - '木', - '金', - '土', - ].map((n) => { - return prettyHtml( - ` -
${n}
- ` - ); - })); - }); - - it(`renders with defined 'disableddays'`, async () => { - type A = [string, string, string[]]; - - const [ - prop, - attr, - disabledDatesContents, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.setAttribute('disableddays', '1,5'); - - await n.updateComplete; - - const disabledDates = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.outerHTML); - - done([ - n.disabledDays, - n.getAttribute('disableddays'), - disabledDates, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--disabled')); - - allStrictEqual([prop, attr], '1,5'); - deepStrictEqual( - disabledDatesContents.map(n => cleanHtml(n)), - [3, 6, 10, 13, 17, 20, 24, 27, 31].map((n) => { - return prettyHtml(` - -
${n}
- - `); - }) - ); - }); - - it(`renders with defined 'disableddates'`, async () => { - type A = [string, string, string[]]; - - const disableddates = [ - '2020-01-03', - '2020-01-09', - '2020-01-21', - '2020-01-27', - ].join(','); - const [ - prop, - attr, - disabledDatesContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.setAttribute('disableddates', c); - - await n.updateComplete; - - const disabledDates = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.outerHTML); - - done([ - n.disabledDates, - n.getAttribute('disableddates'), - disabledDates, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--disabled'), disableddates); - - allStrictEqual([prop, attr], disableddates); - deepStrictEqual(disabledDatesContents.map(n => cleanHtml(n)), [3, 9, 21, 27].map((n) => { - return prettyHtml(` - -
${n}
- - `); - })); - }); - - it(`renders with defined 'inline'`, async () => { - type A = [boolean, string, null]; - - const [ - prop, - attr, - noDatepickerHeader, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.setAttribute('inline', ''); - - await n.updateComplete; - - const datepickerHeader = n.shadowRoot!.querySelector(b); - - done([ - n.inline, - n.getAttribute('inline'), - datepickerHeader, - ] as A); - }, DATEPICKER_NAME, '.datepicker-header'); - - strictEqual(prop, true); - strictEqual(attr, ''); - strictEqual(noDatepickerHeader, null); - }); - - it(`renders with optional 'dragratio'`, async () => { - type A = [number, string]; - - const dragRatio = .5; - const [ - prop, - attr, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.setAttribute('dragratio', `${b}`); - - await n.updateComplete; - - done([ - n.dragRatio, - n.getAttribute('dragratio'), - ] as A); - }, DATEPICKER_NAME, dragRatio); - - strictEqual(prop, dragRatio); - strictEqual(attr, `${dragRatio}`); - }); - - it(`renders with defined 'weeklabel'`, async () => { - type A = [string, string, string]; - - const weekLabel = '周数'; - const [ - prop, - attr, - weekNumberLabelContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.value = '2020-01-15'; - n.showWeekNumber = true; - n.setAttribute('weeklabel', c); - - await n.updateComplete; - - const weekNumberLabel = n.shadowRoot!.querySelector(b)!; - - done([ - n.weekLabel, - n.getAttribute('weeklabel'), - weekNumberLabel.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector(`th[aria-label="${weekLabel}"]`), weekLabel); - - allStrictEqual([prop, attr], weekLabel); - strictEqual( - cleanHtml(weekNumberLabelContent), - prettyHtml` - -
周数
- ` - ); - }); - - it(`renders with different 'showweeknumber', 'firstdayofweek', and 'disableddays'`, async () => { - type A = [number, string, string, string, boolean, string, string[]]; - - const props: number[] = []; - const attrs: string[] = []; - const props2: string[] = []; - const attrs2: string[] = []; - const showWeekNumberProps: boolean[] = []; - const focusedDateContents: string[] = []; - const disabledDatesContents: string[][] = []; - - for (const showWeekNumber of [true, false]) { - const [ - prop, - attr, - prop2, - attr2, - prop3, - focusedDateContent, - disabledDatesContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.setAttribute('firstdayofweek', '2'); - n.setAttribute('disableddays', '1,5'); - - if (b) { - n.setAttribute('showweeknumber', ''); - } else { - n.removeAttribute('showweeknumber'); - } - - await n.updateComplete; - - const root = n.shadowRoot!; - - const focusedDate = root.querySelector(c)!; - const disabledDates = Array.from( - root.querySelectorAll(d), o => o.outerHTML); - - done([ - n.firstDayOfWeek, - n.getAttribute('firstdayofweek'), - n.disabledDays, - n.getAttribute('disableddays'), - n.showWeekNumber, - focusedDate.outerHTML, - disabledDates, - ] as A); - }, - DATEPICKER_NAME, - showWeekNumber, - toSelector('tbody > tr:nth-of-type(3) > td:nth-of-type(2)'), - toSelector('.day--disabled')); - - props.push(prop); - attrs.push(attr); - props2.push(prop2); - attrs2.push(attr2); - showWeekNumberProps.push(prop3); - focusedDateContents.push(focusedDateContent); - disabledDatesContents.push(disabledDatesContent); - } - - allStrictEqual(props, 2); - allStrictEqual(attrs, '2'); - allStrictEqual(props2.concat(attrs2), '1,5'); - deepStrictEqual(showWeekNumberProps, [true, false]); - allStrictEqual(focusedDateContents.map(n => cleanHtml(n)), prettyHtml` - -
15
- - `); - - const expectedDisabledDatesContent = [ - 3, 6, 10, 13, 17, 20, 24, 27, 31, - ].map((n) => { - return prettyHtml(` - -
${n}
- - `); - }); - deepStrictEqual(disabledDatesContents[0].map(n => cleanHtml(n)), expectedDisabledDatesContent); - deepStrictEqual(disabledDatesContents[1].map(n => cleanHtml(n)), expectedDisabledDatesContent); - }); - -}); diff --git a/src/tests/app-datepicker/edge-cases.spec.ts b/src/tests/app-datepicker/edge-cases.spec.ts deleted file mode 100644 index a2fd4ebe0..000000000 --- a/src/tests/app-datepicker/edge-cases.spec.ts +++ /dev/null @@ -1,329 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import { KEY_CODES_MAP } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { interaction } from '../helpers/interaction.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('edge cases', () => { - const isSafari = browser.capabilities.browserName === 'Safari'; - const { - browserKeys, - clickElements, - focusCalendarsContainer, - } = interaction({ isSafari, elementName: DATEPICKER_NAME }); - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - el.min = '2000-01-01'; - el.value = '2020-02-02'; - - document.body.appendChild(el); - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`updates month after navigating with keyboard and mouse`, async () => { - type A = [string, string]; - - const getValues = () => browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const calendarLabel = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - calendarLabel.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.calendar-label')); - - await focusCalendarsContainer(); - await browserKeys(KEY_CODES_MAP.PAGE_DOWN); - await browserKeys(KEY_CODES_MAP.PAGE_DOWN); - - const [prop, calendarLabelContent] = await getValues(); - - await clickElements([ - `.btn__month-selector[aria-label="Previous month"]`, - ]); - - const [prop2, calendarLabelContent2] = await getValues(); - - allStrictEqual([prop, prop2], '2020-04-02'); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
April 2020
- `); - strictEqual(cleanHtml(calendarLabelContent2), prettyHtml` -
March 2020
- `); - }); - - // #region helper - type B = [string, string]; - const getValuesAfterKeys = async ( - key: number, - altKey: boolean = false, - prepareOptions?: PrepareOptions - ): Promise => { - await browser.executeAsync(async (a, b: PrepareOptions, done) => { - const n = document.body.querySelector(a)!; - - if (b) { - const attrs = b.attrs ?? {}; - const props = b.props ?? {}; - - Object.keys(attrs ?? {}).forEach((k) => { - (n as any)[k] = (attrs as any)[k]; - }); - - Object.keys(props ?? {}).forEach((k) => { - (n as any)[k] = (props as any)[k]; - }); - } else { - n.min = '2000-01-01'; - n.value = '2020-02-29'; - } - - await n.updateComplete; - - done(); - }, DATEPICKER_NAME, prepareOptions); - - await clickElements(Array.from('123', () => ( - `.btn__month-selector[aria-label="Next month"]` - ))); - - await focusCalendarsContainer(); - await browserKeys(key, altKey); - - const [prop, content]: B = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as B); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - return [prop, cleanHtml(content)]; - }; - // #endregion helper - - it(`focuses first day of month when focused date does not exist (Arrows)`, async () => { - const arrowKeys: KEY_CODES_MAP[] = [ - KEY_CODES_MAP.ARROW_DOWN, - KEY_CODES_MAP.ARROW_LEFT, - KEY_CODES_MAP.ARROW_RIGHT, - KEY_CODES_MAP.ARROW_UP, - ]; - const props: string[] = []; - const focusedDateContents: string[] = []; - - for (const arrowKey of arrowKeys) { - const [prop, focusedDateContent] = await getValuesAfterKeys(arrowKey); - - props.push(prop); - focusedDateContents.push(focusedDateContent); - } - - allStrictEqual(props, '2020-05-01'); - allStrictEqual(focusedDateContents, prettyHtml` - -
1
- - `); - }); - - it(`focuses first day of month when focused date does not exist (Home, End)`, async () => { - const arrowKeys: KEY_CODES_MAP[] = [ - KEY_CODES_MAP.HOME, - KEY_CODES_MAP.END, - ]; - const props: string[] = []; - const focusedDateContents: string[] = []; - - for (const arrowKey of arrowKeys) { - const [prop, focusedDateContent] = await getValuesAfterKeys(arrowKey); - - props.push(prop); - focusedDateContents.push(focusedDateContent); - } - - deepStrictEqual(props, ['2020-05-01', '2020-05-31']); - deepStrictEqual(focusedDateContents, [1, 31].map(n => prettyHtml(` - -
${n}
- - `))); - }); - - it(`focuses first day of month when focused date does not exist (PageDown, PageUp)`, - async () => { - const arrowKeys: KEY_CODES_MAP[] = [ - KEY_CODES_MAP.PAGE_DOWN, - KEY_CODES_MAP.PAGE_UP, - ]; - const props: string[] = []; - const focusedDateContents: string[] = []; - - for (const arrowKey of arrowKeys) { - const [prop, focusedDateContent] = await getValuesAfterKeys(arrowKey); - - props.push(prop); - focusedDateContents.push(focusedDateContent); - } - - deepStrictEqual(props, ['2020-06-01', '2020-04-01']); - deepStrictEqual(focusedDateContents, ['Jun', 'Apr'].map(n => prettyHtml(` - -
1
- - `))); - }); - - it(`focuses first day of month when focused date does not exist (Alt + {PageDown, PageUp})`, - async () => { - const arrowKeys: KEY_CODES_MAP[] = [ - KEY_CODES_MAP.PAGE_DOWN, - KEY_CODES_MAP.PAGE_UP, - ]; - const props: string[] = []; - const focusedDateContents: string[] = []; - - for (const arrowKey of arrowKeys) { - const [prop, focusedDateContent] = await getValuesAfterKeys(arrowKey, true); - - props.push(prop); - focusedDateContents.push(focusedDateContent); - } - - deepStrictEqual(props, ['2021-05-01', '2019-05-01']); - deepStrictEqual(focusedDateContents, [2021, 2019].map(n => prettyHtml(` - -
1
- - `))); - }); - - it(`focuses first focusable day of month (Enter, Space)`, async () => { - const keys: KEY_CODES_MAP[] = [KEY_CODES_MAP.ENTER, KEY_CODES_MAP.SPACE]; - const props: string[] = []; - const focusedDateContents: string[] = []; - - for (const key of keys) { - const [prop, focusedDateContent] = await getValuesAfterKeys(key, false, { - props: { - min: '2000-01-01', - value: '2019-11-30', - }, - }); - - props.push(prop); - focusedDateContents.push(focusedDateContent); - } - - allStrictEqual(props, '2020-02-01'); - allStrictEqual(focusedDateContents.map(n => cleanHtml(n)), prettyHtml` - -
1
- - `); - }); - - it(`reset invalid 'value' to 'min' or 'max'`, async () => { - type A = [string, string, string, string]; - - const inputs: [string, string, undefined | string][] = [ - // Reset to 'min' - ['2020-02-02', '2020-02-27', '2020-01-01'], - - // Reset to 'max' - ['2020-02-02', '2020-02-27', '2020-03-01'], - ['2020-02-02', '2020-02-27', ''], - ['2020-02-02', '2020-02-27', 'lol'], - ['2020-02-02', '2020-02-27', undefined], - ]; - const maxValues: string[] = []; - const minValues: string[] = []; - const values: string[] = []; - const focusedDateContents: string[] = []; - - for (const input of inputs) { - const [ - minProp, - maxProp, - valueProp, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, d, e, done) => { - const n = document.body.querySelector(a)!; - - n.min = b; - n.max = c; - n.value = d; - - while (!(await n.updateComplete)) { - /** Loop until all renders complete (Chrome needs this but not FF) */ - } - - const focusedDate = n.shadowRoot!.querySelector(e); - - done([ - n.min, - n.max, - n.value, - focusedDate?.outerHTML || '', - ] as A); - }, DATEPICKER_NAME, ...input, toSelector('.day--focused')); - - minValues.push(minProp); - maxValues.push(maxProp); - values.push(valueProp); - focusedDateContents.push(focusedDateContent); - } - - allStrictEqual(maxValues, '2020-02-27'); - allStrictEqual(minValues, '2020-02-02'); - deepStrictEqual(focusedDateContents.map(n => cleanHtml(n)), [ - prettyHtml` - -
2
- - `, - ...Array.from('1234', () => prettyHtml(` - -
27
- - `)), - ]); - }); - -}); diff --git a/src/tests/app-datepicker/events.spec.ts b/src/tests/app-datepicker/events.spec.ts deleted file mode 100644 index 3c7c51b6e..000000000 --- a/src/tests/app-datepicker/events.spec.ts +++ /dev/null @@ -1,221 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { DatepickerFirstUpdated, DatepickerValueUpdated } from '../../custom_typings.js'; -import { KEY_CODES_MAP } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('events', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - it(`fires 'datepicker-first-updated'`, async () => { - type A = [string, string, string]; - - const resultValues: string[] = []; - const resultContents: string[] = []; - let todayDateValue: string = ''; - - /** - * This ensures the datepicker returns the correct first focusable element - * when it renders in inline mode and in normal mode. - */ - for (const inlineVal of [true, false]) { - const [val, todayVal, content]: A = await browser.executeAsync(async (a, b, done) => { - const n: Datepicker = document.createElement(a)!; - - /** - * NOTE: Get the today's date from the browser instead of - * from the environment where the testing command is run. - */ - const now = new Date(); - const today = [`${now.getFullYear()}`] - .concat([1 + now.getMonth(), now.getDate()].map(o => `0${o}`.slice(-2))) - .join('-'); - - const firstUpdated: Promise = new Promise((yay) => { - let timer = -1; - - n.addEventListener('datepicker-first-updated', function handler( - ev: CustomEvent - ) { - const { firstFocusableElement, value } = ev.detail; - const elementTag = firstFocusableElement.localName; - const selectorCls = - Array.from(firstFocusableElement.classList).find(o => o.indexOf('selector') >= 0); - - clearTimeout(timer); - yay([ - value, - today, - `${elementTag}${selectorCls ? `.${selectorCls}` : ''}`, - ] as A); - n.removeEventListener('datepicker-first-updated', handler); - }); - - timer = window.setTimeout(() => yay(['', '', '']), 15e3); - }); - - n.locale = 'en-US'; - n.min = '2000-01-01'; - n.inline = b; - - document.body.appendChild(n); - - await n.updateComplete; - - const firstUpdatedResult = await firstUpdated; - - document.body.removeChild(n); - - done(firstUpdatedResult); - }, DATEPICKER_NAME, inlineVal); - - resultValues.push(val); - resultContents.push(content); - todayDateValue = todayVal; - } - - allStrictEqual(resultValues, todayDateValue); - deepStrictEqual(resultContents, [ - `button.btn__month-selector`, - `button.btn__year-selector`, - ]); - }); - - it(`fires 'datepicker-value-selected' event (Enter, Space)`, async () => { - const keys = [ - KEY_CODES_MAP.ENTER, - KEY_CODES_MAP.SPACE, - ]; - const results: boolean[] = []; - - for (const k of keys) { - const result: boolean = await browser.executeAsync(async (a, b, done) => { - const domTriggerKey = (root: HTMLElement, keyCode: number) => { - const ev = new CustomEvent('keyup', { keyCode } as any); - - Object.defineProperty(ev, 'keyCode', { value: keyCode }); - - root.dispatchEvent(ev); - }; - - const n: Datepicker = document.createElement(a); - - n.locale = 'en-US'; - n.min = '2000-01-01'; - n.value = '2020-02-20'; - - document.body.appendChild(n); - - await n.updateComplete; - - const n2 = n.shadowRoot!.querySelector('.calendars-container')!; - - domTriggerKey(n2, KEY_CODES_MAP.ARROW_LEFT); - - const enteredValue = new Promise((yay) => { - let timer = -1; - - n.addEventListener( - 'datepicker-value-updated', - function handler(ev: CustomEvent) { - const { isKeypress, keyCode, value } = ev.detail; - const selectedValue = isKeypress && ( - keyCode === KEY_CODES_MAP.ENTER || keyCode === KEY_CODES_MAP.SPACE - ) ? value : ''; - - clearTimeout(timer); - yay(selectedValue); - n.removeEventListener('datepicker-value-updated', handler); - } - ); - - timer = window.setTimeout(() => yay(''), 15e3); - }); - - domTriggerKey(n2, b); - - await n.updateComplete; - - document.body.removeChild(n); - - done((await enteredValue) === '2020-02-19'); - }, DATEPICKER_NAME, k); - - results.push(result); - } - - deepStrictEqual(results, [true, true]); - }); - - it(`fires 'datepicker-value-updated' when clicks to select new date`, async () => { - type A = [string, boolean, string]; - - const [ - prop, - isKeypressVal, - selectedVal, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n: Datepicker = document.createElement(a); - - n.locale = 'en-US'; - n.min = '2000-01-01'; - n.value = '2020-02-02'; - - document.body.appendChild(n); - - await n.updateComplete; - - const valueUpdated = new Promise((yay) => { - let timer = -1; - - n.addEventListener( - 'datepicker-value-updated', - function handler(ev: CustomEvent) { - clearTimeout(timer); - yay(ev.detail); - n.removeEventListener('datepicker-value-updated', handler); - } - ); - - timer = window.setTimeout(() => yay(null), 15e3); - }); - - const n2 = n.shadowRoot!.querySelector(b)!; - - if (n2 instanceof HTMLButtonElement || n2.tagName === 'MWC-BUTTON') { - n2.click(); - } else { - // Simulate click event on non natively focusable elements. - // This is for selecting new focused date in the table. - ['touchstart', 'touchend'].forEach((o) => { - n2.dispatchEvent(new CustomEvent(o, { bubbles: true, composed: true })); - }); - } - - await n.updateComplete; - const { isKeypress, value } = (await valueUpdated) ?? {} as DatepickerValueUpdated; - - document.body.removeChild(n); - - done([ - n.value, - isKeypress, - value, - ] as A); - }, - DATEPICKER_NAME, - toSelector(`.full-calendar__day[aria-label="Feb 13, 2020"]`)); - - allStrictEqual([prop, selectedVal], '2020-02-13'); - strictEqual(isKeypressVal, false); - }); - -}); diff --git a/src/tests/app-datepicker/gestures.spec.ts b/src/tests/app-datepicker/gestures.spec.ts deleted file mode 100644 index f6e5db45c..000000000 --- a/src/tests/app-datepicker/gestures.spec.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { interaction } from '../helpers/interaction.js'; -import type { DragOptions } from '../helpers/interaction.js'; -import { - allStrictEqual, -} from '../helpers/typed-assert.js'; - -describe('gestures', () => { - const isSafari = browser.capabilities.browserName === 'Safari'; - const { dragCalendarsContainer } = interaction({ isSafari, elementName: DATEPICKER_NAME }); - const actionTypes: DragOptions['type'][] = ['mouse', 'touch']; - const setup = () => browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - const cleanup = () => browser.executeAsync((a, done) => { - const els = document.body.querySelectorAll(a); - - els.forEach(n => document.body.removeChild(n)); - - done(); - }, DATEPICKER_NAME); - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - it(`drags calendar to the left`, async () => { - const results: string[] = []; - - for (const a of actionTypes) { - await setup(); - - const labelText = await dragCalendarsContainer({ - x: 50, - type: a, - }, { - props: { - min: '2000-01-01', - value: '2020-02-02', - }, - }); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'January 2020'); - }); - - it(`drags calendar to the right`, async () => { - const results: string[] = []; - - for (const a of actionTypes) { - await setup(); - - const labelText = await dragCalendarsContainer({ - x: -50, - type: a, - }, { - props: { - min: '2020-02-01', - max: '2021-02-02', - value: '2020-02-02', - }, - }); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'March 2020'); - }); - - it(`does not drag calendar`, async function doesNotDragCalendar() { - const opts = actionTypes.reduce<[DragOptions, PrepareOptions][]>((p, n) => { - return p.concat([ - [{ - x: 10, - step: 1, // Use smaller step for small value of x - type: n, - }, { - props: { - min: '2000-01-01', - value: '2020-02-01', - }, - }], - [{ - x: 50, - type: n, - }, { - props: { - min: '2020-02-01', - value: '2020-02-27', - }, - }], - [{ - x: -10, - step: 1, // Use smaller step for small value of x - type: n, - }, { - props: { - min: '2000-01-01', - max: '2021-01-01', - value: '2020-02-01', - }, - }], - [{ - x: -50, - type: n, - }, { - props: { - min: '2000-01-01', - max: '2020-02-27', - value: '2020-02-01', - }, - }], - ]); - }, []); - const results: string[] = []; - - // Explicitly extend timeout based on the length of sequential tests. - this.timeout(opts.length * 10e3); - - for (const opt of opts) { - await setup(); - - const labelText = await dragCalendarsContainer(...opt); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'February 2020'); - }); - - it(`continues dragging after reaching the min/ max date`, async () => { - const opts = actionTypes.reduce<[DragOptions, PrepareOptions][]>((p, n) => { - return p.concat([ - [{ - x: 50, - x2: -100, - type: n, - }, { - props: { - min: '2020-02-01', - max: '2021-02-01', - value: '2020-02-27', - }, - }], - [{ - x: -100, - x2: 50, - type: n, - }, { - props: { - min: '2000-01-01', - max: '2020-04-27', - value: '2020-04-21', - }, - }], - ]); - }, []); - const results: string[] = []; - - for (const opt of opts) { - await setup(); - - const labelText = await dragCalendarsContainer(...opt); - - await cleanup(); - - results.push(labelText); - } - - allStrictEqual(results, 'March 2020'); - }); - -}); diff --git a/src/tests/app-datepicker/initial-render.spec.ts b/src/tests/app-datepicker/initial-render.spec.ts deleted file mode 100644 index 40adb14fe..000000000 --- a/src/tests/app-datepicker/initial-render.spec.ts +++ /dev/null @@ -1,295 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { HTMLElementPart, StartView } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('initial render', () => { - describe('calendar view', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - el.min = '2000-01-01'; - el.value = '2020-02-02'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`takes snapshot`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/initial-render-calendar-view-${browserName}.png` - ); - }); - - it(`renders initial content`, async () => { - const prop: string = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - done(n.locale); - }, DATEPICKER_NAME); - - strictEqual(prop, 'en-US'); - }); - - it(`renders calendar view`, async () => { - type A = [string, string[]]; - - const [ - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - const root = n.shadowRoot!; - - const calendarLabel = root.querySelector(b)!; - const calendarDays = Array.from( - root.querySelectorAll(c), o => o.textContent); - - done([ - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, DATEPICKER_NAME, toSelector('.calendar-label'), toSelector('.full-calendar__day')); - - strictEqual( - cleanHtml(calendarLabelContent), - prettyHtml`
February 2020
` - ); - // NOTE: Safari returns text content with unnecessary whitespaces - deepStrictEqual(calendarDaysContents.map(n => n.trim()), [ - '', '', '', '', '', '', 1, - 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`renders today's date`, async () => { - type A = [string, string, number]; - - const [ - todayDateContent, - dateLabel, - calendarDay, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - // Reset focused date - n.value = ''; - - await n.updateComplete; - - const n2 = n.shadowRoot!.querySelector(b)!; - - /** - * NOTE: Get the today's date from the browser instead of - * from the environment where the testing command is run. - */ - const now = new Date(); - const formattedDate = Intl.DateTimeFormat('en-US', { - year: 'numeric', - month: 'short', - day: 'numeric', - }).format(now); - - done([ - n2.outerHTML, - formattedDate, - now.getDate(), - ] as A); - }, DATEPICKER_NAME, toSelector('.day--today')); - - strictEqual(cleanHtml(todayDateContent, { - showToday: true, - showFocused: false, - }), prettyHtml(` - -
${calendarDay}
- - `)); - }); - - it(`focuses date based on 'value'`, async () => { - const focusedDateContent: string = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done(focusedDate.outerHTML); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
2
- - `); - }); - - }); - - describe('year list view', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - el.min = '2000-01-01'; - el.startView = 'yearList'; - el.value = '2020-02-02'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`takes snapshot`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/initial-render-year-view-${browserName}.png` - ); - }); - - it(`renders initial content`, async () => { - const yearListItemsContents: string[] = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const yearListItems = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.textContent); - - done(yearListItems); - }, DATEPICKER_NAME, '.year-list-view__list-item'); - - deepStrictEqual( - yearListItemsContents.map(n => n.trim()), - Array.from(Array(2100 - 2000 + 1), (_, i) => `${2000 + i}`) - ); - }); - - it(`focuses this year`, async () => { - const focusedYearContent: string = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedYear = n.shadowRoot!.querySelector(b)!; - - done(focusedYear.outerHTML); - }, DATEPICKER_NAME, '.year-list-view__list-item.year--selected'); - - strictEqual(cleanHtml(focusedYearContent), prettyHtml` - - `); - }); - - it(`has contents with 'part' attributes`, async () => { - type A = boolean; - - const results: A[] = []; - const parts: [HTMLElementPart[], StartView][] = [ - [ - [ - 'body', - 'calendar', - 'calendar-day', - 'calendar-selector', - 'calendar-view', - 'calendars', - 'day', - 'header', - 'label', - 'month-selector', - 'month-selectors', - 'table', - 'toolbar', - 'weekday', - 'weekdays', - 'year-selector', - ], - 'calendar', - ], - [ - [ - 'body', - 'calendar-selector', - 'header', - 'toolbar', - 'year', - 'year-list', - 'year-list-view', - 'year-selector', - ], - 'yearList', - ], - ]; - - for (const part of parts) { - const result: A = await browser.executeAsync(async (a, [b, c], done) => { - const n = document.body.querySelector(a)!; - - n.startView = c; - await n.updateComplete; - - const partContents = - (b as HTMLElementPart[]).map(o => n.shadowRoot!.querySelector(`[part="${o}"]`)); - - done(partContents.every(o => o instanceof HTMLElement) as A); - }, DATEPICKER_NAME, part); - - results.push(result); - } - - allStrictEqual(results, true); - }); - - }); - -}); diff --git a/src/tests/app-datepicker/keyboards.spec.ts b/src/tests/app-datepicker/keyboards.spec.ts deleted file mode 100644 index b7fc51e55..000000000 --- a/src/tests/app-datepicker/keyboards.spec.ts +++ /dev/null @@ -1,632 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import { KEY_CODES_MAP } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { interaction } from '../helpers/interaction.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - deepStrictEqual, - strictEqual, -} from '../helpers/typed-assert.js'; - -const { focusCalendarsContainer, browserKeys } = interaction({ elementName: DATEPICKER_NAME }); - -describe('keyboards', () => { - // #region helper - type A = [string, string]; - const getValuesAfterKeys = async ( - key: number, - altKey: boolean = false, - prepareOptions?: PrepareOptions - ): Promise
=> { - await focusCalendarsContainer(prepareOptions); - await browserKeys(key, altKey); - - const [prop, content]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - await n.updateComplete; - - const focusedDate = n.shadowRoot!.querySelector(b); - - done([ - n.value, - focusedDate?.outerHTML ?? '', - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - return [prop, cleanHtml(content)]; - }; - // #endregion helper - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - // Reset `min` and `value` here before running tests - el.min = '2000-01-01'; - el.value = '2020-02-20'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a); - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`focuses date (ArrowLeft)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_LEFT); - - strictEqual(prop, `2020-02-19`); - strictEqual(focusedDateContent, prettyHtml` - -
19
- - `); - }); - - it(`focuses date (ArrowLeft + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.ARROW_LEFT, - false, { - props: { - disabledDates: '2020-02-19', - value: '2020-02-20', - }, - }); - - strictEqual(prop, `2020-02-18`); - strictEqual(focusedDateContent, prettyHtml` - -
18
- - `); - }); - - it(`focuses date (ArrowRight)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_RIGHT); - - strictEqual(prop, `2020-02-21`); - strictEqual(focusedDateContent, prettyHtml` - -
21
- - `); - }); - - it(`focuses date (ArrowRight + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.ARROW_RIGHT, - false, { - props: { - disabledDates: '2020-02-21', - value: '2020-02-20', - }, - }); - - strictEqual(prop, `2020-02-22`); - strictEqual(focusedDateContent, prettyHtml` - -
22
- - `); - }); - - it(`focuses date (ArrowUp)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_UP); - - strictEqual(prop, `2020-02-13`); - strictEqual(focusedDateContent, prettyHtml` - -
13
- - `); - }); - - it(`focuses date (ArrowUp + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.ARROW_UP, - false, { - props: { - disabledDates: '2020-02-13', - value: '2020-02-20', - }, - }); - - strictEqual(prop, `2020-02-14`); - strictEqual(focusedDateContent, prettyHtml` - -
14
- - `); - }); - - it(`focuses date (ArrowDown)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.ARROW_DOWN); - - strictEqual(prop, '2020-02-27'); - strictEqual(focusedDateContent, prettyHtml` - -
27
- - `); - }); - - it(`focuses date (ArrowDown + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.ARROW_DOWN, - false, { - props: { - disabledDates: '2020-02-27', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-26'); - strictEqual(focusedDateContent, prettyHtml` - -
26
- - `); - }); - - it(`focuses date (PageUp)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_UP); - - strictEqual(prop, '2020-01-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it(`focuses date (PageUp + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - false, { - props: { - disabledDates: '2020-01-20', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-01-21'); - strictEqual(focusedDateContent, prettyHtml` - -
21
- - `); - }); - - it(`focuses date (PageUp + first focusable date + disabled date + min date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - false, { - props: { - min: '2020-02-02', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-02'); - strictEqual(focusedDateContent, prettyHtml` - -
2
- - `); - }); - - it(`focuses date (PageDown)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_DOWN); - - strictEqual(prop, '2020-03-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it(`focuses date (PageDown + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - false, { - props: { - disabledDates: '2020-03-20', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-03-19'); - strictEqual(focusedDateContent, prettyHtml` - -
19
- - `); - }); - - it(`focuses date (PageDown + first focusable date + disabled date + max date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - false, { - props: { - max: '2020-02-27', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-27'); - strictEqual(focusedDateContent, prettyHtml` - -
27
- - `); - }); - - it(`focuses date (Home)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.HOME); - - strictEqual(prop, '2020-02-01'); - strictEqual(focusedDateContent, prettyHtml` - -
1
- - `); - }); - - it(`focuses date (Home + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.HOME, - false, { - props: { - disabledDates: '2020-02-01', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-02'); - strictEqual(focusedDateContent, prettyHtml` - -
2
- - `); - }); - - it(`focuses date (Home + first focusable date + disabled date + min date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.HOME, - false, { - props: { - min: '2020-02-17', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-17'); - strictEqual(focusedDateContent, prettyHtml` - -
17
- - `); - }); - - it(`focuses date (End)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.END); - - strictEqual(prop, '2020-02-29'); - strictEqual(focusedDateContent, prettyHtml` - -
29
- - `); - }); - - it(`focuses date (End + first focusable date + disabled date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.END, - false, { - props: { - disabledDates: '2020-02-29', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-28'); - strictEqual(focusedDateContent, prettyHtml` - -
28
- - `); - }); - - it(`focuses date (End + first focusable date + disabled date + max date)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.END, - false, { - props: { - max: '2020-02-27', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2020-02-27'); - strictEqual(focusedDateContent, prettyHtml` - -
27
- - `); - }); - - it(`focuses date (Alt + PageUp)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys(KEY_CODES_MAP.PAGE_UP, true); - - strictEqual(prop, '2019-02-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it( - `focuses date (Alt + PageUp + first focusable date + disabled date)`, - async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - true, { - props: { - disabledDates: '2019-02-20', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2019-02-21'); - strictEqual(focusedDateContent, prettyHtml` - -
21
- - `); - } - ); - - it( - `focuses date (Alt + PageUp + first focusable date + disabled date + min date)`, - async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - true, { - props: { - min: '2019-02-27', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2019-02-27'); - strictEqual(focusedDateContent, prettyHtml` - -
27
- - `); - } - ); - - it(`focuses date (Alt + PageDown)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - true); - - strictEqual(prop, '2021-02-20'); - strictEqual(focusedDateContent, prettyHtml` - -
20
- - `); - }); - - it( - `focuses date (Alt + PageDown + first focusable date + disabled date)`, - async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - true, { - props: { - disabledDates: '2021-02-20', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2021-02-19'); - strictEqual(focusedDateContent, prettyHtml` - -
19
- - `); - } - ); - - it( - `focuses date (Alt + PageDown + first focusable date + disabled date + max date)`, - async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - true, { - props: { - max: '2021-02-17', - value: '2020-02-20', - }, - }); - - strictEqual(prop, '2021-02-17'); - strictEqual(focusedDateContent, prettyHtml` - -
17
- - `); - } - ); - - it(`focuses last day of month when new date is invalid (PageDown)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - false, { - props: { - min: '2000-01-01', - value: '2020-01-31', - }, - }); - const [prop2, focusedDateContent2] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - false, { - props: { - value: '2020-03-31', - }, - }); - - strictEqual(prop, '2020-02-29'); - strictEqual(focusedDateContent, prettyHtml` - -
29
- - `); - - strictEqual(prop2, '2020-04-30'); - strictEqual(focusedDateContent2, prettyHtml` - -
30
- - `); - }); - - it(`focuses last day of month when new date is invalid (PageUp)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - false, { - props: { - min: '2000-01-01', - value: '2020-03-31', - }, - }); - const [prop2, focusedDateContent2] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - false, { - props: { - value: '2020-05-31', - }, - }); - - strictEqual(prop, '2020-02-29'); - strictEqual(focusedDateContent, prettyHtml` - -
29
- - `); - - strictEqual(prop2, '2020-04-30'); - strictEqual(focusedDateContent2, prettyHtml` - -
30
- - `); - }); - - it(`focuses last day of month when new date is invalid (Alt + PageDown)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_DOWN, - true, { - props: { - min: '2000-01-01', - value: '2020-02-29', - }, - }); - - strictEqual(prop, '2021-02-28'); - strictEqual(focusedDateContent, prettyHtml` - -
28
- - `); - }); - - it(`focuses last day of month when new date is invalid (Alt + PageUp)`, async () => { - const [prop, focusedDateContent] = await getValuesAfterKeys( - KEY_CODES_MAP.PAGE_UP, - true, { - props: { - min: '2000-01-01', - value: '2020-02-29', - }, - }); - - strictEqual(prop, '2019-02-28'); - strictEqual(focusedDateContent, prettyHtml` - -
28
- - `); - }); - - it(`updates 'tabindex' on all affected dates (ArrowLeft)`, async () => { - const focusedDateSelector = toSelector('.day--focused'); - const getFocusedDate = (s: string): Promise => - browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - done(n.shadowRoot?.querySelector(b)?.outerHTML ?? ''); - }, DATEPICKER_NAME, s); - - const initialFocusedDateContent = await getFocusedDate(focusedDateSelector); - - await focusCalendarsContainer(); - await browserKeys(KEY_CODES_MAP.ARROW_LEFT); - - const [ - oldFocusedDateContent, - newFocusedDateContent, - ]: [string, string] = await Promise.all([ - getFocusedDate(toSelector(`[aria-label="Feb 20, 2020"]`)), - getFocusedDate(focusedDateSelector), - ]); - - deepStrictEqual( - [ - initialFocusedDateContent, - oldFocusedDateContent, - ].map(n => cleanHtml(n, { showTabindex: true })), - ['0', '-1'].map((n) => { - const isTab = '0' === n; - - return prettyHtml(` - -
20
- - `); - }) - ); - strictEqual(cleanHtml(newFocusedDateContent, { showTabindex: true }), prettyHtml` - -
19
- - `); - }); - -}); diff --git a/src/tests/app-datepicker/mouses.spec.ts b/src/tests/app-datepicker/mouses.spec.ts deleted file mode 100644 index 51c557ea7..000000000 --- a/src/tests/app-datepicker/mouses.spec.ts +++ /dev/null @@ -1,751 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { interaction } from '../helpers/interaction.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { sanitizeText } from '../helpers/sanitize-text.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - ok, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('mouses', () => { - const isSafari = browser.capabilities.browserName === 'Safari'; - const { clickElements } = interaction({ isSafari, elementName: DATEPICKER_NAME }); - - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - // Reset `min` and `value` here before running tests - el.min = '2000-01-01'; - el.value = '2020-02-20'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a); - - if (el) document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`switches to year list view`, async () => { - await clickElements(['.btn__year-selector']); - - const hasYearListView: boolean = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const yearListView = n.shadowRoot!.querySelector(b)!; - - done(yearListView != null); - }, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - ok(hasYearListView); - }); - - it(`switches to calendar view`, async () => { - await clickElements(['.btn__calendar-selector'], { - props: { - startView: 'yearList', - }, - }); - - const hasCalendarView: boolean = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const calendarView = n.shadowRoot!.querySelector(b)!; - - done(calendarView != null); - }, DATEPICKER_NAME, '.datepicker-body__calendar-view'); - - ok(hasCalendarView); - }); - - it(`focuses date after navigating away when switching to calendar view`, async () => { - type A = [boolean, string]; - - await clickElements([ - `.btn__month-selector[aria-label="Next month"]`, - `.btn__year-selector`, - ]); - - const hasYearListView: boolean = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const yearListView = n.shadowRoot!.querySelector(b)!; - - done(yearListView != null); - }, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - await clickElements([`.btn__calendar-selector`]); - - const [ - hasCalendarView, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const calendarView = root.querySelector(b)!; - const focusedDate = root.querySelector(c)!; - - done([ - calendarView != null, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - '.datepicker-body__calendar-view', - toSelector('.day--focused')); - - allStrictEqual([hasYearListView, hasCalendarView], true); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
20
- - `); - }); - - it(`switches back to calendar view when new year is selected`, async () => { - type A = [string, string, string, string[]]; - - await clickElements([ - '.btn__year-selector', - [ - `.year-list-view__list-item.year--selected`, - `+ .year-list-view__list-item`, - `+ .year-list-view__list-item`, - ].join(' '), - ]); - - const [ - prop, - yearSelectorButtonContent, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const yearSelectorButton = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - n.value, - yearSelectorButton.outerHTML, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - '.btn__year-selector', - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - strictEqual(prop, '2022-02-20'); - strictEqual(cleanHtml(yearSelectorButtonContent), prettyHtml` - - `); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
February 2022
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', '', 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, - 27, 28, '', '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`selects new focused date in current month`, async () => { - type A = [string, string]; - - await clickElements([toSelector(`.full-calendar__day[aria-label="Feb 13, 2020"]`)]); - - const [ - prop, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - strictEqual(prop, '2020-02-13'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13
- - `); - }); - - it(`selects new focused date in new month`, async () => { - type A = [string, string]; - - await clickElements([ - '.btn__month-selector[aria-label="Next month"]', - toSelector(`.full-calendar__day[aria-label="Mar 18, 2020"]`), - ]); - - const [ - focusedDateContent, - calendarLabelContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - const root = n.shadowRoot!; - - const focusedDate = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - - done([ - focusedDate.outerHTML, - calendarLabel.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused'), toSelector('.calendar-label')); - - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
18
- - `); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
March 2020
- `); - }); - - it(`does not show months before 'min'`, async () => { - type A = [boolean, string, string[]]; - - await clickElements([ - `.btn__month-selector[aria-label="Previous month"]`, - ], { - props: { - min: '2020-01-01', - value: '2020-02-02', - }, - }); - - const [ - noPrevMonthSelector, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const prevMonthSelector = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - prevMonthSelector == null, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - `.btn__month-selector[aria-label="Previous month"]`, - toSelector('.calendar-label'), - toSelector('.full-calendar__day') - ); - - ok(noPrevMonthSelector); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
January 2020
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', '', '', 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`does not show months after 'max'`, async () => { - type A = [boolean, string, string[]]; - - await clickElements([ - `.btn__month-selector[aria-label="Next month"]`, - ], { - props: { - max: '2020-03-31', - value: '2020-02-02', - }, - }); - - const [ - noNextMonthSelector, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const nextMonthSelector = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - nextMonthSelector == null, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - `.btn__month-selector[aria-label="Next month"]`, - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - ok(noNextMonthSelector); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
March 2020
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`shows correct 'min' month when spam clicking previous month button`, async () => { - type A = [boolean, string, string[]]; - - await clickElements(Array.from('1234', () => ( - `.btn__month-selector[aria-label="Previous month"]` - )), { - props: { - min: '2020-01-01', - value: '2020-05-02', - }, - }); - - const [ - noPrevMonthSelector, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const prevMonthSelector = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - prevMonthSelector == null, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - `.btn__month-selector[aria-label="Previous month"]`, - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - ok(noPrevMonthSelector); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
January 2020
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', '', '', 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`shows correct 'max' month when spam clicking next month button`, async () => { - type A = [boolean, string, string[]]; - - await clickElements(Array.from('1234', () => ( - `.btn__month-selector[aria-label="Next month"]` - )), { - props: { - max: '2020-03-31', - value: '2019-11-02', - }, - }); - - const [ - noNextMonthSelector, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const nextMonthSelector = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - nextMonthSelector == null, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - `.btn__month-selector[aria-label="Next month"]`, - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - ok(noNextMonthSelector); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
March 2020
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - const updateYear = async (newYear: string, prepareOptions?: PrepareOptions) => { - await clickElements([`.btn__year-selector`], prepareOptions); - - const yearIdx: number = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - const allYears = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.textContent!); - - done(allYears.findIndex(o => o.trim() === c)); - }, DATEPICKER_NAME, `.year-list-view__list-item`, newYear); - - await clickElements([ - `.year-list-view__list-item${!yearIdx ? '' : `:nth-of-type(${1 + yearIdx})`}`, - ]); - }; - - it(`focuses 'min' when focused date is before 'min' after updating the years`, async () => { - type A = [string, string]; - - await updateYear('2021', { - props: { - min: '2020-04-13', - value: '2020-04-25', - }, - }); - - await clickElements([ - ...Array.from('123', () => `.btn__month-selector[aria-label="Previous month"]`), - toSelector(`.full-calendar__day[aria-label="Jan 15, 2021"]`), - ]); - - await updateYear('2020'); - - const [ - prop, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - strictEqual(prop, '2020-04-13'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13
- - `); - }); - - it(`focuses 'max' when focused date is after 'max' after updating the years`, async () => { - type A = [string, string]; - - await updateYear('2019', { - props: { - max: '2020-04-25', - value: '2020-04-13', - }, - }); - - await clickElements([ - ...Array.from('123', () => `.btn__month-selector[aria-label="Next month"]`), - toSelector(`.full-calendar__day[aria-label="Jul 15, 2019"]`), - ]); - - await updateYear('2020'); - - const [ - prop, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - strictEqual(prop, '2020-04-25'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
25
- - `); - }); - - it(`updates focused date in landscape mode after navigating months`, async () => { - type A = [string, string]; - - await clickElements([ - `.btn__month-selector[aria-label="Next month"]`, - ...Array.from('12', () => `.btn__month-selector[aria-label="Previous month"]`), - toSelector(`.full-calendar__day[aria-label="Jan 15, 2020"]`), - ]); - - const [ - prop, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--focused')); - - strictEqual(prop, '2020-01-15'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - const queryCalendarLabel = async () => { - const label: string = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - done(n2.textContent); - }, DATEPICKER_NAME, toSelector('.calendar-label')); - - return sanitizeText(label); - }; - - it(`resets month after updating 'value' and 'firstDayOfWeek'`, async () => { - type A = [string, string[]]; - - await clickElements( - Array.from('123', () => `.btn__month-selector[aria-label="Next month"]`) - ); - - const calendarLabelContent = await queryCalendarLabel(); - - await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - n.firstDayOfWeek = 2; - n.value = '2020-02-13'; - - await n.updateComplete; - - done(); - }, DATEPICKER_NAME); - - const calendarLabelContent2 = await queryCalendarLabel(); - - await clickElements( - Array.from('12', () => `.btn__month-selector[aria-label="Next month"]`) - ); - - const [ - calendarLabelContent3, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const calendarLabel3 = root.querySelector(b)!; - const calendarDays = Array.from( - root.querySelectorAll(c), o => o.textContent); - - done([ - calendarLabel3.textContent, - calendarDays, - ] as A); - }, DATEPICKER_NAME, toSelector('.calendar-label'), toSelector('.full-calendar__day')); - - strictEqual(calendarLabelContent, `May 2020`); - strictEqual(calendarLabelContent2, `February 2020`); - strictEqual(calendarLabelContent3, `April 2020`); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`resets month after setting 'value' and 'firstdayofweek' attributes`, async () => { - type A = [string, string[]]; - - await clickElements( - Array.from('123', () => `.btn__month-selector[aria-label="Next month"]`) - ); - - const calendarLabelContent = await queryCalendarLabel(); - - await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - n.setAttribute('firstdayofweek', '2'); - n.setAttribute('value', '2020-02-13'); - - await n.updateComplete; - - done(); - }, DATEPICKER_NAME); - - const calendarLabelContent2 = await queryCalendarLabel(); - - await clickElements( - Array.from('12', () => `.btn__month-selector[aria-label="Next month"]`) - ); - - const [ - calendarLabelContent3, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const calendarLabel3 = root.querySelector(b)!; - const calendarDays = Array.from( - root.querySelectorAll(c), o => o.textContent); - - done([ - calendarLabel3.textContent, - calendarDays, - ] as A); - }, DATEPICKER_NAME, toSelector('.calendar-label'), toSelector('.full-calendar__day')); - - strictEqual(calendarLabelContent, `May 2020`); - strictEqual(calendarLabelContent2, `February 2020`); - strictEqual(calendarLabelContent3, `April 2020`); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, '', '', '', '', - '', '', '', '', '', '', '', - ].map(String)); - }); - - it(`selects new focused date with optional 'locale'`, async () => { - type A = [string, string, string, string[]]; - - await clickElements([ - toSelector(`.full-calendar__day[aria-label="2020年2月13日"]`), - ], { - props: { - locale: 'ja-JP', - }, - }); - - const [ - prop, - focusedDateContent, - calendarLabelContent, - calendarDaysContents, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - const focusedDate = root.querySelector(b)!; - const calendarLabel = root.querySelector(c)!; - const calendarDays = Array.from( - root.querySelectorAll(d), o => o.textContent); - - done([ - n.value, - focusedDate.outerHTML, - calendarLabel.outerHTML, - calendarDays, - ] as A); - }, - DATEPICKER_NAME, - toSelector('.day--focused'), - toSelector('.calendar-label'), - toSelector('.full-calendar__day')); - - strictEqual(prop, '2020-02-13'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
13日
- - `); - strictEqual(cleanHtml(calendarLabelContent), prettyHtml` -
2020年2月
- `); - deepStrictEqual(calendarDaysContents.map(n => sanitizeText(n.trim())), [ - '', '', '', '', '', '', 1, - 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, - '', '', '', '', '', '', '', - ].map(n => n && `${n}日`)); - }); - -}); diff --git a/src/tests/app-datepicker/properties.spec.ts b/src/tests/app-datepicker/properties.spec.ts deleted file mode 100644 index a48368382..000000000 --- a/src/tests/app-datepicker/properties.spec.ts +++ /dev/null @@ -1,699 +0,0 @@ -import type { WeekNumberType } from 'nodemod/dist/calendar/calendar_typing.js'; - -import { DATEPICKER_NAME } from '../../constants.js'; -import type { StartView } from '../../custom_typings.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { cleanHtml } from '../helpers/clean-html.js'; -import { prettyHtml } from '../helpers/pretty-html.js'; -import { toSelector } from '../helpers/to-selector.js'; -import { - allStrictEqual, - deepStrictEqual, - ok, - strictEqual, -} from '../helpers/typed-assert.js'; - -describe('properties', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - document.body.appendChild(el); - - el.locale = 'en-US'; - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`takes snapshot (properties)`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/properties-0-${browserName}.png`); - - await browser.executeAsync(async (a, done) => { - const el = document.body.querySelector(a)!; - - el.min = '2020-01-15'; - el.value = '2020-01-17'; - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/properties-1-${browserName}.png`); - }); - - it(`renders with defined 'min'`, async () => { - type A = [string, string, string, string]; - - const [ - prop, - attr, - disabledDateContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2020-01-15'; - n.value = '2020-01-17'; - - await n.updateComplete; - - const disabledDates = Array.from(root.querySelectorAll(b)); - const lastDisableDate = disabledDates[disabledDates.length - 1]; - - const focusedDate = root.querySelector(c)!; - - // Chrome requires more time to render - await n.updateComplete; - - done([ - n.min, - n.getAttribute('min'), - lastDisableDate.outerHTML, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - '.day--disabled', - toSelector('.day--focused')); - - allStrictEqual([prop, attr], '2020-01-15'); - strictEqual(cleanHtml(disabledDateContent), prettyHtml` - -
14
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
17
- - `); - }); - - it(`renders with defined 'max'`, async () => { - type A = [string, string, string, string]; - - const [ - prop, - attr, - disabledDateContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2000-01-01'; - n.max = '2020-01-17'; - n.value = '2020-01-15'; - - await n.updateComplete; - - const disabledDates = Array.from(root.querySelectorAll(b)); - - const focusedDate = root.querySelector(c)!; - - // Chrome requires more time to render - await n.updateComplete; - - done([ - n.max, - n.getAttribute('max'), - disabledDates[0].outerHTML, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - '.day--disabled', - toSelector('.day--focused')); - - allStrictEqual([prop, attr], '2020-01-17'); - strictEqual(cleanHtml(disabledDateContent), prettyHtml` - -
18
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'value'`, async () => { - type A = [string, string]; - - const [ - prop, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.max = '2020-12-31'; - n.setAttribute('value', '2020-01-15'); - - await n.updateComplete; - - const focusedDate = n.shadowRoot!.querySelector(b)!; - - done([ - n.value, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - toSelector('.day--focused')); - - strictEqual(prop, '2020-01-15'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'startView'`, async () => { - type A = [StartView, StartView, boolean]; - - const [ - prop, - attr, - hasYearListView, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.startView = 'yearList'; - - await n.updateComplete; - - const yearListView = n.shadowRoot!.querySelector(b)!; - - done([ - n.startView, - n.getAttribute('startview'), - yearListView != null, - ] as A); - }, DATEPICKER_NAME, '.datepicker-body__year-list-view'); - - allStrictEqual([prop, attr], 'yearList'); - ok(hasYearListView); - }); - - it(`renders with defined 'firstDayOfWeek'`, async () => { - type A = [number, string, string, string]; - - const [ - prop, - attr, - firstWeekdayLabelContent, - focusedDateContent, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.firstDayOfWeek = 2; - - await n.updateComplete; - - const firstWeekdayLabel = root.querySelector(b)!; - const focusedDate = root.querySelector(c)!; - - done([ - n.firstDayOfWeek, - n.getAttribute('firstdayofweek'), - firstWeekdayLabel.outerHTML, - focusedDate.outerHTML, - ] as A); - }, - DATEPICKER_NAME, - toSelector('th'), - toSelector('tbody > tr:nth-of-type(3) > td:nth-of-type(2)')); - - strictEqual(prop, 2); - strictEqual(attr, '2'); - strictEqual(cleanHtml(firstWeekdayLabelContent), prettyHtml` - -
T
- - `); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15
- - `); - }); - - it(`renders with defined 'showWeekNumber'`, async () => { - type A = [boolean, string, string, string[]]; - - const [ - prop, - attr, - weekNumberLabelContent, - weekNumbersContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.showWeekNumber = true; - - await n.updateComplete; - - const weekNumberLabel = root.querySelector(b)!; - const weekNumbers = Array.from( - root.querySelectorAll(c), o => o.outerHTML); - - done([ - n.showWeekNumber, - n.getAttribute('showweeknumber'), - weekNumberLabel.outerHTML, - weekNumbers, - ] as A); - }, - DATEPICKER_NAME, - toSelector('th[aria-label="Week"]'), - toSelector('tbody > tr > th')); - - strictEqual(prop, true); - strictEqual(attr, ''); - strictEqual( - cleanHtml(weekNumberLabelContent), - prettyHtml` - -
Wk
- ` - ); - deepStrictEqual( - weekNumbersContents.map(n => cleanHtml(n)), - [1, 2, 3, 4, 5].map((n) => { - return prettyHtml( - `${n}` - ); - }) - ); - }); - - it(`renders with defined 'weekNumberType'`, async () => { - type A = [WeekNumberType, WeekNumberType, string[]]; - - const [ - prop, - attr, - weekNumbersContents, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.showWeekNumber = true; - n.weekNumberType = 'first-full-week'; - - await n.updateComplete; - - const weekNumbers = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.outerHTML); - - done([ - n.weekNumberType, - n.getAttribute('weeknumbertype'), - weekNumbers, - ] as A); - }, - DATEPICKER_NAME, - toSelector('tbody > tr > th')); - - allStrictEqual([prop, attr], 'first-full-week'); - deepStrictEqual( - weekNumbersContents.map(n => cleanHtml(n)), - [52, 1, 2, 3, 4].map((n) => { - return prettyHtml( - `${n}` - ); - }) - ); - - }); - - it(`renders with defined 'landscape'`, async () => { - type A = [boolean, string, string]; - - const [ - prop, - attr, - cssDisplay, - ]: A = await browser.executeAsync(async (a, done) => { - const n = document.body.querySelector(a)!; - - n.landscape = true; - - await n.updateComplete; - - done([ - n.landscape, - n.getAttribute('landscape'), - getComputedStyle(n).display, - ] as A); - }, DATEPICKER_NAME); - - strictEqual(prop, true); - strictEqual(attr, ''); - strictEqual(cssDisplay, 'flex'); - }); - - it(`renders with defined 'locale'`, async () => { - type A = [string, string, string[]]; - - const [ - prop, - focusedDateContent, - weekdayLabelsContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.locale = 'ja-JP'; - - await n.updateComplete; - - const focusedDate = root.querySelector(b)!; - const weekdayLabels = Array.from( - root.querySelectorAll(c), o => o.outerHTML); - - done([ - n.locale, - focusedDate.outerHTML, - weekdayLabels, - ] as A); - }, - DATEPICKER_NAME, - toSelector('.day--focused'), - toSelector('.calendar-weekdays > th')); - - strictEqual(prop, 'ja-JP'); - strictEqual(cleanHtml(focusedDateContent), prettyHtml` - -
15日
- - `); - deepStrictEqual(weekdayLabelsContents.map(n => cleanHtml(n)), [ - '日', - '月', - '火', - '水', - '木', - '金', - '土', - ].map((n) => { - return prettyHtml(` - -
${n}
- `); - })); - }); - - it(`renders with defined 'disabledDays'`, async () => { - type A = [string, string[]]; - - const [ - prop, - disabledDatesContents, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.disabledDays = '1,5'; - - await n.updateComplete; - - const disabledDates = Array.from( - n.shadowRoot!.querySelectorAll(b), o => o.outerHTML); - - done([ - n.disabledDays, - disabledDates, - ] as A); - }, DATEPICKER_NAME, toSelector('.day--disabled')); - - strictEqual(prop, '1,5'); - deepStrictEqual( - disabledDatesContents.map(n => cleanHtml(n)), - [ - 3, - 6, - 10, - 13, - 17, - 20, - 24, - 27, - 31, - ].map((n) => { - return prettyHtml(` - -
${n}
- - `); - }) - ); - }); - - it(`renders with defined 'disabledDates'`, async () => { - type A = [string, string[]]; - - const propVal = [ - '2020-01-03', - '2020-01-09', - '2020-01-21', - '2020-01-27', - ].join(','); - - const [ - prop, - disabledDatesContents, - ]: A = await browser.executeAsync(async (a, b, c, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.disabledDates = b; - - await n.updateComplete; - - const disabledDates = Array.from( - n.shadowRoot!.querySelectorAll(c), o => o.outerHTML); - - done([ - n.disabledDates, - disabledDates, - ] as A); - }, DATEPICKER_NAME, propVal, toSelector('.day--disabled')); - - strictEqual(prop, propVal); - deepStrictEqual(disabledDatesContents.map(n => cleanHtml(n)), [ - 3, - 9, - 21, - 27, - ].map((n) => { - return prettyHtml(` - -
${n}
- - `); - })); - }); - - it(`renders with defined 'inline'`, async () => { - type A = [boolean, null]; - - const [ - prop, - noDatepickerHeader, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.inline = true; - - await n.updateComplete; - - const datepickerHeader = n.shadowRoot!.querySelector(b); - - done([ - n.inline, - datepickerHeader, - ] as A); - }, DATEPICKER_NAME, '.datepicker-header'); - - strictEqual(prop, true); - strictEqual(noDatepickerHeader, null); - }); - - it(`renders with defined 'dragRatio'`, async () => { - type A = number; - - const dragRatio = .5; - const prop: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.dragRatio = b; - - await n.updateComplete; - - done(n.dragRatio as A); - }, DATEPICKER_NAME, dragRatio); - - strictEqual(prop, dragRatio); - }); - - it(`renders with defined 'weekLabel'`, async () => { - type A = [string, string]; - - const [ - prop, - weekNumberLabelContent, - ]: A = await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.showWeekNumber = true; - n.weekLabel = '周数'; - - await n.updateComplete; - - const weekNumberLabel = n.shadowRoot!.querySelector(b)!; - - done([ - n.weekLabel, - weekNumberLabel.outerHTML, - ] as A); - }, DATEPICKER_NAME, toSelector(`th[aria-label="周数"]`)); - - strictEqual(prop, '周数'); - strictEqual( - cleanHtml(weekNumberLabelContent), - prettyHtml` - -
周数
- ` - ); - }); - - it(`renders with different 'showWeekNumber', 'firstDayOfWeek', and 'disabledDays'`, async () => { - type A = [number, string, string, boolean, string, string[]]; - - const props: number[] = []; - const attrs: string[] = []; - const props2: string[] = []; - const showWeekNumberProps: boolean[] = []; - const focusedDateContents: string[] = []; - const disabledDatesContents: string[][] = []; - - for (const showWeekNumber of [true, false]) { - const [ - prop, - attr, - prop2, - prop3, - focusedDateContent, - disabledDatesContent, - ]: A = await browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const root = n.shadowRoot!; - - n.min = '2000-01-01'; - n.value = '2020-01-15'; - n.firstDayOfWeek = 2; - n.disabledDays = '1,5'; - n.showWeekNumber = b; - - await n.updateComplete; - - const focusedDate = root.querySelector(c)!; - const disabledDates = Array.from( - root.querySelectorAll(d), o => o.outerHTML); - - done([ - n.firstDayOfWeek, - n.getAttribute('firstdayofweek'), - n.disabledDays, - n.showWeekNumber, - focusedDate.outerHTML, - disabledDates, - ] as A); - }, - DATEPICKER_NAME, - showWeekNumber, - toSelector('tbody > tr:nth-of-type(3) > td:nth-of-type(2)'), - toSelector('.day--disabled')); - - props.push(prop); - attrs.push(attr); - props2.push(prop2); - showWeekNumberProps.push(prop3); - focusedDateContents.push(focusedDateContent); - disabledDatesContents.push(disabledDatesContent); - } - - allStrictEqual(props, 2); - allStrictEqual(attrs, '2'); - allStrictEqual(props2, '1,5'); - deepStrictEqual(showWeekNumberProps, [true, false]); - allStrictEqual(focusedDateContents.map(n => cleanHtml(n)), prettyHtml` - -
15
- - `); - - const expectedDisabledDatesContent = [ - 3, - 6, - 10, - 13, - 17, - 20, - 24, - 27, - 31, - ].map((n) => { - return prettyHtml(` - -
${n}
- - `); - }); - deepStrictEqual(disabledDatesContents[0].map(n => cleanHtml(n)), expectedDisabledDatesContent); - deepStrictEqual(disabledDatesContents[1].map(n => cleanHtml(n)), expectedDisabledDatesContent); - }); - -}); diff --git a/src/tests/app-datepicker/tests.ts b/src/tests/app-datepicker/tests.ts deleted file mode 100644 index 3c4272f17..000000000 --- a/src/tests/app-datepicker/tests.ts +++ /dev/null @@ -1,10 +0,0 @@ -import './a11y.spec.js'; -import './attributes.spec.js'; -import './edge-cases.spec.js'; -import './events.spec.js'; -import './gestures.spec.js'; -import './initial-render.spec.js'; -import './keyboards.spec.js'; -import './mouses.spec.js'; -import './properties.spec.js'; -import './timezones.spec.js'; diff --git a/src/tests/app-datepicker/timezones.spec.ts b/src/tests/app-datepicker/timezones.spec.ts deleted file mode 100644 index d75e37b16..000000000 --- a/src/tests/app-datepicker/timezones.spec.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { DATEPICKER_NAME } from '../../constants.js'; -import type { Datepicker } from '../../datepicker.js'; -import { APP_INDEX_URL } from '../constants.js'; -import { - deepStrictEqual, -} from '../helpers/typed-assert.js'; -import { getAllDateStrings } from '../timezones.js'; - -describe('timezones', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - beforeEach(async () => { - await browser.executeAsync(async (a, done) => { - const el: Datepicker = document.createElement(a); - - el.locale = 'en-US'; - // Reset `min` and `value` here before running tests - el.min = '2000-01-01'; - el.value = '2020-01-01'; - - document.body.appendChild(el); - - await el.updateComplete; - - done(); - }, DATEPICKER_NAME); - }); - - afterEach(async () => { - await browser.executeAsync((a, done) => { - const el = document.body.querySelector(a)!; - - document.body.removeChild(el); - - done(); - }, DATEPICKER_NAME); - }); - - it(`takes snapshot`, async () => { - const browserName = browser.capabilities.browserName; - - await browser.saveScreenshot( - `./src/tests/snapshots/${DATEPICKER_NAME}/timezones-${browserName}.png`); - }); - - it(`resolves to the correct 'value' in different timezones`, async function timezoneTests() { - /** - * Some browsers require more time to run this test as the tests date used here is - * considerably large that makes some browsers to take quite some time to update the - * element in terms of layout and paint. - */ - this.timeout(90e3); - - const allDateStrings = getAllDateStrings(); - const results: string[] = []; - const expected: string[] = allDateStrings.map(n => n[1].value); - - for (const n of allDateStrings) { - const valueProp = await browser.executeAsync( - async (a: string, b: string, done: (a: string) => void) => { - const el = document.body.querySelector(a)!; - - el.value = b; - - await el.updateComplete; - - return done(el.value); - }, - DATEPICKER_NAME, - n[1].date - ); - - results.push(valueProp); - } - - deepStrictEqual(results, expected); - }); - -}); diff --git a/src/tests/constants.ts b/src/tests/constants.ts deleted file mode 100644 index 22c0c0452..000000000 --- a/src/tests/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const APP_INDEX_URL = 'http://localhost:4000/src/tests/index.html'; diff --git a/src/tests/custom_typings.ts b/src/tests/custom_typings.ts deleted file mode 100644 index 317d57765..000000000 --- a/src/tests/custom_typings.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { LitElement } from 'lit-element'; - -import type { Datepicker } from '../datepicker.js'; - -export type PrepareOptions = Partial< - Record<'props' | 'attrs', Partial>>>; diff --git a/src/tests/custom_wdio.ts b/src/tests/custom_wdio.ts deleted file mode 100644 index 8f45aba74..000000000 --- a/src/tests/custom_wdio.ts +++ /dev/null @@ -1,225 +0,0 @@ -interface ChromeCapability { - browserName: 'chrome'; - 'goog:chromeOptions'?: { - args: string[]; - w3c?: boolean; - }; -} -interface FirefoxCapability { - browserName: 'firefox'; - 'moz:firefoxOptions'?: { - args: string[]; - }; -} -interface SafariCapability { - browserName: 'safari'; - 'apple:safari.options'?: { - technologyPreview: boolean; - }; -} - -interface EdgeCapability { - browserName: 'microsoftedge'; -} - -type BrowsersCapability = - | ChromeCapability - | FirefoxCapability - | SafariCapability - | EdgeCapability; - -interface BaseCapability extends Partial> { - maxInstances?: number; -} - -export type Capability = BaseCapability & BrowsersCapability; - -interface SauceLabsBrowserCapability extends Partial> { - browserVersion: string; - platformName: string; - 'sauce:options'?: SauceLabsOptions; -} - -/** @see https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options */ -export interface SauceLabsOptions { - ['custom-data']?: Record; - build?: string; - name?: string; - passed?: boolean; - screenResolution?: string; - seleniumVersion?: string; - tags?: string[]; - timeZone?: string; -} - -interface SauceLabsChromeCapability extends SauceLabsBrowserCapability, Omit { - browserName: 'googlechrome'; -} - -type SauceLabsFirefoxCapability = SauceLabsBrowserCapability & FirefoxCapability; - -type SauceLabsSafariCapability = SauceLabsBrowserCapability & SafariCapability; - -type SauceLabsEdgeCapability = SauceLabsBrowserCapability & EdgeCapability; - -export type SauceLabsCapability = - | SauceLabsChromeCapability - | SauceLabsFirefoxCapability - | SauceLabsSafariCapability - | SauceLabsEdgeCapability; - -/** - * Mocha CLI commands - * - * @see https://mochajs.org/#command-line-usage - */ -interface MochaFramework { - framework: 'mocha'; - mochaOpts: { - require?: string[]; - timeout?: number; - ui: 'bdd' | 'tdd'; - checkLeaks?: boolean; - asyncOnly?: boolean; - bail?: boolean; - allowUncaught?: boolean; - reporter?: string; - inlineDiffs?: boolean; - }; -} -interface JasmineFramework { - framework: 'jasmine'; - jasmineNodeOpts: { - defaultTimeoutInterval: number; - grep: null; - invertGrep: null; - expectationResultHandler(passed: unknown, assertion: unknown): void; - }; -} -// interface CucumberFramework { -// require: string[]; -// backtrace: boolean; -// requireModule: string[]; -// dryRun: boolean; -// failFast: boolean; -// format: string[]; -// colors: true; -// snippets: boolean; -// source: boolean; -// profile: string[]; -// strict: boolean; -// tags: string[]; -// timeout: number; -// ignoreUndefinedDefinitions: boolean; - -// /** Cucumber specific overloads */ -// beforeHook(test: unknown, context: unknown, stepData: unknown): void -// beforeHook(test: unknown, context: unknown, stepData: unknown, world: unknown): void - -// /** Cucumber specific overloads */ -// afterHook( -// test: unknown, -// context: unknown, -// { error, result, duration, passed, retries }: any, -// stepData: unknown, -// world?: unknown -// ): void; - -// beforeFeature(uri: string, feature: unknown, scenarios: unknown): void; -// beforeScenario( -// uri: string, feature: unknown, scenarios: unknown, sourceLocation: string): void; -// beforeStep(uri: string, feature: unknown, stepData: unknown, context: unknown): void; -// afterStep( -// uri: string, -// feature: unknown, -// { error, result, duration, passed }: any, -// stepData: unknown, -// context: unknown -// ): void; -// afterScenario( -// uri: string, feature: unknown, scenarios: unknown, sourceLocation: string): void; -// afterFeature(uri: string, feature: unknown, scenarios: unknown): void; -// } - -export type Framework = MochaFramework | JasmineFramework; - -// type Services = -// | 'selenium-standalone' -// | 'sauce'; - -type Reporters = - | 'spec'; - -export type ReportersConfig = [Reporters, Record]; - -interface BaseConfig { - runner: 'local'; - hostname?: string; - port?: number; - path?: string; - protocol?: 'http' | 'https'; - specs: string[]; - exclude: string[]; - maxInstances: number; - logLevel: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'; - outputDir?: string; - baseUrl: string; - bail: 0 | 1; - waitforTimeout: number; - connectionRetryCount: number; - // services: string[]; - specFileRetries: number; - reporters: (Reporters | ReportersConfig)[]; - filesToWatch?: string[]; - - onPrepare?(config: WdioConfig, capabilities: WdioConfig['capabilities']): void; - beforeSession?(config: WdioConfig, capabilities: WdioConfig['capabilities'], specs: WdioConfig['specs']): void; - before?(config: WdioConfig, capabilities: WdioConfig['capabilities']): void; - beforeSuite?(suite: object): void; - beforeHook?(test: unknown, context: unknown): void; - afterHook?( - test: unknown, context: unknown, { error, result, duration, passed, retries }: any): void; - beforeTest?(test: unknown, context: unknown): void; - beforeCommand?(commandName: string, args: string[]): void; - afterCommand?(commandName: string, args: string[], result: 0 | 1, error: Error): void; - afterTest?( - test: unknown, context: unknown, { error, result, duration, passed, retries }: any): void; - afterSuite?(suite: object): void; - after?(result: 0 | 1, capabilities: WdioConfig['capabilities'], specs: WdioConfig['specs']): void; - afterSession?(config: WdioConfig, capabilities: WdioConfig['capabilities'], specs: WdioConfig['specs']): void; - onComplete?( - exitCode: 0 | 1, - config: WdioConfig, - capabilities: WdioConfig['capabilities'], - results: object - ): void; - onReload?(oldSessionId: string, newSessionId: string): void; -} - -interface SeleniumArgsDrivers { - version: string; -} -interface SeleniumArgs { - drivers: Record<'chrome' | 'firefox', SeleniumArgsDrivers>; -} -interface SeleniumConfig extends BaseConfig { - capabilities: Capability[]; - services: ['selenium-standalone']; - seleniumLogs: 'logs'; - seleniumInstallArgs?: SeleniumArgs; - seleniumArgs?: SeleniumArgs; -} - -interface SauceLabsConfig extends BaseConfig { - services: ['sauce']; - user?: string; - key?: string; - region?: 'us' | 'eu'; - sauceConnect?: boolean; - sauceConnectOpts: Record<'user' | 'accessKey', string>; - capabilities: SauceLabsCapability[]; -} - -type Config = SeleniumConfig | SauceLabsConfig; - -export type WdioConfig = Config & Framework; diff --git a/src/tests/full-icu.spec.ts b/src/tests/full-icu.spec.ts deleted file mode 100644 index e8e71af56..000000000 --- a/src/tests/full-icu.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { APP_INDEX_URL } from './constants.js'; -import { - ok, -} from './helpers/typed-assert.js'; - -function hasFullICU() { - try { - const january = new Date(9e8); - const spanish = new Intl.DateTimeFormat('es', { month: 'long' }); - return spanish.format(january) === 'enero'; - } catch (err) { - return false; - } -} - -describe('full-icu', () => { - before(async () => { - await browser.url(APP_INDEX_URL); - }); - - it(`supports full ICU`, async () => { - ok(hasFullICU()); - }); - -}); diff --git a/src/tests/helpers/clean-html.ts b/src/tests/helpers/clean-html.ts deleted file mode 100644 index 3622a2b98..000000000 --- a/src/tests/helpers/clean-html.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { prettyHtml } from './pretty-html.js'; -import { sanitizeText, SanitizeTextOptions } from './sanitize-text.js'; - -export function cleanHtml(s: string, options?: SanitizeTextOptions) { - return prettyHtml(sanitizeText(s, options)); -} diff --git a/src/tests/helpers/interaction.ts b/src/tests/helpers/interaction.ts deleted file mode 100644 index c16fb9c0f..000000000 --- a/src/tests/helpers/interaction.ts +++ /dev/null @@ -1,420 +0,0 @@ -import type { Datepicker } from '../../datepicker.js'; -import type { PrepareOptions } from '../custom_typings.js'; -import { toSelector } from './to-selector.js'; - -// FIXME: Helper as a workaround until `browser.keys()` supports Alt -// on all browsers on local and CI. -const browserKeys = (elementName: string) => -async (keyCode: number, altKey: boolean = false) => { - return browser.executeAsync(async (a, b, c, d, done) => { - const n = document.body.querySelector(a)!; - const n2 = n.shadowRoot!.querySelector(b)!; - - const opt: any = { keyCode: c, altKey: d }; - const ev = new CustomEvent('keyup', opt); - - Object.keys(opt).forEach((o) => { - Object.defineProperty(ev, o, { value: opt[o] }); - }); - - n2.dispatchEvent(ev); - - done(); - }, elementName, '.calendars-container', keyCode, altKey); -}; - -const clickElements = (elementName: string, isSafari: boolean) => -async (classes: string[], prepareOptions?: PrepareOptions) => { - if (prepareOptions) { - await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - - const { props, attrs }: PrepareOptions = b; - - if (props) { - Object.keys(props).forEach((o) => { - (n as any)[o] = (props as any)[o]; - }); - } - - if (attrs) { - Object.keys(attrs).forEach((o) => { - n.setAttribute(o.toLowerCase(), String((attrs as any)[o])); - }); - } - - await n.updateComplete; - - done(); - }, elementName, prepareOptions); - } - - /** - * NOTE: [20191229] Due to a bug in Safari 13, Safari is not able - * to recognize any clicks but it has yet to release the patch to - * stable Safari and any older versions of Safari. As of writing, - * only Safari TP has it fixed. - * - * Therefore, this helper is here to imperatively calling `.click()` - * in the browser the tests run when it detects a Safari browser. - * - * @see https://bugs.webkit.org/show_bug.cgi?id=202589 - */ - for (const cls of classes) { - if (isSafari) { - await browser.executeAsync(async (a, b, done) => { - const n = document.body.querySelector(a)!; - const n2: HTMLElement = n.shadowRoot!.querySelector(b)!; - - if (n2 instanceof HTMLButtonElement || n2.tagName === 'MWC-BUTTON') { - n2.click(); - } else { - // Simulate click event on non natively focusable elements. - // This is for selecting new focused date in the table. - ['touchstart', 'touchend'].forEach((o) => { - n2.dispatchEvent(new CustomEvent(o, { bubbles: true, composed: true })); - }); - } - - await n.updateComplete; - - done(); - }, elementName, cls); - } else { - const el = await $(elementName); - const el2 = (await el.shadow$(cls)) as unknown as WebdriverIOAsync.Element; - - await el2.click(); - } - } -}; - -const focusCalendarsContainer = (elementName: string) => -async (prepareOptions?: PrepareOptions): Promise => { - return await browser.executeAsync(async (a, b, c, done) => { - const a1 = document.body.querySelector(a)!; - - if (c) { - const { props, attrs }: PrepareOptions = c; - - if (props) { - Object.keys(props).forEach((o) => { - (a1 as any)[o] = (props as any)[o]; - }); - } - - if (attrs) { - Object.keys(attrs).forEach((o) => { - a1.setAttribute(o.toLowerCase(), String((attrs as any)[o])); - }); - } - } - - await a1.updateComplete; - - const b1 = a1.shadowRoot!.querySelector(b)!; - - b1.focus(); - - await a1.updateComplete; - await new Promise(y => setTimeout(() => y(b1.focus()))); - await a1.updateComplete; - - let activeElement = document.activeElement; - - while (activeElement?.shadowRoot) { - activeElement = activeElement.shadowRoot.activeElement; - } - - done( - `.${Array.from(activeElement?.classList.values() ?? []).join('.')}` - ); - }, elementName, '.calendars-container', prepareOptions); -}; - -interface OptionsDragTo { - x: number; - y: number; - dx?: number; - dy?: number; - dx2?: number; - dy2?: number; - step?: number; - type?: 'mouse' | 'touch'; -} -export interface DragOptions extends Partial> { - x2?: number; - y2?: number; -} -interface ComputeStepsOpts { - ix: number; - iy: number; - xn: number; - yn: number; - stepN: number; -} -const dragCalendarsContainer = (elementName: string, elementName2?: string) => { - return async ( - options: DragOptions, - prepareOptions?: PrepareOptions - ): Promise => { - return browser.executeAsync(async (a, b, c, d, e, f, done) => { - try { - const simulateInputEvent = (n: HTMLElement, eventName: string, opts?: PointerEvent) => { - /** - * NOTE: For all MS Edge < 16, `PointerEvent` has a bug where - * `pageX` is always < 10 and it can neither be override-able nor configurable - * unlike other browsers. However, it works perfectly well with real user gestures. - * - * To tackle such weird situation, `MouseEvent` will be used instead - * for all MS Edges as well as IE11. - */ - const isPointerEvent = /^pointer/i.test(eventName) && - !('MSPointerEvent' in window) && - !('MSGestureEvent' in window); - const otherOptions = { - /** - * NOTE: Making sure all events triggered bubbles and - * propagates across shadow boundary. - */ - bubbles: true, - ...opts, - }; - /** - * NOTE: `otherOptions` might contain the following properties for a typical CustomEvent: - * - * 1. `bubbles` - * 2. `cancelable` - * 3. `composed` - * 4. `detail` - * - * In IE11, `new PointerEvent(...)` is not prohibited in script or dev tools. - * In script, all events except `PointerEvent` can be instantiated. - * - * Here, it accidentally becomes a working implementation: - * `new MouseEvent('pointerdown', ...)`, which sounds ridiculous at first, - * but so far this is by far the _only_ way to trigger animations when - * dragging/ swiping the calendar. `Event` and `CustomEvent` will skip running - * the animations which is a good thing but worth to be documented here for - * future reference. - */ - const ev = isPointerEvent ? - new PointerEvent(eventName, otherOptions) : - new MouseEvent(eventName, otherOptions); - - n.dispatchEvent(ev); - }; - const dragTo = async (target: HTMLElement, dragOpts: OptionsDragTo) => { - const { - x = 0, - y = 0, - dx = 0, - dy = 0, - dx2 = 0, - dy2 = 0, - step = 0, - type = 'mouse', - }: OptionsDragTo = dragOpts ?? {}; - const isMouse = type === 'mouse'; - - const toPointerEventOptions = (px: number, py: number) => { - return { - clientX: px, - pageX: px, - offsetX: px, - x: px, - - clientY: py, - pageY: py, - offsetY: py, - y: py, - } as PointerEvent; - }; - const computeSteps = (computeStepsOpts: ComputeStepsOpts) => { - const { - ix, - iy, - xn, - yn, - stepN, - }: ComputeStepsOpts = computeStepsOpts ?? {}; - - const hasX = typeof xn === 'number' && isFinite(xn) && xn !== 0; - const hasY = typeof yn === 'number' && isFinite(yn) && yn !== 0; - - if (!hasX && !hasY) return { x: ix, y: iy, steps: [] }; - - let fx = ix; - let fy = iy; - - const nn = hasX && hasY ? Math.max(xn, yn) : (hasX ? xn : yn); - const maxX = ix + nn; - const maxY = iy + nn; - const total = Math.ceil(Math.abs(nn) / stepN); - const factor = nn < 0 ? -1 : 1; - const temp: [number, number][] = []; - - for (let i = 0; i <= total; i += 1) { - const ni = i * stepN * factor; - const mathFn = factor < 0 ? Math.max : Math.min; - const nx = hasX ? mathFn(maxX, Math.floor(fx + ni)) : 0; - const ny = hasY ? mathFn(maxY, Math.floor(fy + ni)) : 0; - - if (i === total) { - fx = nx; - fy = ny; - } - - temp.push([nx, ny]); - } - - return { x: fx, y: fy, steps: temp }; - }; - - const eachStep = step == null || step <= 0 ? 20 : step; - - let lastX = x; - let lastY = y; - let steps: [number, number][] = []; - - for (const [nx, ny] of [ - [dx, dy], - [dx2, dy2], - ]) { - // Simulate pause before starting subsequent dragging sequences - await new Promise(yay => setTimeout(yay, 500)); - - const results = computeSteps({ - ix: lastX, - iy: lastY, - xn: nx, - yn: ny, - stepN: eachStep, - }); - - if (!results.steps.length) continue; - - lastX = results.x; - lastY = results.y; - steps = steps.concat(results.steps); - } - - simulateInputEvent( - target, - isMouse ? 'mousedown' : 'touchstart', - toPointerEventOptions(x, y)); - - for (const [nx, ny] of steps) { - simulateInputEvent( - target, - isMouse ? 'mousemove' : 'touchmove', - toPointerEventOptions(nx, ny)); - - await new Promise(yay => requestAnimationFrame(yay)); - } - - simulateInputEvent( - target, - isMouse ? 'mouseup' : 'touchend', - toPointerEventOptions(lastX, lastY)); - - return { - done: true, - value: { - x: lastX, - y: lastY, - step: eachStep, - }, - }; - }; - - const a1 = document.body.querySelector(a)!; - const a2 = b == null ? - a1 : - a1.shadowRoot!.querySelector(b)!; - const root = a2.shadowRoot!; - - if (f) { - const { props, attrs }: PrepareOptions = f ?? {}; - - if (props) { - Object.keys(props).forEach((o) => { - (a1 as any)[o] = (props as any)[o]; - }); - } - - if (attrs) { - Object.keys(attrs).forEach((o) => { - a1.setAttribute(o.toLowerCase(), String((attrs as any)[o])); - }); - } - } - - if (b) await a2.updateComplete; - await a1.updateComplete; - - const b1 = root.querySelector(c)!; - - // Setup drag point - const a1Rect = a1.getBoundingClientRect(); - const b1Rect = b1.getBoundingClientRect(); - const left = a1Rect.left + (b1Rect.width * (e.x < 0 ? .78 : .22)); - const right = a1Rect.top + (b1Rect.height * .22); - - const transitionComplete = new Promise((yay) => { - const timer = setTimeout(() => yay(false), 10e3); - - const handler = () => { - clearTimeout(timer); - yay(true); - a1.removeEventListener('datepicker-animation-finished', handler); - }; - a1.addEventListener('datepicker-animation-finished', handler); - }); - - await dragTo(b1, { - ...e, - x: left, - y: right, - dx: e?.x ?? 0, - dy: e?.y ?? 0, - dx2: e?.x2 ?? 0, - dy2: e?.y2 ?? 0, - }); - await transitionComplete; - await a1.updateComplete; - - done(root.querySelector(d)?.textContent ?? ''); - } catch (err) { - done(err.stack); - } - }, - elementName, - elementName2, - '.calendars-container', - toSelector('.calendar-label'), - options, - prepareOptions - ); - }; -}; - -export interface InteractionOption { - elementName: string; - elementName2?: string; - isSafari?: boolean; -} -export const interaction = (options: InteractionOption) => { - const { - elementName, - elementName2, - isSafari, - }: InteractionOption = options ?? {}; - - return { - browserKeys: browserKeys(elementName), - clickElements: clickElements(elementName, isSafari ?? false), - dragCalendarsContainer: dragCalendarsContainer(elementName, elementName2), - focusCalendarsContainer: focusCalendarsContainer(elementName), - }; -}; diff --git a/src/tests/helpers/pretty-html.ts b/src/tests/helpers/pretty-html.ts deleted file mode 100644 index dc765bf73..000000000 --- a/src/tests/helpers/pretty-html.ts +++ /dev/null @@ -1,10 +0,0 @@ -import pretty from 'pretty'; - -export function prettyHtml(content: string | TemplateStringsArray): string { - return pretty( - (content as TemplateStringsArray).raw ? - String.raw(content as TemplateStringsArray) : - content as string, - { ocd: true } - ); -} diff --git a/src/tests/helpers/sanitize-text.ts b/src/tests/helpers/sanitize-text.ts deleted file mode 100644 index a006f82d6..000000000 --- a/src/tests/helpers/sanitize-text.ts +++ /dev/null @@ -1,62 +0,0 @@ -export interface SanitizeTextOptions { - showFocused?: boolean; - showPart?: boolean; - showRole?: boolean; - showTabindex?: boolean; - showToday?: boolean; - showType?: boolean; -} - -export function sanitizeText(content: string, options?: SanitizeTextOptions): string { - const { - showFocused, - showPart, - showRole, - showTabindex, - showToday, - showType, - } = options ?? {}; - - let content2 = content; - - if (!(showFocused ?? true)) { - content2 = content2.replace(/(\s?day--focused|day--focused\s?)/gi, ''); // .day--focused class - } - - if (!(showPart ?? false)) { - content2 = content2.replace(/(\s?part=".+?"|part=".+?"\s?)/gi, ''); // part attribute - } - - if (!(showRole ?? false)) { - content2 = content2.replace(/(\s?role=".+?"|role=".+?"\s?)/gi, ''); // role attribute - } - - if (!(showTabindex ?? false)) { - // tabindex attribute - content2 = content2.replace(/(\s?tabindex=".+?"|tabindex=".+?"\s?)/gi, ''); - } - - if (!(showToday ?? false)) { - content2 = content2.replace(/(\s?day--today|day--today\s?)/gi, ''); // .day--today class - } - - if (!(showType ?? false)) { - content2 = content2.replace(/(\s?type=".+?"|type=".+?"\s?)/gi, ''); // type attribute - } - - return content2 - .replace( - /(?:aria-selected="(.+?)").*?(?:aria-label="(.+?)")/gi, - (_, p1, p2) => `aria-label="${p2}" aria-selected="${p1}"` - ) // Swap aria-selected and aria-label of td in MS Edge - .replace( - /(?:aria-label="(.+?)").*?(?:abbr="(.+?)")/gi, - (_, p1, p2) => `abbr="${p2}" aria-label="${p1}"` - ) // Swap abbr and aria-label of th in MS Edge - .replace(//g, '') // lit-html template placeholder - .replace(/\r?\n/gi, '') // new lines in text - .replace(/(\s?style-scope app-datepicker\s?)/gi, '') // ShadyDOM specific classes - .replace(/(\s?scope="row"|scope="row"\s?)/g, '') // scope="row" attribute in all week labels - .replace(/(\s?class=""|class=""\s?)/g, '') // empty `class` attribute set by ShadyDOM - .replace(/(\s?style=""|style=""\s?)/g, ''); // Unknown `style` set by Firefox -} diff --git a/src/tests/helpers/to-selector.ts b/src/tests/helpers/to-selector.ts deleted file mode 100644 index 09d7c2f81..000000000 --- a/src/tests/helpers/to-selector.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function toSelector(selector: string) { - return [ - `.calendar-container:nth-of-type(2)`, - selector, - ].join(' '); -} diff --git a/src/tests/helpers/typed-assert.ts b/src/tests/helpers/typed-assert.ts deleted file mode 100644 index 57ed6e630..000000000 --- a/src/tests/helpers/typed-assert.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - deepStrictEqual as dse, - ok as ok2, - strictEqual as se, -} from 'assert'; - -type Message = string | Error | undefined; - -function formatErrorMessage(actual: any, expected: any, message?: Message) { - return message ?? - `\nExpected:\n${JSON.stringify(expected)}\n\nActual:\n${JSON.stringify(actual)}`; -} - -function formatErrorMessageForOk(value: any, message?: Message) { - return message ?? `\nNot all values are the same: \n\n${JSON.stringify(value)}`; -} - -export function allStrictEqual( - values: T[], - expected: T, - message?: Message -) { - return ok2(values.every(n => n === expected), formatErrorMessage(values, expected, message)); -} - -export function deepStrictEqual( - actual: T, - expected: T, - message?: Message -): void { - return dse(actual, expected, formatErrorMessage(actual, expected, message)); -} - -export function ok( - value: T, - message?: Message -): void { - return ok2(value, formatErrorMessageForOk(value, message)); -} - -export function strictEqual( - actual: T, - expected: T, - message?: Message -): void { - return se(actual, expected, formatErrorMessage(actual, expected, message)); -} diff --git a/src/tests/index.html b/src/tests/index.html deleted file mode 100644 index 1e806e0cc..000000000 --- a/src/tests/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - app-datepicker tests - - - - - - - - - - - - - - - diff --git a/src/tests/snapshots/app-datepicker-dialog/.gitignore b/src/tests/snapshots/app-datepicker-dialog/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-0-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker-dialog/attributes-0-MicrosoftEdge.png deleted file mode 100644 index 7e9881fc398a45abaa3320d6795b8507b330967d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19292 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 diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-0-chrome.png b/src/tests/snapshots/app-datepicker-dialog/attributes-0-chrome.png deleted file mode 100644 index abd93ad8e317f53b9bb9c291469c0abaeaba0b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26478 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 F{{m@%=$!xn diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-0-firefox.png b/src/tests/snapshots/app-datepicker-dialog/attributes-0-firefox.png deleted file mode 100644 index 1d78e12ae51f54a438f7729cd3bde298578d900d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23048 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 a3d7T3u2r;tw`%35)Zs%%4>DZ>uKW#BQW0zb diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-1-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker-dialog/attributes-1-MicrosoftEdge.png deleted file mode 100644 index 8b39939b6df75cb398ffb962063bcdbbb5613c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18311 zcmdtKbzD^M_b<8!P!JRlL_`{-8>Le~x>FhnkT1r}ml12e(P`Z)sj$vRJ z&gS#|opa;d*S){z^U|KV8=a+B_K*POYDW7{lVd9ohptodjggq0` zqXTzPYP{Euk^~@%%J9s_G=Qcj-l2XBE2oCt>uPop{i@}D4$d0f?QJ)Hj=C#ZR@ZON zobN7JSj0DxBeyf0M{h@+2w4a0)tA+5+w#>%D|sAfdGVe zH1n%Lile`|amg8=j#FHxP&~o5HBl5_fgk9PMM(4aExcL}p<#a8c>TH80)mCN z0X`VFhp*dvUNyZNR_%Qs7$~qG>X$!HwVz~p?#&J~NjW$;oQelx^z*;7BE)d6b~xGd68Y51f88 z0L&)+DO{dy$~?RdcnQ7hJism;ILQPX?DUGVA*6ao1(2itl}l$#$o`jdeH`#16u@}& zTiG)|t#A9ITZl1)nQv#Za#AU)VZj6ATVxil`ZM_S`;t;)h-9&Tm3gqqXQ{711Stdy zhxumcMLK1PGrE_`dcq}}04V6W&!JL(onAaG zP9V8|%MPUHr{d%X9$$d<1m)Qu%CpMg)By;FS)GW2M-8wZ*)X+Gm5KG?J%E9wT#{+O z96f59m6~eSjhmBS?2s`tLAF&FUYrcU!i0bfDE7#)ZGnZ}2MRdnNjX10$Ppxz48-Vp zyOHK7_t_qMAevN?MX7F3332Ds%~5e(jJ?47+a+@+*#*QO`#8fyd{Zw8lTrClciKhL>oAH4_^L0uT)2AIg5iu3^F0iU1Yek;Y;$M zWgnnkf|?b+sZ%?eL~aE1PC%INW8kQN9N;dK+Ew4#-d>F~MSW>1Tdzxov~$n4T5bdq zz6kt_S6f?qq;QA*xrqEtH1Bw0=UMnh;Kfe8)8anoh8C?9^AGN_8E|b&f-?u;=xyi%9WV=i-U! zWR*XJ_2me=YG`o0f&R`DWgj03`gM6X^Qn#)bH{kPHOh}f(vR#;yJ(_gQ;JRcJF6=k z8ar@92NHQEhl`B3pLvs*NI+kF@k=Vx-{a6N6YMa2LY;!Sp!or_q|ZOVUU1@5)`2c0 zbtB&43blh<=YYjck42ah#<1__kSb15B2_ZqK@x3E5bn7y`-Mm7w9F)f@#JLuChZal zu1+a?1Teq>3X*2aBM056-LKf#h>GkB6Hc=@d&+~&_p4irvW-xPdyi1|d{_@+d3gdE zV5**eTsX^FSc(~IdaHRf_nuYH_YT!gJ&fH9yWe9wz1j3p#~Z2G@?yTvHIw&~Q8t0u zLhsuqYd2pUGY@ckytitqzTY=A@qlLKD&O}CGX2fFrPKH&;uA>~asP@=n9yJcU&lu2 z&GUVb#B!th;JW%WpzxN{$u@F3mGuo;^Pb(`w4D}S@VVPAiXX7*tgXePp8QhODTo@r zK(Yop16Zkx@eT*zmbG^zfDBOFZlmd4WrsayohO^*Ed*{Owb%gD^4?(k)Y`>B2gwA_dm#jk8j?xWtpbBj0 zCS-4icT#?Z$(1BuC-Cy{EDco`U(HOmt|vos#*Ews`CO!n`}&#>)Dy~;%1$I?dHTcu zH4ZZoqx+M>jPF!{BH65X&ILFEklu@*oXHcYne0fO^1Az+5QiTFhfuQEBWu?ZLUZLn zJu6R>3d;6j&m+;PUW`7}?mC3mvlmwj-;I%XWiEa5q zRXm$u!C|_L+AVN>V-X|jDxlDW_Dc<<(j zep^x0FV^d}i)-2DL2q^Cxn6j-C1STh6O2rtjRA9WBFNu^uG4ZJee`PC&WgjmJwtCB zRxg{@zUpPlLE(ef#-@pRYI7XfZC+I-*=B2et{Yr2Jv?VqKNyS0N|pLuytmO*4g2w~ zLOVa%R)0}{itrKO^+DbAQMCxt_s^{L&Ae(1L_Qnk=dHR=BM4F$$GSP>(Yv$ipd!!* zbsAYyew@kKubaVDD((|BhdkjyPI65uL~#13o=f;tQvB}!6@GBPXZXw&%@IF3Y)o%@ z;iR|i+FZZj++q}fCWFhQDE0Mr@VZV89=|^mgB#DnFiV`1Zxryf0+rUqGMZQ4WIzbELAx%_=x7?b^VCt7v5FoB4>5G=_zMyL1sHQS3zy>XxOeX1ReJ; zQYPndZJ&e^6>Z}4+;pT@v>EkK1L}S_G{CM`jh6WIO56S@`6^2PROg|6Qqs5&i!W2Q z-)nTiKHG8S)j>+SM5E%6X_d078c&7o3%FLuT!DbXXcL!f3IKEk0~qZQc~{g)raM-{ z`o~L6bqblBZ_t-(!vRdNNobT&?9nbtBYgLCITW>Jz1p%$05B_J5dx1h5^t`C7ytD4 zMxBo_HgpGlw(X)26!N}!gPedK#7%NRC%E)EQx*v0f=cM-uN5M;0?3)N6POU!PRQ;M zL=SSK%_R9(Kup2$<;f!btx?ik>&89UQfv+*V%+f zH!hTb6ixM%w04nYkJQSA70DIAT%U^ipmjeTcxDWCiO^K{J4Pdw)k7G@zb3OfI zXufhqOzEAkwcw^&>xY`~UCn9yxf5Qr#zbki=Cm)qJ)gZg_0W4Y*_?6|s)^d>I>f#D;+r zC@Ml1SDqc`WZ5jdLnm~tw#fECfw!~R6wzbq-m2Sp!_A54G;T$F6b(>c6f^H7J6=cl zH8ZOziW4=MEF4FZceOx&jY!1Zcr7R%P=viI>TgIfC?ep~4o7fd+?q-bX?a?FJ|KXaWB#t5=5PZnI89<9T^E#5YeVSkK;$RsE zIKcqf8Ia+pniYTwXjtoTO1`Y=-%D&F<5w4^ZZO?ONEp6Jod)R7G`aUR)t6 z$0hQZo&Be;)Th2o!^T3#oQqS3@4OM6n?*40~WQEKg z>opBvN;%BUAZ#eqSg_zM@;xUxMwoiXWbA*8>5JKqx3i1na_tnMg^8As))Gs{Tw%!b z67&;qQU3+?6xYGAairH4o8^oH5e%yS>&#qT>@sim^suz{xJqf*<91tw-;P+@V*+gp zv5;FWhBayNw+*(inW;{+?qMv(MZI!0S)mdV_BQ&mc=;_uZx<=e8Ee;eC5DXjm21hA?Q0N#_{72Id-ziG&-BsXNm=cIomFD^Nhak z%fU~jY*6RK`o^zpr?)D{lzJ&riuNx*eKft6)t^1eX>MF|MDG8>d$!VoR9ujDMcj<( z314+49Y+@|&;dDK4<&)uF6iv?KT2H(tI{woJMmU6*)c1(Z1T8F>IP-U0A@F=;@4Tr zvsVdfJ@pcPSyVTnRB36_4w7tMwEp#T>d7yv-0d zkGNodM&jBXkr+ThAgBkUBWKpm3u)$BmhvgSBknf1BZR;Z0dTyvNPT zTx5}JsOskrcns-b9<3&)A{YM11Jmf3=Np+~dr}Q2qrIVPp{8dcrX1*t(2pnxP;k3^ zO@uB-$qUx!DM8)dVpuI9;F?m?yu#t?zZzyZB->R&(3ib!rKeJFZz3`-B7XVvw8@se zb-iSDgG==2+gv$mlr{SBgNZ8zvH*4Zro{*={(Ap-xmbVR=6bb50-OkYvYmtnSw|(1 zBlC}`#5)ePK@_Q*Bx+S}IW*#zpuIjYt(w(&_WH6Y$RSo)juv@W76Y7>ejc){1-f6a z39OMeCjPlI+2`pw)_~Yk7oYQZHJ91YO$C$ZvSE{8@I>#;tWs{?i8Pn!z8EKMWv-Wi z8m(S%tNH2MCN41g$kiyo_ofBjEyBHYQsa&q z_dwQLXX1Mcm#BCKXcaG$iGgR+56t3C1<0;sETg7N*SUMg3)(3}t*dQ4>z%Xt8Q+yE0#;o0PsWLl zE9@rwt|pDy!ZDj${a-b(7azninR8X2T<%>T)#S0z`L6C~e_mYl9w2CCTXapiM#ZER ztPJ-}1!ayL2S0;7BB<^8HH5v^u8d|>#qaYJZduanN2C0YA0J}_iD2{@xEpmY@4);l zcXTLOsp2{dv3L4{X*G_kGU+6_bwI593*Q$#Ywj7hv$;!FG1R zOutyxE_^*L@UH$; zdO7?XVY+#zD^g^CJ*OvZadg3}z;ESZ`go#Wpg+2Y`1q8|DFIQbJnCz5s@t%%l&v_q zrsJ3z*VVte-0u|M1oMA=Zsb|z%TQJTrF6X!AYV1F|Fca?s?-tvX8LBOa4PdJeR)yu z^bPXh?3x#ql{_o{7lj^*+z?;KtY`3EETnpF5vPkl;AeUiqC%C#x#DafnnJX3!=`i_ z-(keHBY6v9_f_%tlPkYV*rlP6R}0Hc#Nt5CRPfBq4C5IufXB$x5@WP%l$M$rHh6tz z%L^^EXRKBoN1UHGS`7qlOHO(UwOkJOt3|^U7IO74agu-il4W6IbHl7$zH7RepX#Hf z>sG7EyV@~XwQz*@T!5nfYRJbZ?fXL}meH&bgjA5MtzZ}%su@CpjC_!?%ceWoOWCfAR9 z>vXZvmFq?Bx(1{uAUw(A*PZ?3pX?PUUA{R$WPalB8Tx){lpUk|bLra)KEB?QVF@)H zNUR29=jtkE>cq!lyrmh3%S|g^Sk!5 zbt(o11~|09aRh(?^fdJqGKNcpxkYP_Z@yxH8#d+}u&VrY*4EXHbl>y%@@jur?)>)V zDDdVkx}&++8LG6Wxnm{6zE6^}Wwqq=;P5BDc(66&K(gxaBaG^J^D68I0KlR=Jw07xd zdAg+rGe~CFUk-^)cWhLsyc0MFx)?dk+KQup^Y52X)#Kh-ddo!gt}0MtWi{btrIv|4 z%ebSJ$9A1iuGAfD1al;@?CItA?3P|?_Kb6Thq&DJ{i(S4KRsdETl7R*LT_v%dlr;m zTHW-F9Xw&0+@MeBriK}9gL%V?qZLgPym|W=^cRRX)KGDmznF=cZd`z>JT%vcqendbDVf_BAf_v?^O9h(0wzO zTztRv%F%m`&9vAKLgNW84IKEkqW>Bb6V1o;0-s88O`f7LZ~8OdvJf?7#fv2UOncY( z2;WD~;D(mQ>mJ2QYx^ceF(VfZZy3>jQ9b*dami4Zm-HavVn49~^4oPzQxdc%QPsqd zt0iIYGqtai{kC0<)>mHkl=j1)EROw?rtKnC8R`ffSxf6=ixk%Mx<rfHwAug za>>`qYGbAygN)eU6z3H$YG>~;4H=NoXj{8%KXWHB8FOYm5XG-IDM;&MoZc3FnKXV< znS2+4w~PCB3&y>#U`v#gXirO-+#w9dvecHwA!pu`z@#E#!Z@i=WjE4QKOB?wb8r%}2y3 zWv~$w6IV5~nWz*FB@S9n6kjeZnA97+*4T1d*2$X088 z>!eWKPz6nEK)}{ay^lrFqg{F;rgzzkEKyNWn!37-x#~R}r42Amr;ucTf4nzD~rrHznSb{)6ouQl=TMJzw3< zn@pjdODlgG40&~lHe4{zOL_kX26yNeUS4(D@i(Kjxc!$yQE-D4T)WybkEguftg}Zc zqXb%=I*TiQ7ho7@a8#vmsy2Mo3ll9>s!OUgSZVgb7FjwFR z$TaTIKC5xYv#6~=dnc!q^ZhM3a@-QIZcq}$x4Cot3VTg`oV92t*!?H#`->PaQD6CA z8L*BjtmU!tueg>>63)La^QHa8Gg#Jy*zP<$1Ya6|`_k^QZ&9jSbDQq3p>m}X+@?pu zlx2MTddMm#FTCq=|388jujU@cY+m3_f6tZr6_RJd1fBDKl^Gby{?#pN%(^petozyP z4=Cgvbyjef9n&|9PyBc~MV0f0amip>orlKvTxfp%$e$PfCE01OIyZ*OTTWDa6Gv%E z;C>{EM`Y=2y%QaHZyV&D0$A8dmEN|MKI-8AxicOcjmf)js;|CqZ_L6!2+rjrulr2G zj%;*uQibwJJzToQu}Yl?D*RQoCE!_v4v${|BoPDj_!^)&YWwPPq@Tc=gLZzSu*RFz zQsJ`)l{nf>s4Owd{g#Im3*j67BURn~)LL&Gn<#LnmSVs){3;hmybXw0{7~O^y=Mw) zG28)|X^c$o1hV*&AmA{lQJcAY_3vu%u_`hP1)cO<&GOxk^Q8(1vPb=dB~R|iO%?51 zIakj$z}iH2Yc{6H7dbYvy$jiW$BBs=H*p&-ls6t;?~Ona)H3KpJhJAEd*0*OEjlJQ zuGj86V`BVh14r1H{@l&Clc!V(0t{?)Q z(Ky^c+$lm2IkvjNB+*0h_m($26=AS8-!}Z477>)zvM_9#ojiO81qF^{$RA=PGlblS zePa#=|CAJWrkBcb=f=VVRpI}1fA@dXLHwWWfVY2obv0YiB2l9Bl9%(UF|)3=wAk=G zYG?fY!_#vWvc*Zt--suYRbcK0c-y`s=|ugzD=_?gk=9kG$lb%E@7K7+$mAccm)lY? z2jrh>oo*|ABIiPt?|`U-1d+>M?hs)8F&HRtW3It%6ShV5HeF){HS%l|%2*MKOK0R( zwfB4EV~OOy^G~!MJJ(_z>9|W5CL~N?9gE#n$GtUNL=TglUvo7M#gagFq*GFMPM1Cw zprhXux7sEVZ+++zQ`Bne^F9M;B>uVitc>ERA%~7j?la)a^~gf2F@{itgJ1UjzA=rb zKo2%(+;W~p9n8|hU0Sd>VDeu6lEWHDAtvMT;=n2yNT<5boYQe-{MmaYYOQ8BZTucD z^&zPke8ok{Z1?Yao3<(VP@>Cr51Rx0&G2I&;&y84=3l;WhLE6~jxjx=BgAi@g?}@PFmk?w&L6-aW6bC!Q(~U^wrGy}x6|SH!_XuJKi?^}Mdp}J9+E4S?`Q}0P_yYo~8e3|vuAW^XgK!qY7SzY{ z;ygSE6@8(j%#_PJ6|bQ7{CS9OB-qo1>zm~{JKAg_jpwI8DJ30AfyL;YOI$KwPv+hSxr1;NM zF7wyt98^z6FKvUuX?=g`q-klf;lr}3H2wcB6c7=^z3~eX)e|w8IWoPa@&k{Wl}2bu zI%BBX*23)RraMM=sd;7kXMU%zu@T$OWKY5&%gI2x7pWN!K-D4|eyOBnHkGvvz zu*5%Ipy&PG{E%JA4(==HUy(~0xjMl=0hOZ%t&`&&BO0-!TK-h-IEpzx=V~PH141D1 zBh_L>)w7Uw$#8*2WAW561(Q5O)%0(?Mnjpwnp47w0e+-*XwZpybPP42zHvd@Jp!e1 z+c?aX;Qb}?A>SrzN!`jnau56TdUeQUF7M)H#QxlA`BoUovvOrQ+-|F%C&9i}IwAPp zu@i}!dYpWw3d{(Wzb{cqpQF*s?FYC?!Ogp_>#lxzS*PUd>-(*hOhEf8qvCJh5`KNu z-uzXDqn%`woYm_R21%rJU&pxSLy_%=Ne@l28xOORr0*>*r=(PB-(yKVII0e{EHe+z z$ceN1et`W5wR%I;mO*6!g4aG_!v~ zoaqPPP=SV5RC5F8Q*W*{lqYbGR`}(k_9Z<|C|{9?OvQ*?Lw+T_y7b=99fAIk2*`9r z$fQt0|SThwkEa4wU~ ztWoDInn;#>ouaAzF+fdcT^1WrB~8@7!Rj7eo*cN&0Hi(#qdH_>#WB4d2J}^# z^SCY9PLnhN-l(1mu2Brv_m0Y;*BVRY%lR`xj3hr4Qnluk7OCR-AdRrT7pj4V)jqaQ z(#eGd#_n!rfLfNoQ3mJrdYg9+tRnGe6pn=eLJPwKQ>+7)*BJ3Y!LeEQ-P=?xNs(cf z1D6~}naz3SVSl@zF-`>IM=b;-yiLfQaAwyoXxS;$m-y!twgJC#Q`{G^xiCWJ|E9T; zG(ic(5`f^0|0JvY@!ym61Ag$F4=52K$M1Qc3KXqwZJ5NbFhPUsEaQ6Mqoh5rDovSF zu6xb(z1J~}G28x?4opyIUQHgKlVB-aNE|mR*BUT7n!MWh2eFfkln#PbfB>Zt=hLbD zIdnVqT6Ac11H_UMESjoMw0MWVm}oXi&XVn(0^PuZAllaeFc7CjOh+l<16JWY)tXMy zLI~E5q>EOSe6vz?1SB|aR{hh}Fw#P6IB-4b&r zAI3bR`!T`NZY`jW0vQdge!W?Y?r*A(>L12`mhqPdI{o~mh@b@R zV4%L{`@fawt*?IT={H%ExtiNI$nGl>=NoD%oIrEX&H!e~tcaS^@C*#JryxYLQ%a2o6B~smI1nv4N`SiP?JO)6D9<)2 zFY`D_7WN1zR+z!DZ!?)RO7#+l-9in$e~pA(SYN-#0pOsM51#fEwY(|OOPi}Y_-=v` zxGZ^l63=3|c~$jg-q4+JD)9m(fY1-zIBpi88L0Q{Z*?)|zjZnm_EoMmTHruLtv?TF zsSUHOZ_{`sNm&}k=VV~&4HUUbtyugjEi$FhpR?YimS@m{Hw?A?(d2V*iC#Z_W`BOY zVv2EO0itp^J}C2OG-k21)Y|NCF9la``tez$e5tpSo7W!D9s^*|c$N?^{$a9ce3BZlf5Z1ZUE?TImbjvIAn9+;99}oA}`f?3gJT600n^ zvw2~sedh}g+P=Z4R(zM_A5+0-%Ag$MvwyO^IP}A#oMxl{d5|=?QqBpJ9 zS|Zne1~KJJlUmaivArqqyFTylQIC2t=FMefWgIkiKS~fxV}TeXz*~z7U#Y=Fx36Ds zyC9I6E2h@T&$Qk?C5ot@{{0eV!9A0vM2)TK5%$3)4Ez>FrP@j*gN!U_3zh8H(?2@Z zhfT2IgEdEiHk(`&N^f{)WMH+(0Sd3MV)hub0O1Ul-Hg^8z$%zJY5#n5gsG`PNv(+M zWONR#SCTVrgs2A-?@`B6UfOc@znki`C4J}|#l;UL~9UcV-7|NJAY=Cd9VHQY#aY>2EcvYZJ#gO_{^^ zYn2N_zP}Ov*0TgbfFGJqGZ1F}TTv7ZRWgS-9S1>gJ?IsaTqV;2C05Ih^`XElf-gFHGi|uKtQ*=4 zLN<-EB|{+8=5$7H%`PQv_K*+x#F>Yk=o^9h{c}vBqb1-al7pFYE1WI zOACbuRfSR)|CZ9@V_Ql)@Z9&pEtE&7+AyDzRH0aR@^cH7wg=NT;v8*~@BSf$ey*Bq z6;_jzbfpL=$UsJj?hdiB6&QeNV4*4|_$-S~={OKe3>x3L27y26;xh7-$ajnTWqUiR zjnj)BajdicDEGbRd$w)Tt0gL$v0B=iHC)_t>0{#}nZvY*2)!ycg)Yba4V9+JwSeMT zeT8vx#4}{e$cWBCZIy|o6F!2a;V%^LY~+4}0IgrJ(dMq};=JIsY)}J!n`X(|S$>AK z9X+PmIbz?RmuKY3lz$wI?%+ud-QtfEe8>Xt*s??64ZJ){#=WxtU117vJ7|wfS#=PQ z$W!`pJiNE&ijJU=l7INl-aZiy=M}im!g%rdzbmE4NdiF6&%WoRSnveXqt9k_c!1`u zevU1GI+=V)`C#D>%whpsAisegO^d;Pt1X)!WEIt3Z{(k5@I(GVF#)j*B;ucSv5Pux zrY}?ak4LAIFqt{+YXKk?0)6z1E2SlqmPGWkUYk@3SdzbeQ!0c++_7O>r%_wb)ClI2 z6A}cGth?3Y1M2fgt^}2{V3Etil$4ea3B!;_Anpa<75*$G7islc9uYq;&fq{+j&0^oGBqz~rjr&VGw*fa|s0_c6}E z_(%VqC=i0x!Lng-Re5uee_zyFifS6BiBFLhOV8z%@a5;P;{vOpW@S#FYdXZUlafge z_Z`B@f8~jvJvzon`(G*!Y@d6w7dN9`e)?(KRawSBn)Y6Cah+VD&MXMCLc{oKWlt3? zw0&%Y=EUXtCMV+E_xi^?$Ris3dA8j&a}a{kSF*mgMca61WDxaRPtdhUn0x6h*+>^l ziJK`G+*6a0iOI?dTK&<%6GLaiA0dpm$^Nt-`?dr|x1g)II_o9eFN&`GY@{Hiyl<*C%ss|_yfXLsKPD0qI1L6& zJ;w9=l|e<3Jhxhd5?(ySHsPR^+0LQcwnjN`%Ff8>sPYn^*- z&je$olFoF^xXq$tQNNYi%sET3iJ{U+EtkbChx`pXi#}aBbF8-!qd82!MOL+EuBC$e zz~$HZE7^iRzd(pt^sP=C+}!+T!aEdK@|l)wx-#;y_QZIXzlEW`et8PTm7L|*!akd% z+?h#+CJsi>SmFh`@8L%(0Dq#$2(H*r0rApLdh*P zSMQ%(jpV}j%(UExRjC5Jnz>&Kf9$w7K#F}z5}sm#F|S7B`JLRo(b>P5E5weRQ#5sg z;d_xa`^nH?MQVl4`by2ucUyAx_78idvO=-`W%-ANbTsLW;S3XY|CH-A`Jg>N;9>3u z_OZr3JvxVv+^#kry12cnFNxJ$9JS$>uwCFa5TI<+ql^$1YZ z$3<|3yNJ3Tb+^~1uZm0>Z((7Q{@RGyw~Goj`wu@a{b|3?po(e=l6s&;!y)f8W%TB=`v=tkhR z+?m=?{Pr5B^znyJZwRaYgzZw;#zF5~C<@zLVLUUwrP_Xm`x=GkTUhU8>y;o-obcPu zQqCPtvk_!@O?B74hwdMD)$F|hK1@lchMQ?t)?m$cn(quIVudhV2TMycynHhD|8fX z(pMfTeP)m$0`?HSosc;?~r{U zhHrUAv2UFxdB6cYx)r3O_J$2YI4vV1@wOCCdTKUJHA_cVDqHkT*KeIxE zA8gH#x(Ej~X{Qg==ow_dcD9>s*+yCeN=}TpIz+xWwrFt->KX3KSpN~9-f0Q&Elp>z zmuOKawaNCm$v8)*6WToJAG&*e$+vso=xWZH$T6AL7%LD7BFku)@~+sdCi&+rD(&Nq zMQknKSzDGQ?7DyZIXJFLJ??t=d!(+if~8d@ZhmAOu3EMpQ&YJZKt@&)7b094mjr#F z`TWIlSuK;p72W&@yNG2%Ma68P@RZ?hK!Su%v_0>h+d>1B!$-sA=P2l%O_waL_7#?^ zUU`VbwSRHn)7q}{{vksOF%t*l*B%8cpHH$L5xY~Cd^81ii~lEuSd|vb%4V^rB{#EeRoQuY^?y-_ z4(JDkcGSRt)@{_L2vxLu>RtqWK_?QLaauJ*{()#-gWmY8+@tNiD&b_S;KS*8EAI;( zqVPSp7}ooIN>lfo^!ho;*gM}mqlR70ahoH|+?#OMhu`hcH#zR$8?`t*Ji=+7xHR{fTOAQUoaM ziezwq=cytu8<;fG1D}n+`HX?Vw(oB5h;GoQvF%c=!$%tzKsyQy(PNwBOML^Rc2^CG zcC+kF^qC&;8EZNXiF#Ik)(&*)(W)J024SsR7R;~rK%*QY}Gh9zI_ zi2pD!J~eyok=pMHPGcguc(Rg^>8M-j-M`6BNMrF+=ysD|hjT`;$!Yz7?QWCj0cLf8 z(+sVF8<+o;XfQ=UQma4MZP0=Yttj;ruKc4d=WeCc<++QL?}#}4-;20E9{wkysQ!Oakf6%{->pCfPU(M5q}YFW!RG%9iRbU+ zRB4#y+r7GDD$Ht#zw>2fd0c4?dq-`QVR&I-v0oxX$p1QVOQQQAAtjrElCP1_BCA@x z^^ZR1na^Hg9=zc?b*@6mr9?F$C`t(mLGoSu%cBEqrB__fjf>*Zlq_oJ5*#V`VfORi zmBmRW*o+r$=z9a|&}mxns6md0$0X?qz1!WA-HQ*$5YgYZtlpYz_3W zc<-u!G}!jv6B2kOcUJX?(rAEo{wM~ILgB{o{;(3!i*Mbkw$*&bjCx!Sdg7HZ4%bo9KYxp z*59r2EFK)Y_f4KW+&Cddh**1x0;^!ha3Iw7`_PY}PL`weV+-CxwxT?P=X@b8=;mNL zdZr?REsaIMNo`l#1uaKYOwR}|wrpNG<)2Ec5o^S*MWgRk3tEqAc0au0*5WS-6P7 zvdPkBBC4Y%`dym+yx@55rEHQxy}G#EMNgBP>B_DwzFH5&SoI*)&%ei;Ad}n0hMn0* z&q>jzLVjT6g>;o_LWI@ONleDrn)eXpd7(JA$-66`k`p^1ClGWgG?lLQY8s#ZIk0le z5*A$ejvh77{YlNqoB7&g@w;{%rvyW`{P6?s_17w&iF?OMiclTCr$VpL-!@fkaWone z{v=JQmk}SQnpowF^R64;W1Ef()Qr1C7(UzJB=z1+YY?`@0^GpHaheAQw!*y5+6&a4 zV?UZ6+0Lnd7AjB`Pnq(@2-p|GBvX?W(1ZABaB}pyTz7Sf2wMCV5RV|6_ z_in6bP)Q(AS?)}EzRkI>x0~~^90fHtpq<%rmYi!l)W7s>!IeBEHo~)aFemn*M?(_$ z(djP<^rH~_hr>yd3)r0nn4z33#f~zmyRz0=G2;j(c^7&qx04r@E3cDJ(S%jmRReQD zGPNAj{*n}Ajvk>xmKdR&tVb#9XXp^ktdx~jJ>n`~kMA%{xyNb}T=dgoaxaJl3kObR zKOQ*@{a5|t_#|~3;ZpGZ2Mq!Oxh+urtJ0qI_bws8%nmjO3qSdA2ec^vfiOGuXJE&x z2?p@Yoc!J+g4^uVKWIM5@V~PXK*1*m3Uy&n)4U&CQ-!*^YH~p&w^I8Z$Y0)N76rRd zou5zZizDXTzz;_#c7tHx$`oFDGvEi90>*ttEz-M)S{L}|((_@_ycFOTJ*3`ABt3v= zMToUv0R{9fv;3r{f1UHOm?>_1TGKo}6>n$z9V?JgQB8nf90-uOnjT*LBS$@6;8i`Z zi*d^mLK?TK>gK(=SwT`PNd>Q^VAA}iCc~7sF*F#rEwA6$r=z)NosQuCMoLPNqQ^b- z`@Fy-`q~Fg`;9xRW5rr-tx>1_rxbvj(+}_i7Ux`G+zN^JnpV(K&0xy&n39&3-j6LK zVbhfdvEu9|&8d_ef$f^JFQBLA?e8&<$14NI#SWy)wPv|s?c510Ohbck^FDMhcRw2J zo5ukI;lcT?T8L#AH5KapPj)qB<<2CqPWQaOm{IFyM2V|Qg*Eo80!L}~iYdPYDPXUW zE2V<>m_0TakMtKusRG9p6YRA-A4~Di2pBIk1V(m?zQ_TTU#p{j{9tFoqv>Vr!oqnj z0A;kikPh?t1lzw60?Z=sVKVw%Y@q+<_N`Y%fM*@IiI`x<%NB$1CDXgN&~|13RLy=*bCGA4Rd6;Z5*>i^gG0sbEJT%}yU`PpXA$S{4`=~J7*?wo2>y>KJiX1N2H z@yA0C$AyXU$1FdD-lIgHt-GK%kW38vEng;>#ASJQ9^LQ)U~ji1tU)PZEh-GE#hPNJA}kB#v7QxPkE1vJ7x`aF;$NAUQ<=S zX#Kl^eoFT-ZF%2!wAuGXz@|mzG-8^875ej#QQTKFTF$w{jM{9hFGr8ch@X1Ru3C2!i>v z#3oGncLq*Wgk10eWbzZNG12+Nizi)JkEA)$CF6IiB4C+uum2_A*iO|pi6{AZB!#L+ zlj+@-#PZ5y0B$c9K#Z@Mln{)kRdj)=U@iu>gl846qyS}#^(#tx)*gkj%c|q1*{{KQ z2TJwVWGc=TGAPy!r8-asqQIObB-bOP*rQ^4m-#wI!AMmPys5XwU$Ji2wCI^QW0i?Q zEtTXOu;L6T)>WUTB<#r(XD4{&KhvL9UT^3P-~?9t+MVgv)%vQs{5wP)QRdsg6yxy?B+|rP Vy8ZZ5;jL~`c%>>+A!YXAzW^n0vk(9P diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-1-Safari.png b/src/tests/snapshots/app-datepicker-dialog/attributes-1-Safari.png deleted file mode 100644 index 446ec59008f7c6381cffca0ec49bf51495f2ea84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46163 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 JPDHLkV1m}CZ1VsB diff --git a/src/tests/snapshots/app-datepicker-dialog/attributes-1-firefox.png b/src/tests/snapshots/app-datepicker-dialog/attributes-1-firefox.png deleted file mode 100644 index a234e86cc041b94c055671bb0e6c16070446b590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22126 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 QqW}N^07*qoM6N<$f;*C0QUCw| diff --git a/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-MicrosoftEdge.png deleted file mode 100644 index dd534cb393cd2550d2c6fbadb80f87470a2c9f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19471 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 diff --git a/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-Safari.png b/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-Safari.png deleted file mode 100644 index 0e4416eb3864a2c3429d1ac1557547a8ab7c2f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47621 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

m%!%d}*W2lpEBp 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 ASO5S3 diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-0-chrome.png b/src/tests/snapshots/app-datepicker-dialog/properties-0-chrome.png deleted file mode 100644 index ff4c185cbf9c695b407c22acb9d9c37b655eaafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26106 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 YKbLdPf7O$dFaQ7m07*qoM6N<$f-d&L)&Kwi diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-1-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker-dialog/properties-1-MicrosoftEdge.png deleted file mode 100644 index 8b39939b6df75cb398ffb962063bcdbbb5613c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18311 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 Vy8ZZ5;jL~`c%>>+A!YXAzW^n0vk(9P diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-1-Safari.png b/src/tests/snapshots/app-datepicker-dialog/properties-1-Safari.png deleted file mode 100644 index 446ec59008f7c6381cffca0ec49bf51495f2ea84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46163 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 JPDHLkV1m}CZ1VsB diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-1-firefox.png b/src/tests/snapshots/app-datepicker-dialog/properties-1-firefox.png deleted file mode 100644 index a234e86cc041b94c055671bb0e6c16070446b590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22126 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 QqW}N^07*qoM6N<$f;*C0QUCw| diff --git a/src/tests/snapshots/app-datepicker/.gitignore b/src/tests/snapshots/app-datepicker/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/tests/snapshots/app-datepicker/attributes-0-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker/attributes-0-MicrosoftEdge.png deleted file mode 100644 index 3054559afb6f5fcb97e4f149cf8fcabebbf2b659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14261 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 diff --git a/src/tests/snapshots/app-datepicker/attributes-0-Safari.png b/src/tests/snapshots/app-datepicker/attributes-0-Safari.png deleted file mode 100644 index 333123ce38c008d902734a16b8111bbf2a1f1d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34005 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 diff --git a/src/tests/snapshots/app-datepicker/attributes-0-chrome.png b/src/tests/snapshots/app-datepicker/attributes-0-chrome.png deleted file mode 100644 index a5a6d001d6239d1daa36231b7cff410cc7302375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14529 zcmeHtcT`jBw(ml>+k%SO7F48&1(l{KAf2NiDhi57FG>@sN(%u(P&XPuz_KY)w<01n z0#ZVNsFa8Zh%_OP(2*J-w2(mFT<(4Ec;o)}&N%ms`^LD8fnXMEt*^{Ee`S6TFB#}< z+OT^Af*_mDoz*cykkt|hvdV1TukcB{-`!jAL%`ce?-Y{TuxA88B#?7D|1kDXoan~i zvKq#VFEKm4+(ZAc?Yk>K>Npm6`J1!$c?GN5n-A=Vp6<(9Q}vph-0~a7$mf20hScgu z0e5zFSG731DEi75wIcnUPgP9c{So>q;5Wmwn2hWXMJ=tqI(aXgF@ZSJm!m$ZXC(73 zelxq4*pk<SVT|UhhWx2Mv z!D#={jCA;r5y*;&!jId>&icd35zgg?eAz67!9;1yn^h?S*bEEnd-e2i~26+|Hw| zMi9=q-P#7p>bs;25{ZVvGtcw`@b+=7X{zx0Pp0{Z!tvu<(FxY+%n(CQe;mgP2dcwX zP#pvYM3{?be$GTi6rJ1i=g-$XFsf%@|9Y%`{+3=r`LZqWTxW8?ZFapf?S>Y&gLsm9 ztLKWL#`fdKk7F>m`>Gz6EHDD)JEmbfk6FzlGam)zs|p%5)jYXNb7Kiw${q#ubvp}8 z6{z3)1(1-wLyqP#gVw(w$SwD?!6G&Y($jh1|0y86J63<{>ACjD`7~Yed-v|u+sDi- z)z}9G1u;};G+HdLQ$M2_ClX~mIv1cm|J^>%d$?hUthF*7MY|`YxwFtBXRvV43&$wR z`bUmQ_*(IxqndC{ncnkZt@tCC!qV}D!?ATu?d|PBDHRnJhhpn4liKC4%pr(rp3I$P z?!paB(|n#iEz&I@Ab@e~%9Se}k)mp7d9rPH zzT~s_!Y$|1ybcqhb>WEvziB%aPoH}65@QrI(V>bz)P#eRlT$6L8NQUXS0i6- z@>L|%u#;|-<>xn&NBl3Cnwma(^ypnTIw9Rg++-J-NL=Kk@Hq#J{YSFR@+3z%l9D#T zoWY%9Vv$554DiR~0!~zL>OF0YyAh=Qse{0)D{&_SW`Er6pHW*Ao91&u z>fk}U#$*lhFLzriW}-(YvxH*6?IXV|I&S(3Pf!hR~O2XSDH*+zOfXSu}~qb zHN92qm?sxD#xO~6RnkCBnu13}w9eEs_MCHCg%Ah*jNF(&}$FPkuSo|HCxbs>6@VC=XNoMrp4^} ztq8(8E2gbE{m@Xy(6F&=LNN3pd==4r;5@Asmh4{T%K6?OTwAbRg06 z0}m!7CpVzC%xD&f$6iVIZU~-*439qVc&_-UN6BNq(RcT2&|E%x^lM%PynB3hq&YVG zqLUhaX|{|lJ2+2aG;mU-zbM_l4Z5(ET!RE>OED{G^5&pz`z2TI#oZLVZZ&t zmJ%L*NPJ*J2UiR~+k~SPS?;r&k)sf|p0)Un_D!GJlVT=Bdy zAFCRlq?+f=wD-95oI>!>@D`qS6^`F6DDir;gn7~I76tC-i)zAjgQU)D9yiLnnX_Ip zdsHaaFxJ>TUc03~$@>h}*!_+m`msTq&sG{8Of}7Fh2(YihF7rlD&`AGiiG62I3il6 zwmucd4Lpe%&N3z0OmVtur@f=7oS}r_q` zO$9smBJaNq?$C}=*tPur&T84~cJMdT&l`iB7{|75-Fi8zwGV=Bx>`Q?n38*E%Y0&? zg*(GyOL%A~lUvSoUE$5t$!1xgq7%h)=MSuT(%ah`qj*}bC@Ch(`lw3a{P-Fw(`_!G95NVdfxWon1tCxi5Ab~0}0`Qij~Wx|oJ_nK=O_sn1UYIuDe$VeooP~zD| z_`aawyBFYW)`7g&CWfmub$yOdKyaFw50efCt)yMgRx7=%soHMqzw!nUVjE#ju z1?Ajjy88S3*J7iVe&}g+^2opx(k9SBnRt4#)-W@UNcN%mv!)@ zS5{Wap3Xpld@A`gk*$=)~W*cyTJ zGOB;LOh!KoZCi2vF*+IsxgGO!s|m{_zAwE!Dk`eD%Qve#I<`hOWLT_tn>>~0<__k@)0b(6h^?Sg{Jb{PW+>r)QySC%WWK|)*&mI{UF3FY5r z0ik1kzKpl##0Gqso%LyJZa(g*I0iF9%d&Y)lI?P-QHDd5=F*R{e!~<^4c4Nlnx6wy z==y%uoEe)8V+)g>WJ+eh7mJKQm7!c!2Ks>N=?OgE5zp&U6eTMBo| z;G$>9ojI8m-|gr5^#B~PzHTT6GS?y@q1z9JoKTIb8wpZYCDl#5Ef&OhizlfLMOdhb zGJj~x&oVY~7g)Bligh<1K>0$kh7K$dhKw@FcRp`nKP_EI#z$gvk~-HsM(5C^Ctg3# zVluOD_?eAOOqBO*#;3n8_-^m<{kf=%Ft=R(#33MwbsM&7=gZW=3dJWir;ScbxN|r0 z>~@RJb(q?~hxzDU`p^A&Js?0;WY?~neqTjISI(rr1F|5pbLXcsXU+hVe0tHqKxy?y zH&`iW_F_k&46UW5rA*0rfvb4xJyh(1k&%%DK^Dsi3A~c1SZXEJ zR8{F*Ffg#VvI+^wYV*Yj-^$5qb;-lB7>o18R8as+ATcHTSWiK8N(O#T> zFe8_~1*o2#gTwxOnQ)mpJ0PM^vs19<`bI~h<+v&!xyKphYH$%!1cZmj`t@@G8fY1V zoPFYG&W_Xfg{OagaT@Bg;o>(0G0Qh<`*C^u`*DLW6?kqRytj`0lGo}|`2Fqm(;%7j zK<9V|lC2_>)UZWvluHp=TP=&+$Uhcb(v6Q)18_SA@?8o$XBdNCDw{=Bx2+WtbJL6> z?%cgQjM%2#)Y|IXM6(@pB6zSUtcvf&p0*9!1rS}6IBAKGdVxT4KpIIU`@eML0!=?K z#`EYdoqJklXfyO{LZNGWk-C=8k4s&CbocsUz|bZ-U4#}TPTh|_@xf+O;0V>*BtzDT zC;9sNR)6|*cB7Dx@-X4u@xaKBUG0iP*S;hVUm~?9&~y@o_7*(Qhgv!0x_0f_1Ud-d zR1%3a7z7%up8Xd{xLVo+V6YYSbMPQ(U?th#(;5zRl;OPD<)E(O|KU+|{6>RSQ9nuX z)H>v?gL%XJ1U*()X9uPORt~o2?LjH2go$mK4ydHwOthTR>1wP(Sb13*$~z$_LAuJ4 zqKIx@Uiq9L2ZvXKI8RScB?X12SC2#w1u90Sl;>Qo>sm;#WRJ7ujZuw7XJU^PFiDpU z`>`p@@t|4FBdIajca9mwqaY?e}Lq*?uEn7jj90 zEc78>!zcCjf;0n6frQhEk`0Z^&OY-gfs-JT{lOtgHOe@_dfMvm6F=MSak6Qgty@*L z;POkP{`GlItR?rSv^2Bl0d9@OI0o z9o_?C zPAT?e57plW+8on<=H0Im;TkIzQbEAcuM&~p_Wmy8;O6GWDBT9=pXW|5A`(m34Qlpo zZrOw9&*hl7K7We`ayZl&xG)(3$d0Rw&un#R0hYRJ*TYRBO7F%g-+kqsus!1bJ$K$1 zAJNanAA?u>O?0;I$#3mLt!iV182jU*de4{;toUNKjh-2+_M(tfELpu#n z(~Q9Z4?rETGZK~8E;}CZ`7|Wwr0>~ z-D6jJJ9TC5q|cAX(&EVbr`r@lZrxlj0oI=G^`VekBlXtKx8~KstNe6N8a~xl$o*N- z|J5$#f2RZbe?QwQ7At_kfJHa`^|X+#PSxv+33iZ5)7`9KWzG4#sO>M43A`x&ZF>6z zld5GCG+j+3g4b0$I%ZsHCDyxI)qH}xAEkZ{UQ_)!T6(ML3EL)3Dx#ei4cuc!u5X$q9(6H6srsUF_qH1i zi4WmvU>AB$ipHH8_H=eW)Rt}DoKI>R`Am6MO5m>yacup2Ly1JE;T81G#^Ct^a!c#F zy#;Eu=pcd?E5(!BZ3+kvTEaSm3(99cOHVJ2k&53n)jpHz2VXUAf$;pn%iv&v5WCO# zb!}h1TtLSS4y*_Ucy6qn2J6vR*lv?h%%U)tJ-UFks~ESsbeH;yE_4Ts z<*b*!>Dzo!S+|Nq^{mV(X6z<_miRVP3Wc(&UYVKruBZdvA5I>5ov;C;8OGzRLBb9% zAo-}r3#t}a!{V8`qL)E|0W?u8>W0$4J&7dxFVD53gZz|{iIr(Fz!mp)P0e4?n!AF! zs3*OLE_l;jN#$)DrE!P6xW3;?jIR8m%jc~^s-K|@e6iY=S3PtoUD7vKvVo8qh#In3 zDz|&6=$VvZjVQM3iTzd6`w5;EDh5fatwAe837%(kszf}?nz~GW--12hKV2VJqmOq-_y+)%z@k=Kxo} zzq@&bH_2M@U<{s6yuS{OFyPZZ@v+V@g1no}ul?cC@e_XVZw;9EcEE%g@R8L6TkDLO zisPnIy36Qd7!eT#?00m+P19|uI5LD&f3>jfqg1`98pGul!$IqY?e?&f(@Cr#DO9(W zOxK85-hWpPQWF@50Fm&Z48w_n4yq7~e z1haH?yhR@i+xYJdUP>pZLXaQ#yi-z!mL!=U!cPd?`Z=^!0XKG*9XGPiA-TSuBOXHr)fe&nD~qpP!wZtN#AojN$n1s$8r+vjPve z4^DJd=GCkjxeQ&PY9Q40VjM4L7~8eyTH|6{Ou&y_Sy?Hob9N01QU@1yUtRvEe3>G* zj;Gjji1t6$OPD^qw^ry3_-int${JH7E<40yZBMqEBkdh z%;{9y_S>2l<`))30@ffh50O)HL-(JSUCnAe6n*~Kv11s}KlPNv9T6&rb<01#4VW8+ zVS-C+2Z}Z{DRmX}mq4w&FLZ=yOj7wUqqrOYNqkVk>R=v&J$F$^i+2mW=^^VgdJ)%J zVASR@=mG+jsA-OxXR8j5kUiU2)j; zu%6^qr+&lZ@v^iOl5w-xC}SH)2bR~+E^%?sHq#svwjA^& zLGHp05PR(Txw*OReJraZ(cokRG3L(%4rN^7)~}Rpn<6RLf2NfHc`w>)|V=^Az?S}gz+tLxm!(JGOuvKiahBzZpQZ1P*?9#(iTA4b3gv_ z81fltUZ|iL1|y>E;f6!4!;-OFidUvn1&W10elGY%d9MEAn+WD(nj!sf$Gh~JB_sj zL(W8?nR=412FB}2uYt3pGf2oPX&vNdkR<`gG2|BX>0-Tgb4p7~6ZzoI`R(Q9>Vx(7uT*6WWeih^pvJb(RkD!d#FZEvcbcUl~mY*yfO z(I6T@bb&5=0f|QM`dfK|d-ZWM{UqGw#wb%^DOkXppyP$|Vx0_Q7jC@|16tq-*!B9~ zMm{%18xfkIr+g5+;~4BNMEed1x;?5shtTvMDo&3+e*kr}6SG`M&XuIy9^}E8p+;Rn z&je-9NRS{(DJgJo8_71sUia0^Y_lOPM%HphZZ&e~@z{*qpGhw_(+~AcWf9rfeVyRB zI?S*3bw!Y!p6FQs^Bsj2vPy2>w*cQce1V3NESPbNLPmg>mjW$Jb!?Ve3>By<+KL0= zyGPysC`$nexqG;3`{ViqWg7T57Dd~qMP?*7Q^Sbp2F7CtT{hC<>B%@X|EX*2hO#y<3XZ-sfN};a6aAvMd zM3L+7Uo3K*e$zs}8WWLkQ2#){<+-$GLLl4*>wMd!$nZ;a(BCWYfg3k&JRwYQb(0Q* z7)Jj9HuK}g+M6;jg)yi+jPbp4Mo+IF9a64-b4iYy3-}f=o0n87)lv2-)byd6 zbzK>435HB5^61{Zyu4h`r>zz9|MPK*2qGb#mQ5_a03|E;d}zt4pJ@GWwPOC6qUE(o z0>T5J7vQ0YuAgQE#4Is$%!=s-^M{uC$4o}vB|K^$D2u^I%bNbO?pE)L)h$j9rW39^m1-kIS& zD>zOd$i>v--sZD+WO)LJpbidn$)T`8GD&6UdgEbmU_Z3GQDo{~78fg#+5Ek;&~>Xxi_4287#AuPZ|mml$RwF$=@JM8xeuu?uHaGYCO0>Ch;5Ox zW2~Lz*%9;c)PyoXILZ%n5=mHS^ElqbG?6RL1S+oNf=T!&FE6hv7c8ghDvS2WA)pb4OI zwV44W6`S!KFUD&eNBLam9meCNL zTsU^(#2?sQqWE4xTOt@~%S&_Q28?sM4T%Qks5j9J3KrCtA!`%82b)F1pxFRy0)-c} z4+W5g!GMR*NPcOOZjkhu@(c3k`wb%6o5j?3g4=UUNofZJ1}?VQILD;Fi0)BGd9+5c zqFNjpZ|Bo~GgP0}Y1m%gzc}3wh8BI}t%wHiC%Jb|3@Gwk4nsOiNjpG~ zEi?xNh27_hb zZlHyfrLd!gPKR>qzWw&%Rh=qu8~-lUV3D8NR5%991+fCnV9(8Y;F8M@96b*y8@gHI zrxJV!4P|my7_oj7@D$v+pb>rB&y@YhpV}M5wZ)*zi6Z2TTz}ZyRHe{xuwHft z;FI08Yk#W9WJB+|OEKdRRKU#3ji`r(X|lSP>g;n{p0Hkbgf`kF?2cM z7ZpU_16x^RCZMS|vHAWc5jz)`%%gMlHab4QtV1gl)*%C_f5^W3z6L?wA243rYX(1C zPyegkw5l50RvVEYAeTlhp4uSuvskT8?FNFpqyE~aWNU)Is#O^6e)+1zO?jmep! z^tVx$lfU~k2lk)VGWkrlLlC3CPYjtpC}0xQ#Q0Rc3->rjjNCni**uKkHuFG*)_6)w1U}b;#O^J-nT{@aa$f| zffmTXn;Wi1v?W)qtDC<;cv6k$52sYK__5*#RhTq>Ltx(+mA7|ms{oR_3jSoK-BXYE zk;-j88Gk6~1g|{B-;md)#hor`cn6(R>G;V#bu(j3UhvEm1~Z*v$UhpqoWL{;hLcfp zvI4&!2%Je1*BP7|Ok(Ff{@g2G^(+?GupU8TWA~cLoLkN*?vEsxM^Q_wuoR12bbjAR z*y>CXha2$dCpLTZjaJ$&O!fl!%JWtG>iE-E3`c0C-1%k8jyXNp1OL&%zK!_Zgb{hW zrJQ0mFpLmEiIBH%2wdKUGV4F@1Q0mw82*suaTL+tui2t))*`LaHRp0nK50oD7YjkN z=96p)$T$eT%SWPLTFEuinNXAfOnzOv*87de^wNJ)UKQiwTlnzSiams*%c&=?@|*Ib zxHIMAL@hZ|B>L^S%oZvh=gu*rMHggSGnS(IgkHzmnpPUop$zJl+faMhR&T0DMSxFF zvc|@wt?(EO^t?IoWtvim_Ow+j?Hs@l908I6m? zUm_GLrEwez1i+OQ%{A&WJo7qZ$H<+wa@@Gau3&uEyP?uW%hNadj~CmD^M{0);*CL* zr>CFOR%A52xpR3FZDakOo01}kKPMp1Nb>X)1an<=zmM$XJZvK=@`WY;+ zj2@MFTr2)#sRj&ssDhyVUQ#G(v8t#~HMrqZN5PGRJ17r^Q(}8my!J~rU_DS9HR(Bu z9`Kvs6QR>o825}RJ64#SEwsvV+(y8(9@st zFDxR+Q0;+`FB5-cn-{$1u&4WJ_E5k$Wq+~dXPbM?-c(4!x4t!Z*0N4$E#K><@7+a0 zf-f!eMr4_{a?a27U}^aWGREX@xMTEPQ=uT#g?G$tZ#p$+?KVN;cZ4<;I4>qB zmr1X%N7~Ny^I4TyeJMfX_~{R0@;uwO!4EyE)rupGggBO8x|S-YLgjU096_!wbq&4w zqC}~H00H=^-)jf7qP;f^0tgto`tocudX}WD?#GYwxhy+Z5`o{R#wpGYY%Eg|(_)8? zEHW#mmlsnsXLJ3Byv0lZTqrkoz4OHb`k1?myZz_~a7=y2N#lAkYwihLrjf zQ=kkMOjyR$;^N|6Jx+}Ys}SNLZ3Gbe_EgV@A-2Kk`@nUQGGFcR9+Qp_9i?n5q%LTr zg{!Vu@_Cih$8F<0D5P%QY>3+dhY=(=iZ)GSyT%Ao8 zs;)gQXt<5<=~*tyUtTNhcc9WDR%++y6ZAD zHp@whi;Gj1ks--LRqLzu6@5%}_8W)fM;oVr#em8~E6@^?gwFDYE4G(qjG1ZKEGUs%NWy#qL2Rv!HN!%Jxil;uIVocK;3}RkU$FRG{sJwQwXDs17FA9nFH7@By4En) zxYA`=;iQ#sYh&}L!P?hb?(A^-|+WsbEZ_2SR3Ae=K3T%N){I%PCX>0o4W}KnTK*b`z(tgI!0k6VRx~! zSpityKxSX-8sz;)xK_wvRVcH58{+(t1zl>>{Q|%1PB3Qery0DM(YWFAc3s|QDS`~h zIHUwwwJzLZp`R6L%P>x?Wl+m*>IV6z5v>1)1BJJax?NKh;g;K%jm$ULmqOSVJRzQQ;XeS(@o=={{N&=buEh^Nd{yP(9_#7W z6`?b=pQK?(Hizr-Wmu9WGrTE1OknUZcRE3SxhFq)I9V+>iZCb0idr!9-h%XGN`&0H zi~?~L3D4$E&mUNk4=_F4$6uV~_QRi2-+69Cv~vN>J2OVat4(cB3RCB}T14@cAAO9m zQmk%J>G0AbuQ7)>mjy?Zk&;dTcm+=$hd#~99PS(0N5Bx~+UwNjm#CM+Rt&Ag`D0S1 zRT1Jx71#eoCd_#&1kQDJZW8s;PYy%n_e?CZ#T}-X#mm4uWKmbFr&q@Gr(cXQw-Z=W zjIHG&OyT0?iCJvhDnvr#XKTL3O!!~brhneG>MY~{@O8jh5b{0e*=lt-Q8V3jCNbW&p{9H zK~;u^xGV{*UQe((cf711vQ35mhReS)d9RUD|EalpchcVw4@Xd9{K^xDRyIKk+l-C2UFt^CB@Pb6Qi!m85H9q2a*QLFX6r6 zG{R4dP*4IhJbVYGW6)8$aB3}5QZrb(`K-Vfsy=ALe|3QuO#CE(R9;y!mGIkP^`uH#8+l6P<0X0*#E+GwSIY03 z;iuaFcQvf8+A$2u4cw(<2+ZIIadV#Qw1N_gD`V@q%8vu6b4RWmJzPNEw^y^j_w*gL zO#ubwm5=#5!XLp4=db;oN$NOgu*r9gLDib1v#F>HdD}1Kp);)GuM9`i7^aS4fct6ku20P_hwp#V&W6?LLFQ9LC?;)X&JG>;t@H4YJ>8WsPX0&Z+ z5VN`R<;!y#8XD;XBUR!rp*LLeHPxv}+K8)XoAtwcIYdNuZmvOYAS5+BoV^sHVb2)+ zQ&jMv+w8!A`;bU17VGL-=UPOvjpHpM7lS6JRaT)3Uin?+-*3?mw}@H_#ck6PT)>My z56$5}GQ)wqfbGlVBkYL-D0!ATv^tX!9mChZo2c+f-;yuSQ9bk5Qrn6u*Rh;w8{Cr)znW@1BE|IZ5uOrL?l2MH}Ifs_|p5P-Eznf{vv*Plf3me}n zmCyenFWdJdEzzAcrICNz15DdoDO8Pu{)%Rr@aKm!txLUEp2TBSNX`uq3o=zXEH+7rydGL zUomd{m?s|n@L`{pme%*;KJewZ&9_Q(B$D*>P#P!y(8J3}q_i1gD=CZT1 z3lb6<8XEF`^0vrj+Q7*5|z3`l+T@QuHM(ee{dGn_I?;Nz=oYLIN%Bufw>!F3D{!DC&#N7jl zyv6ep1moU!Z>_fvM>OwpCyl*xFMPcTB@e97NmFxd?M7 z?&Y+hM#{)R+Z-C^Rrq9Y<>^XGAPIJ0;8!?($eo}`dj0If`U>Klad_oj)3Jl=oVV?4aaSYZ*Q4Jy9n`Bkk7s}SKEQg zJsDOM%;Va$3t^Hs$p>%oM(>WZD$#z8ztxU?ED0_ zLo^+2ppf;C&^k#Aj&M7>XB2GMh>2wGhLp9lb8F@BbQp!=J!CiqOp?t~N9%1J9Uu3> zuAG>fnliK>?(x8fZngxwU-rqSV$ZZu@b3h~bzr3n94hdwj@bm!b)OSCxR$Wz%ZQZ^ zpEB(sZ0l1q3q{-L1b<8QCG~f8b&Z&K!1KW>lBNQnW9gFCjT<*~NPK_R=&G}}IVYXg zJ~?>spjRRK84K42v@5{`?<$-)-hg7BT``Ot1_QLpH*IW1Ksh?hLHCD-xq0FKcowd_ zhco;0AcUdUx{L1dU)#{e*q1Ero~5*l{_x)RIx#Wv>|R{Hc5p1Ci|FH{`%|6!Z7=-D z$Jvg8U6o#vyR+!8d$7m}i|H3$@)%#_B*B97Vv}rPVc{%_uGUa2G5)6fkFj!Q>I$#` zj0zS=3FbUN5_8|-sfOjLDLRo~ziY26>z~}VsnX+s?i&+7lIJ%3OlE@`}Km-4y` zZrY406lgf6UL+C(>dkD7?(@eELRu5vZb3O%L%So*c~R>jT-OpQ_R^!#1vzeQqG{6& z2)JVE*~j&!lTen5V&~MfBe%N zo~j!d!%ykW6|w0d>u9wmy&*a6io`;GrA`9lYE^UP1vxbyj{BxCuCQRYaV1Z!O!;0Y!y_l7Yca>|FWy z7v*sifiFh=@Tnpb<6KBqkCxM|cjQbo@LxYEY0x9xLt9IWG&nezkbXUBWi2MrMr`{X ztyw%>(863#lk|EJbGswOziYNxxXrTn+$?1WwatC)Sa^W|(SW|W#;eio!av4FMs7;6 zg3KBbIde@ywnkZ=Jf(Jwy~cdz!<*z5lSxhzB*I~W*(%6H5HzC|IY7lYXZaQ|vIv z{i}t)n1djGz-RsK_|`#|@bOK(fwQP%z&=t!R3ekjix}kztES&;w;^lCEZ~eW3x~}5 z9u|&58MCkEgiQ7Z&@$_f#LGLviob`Rv>bq^>E||6u9p zqqcXrrKP1l(`GhrhP}IT@?^q&e&LpqS~19lt|pi10!Bz%%W}^KzjGzh6Q-s`Dn3=M zb^Hml+p_T7}HXh4>DVGb8}im z{9LV@fTimpVi^YIhFvLjpY5%TfMU%gC+eR5!-2-%0x++I!5j8Y&~>j;DMf$cT;@f9 zb0m-_u|Wc)-DXGj-UyA|a$RgvVj`3n>-jm^%BCcCpuA8DGIuKW358;f$K;c}()x=T z0%~!D61afBT79pp2AtR2%$jg3ADtgJw9RC#xS8R(|M@QPL$5Sx7W(3)EDy}jei;Wq z_NOg1PfP}a{FW_NQyKV{z1u8Z((pPRb3IALF+;m5mR3$~9c8WR92&+r9Hc>h?Vq`p z`fVY|@^+iOjLQkp`RR|C5R=mFsbY+byKlOOlczaIEP6CwykhX$M z6sRul{y)Y5(6Z@(2)s5=xwZd)%XcXU2EBCYlKy=@Fbbdwf$A!HHg|v)P*9JeBx0hMK8Hy&+l1;#gor!`_X!V}Wy8l7W{Vyu}Kgxk$&&Tk2krRQV7hD(Z zC){9WC(O()~1gJy2x$oM6Ehx^? zkU@TzPnyNdZ|WpJ!k}hZ?6K{ZcCOeuDb`>OQc5exo|_Tnhq{{_ zkx1R7$p|H8KEaQ$H*(~(wsmorUZjlc+HAfP$i5T(_#%1>vH|~_-!?lch0TI+DE{;(dR|?qCWG~c!$FkuJ3+L$W zIp2eSRdncKs#rZ53kJhWr_FtbDvvIf*yBCJ9s zYIqkE$gD+o5-TEnvL$P%iVl(S9H^B}N#AuwJ@*i-8wZ=)&IwC>uCnpU^csg2$9WRgJC;C4lfs9EY$ zh}HUwFVfX2KQ-!dxvxNhm=STJYolZS9MRYX+wF=2ti=)RvsJAdZ9K}c&FFWWU?}*@ zNZ~YN2TIQ9;KWA>Iz!e{Ya_3ei;fZ!eB-fB^om}{f+AUSNSdg_@oL!qd4I4DOwBU@ zq@omy=_kCGc?$?{LGX6-hPmC+pr4A(7QZW5pXrfAN=bu17+d{TnUJ@bE>&+}j*1iu zp{a!$mW9D@CCyT8NlphbSDs^Q4M;4CqH@vZeYJ->xKY1COZZpb?EUY`RThP?)DQ4?L@`& z^mOXYu<-BS82)(K>?u<(z4udIC}C!yv^=p{wij+j?HfhXcylXjW2H|s)uj`#qRi(yJr4>$Z_ z@{$4~Coj(fM6#Y_gl0C5RaXHehSpW|V>{G$oqX)_5fTt%$By$?befW;F5#4>wY;wP z^(Xj~24HHnO~x6tbh70H>E`={p_!Q=?8>Vl+gVI@*I)xER-H@De<14TzbLxxJ>3yD zGt$!7OL2&M?4VHDrRUlCd;DgZOlJ7*qTBLo{Z05E{TBk=@WuV>_>d{2umHa=j~JE6 zBpVPn92Vcs+DPS4dE%c85`h_{-XD~TexXDg5miw{e8yyBO0lQleu{!EqMz(N#F6hBb`mo%ldP|_H_=LU>6NYqmj)q z{SMM}->KHlg!Gs~{JO#Mi$^yEPq(|i>ckjYkZ>^jjNv7cQ6;bI-9NSl zFw7F?$`h%X(=&ec$9nd@;EWY5XZ4T?fqDH+oJGMG7wayI{k(IFk2?I*QB<*4%{}vf zp$+%%QG$PYw%?;7JqM?>ve=`PLl6HX3OK>=uIBw%r%U04Y&P8iiG)ToIUwO@kl*~7 z9{_x9!o19KM;B1Mx9fsjU)=S=A{g|RWP}{h&2iak`6%qnU^mMKRFuECmCz;US9<}k zxg#+ysHwX;#?HBpmOjPaFwVp*I$cuiK9S2iXcDVa$)T_)ls7RDQ@vAu23=`M-hqmJ z`1J8*v{d(@`!Bi%HnGB?ycHn%m4U&R?jQY{tz(Jj=NKJPz zCLyT`?zp^Rv!f!ILdgg^3GtqnYCwkJEYoyoTPK_!iE;=xLD5ji<6Sb<3i{CK5YsfC z;(#dwtmV4+2x&ByFC$otPC^Nzc%Ddg>_ z@<=b&n16`+FF}5zGUgQ|GNZ{8bPjt?J9%duX!0yh^{^hiFd7|}2_91@J+)=e=#rrY z$nUaJ>>)x4-T}3PfjMe(-9BYA;E#NK#lk?iNn|fSBp#SB~mJ{C<@LAFi_3(;)5$j$R zFaZDSYX@#K?7wZ5oO;Wwc1pXIyA>5%Km0A2-)H>V)w5NuyG=gj-I%U!i_^SwiKyQ8 z`*vTOBf#lcHHPB$b)XYaAPKh@fRhj4Z|O_e0~j?&JjV7w#YP)wf<`xa8>!s7ZZ zNf)$`$6}iDCy#=6tE)bxKQWSSNr-glS+$!qzt>sg%kn>Tl@YQTVK* zI=FOg1h4yJ!0SOW&$AA~^xG5xY=hXKBYQlgg(ZEaWcgk#$;G?zKL;l+o%8mY`W`z0 zONUgU`xX4jm@!PKq-5id>X+)!&+J+sjdjw`>pOBqyPLZWl}UEmK25O5{V)%;YOZO^ zxNi~O8J{@?&Bx)2r9hM%>~rg`ujFo4V3)SY-!fpiaDsSl zXDeGKnQN13J1BdB7?=zH`e!Cp%{}%1JDNA{K#8ZrKtOp};yXfck&ji$y0oMWmfIeLx%Cba>&bf4w6l(bR_kTo9hBx9Co@Ad&!G3uA)l?YhGP7 z-fc#CEfkypG|)eZK)4;ZIrd~~7Ku##-Up}Y+Ppivb#4mZ54U1o^inJgPs>Q08+Myl zFKhZ`aGoBr2Njce=R-9& zu5#F+?b>GK)bPI4%ktA^ANf*~c$((s@1tBqaLv;_+}H?L;aKHV8V##Kdn2Lrdyk+-A^A2#gN{l!dxY637_HkFDki%-X63>+E5M|Ofm z(oY51ZFUlW4HW7-aM73+EO!~MiVyW6V8*k((bD?1mF=LznOW?sR$iUKWic~6H1Aa5 zA|4ONQ-mjC-0<6G?n7Cs&p5*eZ8I9Z241oy46`o-Or=UpB@_{+#<>|u%^WtEH-_mH zXuE1O1^WHY)X$pd6r0Sqsu-V6vKm#VQhQbYiv}#>=4_Hq%&U}Mb&N^rSC1DT*5lv@ zxs|N}LeNL#H5O&P7r{w_(AkVj?AjEG!52KD|@Se>_km7KvTG?9obmG6w3 zTqgh%>c%MpqE>};<+XeNsVD*6v|VT)E~|y0Ow$#VwVh_c#d)W%z=;l>Ao8cCW(`Vm zdE#VYUVAS^wNq&YuY-QP8LFfBXgJ_vhZim^27qF1P*QI+E0g$MO4D8Es|l@UoZz>B zPUK9nr)G&c5hb5lX=9c979a)Ihu!<1tzO^*5xm|D>bVuk$|miT7dQcno{RV8ezcvc zZ%rM!q*&YD^P-5ks}ucDZSce2nT;hfL7aH>m}u$tVy6btU+0;xnZ;b4_A{PxD#;R@ zB*S1=*VP=3h!Ec}X!TounnSvIeLg`-^X>Q)&lA%l*YK79Q|brQgLkrgdkX z^CT&WI5be7=N&>=($yFp_&$OGsd_}K=J0ou74kii1M^!~$5Dh+4_3#`Oa$sWLLu>Z zm0Rl1#MxQxT_-8Q4aCp|y?Ft&=AD#ZnAX*`2PdyXGd{jCE6ayohuuR47cabt7|pHt zq!@RbO}{FuQmEQruP>po2Xhzmw6RHG!taPhyNOX~LSN#ysIIXDZF5^~S&;JAZY^!u zjOOTMjyca<)sOCRt2yi(IhRDtGAFAg87w802G~N?0xaY)v+*o~sNADy;|+_P@u4Y< z$|t>%%02Tl(6GPNTB^^ChLl%i^&a2gs+5+O<*O7oJM4_csh9yEr{EAWeV4(*Jx~r! z!^X7Wv_%99TL4M`CN|^=PFCSOk`}U;W$md?#T`|OxlbV{WyDGP)%xX;f|4Z5M21o( z@Ms{hO<=HZc0zXnPWQf{2SS1cEXSy9YPWF}o1UJeVR^J{ij)E#a>XAOb0GbCQuN#a zX~4#h4qO13)<6aAjB>i9apGz$Dvv9S5lTxbYq@|3_DB|FJE=IltA?beFgkjZb;=#q>?XDV8D^=0TYTSg1 zEhGW*)A(NheNfDDvw2mOOaINbgDhzHGT+6m1Yu><=JN1f zS?v&+_`+3Tq%WZ+a(__4(De&N=>cG9BC7u;64Il!9%`{NTkdf>fH;SfB+HesX|PL z*|dzX-LYw=-n+maDw~PmgZguXGKaK`qwgm7XnKyG<_B zZ}3}E7HdA?Txw>rB_gIC_e}yrk2@3+EXq{H_(fzIpxJ!Vg@Ois?VKi0r>AdOQ&3t> zf8e)6q#vj`mAl+wOAnGQ|E-ia21QLHkFf(u>{n`zQi;krQb$)EJupR==DWicPM&!E z&D>s*D_qsm^ws4@Cn%pPx~@jhdOu7NIrGy!ZIEkKYXJ~!Dd)L9`&6Rvy@vm`0kLfB zN6tkMA4Pn!e_@%&AhA6 zhzi#nVd!N=De7rE`Ucg-&5fMTAI-}pPIpI-Ss|7^7mFvAM)Ly5a(C?h zkz>-UX4^}?;wKRn6K2Y%bI~Ly?N>irOLfWQREFkQOgCxgCq+)J?*DbM&_KCc(Xgx> zoTuf_>DxCd_vo8<~FcBEOKo<382b~FTe?+6LEqCduwjP!>1<} zI_<3iul3vMIuF<98rFjQT%bxoIMo2|!|iOhYy_PO>&ew+ZqM}|4*WV5(6+#y3R?Ef z819=2NT0%g$EHxC8@Qn3el-vfW6&*Frc=C4df9ZVT3txgMW-~TsY~P)(8vE{FxN&xb_q)@tFdPCp_BOkf|^@oP+XA8OfK;JK!I0EJ( zxVFStBQ&Z~b_Nv8Y57_nF-Ca6Rj2EB((m75s;u+>!hN`Zxs~>p<^aF`vYP6q!GHAT z=3h4d%jN)W|2sf)VOiQ)2ql;5-9*XJaf5hJ_5PuvG1dD%-`qG*2vH^2kq1yA1-o

@=oUly;D AQvd(} diff --git a/src/tests/snapshots/app-datepicker/attributes-0-msedge.png b/src/tests/snapshots/app-datepicker/attributes-0-msedge.png deleted file mode 100644 index d23fabd127f76df203920b6f0611e17703c2050e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15776 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

  • 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 Hk2v>VO#yyU diff --git a/src/tests/snapshots/app-datepicker/attributes-1-chrome.png b/src/tests/snapshots/app-datepicker/attributes-1-chrome.png deleted file mode 100644 index 0f2e96fa68f26ad07e5f3b222c7bac4fe88b236c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13212 zcmeHuX;@Qd*X{;u^;J<*QB)=kPL)X<7-X^-iUXj67-kg3i6H`F7y?0CC4zv8g2+@s zKtPfLGDG431Vlh&9-}}A0wEHH5R$;RcKd$kyRPp#=RMz#_FU)3+aFEYNp_z7JZs(S zUiZCv_oStn%!MAWOC&h_vnU@8QbR8@H~(i0)BuMY?S(Y0JTPL|t_JIuB3it>!OfSL9*mseAhH;lm!iC0bbQ26cN`%qilw^VxZMd8*FJ z2(l|`spb|L8JT^SE_6}=4wq<54r%vmN--u^k1auv>IdT8wwabm;gRw>HJ{RtYnF|h zFC9460gK|tyb8S+6;)GPd*s!tS0CJkqkD343XNb_X&07WAdw7axjlFyHlV6^`#FAv zsuTQJtxLW%e<EQKUHB6=o*7d@LZQ6u>(tmBt>(_@A^n5OKPd`@0w};T2FBaSH*}wj=DFk_V>JWs+1=+O_x|^1Mhag9O{@-7|2z&qS z+qFl>(sSm03ugoZW~HECKHcg^qpA3&D)`5S92xI8D(Wxwz4XvAV6&1^RFXciajeqP z+}v??@#Ewmb6tfzf@Ii#lm67&Dr*;8JvZlnok(mdbBuLs34x;<`1a*pb9;NyS>c_q zu(ZO$1D1)p7z`#wGJa`rrOVvgTb2D6VpyDC))?sy?j38-jo>5)Y2>R#7zWL5t9u-_ zu&~fsle_8Z7Ff_p53p0)b{K?t;20LQ?7i@ zd2xET_dwO%%kJ(G#^QIz_lOKpAMDNkvHat)YIiA=Fy)XrzR42gnvHB(=&Chqn6OP7 zVGFY?f>@&dxbxTzCWjBd+fJMMbX>C<4rrsx{HM5q;RHgmZ&zkYNZG82usBO_;k!#A z*Jfk`m$%nzG7LPsXGq(34fB>6&;4XD+j(A2T^WOMS)A`s!KUWss(Y1li*84KkGxh` z;dCgOydc!$2&Sh$1g3<2`SOKQvPYcZsL?Sol}BLFDJ64~qtx|nsz)E!v(X^v3qt=r zjeguE28~1E!pC>mKBogV31~1_)gnL?g`gZiBnB9f$gP-60^1#hb!HA@b#U}d?-0dv$a~JpXB+g>^ z+2o>yWW%6T8jVoHnc(rFV`F3e;hygL-!O6-r^Ij8g#5mC`voJqgiGiM(GjmewvcbD zZ-I=E8}_@~-bG)!_+<@wW7ulN@S8VpUWsc{l$Vd7tQ71h<a3dpO-HG-F20PYaRLOX)3Q~3*ewrlc4tbXqPZ}P+G#Gz#QuOwX!yoS9C;yva++)YKqPYS5mKPN4gNO{7k#>0pVdJcSln!Cc*^eORXF653U@*n~f$sen>QgxvlDBh9##2vu!0-;I zZ~-imLYQCd$~(`z$~Zwc2FfHeX;{hoT`x6|6?@ri#i+!(-`IuZoMAkRh}= zJ&v#OLt^EaQ%i=;?#F1*k7dB8$HS)_HCHjDkzG_1x%;WQA!7emMMdq@>{bX_G?F#5 zeyxDloS@$J_A^AEX>+r~7kh4o2-$I&773*2=ws=7X`)+>(SO{dXlUtBYnJs<=S!}x z1KEZhYeK&LvMJN$eP1^LAZG48o^BN+e!XN(YePz4%xk}~c8l^~M2@pOma;LV?|Imr zj+9luR^rFpP!!}o>Aa5Ce`2IcH20RJE%@AMGkPEA_yb+c2QB$%kpx4d1YlXZ@@G#q~k17`4Y^|U52iR?6ntFq>U z{6;=~{CLtc9(teJ{Fl@VkLuYYBO?^xwK!aBc$E{e&&Gi_-c_I#@W>_WbU4Iz_o*jL`OO&I9W9mJXDBH0>=|wUIx!K&R3=ww8;m-z=G!Zp ziv7itOm`l~2YM>U&6#mh$Ud#_#tz~YkIlfNcSQL(s<)l9Lw`-J9;h2Pb?I?(fPqOlNi-!Bs);M{H)-vwb`}J1@Amzq|{S4PdrVMfXxu za^x~4|IgXfrs^M+k=G2h>**<#hR40dG#~Iu_oJ}VHAlFD1FnY4{e01CTR5W_6 zjgZje54{`4#>VQg*a*r?8ja@F550u@)J0KcS^p5TudmMzlH1J8tnXDFO)DS?V6i(N zMg2ZsXgMwFd;9tf)yGc9xCCW*>{BOB^p@rnL9Rjf@}h_f2NFwEKt6B&{PV9vsg4@u zT`a!=cNdYp!PJL+Q6vPJa$UZm&WY=LsV)Y4KtZI8~iti=VvU~ectx={{E5=H6bkWlYrOiCBvvsIn1udgjbaTdlE*avoj(+{3_}Gr8fE zm1I^n`nPic`*9f?!q|0YwC!kt#hF$vQ42n?8z1s>($pPw8^gLmUN5;or_GFlz9BR@;P8!_a zg$g#H1DzkNiA2|kzAcJ1AT%^Ic#nL1);+lIQlqTv-0@~0lrJYJOt>GaJ59b_sR>%j z7yOD^@qQg0vr@+>pHhVgIn73W%cN9th*YTSk2tBUt5>evh3jy$$p%8mKA!G@wyh>< zX=z$UMqZf#$(uKCMnkYMQO~-^t3FOM8nhZvaiZZjhYpHI?H>ysmtM4PMOUf@E42>u zeCfgnX+Iu4?1pMzKw5OY2XMV1B5nY)^x{j~Jgl?-m)p8QvmR@{v_rW>p2Iw`3G|lOG_PExGC42YmSxfBoHdAvd zyWTA`z%Rp`vzfUQf)NrJS*VUjWCats?~k+vnaZ+%4#ZUVg_w$r6OR6w9_v$4;ZWy} z$*MQNmb_N|J(A*I2rz&oq4G@VKUJ^;3nE^VUfuO&s})eSjY1h29SsL5Dsf$#K56cn zg8mIPYa}Zo8dHpw)z#Gl%%qSN?=fp1qA=pQtnBjl-+%u{bfbV!;(h+QpC4N> zs}YhP4&3NH+sC87LJ!TS3YCV-fL^N=4?ZHULVo)!yY^vc-gz_hZQjOxWrI=rSIuOz zS-sJbk?c)bjb(mguFypTeLqm99Bqis39 z$MzP~y~{JK3f{bVV=^p_gfsQF?D-`teH#Hn_fMr{Pixi@PUyYpXfvGb z?sdpX$EeWP+aNXoP7;atuAIrWx6wCCchul0W?GWTWZ>t90Zas;V&HSeIUzBOt8Lkd zF(0S^oKXsTKb${*{X;}?=rO&aYh-|#H^x}Bk&XkHBH=g2Y z&Q4FhSRRkl$koU0gMh<)0Uh%7%T;e~m0XMeT*p2So6Ou_AP-Po9U&)|0a4|++w9O0 zSAOI)3SMs&u0V#-`UGhO1qIrY2WCojs-O195FU2+_Bz(e>q#RY@X$l3@j%Ob9r*(tKq5e)Pa@49<*om{r|ge1j_Sbul}A8(u*?Zi<)yF&X6V=Qpap%=QqP+%7SmJ=+S|*T*W% zPESvtxV!@>CIB&nD_R_&R@?*Ky<*VZy5ai#^jGw6*r}n!7yUy6+D1l7v!5+t%A zL8oJ(##G_$ndd5dedEH_*R2n)ZhcQhay z^@mH6dQ{Re%9qjE<65T?5dj?k^;jNz`|A3s$Hc^m@ zuWMbGGxf@c{r(F6@$LbgA@mLyRFp0Oxeq%K`Nh_>>=+(b1&{#j)ePlUIy!P03KoUX zBA`3VorEU=J|;`O4jG(rZRzvCy`B%K6hEdSu~lXz2;jEd?4zbutzYmF8`QJQty;de zWUdrON+2{1ghMg6D?ZuT0B?cYc4*wY1}ZiR!;M)8GEDo!^q|xUWNJk*JSB^_?Y&i2=e%qO_Y#WP8Jy(nuPB);od&pBqm=T3J zH761w$d&&rc5h|SVn=oPtBaklb-z^TSLaP+L%Q!Mqk1J-6frlcN~>NJ2x!%;1&KR! zoANx8?@ND9!k~*rh;Oe%o^W^Ah7jo@dTiBr7y8c3KdqiE18lrY^b+z^%ZR)%bB@dm z2{<~YEt$8-`@#rv_Yf5`eki8DyJ>;^RwBE$wyT~-S8|zW>_`=LrPMTO<`T`PiW0CP zi>!rXq-lwcDi%4k^~WvuV{+^aGO{;3h?0?+Y)p`8f)aCB>ZXEtppfE3mRuEA7Z^Ky z><~&=q#)8Pu^&SSn7Tz@g}knS?{*rC_eX>+M3X5zNr%g}fXbjnw!?rs`J21t>1D`@ zpQLX78X^p=Vu((Vm3RK|I69j=MJ=wwH>HY7ZyR#XYxFfq)RJvK`&uH1M$KBaBft49%-Ak6P7kC| z`E68`Rt1j+%w~E|h{yhT?6mqj_rgV^C!L zyDLEM-Szkw{Fw?0YS?vOP6P$*dhZpe`)V2M3hWcJD{k10g=FV$U7(WON!hv2yyh3D zO1DoE*$!hN85+J?nY(G#YZ{%Lso7mctRe0hxRq6wWAhlmL0s<&)K>)tbESpJWDb6a z-}k4#s)|;4;0Cwf6UB3ryW;BMGFk+*4j#0BLW*JAMS<)v*r?A-^jqjExTI2_55i8A zlHt=mT}$QaJ3uf&?W1SUp21~sM>NL#=m*48_4d4o1oDA}kz%i8ZHcv~%%rigpHWEV z6uY}A$GAx&XUNg3h*Db2g2o>-4SlfqK=SCM2aDVotC4Gxy4=v0_Jvp56~$nbP$;P5 z3xLT4Sg>X$9B{!^NdznxQ6&^lXr>sGOwS?6fo$RHepXH0g7$Aj50cqNkbhcK!Vf`pM5d*>0+|%PAk8KCB3RICe2`O{& z+_@Y4oRGmJLKH*zhQ0p&dugX|VpFmqYOg{x0yl-GbZLMh^11u;oHQRAE7a%bM`<;n zXb%oPyu{Y)?Jn2^oDL`hNAbKR@Dq&pIkQ4ISMZmf_@?SqOn*8K`t}Bhd(31_;}lzI zX;wwqH9=3w!!LMD-fseFkc}x63LKI~r#t$9;0b`yg>s92t&5L2=nnuhfM*0%@DdPk zQydQJjK*FOOO8?Y{-W^M!K-vTZ{q<0i%jNj6aGnb!l_hhnJ+$kSi&Qd`!QGB zU)rs!tgJ*OL$j+`jYRWcy;!wC>%>Lj+g0!8BZ+i9`n-;D<@ijTTG>3y7)+tgaw35= z-;xpqYGY~kyYU@_6X4C;)T(T0BaG!7ra?zNT+v~g3|qJXZOy>{u}cy4a(o!r_6x9y z5J;!wH=rGXDxO*~o^$Si#%s%vs>f>>;kHja+8$0$x12D8-VT!rijYmZN0Iv#jo(q+ zsjoHS*Q(?JYXVY20VdI^j<(}Nhx0Dh>p(Xyn&swL@W#hKuy@-QuoKjpRJH&R`3dfh zjEzO0mKkWf+mFY#W~`Bsahgo`qFtnC&(6+vv(M9pRQSz|Ii~+;^>GHPCbN6<=)@8} zdG!J)Y9Ec;mB=Epqe9ww#><2oS=xOwMRR=K;;37$e#dOWK}{M%3pr_Cx_)g5hBRq> zqKYiOXhck9JX!pDSZ0#B_-;BuQ5sQuZnFB#t+DE03qrmA+n3>qGDu0tk6V5ZU1)o# z!+c+(0}=N0aU>y%T=?9-6w)z8T6*QUWN|(>!0gFzv7!V)d{RSSO9zz*@dLR_%RbLI z5W@XmvGIHmw0nP(U2A(*wO=?q_sj4=;<#j4gAQ}xd*xtci}I|=mYY#BI?U8!^jobuAM zSIN^3I?RmnMAB+x=s46mBjK|$wc8s>OL83$x}WS=1Kn3gZyZLk~4tCIzX}4fbGIbNx*Nax|wd-@fS#3Yjs% zoithM^h6~n`_X{#L$ zs)739QpaR%#-HxwcyH;xu;?ACTh!Jv0!gF=9|Y%U9gMw1D|%U&6IgV+$Trj zj)XE#>v&ZbsX+62gd}+9*vQBcx(ufv59iHV7!lt{I5e<-{3p?D{W)bOz;S1WOxB?i> zvCVU>e#MsSCKWYLH5n@_&%It|Wt#1qM?x)ZHM{((kE+PopKq&z#SDX1@AXZR0IWJ+ zU9sj0;?319f3#@C<9ykwCbRK-!99k}c26`4KA3r$@Z_oH%zZ{g{8L^_%EEQ9q5uy+ za23`AuU&yZ^iN=JZfUVjXb1BcwXeP6=?gQoorcRkTRGJW!|w-YtTKyMiUgmky1z1L zY(Z{nkDdzz#Y?Ah?G6KLi@uPyv?D>Y<9A_Sbp5}bb#6vNrFT0@UGea^hY}MQ<>2l< z=;`TM7xv~fxW2l9)0erE9*6JncOS8yS`YLCeuKIS1#Kv~U5Hyxv$sn2T{o?>m+(|zkR};Qo^@r`*I@WZslv<7C zAv8cAhv#Mc$X=n7-w7Ctl7D=H${KF6;XVrHw&gcGHS`5-ghx60Hvs*$3=9`Jus=QH0gK)axf2Mq231#jT~F@m-KObQN1t+Ch2RX*0F45QC=~dR-jvN^4W#mi zt$o!~Hk`}_1{nBOrLy;7LZ!)gkpxkXo+(o)NDXZM(b%s5BoIdVFsh;jpN?^hc%sjO!81o4T3((OMBYGpob$1Vx${qLV2}>* zDcpYezrh&fM41U_CED6&dhXKx;K=f*TL`-a1lHccVPy;<`%-ei4#1fh-BXoW!rAez zbwPrONH}K<23+4dRePLy6A@$@g_eqEaHQ}h)a@y}0?4>eL%&creGlp(x;t%MQQN^- zm_hL!=Q#I$8H~VzFQqaNnZ#)|`w7Td7tHUxbS(AhKJ}pW;(NSg0~zLc0&v;;^jJ?1 zxTh8u7f&SK2RrmR=i_Nb!@&JeedJ&%NjFwoVPp-#5oOm_hC-7E_%xDO4`WW-L1uFl z@;8PYXfqeWJlCc*#^P%bFi<~Aov!S54Wt7LMQI;U@Af;Lg@uJ|?Wz~Bcd(m-VBLG% zp(gJ0YO3IyqNw)l#_i0$aw3ysyeJ&%+Tj4@1ocC(8sbGRpqe)A;I=(YzI%3XAm-cI zfy(zOFJu}vLDvR}aTy>uDk=&^WzSNuK6bFA64hO7`rpxpyF)OT6ULJ3o`F@PJw@QlMujbAwR1 zIu-te0KjYK;^M;hn5x59PJ7MloJqImyw}llcz>K{+1}AXZ01@^7LNztWebNA<^>I7 zi))e3K99gY+)%*=Dua`U_3vAc^^&03G2GiUuhUA5PwwCfY==bA!WatOByUr5& z*>&sB9M0K9N&PO@<_n{?Q(N|zb`9|d(wokz#?NkZ7?;h0#4#RR8$kbZuWUdnMXBOU z_byA>>$_=bNB{ei$c4~&`2Kwh$)#N(CJwUq4uDLYlfQG|mMjUr=?2^90k-$bE!xrRT#r`H$_F6DK8)e4+%<Ub|G7TKNK~TjBvq@p++KCEGP45BG%OJ;`e196FBk-hE zCc|J_SzYb)tN>!&_rS61I&bjey({$r8}4`%aHDXz`;|Szt##7;5#5-Cn`Bs_do}W| zDgCB+aA;`g$evmfslDZyOMt4p)c`(xO#B3pxpZ~to!_joH4R#9mDQvEqVD9BA=d6&1VCUf9~oEpbHfWqm-)Q`N(|?E%yF|-hgs#neZAx zf3>}G$Fm3BwiK((=3{WURHKtLrLPaBC4P8!V7c*CKkw*J-SIa>e8q|UK+b(?-PxMC za;%H%`#_evPmgzvH4P0I0PBBrx?Xy*;!t2RZLDgsS;|+PFQ&>=oX031z814KP6{oW(Geft+9;eN_psVs;{%FtEa`uh4dVc z^(vh{DN%jq3NL{!FXBwQ`jLjqJRlZb3^r_g=8Upvgl$5$=n)q4tDW#iuXRV=XHYx4 zP2fipYM#V$wayu5F7rgTFg9mem$C3eK0PsDDX@?zxr1t*LauPlDCQgI5L%Sw1ZTNY zn--s%YJwmLU@H@lKG4CKF;3T^+-Tn4`TP49oqU1Iq{7q@$a<+#%<&c%3gku9x*U$U zqx^4iHv)LJ&6mv&+=QiW8ULPvm>0IaAujxm?MKs*+{U#BO*=z>d6*h@r18^WKKv1=DTk3<$39 zluBh(Ow1j}9F_izImV|a$^)9+clf$784h>8TU;p-2DLmzr;2(D-J1uuIfFf`s!K~t z>9_BtIZ(iMdgBb!E3Ci@u4L?4GS7XqSld<3E|EvtDB^???33BMOH>f|Q* z@`E}~OG_KpMTilBZH!H7mB5y`TCJ9EAgdy9IOeGS;#HnHPyu2W@Bu~wEn&qaFf)lg z9pKUH7m%Yz1WVpK=5%0^Ll^v572@YU0V2{0VOYh9B6(xQ=2yd6J4vb6*xG!qgg>9V z-t+z=F^8zY64BpR`d3uSs%;p{9+OZ5%B;7s0`hOyd%X;S;` zYojEHU+qAyQSUd2LDf|)kgeAatfkD^oY~A(UHy0kdfCOm`7gtJj&5M$0JaFmm{udbi5`C zB$1^20XSTaoh+gSR)yhp0&=8=N5k#V*h30fzlP$nrN-YHgplqtD-SUQC-s_e`|72x zWRfq&1N@5t>%`|-8VoBF*S{XOI@&R3jKI2N{r zOt$@2auUfgJcmk#zLG@<^Sf7Vd zQ5=i4bdT&7AFEJHyWBUTG&f0ro4lfROF~CSWa)VyeOo3o1G5rPyOay<1MN4<#`~A{ z){*@11nvM`gldm@jz)S34LCR)v+orsVAQzj#if3c8!sWXw~qkpQ^UKVo<#-KH6+^@(@0mWpt)BtLfbw;M z{8qyIV!lzKoEAI#rRdJb?2fRba9+DOx~hk6QU-^g6!`W*OT(}OD;`4i_Q?BB$P0I| zgvgU^z492^3il zx1k!dDpBSq^woP*Yem27{L28@ z^I5k*cNeNo!in?9*@q%G{yN!nfc z^y&VThSlz0r=J#eiTe9btEx|AZ7)kZS!&J=vGpUY$;x|L3Y%43P_S1goZTBc%u zJjabt@`i;33oo6qTurgnT-ao>oL71ST#!uSROdSDq@mzGxA`eg@R1GY+<}cN4(`O$ zo6bHdXP|->mHuI6`-_25%hwsj__L-zN>_Cnn8lTTn9EXd0~8pq(%8b#c{wa!ordyA zSdrgmm=U$`aj|dJ)2ACw!~J!`D!>OlwLd_0UUg@lDn2-rdbkb6%XsO8x45mr#H4%u zzUW#pKlOMtwwao^Cb#uM2H=Zg@!Edy{xP7~C5&Cw+2OY_!#4Owv31@D9Ebn+gI!&R zs##uUYnGPs$pJ!W^_x`cx>v_HZZ&EbQ!9QbVV znlGT!+_#=`adGt1O7V8# zeLszTIL)uKT)+L^q3cHE=rRg$vtVI!VZ}Epsg(3<Gkv=@n;mdF-C_r& z{N{JL59?6e3pSP)H(qKw`}5M2%QK{w15%O1I#dwwI#e33?V;jy$^P`FwRsuS*Y&>E z&kzpxbe|#Crys~-pRZ`_Bt3UNMQ}Yjt;x7e$#9SSv10y-_~TE0Mo=ODL$ukZE%u&{ z2rGXse%X{^hENjtnEInQ#-m-3noD(3|-{1f6*XHNT zQW{^jH~1R;egvUDKj&%i-xSN}}-=g*AD{}tCVF+l)iMS2%H^{xv}W(B~GfNfn& zd$NtdZf`jmq|6&@ieF(gC&~`ReIAq zzDA~;2MliHu*v6;G66^hlv$X3i+*6|$1UeeANHR!#RY>EcjNB0$+S|U>~u-z^6j3^ zM@JLgDxSXtL0Du8X!Sj?w4~e_0t)N=Qm}iXzkfC6i;%2CUkC55 zEQ{=NK@N;Qy}PBym>m7OTdgWY>yEdR(NI7(BZ0_c8sJuGR8{ET8W#}(EPFR_mWq9R zREf_LJEZPsb=wbu3pTzfnWbHnyOEv7WHygZS5FrFW(4p>0d)U}s!q) zr=6YWCYbX}dv|@Ajhs5q&6q6bu`C9Ae0R^79T_kcoZ7MhgvOYsK+1+>MtNKLtj9aN z*JUovlR57WCiI`Png$tn-2<)#q<_45mYaWT=dpfUm_19P;NL{5FS=hwDF6B~!|K;~D}s{lz1GfrW01-LFs*&? z?~1(-b_wH0k5pm}+w{$@aX;Z=#ylq8^vUT1f%_DXkO{KA&`_edVP8cfbUJZS$?y%& zg;xG~Nc})8H;}2W3I0lzKd>FC^PlJ^R&RVVU1D4-o`0`qvTtB)1%ATcK0nmaMSq#W z4f7OwTDy+hYZ{?Raj%o%zrN=%Rk>p?GHFODzGL8~H7ngPZ1Z7G zMND+y$NT$s(-S8NuGpXMDEw-m%Uk$`I?L?N{+hJ5Ko-+J;TScIgG>BrsiF%5RhNCY zlHv9bGR<+>E}EUq>3ew-5ezW;o-@_D@X0>F zWYS!}N+SW3U{5t*;0XgiVwpIxK%0b0#7-;-D_~(pEj2-qdp+%d#;pxaRb6LLy78Cz zMC(5cJTzxb*z4=9MM6J%;uv$nV`7BYSm6mFShY3lD0PeUyvd}YMbU!M4!ka4mvYJ?&7taA3+XGU3Km zN2(o|qsv^Yd4VMKPCO_!B~bueVR2cIIENpG0LubEJo)hin>D#M!8TXo{k0+w zudWiZmih{W0`Yi*5Fa7q&}Eb0USzY<*qhUA(lS#@>JTvbmd?~<&<5Ci_C6>x`B4!O zC6Nv9OVA4d&c6wWLD`5n>b9cZ4-RjjobI+k)+|M<;RIyA8EY}4PbFUJt`NjAA2dk1#~FXyAEd($jK)myTbq{Vw+iNEpX+!`uks;IO>IzM#4zw|~DwEaj=OD#I@- z#O&x(HB{onWKZap+ikVQG0km5$MAZcq z33eb`oKFSIwV<-F+>^N+K>+Z3yB;A>qWPbXS&-FHH}*QQ(aE5R z#bxWpAPKtt>MU2bUZuHs)X;k6a}bU8hEW!Ny?*>Z`TtM)7sODe_E^h+onfqoFc*Tg zPHhY@NgY!7SGy4n-x%)tniCCm0*Tzb`emXoM0t2efQd&RdulRN{fnMQ|n=a;IbWiR_}0VeZD87bZp@2T;gv3s;c z>y^h`m2?nPG{|0eC=(8+K~jut_=J4;7e)2>2K}=s>^+=>x=a$duY)mvd_6LLy}r%Q zx@}OIc^X1AcFmct0RH5DCy4U^bp^ngO^yf68AM&LnO;);SqnIvp7j7gPnc?fJRd~! zgc|=VlF<8M9Tm=(PbzzCFvD7Dq&LU{pgY1AD?j&8^WBx7UacR(*MsfA8Z$OiZ0is0 zG=PxG(|{gP)4(9s1=;Wrbc{f%0PP@hqfT#-%HD>@eHf47Vyjxv!`jfSnq+MjD-6(t z!{M*6?s}Z-L7$#L=84_Q0nxr=Pr_!uPQ`O2QJX_}Z$%lSk4@JAG!~Vga9@orC<|uh zp9qNV!0K9XhwSuNLPAY%6X&gq_%VsZBfUO)l}8YfNtVr)kQHA#YH003}x`!hD^5+OY0<$-LjzW__hGt8|xZ`I&FUpg`41MHVf&FNSO6puU7gaX|1#n^)8s+{Ixo#AS;( z(_TUSwU`eYKcy!(M4kh01h~*!fQD!8nb$JIl_b7-*x#Wu7Fea@0#C(nQX_hhyR8UNU#PH!q_ja|t3rOz6S8VZ=y6 zBvWm>#Ni=WyTRM1X9v>xXp0i!9zMUzd*+Eix81+PSN_b);o z-5toB5c3rpPcv(%AH?bc;QsBQSp21!|Se#Dd zfj<0czncCh{9F!OONWH+|PKTM?pO@{L2<8QK*Xva)|_6r;+BounDv|M{} z_A52kecB{;x$I2_jmf9;gH`jNIeyLien)`_i!SJ$b1L0k$vfg0d(1s3k?HRD`Mdd` z4SoboGf;`%FaNms`~|_1-itKfp7MP`sc4vOmkpBE;n%?H27LLEI|5gQaE^NUxCiOX zo?FaVgu^*nsJuD*pl|ElHkFp2HVC+Jv214t@Jyj8%%4{l#1yeJLCkB{dikam=Amcb zY7=!5ex3$4ZXIn0&C$hbcf0K`P0C}?vu=4A&@i<#z5ukf<@w6YHrYtlPGeim*3EB4 zaI`>u++-SD`_P2A0b)Z{b-ZIv5%me>+qR+=`v$XU21l_i44kRIqf3rQY4S5r<+#Or zuV#oZw6x1qh)B@2$synI3=mBD%)Hb1(6kr<6w1%*BUsI)g>|Q|nLoT8*@A|Fc$ZqJ zija<%2Qx(>6$o89V|8Z~F0?Y@Sc{hLDqP%e18l1HOnPD(WB{;By6^sHFFgLYP#cta z|LOCQzlcxk;vWFzU#A8RFW3IEmj5T#GLDybmO!%BuENW<4q4y0 z`y9G~!D`pe^sT<0dDF4w$C_8{5M-xRPixrU`Gv9@+|bh|0SemWYU0h?MT#*7Z$Wn+W#Q#b)mw^yuca z|Mlw36Y5LiTEhLZ3UNjw&HSL2vxPbXt0 zpX@sF4P6Vc=?SciE3KB>!XtLQjS{WTzyygX_MT1<6aFxjS{W|pNB5c(U`dhjx%aKj2ZyVlcRIwy!ecS%o zQ-e8Ox%f$ym4S!XQX=c`V8^tKO4GVn_qcq-90uPYLfwUtNwC~ci=!5|+&ik;Djyj! zFGmaL+yBba7|XNiL?&zt6i~`J4KoLCdFUmWCe;TzkL!B(^gH~Of%Mcpt07l9jg3?e zI&G9!of(X(h;wz&Y5(>)v*vN6xob3*DNe?^L&=Xnz_V(=-lIricz!Y$bGXcxPT#Kn zL{ubdu4{9+qt=dB3ViH=_zrE%b9-)1laggAdEB9=TI#&kZTo8Pfz#VZTa@;%bhab< zF4zr7;cL>19d%epF(UEXX_jTiCZda0yJf|RJ#j8KB9+X@1~Hn}Zc%8%y>}Ub*u}Ry z>wi@*ey5uhX{t0NwHl#>-EQ{KB#zDV%-6Uwj+pGAUo(o6n|u;K!^d=kTj+i1tx31w zLUI)iW(TJkZC++DbtCr71>?ENEk^uu*@Z|Sit`SB_7nkgC6#Y*aELM7=Xh9XS!;*vCC7H&+UVtnN6@y%?a4|T>zWpI zdGXyv2=JwbHVi9=();L^c*Yj`1Vq*D%5s@~LDyaN3_VRz2l88uVLiIK3a@GOBT7OE?+UBuC$cg$IYUPGSI8rILeUTLNet-mSgViXkNFhlRglQ3?)-|+N{=zPh0 zLw#tX(g=+TR6sE$#LvVIU$Hn5Th3rnt&iO=P;bQMDVOY0NM5|@+bhl=HXdtO1xoy$+8zB z#_Fe-*K$6+NR+R+5qfBKG*>Ue-*s%7t4#lRoQ-L$KR77r#0z>F40E(Tj(@b_>j@$v z@%EEkEE>h%=a8KV*^VCM*s^q59a*-ecwMuC={>(a;mo0RU)^E*f_2|gd21>JO+an^ zf!Y(v!HaYS=c_n{r%AL6`tAoQtNPD&$Cv^*UFX*4Jgt8PO^BcjxPNuOm{KI{H>~^=Egx-47p5|7t)f?)3(xIEJG~fYV3OfC8U#) zrgHeYU#GO%i`dIBQIf=~m|roe{!a0feo;qCjAvNzK{J^M_oQ5LN4UU2GX#hS9VdBM z+?I^198yK+D38B==0h%2ru?4D{^Fd!Y1*JDBC(>U)3{hE_seDcy;>uFMleC}knp>2 zC;3>AeYEWc67#2~6|-eZX16}fZthhT%L?ZNxfhuECIl+rjcFDFwJd@U_2!($a#L>h z++RrB8yhh6c)Qyao#4>>{Ns1719P_+Wu7N6xnTcYc)BbXnII_6+{L$rBXVcU)KVg&w;Tt-LSJ z2~&|*TO_%rkzbP_VI`GKoLsdGGmrUIk^u3d<#hlOY?O{Qq=>%;mQ z2~ydF?TN=zqGjB&!QMY6WF8AYnoqepByf@hr`M!r7UW9N$Ec~&`6_qRch%=i zP=Q4mH=hlT23GhGLi)rq({_t{sckB9Ap3hr+**vJynoWitCIJox}M;i>3tnre70wC z^|4cDf9Mo33drW|ogFPHR*7?2AHJ|$%kt=#Rk4Xw%Nfu5izuqyp|P&9{;Nt?2QjhX z2H4=2)XVht50~j4=QdZ!*gnS$9S0=k-Lg~lG1gFR>agIMdfxPljc{x;StNb=HT7L% zJ3|km2kr3l@?NihJ+CRr*NQB}xys~qrLIuZ?O^K%^eqYv4qOq{>e!$HLq9U*(`mm| zko3mXboYHW;|Jev>??Ss=gEk8DSy1L&{%_&xFLiw%oSUyJsY(3ktB0yr%A1&D82qT zf=O@4v*bgmA$nSGIrwZv`tBpnLf$%Iuj;C|h)-99i_vq3Vnc%;6ug?HZJp`|d-Zdx z9Z&D)`+6k|4OQ8T|?S6X8k7UtE4RNIl8Wo5w(K?E!@l}@rY8WP{R ztf<{-Q%9B=Z{yO(EH$*LBn3BrOPp5wT<_`Wb&^dag-xFn_ zB*feorDyslpICH6P7w3+O*o927PyM=>JF}?>UETf!S_ShUWdF+ijsHc!4^MOh(a8- z`LF%^_r%Y!vdrY%A6Ir9Xe?Ie*yX)=f;WFLbKh*XC z1u0=o|Du~QDyljFMR4y(0RytW3?%&(FK9o-ITjDH4R+ZV`=c%PlCle*ao* z#3XY&tdQ#}0ZceqlEToAET;TP#U&*)5v^?4@+(}NoSG&ksc<2VDH_EUhKhJ~@7m^m zpnILEgM$MyFVC4jNkukOz-^i-c+KK)nig*O@BIo*$jp>`P!o27E3|riF!Q^>5b=b zljXdoib{mBiOJx=KwfJE?aKG;yTzrY12fTb8QZ>ETCqErsZ8Ip(o)`iJR%`Jo~=ga zVD&vWH@C9nLlg?7;lHL+sNP=5+qgF!;b3pCrKgvW;X57Hf{Q=R9H<$vv)Wtlwek{= zAbApkKAaPX_H*upgEx-{lf7|?I;QiMy!=b=)sgJYO?MFyk@gkrGE4v&&q=qxzwf`4 zpA?^zRJhb%$iu;5+k$FxnUE|qsa5~{K+|W!D~X<-{?x~vXOyyU;tO+f?o?M-hs7dq zv9O?qrB(x4Ed|%cYc+WEOF#VF`uo>A^>j&*^#d!rMC(yT*a}r582nx!*$_JDfcji$ zocs-befTs~W`b>)!mEP;Hm_3&T)|?o;rFgd!nwYZXCurLR&~Q(EwpV$i<4Sgm|o4_ zMO|IJuRdyHgn0qWi1pp>RnXJXv2taB^<7o1lp@kzz^$N?229Q~1*{6nY<&}gy`vv~ zF<4=!sv(1ohfliZ<{5?tH`7W>OItX<&bG&4=LCZNMuH9zO)d>eLZI2RlV?-*Oh&K}s$jy$MVC5`G~@&0FCtE}N-=+=dxC9v$w}29{4@k_M#8c-HF{ zGIZE3YU%4I9?iQRU3VM(@!-Z={J}1V+Ce?I7tMV;X<= z@a}X)aWQvEUS13G5&q|CIYpEoxz`S>Ju5&F4 zVgb=z!xJRAmKBE6HlcHKbH??aMH8`b`N4TsI5p6o9-jOchR%OMERS0~cOy-cGY|Yl z1-ZGox&8AQ~)&eE&M|ZdS;Ly-A zIG`q&a7Sn7oOgpxMg_)=zM~_7XKuq+J0l+>7{iv?Q|Pxf&pyY)%RA7xJ6TdyCA>D# zU;w^_p+bG7hHh8-EdbpgapXWYGt>S{ftaPZM#i;|^_i_7#Q1ZJ`^Ma(s$ zBCchxhg(cc%#C4MuE)fs&iYfuQtH&nLPiw&R3|Hzso!TR$bg)dUpRxy1%4wLu;Vnn z+XRmj`1t!NpY>V7M4~dDdL8b$nL+GHkqM|_YhUv&sjR%YQOy`Ao0*cD>NVXGMjY+s z?Y+D@`X1L|fJW}=j>NaeadfU=&+Ypn5a{xco61&xKU``r@fv2mx9uq|EL1?or>B>} zjP9?kt%b|yD)nHNmg*iHZOm8Ah+K539Ut1f5Gg-6Ihi4h6AwNLEHka^t5F4Oop$pi zZvXa;;c;bVVq(Glh)b85@vl;)e9Fnl$-RF6{M-`e^Xt3kw_9k|HrC%e!^DcOJ5+}npz;M+;2i`KfKRiyziqtlPs}+%wU!vfY-_Qtc z+Rhgkeba4Jpq5(j?VBp2974Kc?OU=CGOsz5lA|VFHpp1Wwp%#E^;+1yYu*Z)5TB-f zj@vmhRaLDZ#L%5pppAi%WqyA;0ro+5>KX1cB_b=y0^#@R>ofZe%YogvpZ$dzJYr(Q zi-mjYNw5Zaz63_K6>Mcczs91180Cf#$z~!5KdF*^j-oOT1N4+FbDp=Z8;ebDEw%yBLNmmc9NvVCRNbt zCEgi$GLXb_IDEIEx6kru@)m+{6y#OezL1hOUASJfu^Z1A;F#@jG6e>l90 z76H;3EvHYMreyMLp;iJNA`k}34BS-e!x1kXZgVuWqBgft$2gS#Or#it+tbB+F11pE zXIDlltWpH6zGRI*e)!&|%l+PG8Nba(+P$x$PeBNM9iL17YCwt-joFT(;!s~)?9HuF z^9dKoNn}F}mvHG6a0&@|e9C`vAlt*Q{*?ub@Spneqf|q7pG|Pk;hnR$N5@9EhcS~9 zxLN5TA~@&y_V)JT&(F_FgW=(<^NUj17JhRH#_w$+VTI*`B?ct zeoRi52Vfe-1j&%e$wgIFRm46OF0QU(-W=QF9FG8RY&D=}-C3{@5wG))m=%jN+dtO}Wzz+=!cvoUf-xw~u7;BcYt!Do^-YjC&j`@~N!1Zlh_ zCnsNvVlCP|iCe3k()aVLgNOwbk>KXz8auhYZ_R`8*gR9$j~nvSj)lIv6F!4*ykPPp zjF2IzvZ#K3dcmdEq%%oixYD|FH46ECbhPO35TY`^OKht2@4xRb$_9?iKWb#Xw_$3I zGJx+cbf>?U81zd|Psh#1X#nf9^`Qo@_^f&B@hEs^V&(hyR2GH#`AaE|O4|}Y}K{(rLbT?8o{_YG$G*pnZ+&Y^FKWZApmS_zAM$%C;mAAR^wK;R8(@! zb*1AC=Hu)uE+0N$aP%dl`pxw4bqIy^%f%(a5HlNc6_K!J?BC=9ib(Yg>7`d9EHFD{ z-s-9o0FcRh2!UZ?BqV|B1f=}?1v%qZJ8-Bi5kQ}N7tWj{Ns$XimnExb%9f?N)VB{& z5Ns|tglL)3`3(eVt0ALp8Vd&3T9}iFu<+vkLZ-$TQ&VNK4u2VZH7%0lX{R|SHIl7u zvhx~RTvkY^e~4jpbQE{A+myK{iLjq*z@Wz~+Rj1VN*VF};XtyG?P^pE8#UR|?_bSI zI;oT3AT7qHITlw}b$xtlt%eE+woV~`>%qNasQ_jfe_a|Hni_S#<%X{fXtZoax>!XYh*d(Q-^h``j zC}sCCk|97J>9GEz zZmiN;#nQyqws6vKfl)10wCl^GMvi^ko{T{NR-kAFjRCt3KwD~(V&E@jB)|=FdrR2t z&NPOR;*_4Dq4>`YAb8JCQ#t^bMzX;y2Y@5dC z<<->zNJX6G>M$q_$KT+}KC0*=j#q8b%)_Nd?@tA$xM%|_B&40No_kRMI!nNMmY0?) z_zYm8kZ$Fpg4P_7Y_;QMFqR1bkghPjNJ{IPx8wfioH0x>qz%H9=kK4lCxUh-+#4p8 zB-9w1z`cTw52liO7Ore>u&X56b)|@;+_YBi_~URr8>F+4AQJNNYJaT5i#t~vX4pRB zcgB(N;(lHv5EXQV39;|{B8Uz4oGsepFvy-}Z1Yepu3f`|YIv3Lk_F!c)bj0^gU_ zu`NM*Jyhqhuo~rddm|7}t~k{Oo^_oJh7t$)fFOM|Hcsrs#t^s-9mR5Pw5&FSVNvI? zJYZ2keiahVbEr0jcXoFV_2sL8Z3@7V685`h0Z{u7Uzj>R+6{|M{;a+OD0c&KU6nZ2 zzmSg4@ZGIY%A(NE;Y37Nya~Mk%r#QsK>9rw(tWNM$Pn&-e(+sT$0tn`PoSrvl*~gA zfZ5tFSa$*6t*X*hh-Mm$(~vC!Sav+vS%bp~pCSJWtJ&UYV;*OOJ$o>4y+!XGuH)Oc ze}pB$Pp>Zv{fX(XpJ!w+0UaHe#dEKh)lO>L*c3o$uMXUIC!_?ZrXyTdQmP0S`jfF_ z@MW+p(>7DxTgn+OgJQ$?IF(_O@M>=_oGw5dtO_=Dg8*;B8J?(nKKlNQMg0e3X5E0hf@FkbPqtaATlrOK+ZnrhY@4syM_G zh&$vm-@%NXyDnss?R>f7%2sfJQPNYfuC6Ys?#y_FRU3m49voW@p01P>8JQ%;L7fLH zYCPQRl=S_b1vbEBB6L=?o;GuuRt^EO6qx-0q*1S}BQ2EuI91QU?y$~P@^)5AwP@m| zhzU`5hf69*0^2T^*}-FoV@1cE$A6c7sZ3C76DNTL; zQ&xsXzE^;(wzCIsK1N6DO?G6yPJ;J+XKgNOg0g@gtE&zd*8rsM*C(W_i;`1M^1!aJx+!V;_7o~ z)f>uCI1Yx?q)0o7TKD1 zBMYw!4S5Rys`LyDcrINLr{SWbD9*~d1zIJ%u86sK-YXYxni5FrWQWXOk?m&ju6Q6$ z2Vb<+ueGKlj8SGZOe#CEQmH45>BwuF47{eoQS(g|H+(dcY;1PZPZzUM*sbBUx4r1D zr2R)lPD)8hIVC-`yI`oPnf2g?`10^+LK8&{D% zY^ef~5p%B$&Nc{pT`o51d$-qaV8|4oxeMN%C#_-1cCi--94cMP=iGi8A!gzx zFbIxLXvIhbF>v9PDJah%l7YBL7TR2lLK*1m551i%JesOkz#g8yl(*6p?3jY~?fN9w zPWXhUJjxj@(O^Gv4w^|*_YRUQxDeTEvvq(6^=%_7n)KOineFd){pXWyVE}XgCH5dp zz*O#YAd^=m%0oU(xbRt^354RxZ$m)Q&8;oaRM?dWut7-c_kKS#@lfgm5heBO9M&K1 zd99l+qa=k*%Rdle9B>w{9;&2-gnS&%e{HPV@q62|&sjF#-Uu#J9q2BAlnIo^KufFl zO}N6301kPdrII8{ZyrohKd$*$$~XJ>uE{q<35OcNunL-U1z2*s^v%u7AB&eFkx1g` z7tIgnW@o>yV3m>c-RS`QrZ1X*X)OR}NIDItL7w~{67@1j&{~Fp;PzrqRt@{J0=^7f^ z`A{o0ay$o8f^3_qkWxl^tqg%?y*AZk5kV^;T5~jW=UVJ5urgh3?Hs^DLDX?f-VAdT zMhRi@LTtO7^76{l&2G1k)UF_ii#m;D1@DChYeGFED5wzx+}F`g5PZX|?$E}Rm-Cx> z4eAl(p$RQEB_MgYjp*RgFJI(AU#BxVaWjo@OoZc{5PYettD6T~3&nzQg*zaSgP!fV zIjaQl4r~E*u7sqd==$fLi1_*gXVY)nJW4YNffxen_U7CV(~8c?$#Dw`0;jf5{!Tjk z&nzUaKyK6?@{q9mi=Q9d5aes+hixF_NS4mwI@Z?KMIe*|Xup>VS5{W8vgx9SYg|zD zfMh^P=e7KDv9N*irrGLtiLM<~OCbF#2aR?qR)HyY3R5d}5k`Bb zaD^8aE)Z2ao_#k|*TO>XK>$=}^vg|`-r5^6MJs^PTp{&^$Q+-bS#XXV_aWf0 z@Zp^47AbzgqBNpDv+Xt4%x>LX(4KbI#t9iFOlS#YlEJ%_GHlUp&596T=?0$jvTSs& zOD>(PN9|4T0S7Yi;00wyC6QMtZ~_QBP_YR}c%m+ggp z>#<>?wLNZoDc8SjmCJ$-8+1!P=QobWYdN>)i!@$&xl7di9D{h4V|m?m!Hz_zIB;b6 z-pST{MUVqd&5dvw+IFX1_6*>p?)%joN=WcpYIY|BG+<|I=9f#}zt@?Vn2;YXc+Hl? zD1Wo~0>vq>#qZg9nfAqJ6M1B5oMyg6hKVpk`D$poH9{fi%*kiq8Rnzkr`r(X5T{ocK3sr^2Ps76huG2H zTm?NXt!$vn@Xh5HwB|8+c}4eMym(Q+RFLY_NkjIc3Q7fe(gpID`Qtm)HxBHDg@qxd zH8$SvQxV`25D;+Nss~L;30YiRT;;W*Z~f@eNQ%mG<3ejJtHMQArYoXObp2;99(S%P z`LBKdntA-`sV6>DrO;thuhCJ#o3BZ~XH}|@?`*KTf482!RTEBc$|?8P?g92IYqTQr zl7M-drz%wQE*jj77;g%e%Y|C%1I2%qFOyQ53*`nG<=p1G_9k(11&))iDH%2?g!^|iq$d?)EiroD3UpbssJ^v-AQyn^{luyDA-!|P z)?R~bMYwaeQ&a%xrZ`TPTjAf@Ki-)_;~g5T*a8oBN)kkp<@{h40^RZ<)VN7A14m_l zhxKq-`Z$#PQU!ZA*Ihu*&HI3!cFOfCsmyO2d?@hSpSP0sK-G9h1rw;~L*+TP4zFDa zGTgwHc)7|(^nm9JLFM(t(MFT{(BCUM!B!nd==DbJ<2?(GE5Q~J*s}?@P5GDVnoK}_avvei@yxg!J4fdz&_ z3M=~7Icka7VqY;ca?4_h*0fLKXk1t3;|;4o3xNCwX)r|U;nH>?Zr@~KTaL12U~8$h zaVSqf@!0wHOZ`B+!^Dke51}CP(-fGH4Rab^wdZg>&HOOw?a`J%?zq^DauSnKeD*Ou zszhXkKG73G>H<)ObM8OwqK_~&F4c@HS_Z2^>5)b_&Yfg7dxtNy!XnN2jzZ`x)O^8G za09!UMY7{jhcTQX?Z3%r^G@*TKh<3MA1CdcEQII%TWj!_SW>o25k>X&#)E@{;jNY@ zn5I6s#(Bxcq|Xpp^6GKl>GxCAOI9Y?0`#b zN2gR@*}gh%gj`nUXm3V|oedJcL=%@-Ya{3@b9QzHMkAC6ogAvX2Bj8Fh{lPlI7pWL zXJZvSL9$&2p%$cZWfhgUfquPkeXVOiC?v?U&si6lCTbP38;e( zl;i<_S(WNHzFeU>7fKU$&$EruhZ9!CA-5lfKA6A&OAv^K#p*+;!{A!el4;+IXxn0n zBuBQowXaaT-tKZm=s@8&fvqb;#>5r9UjUU#QMF9ji5k-&z%PIXF+odYN2WFJrGCi% zOPcWGO$m7|7_0zdgFI;F%9J8Q+|=Q`7&jM}(&!X~h7VQZE+=R2K%rLl@ON{bGbD2c z3JRelPi}Qg)@Eg~EKyCoeoXkYmzPfr;FUjWk)RF$w(N68@wC7l`j=|pEhrDsZm8RZw{7GhY zq5e}qkXkH%zkGRWaCmq;g&SQ0m4B<(&T=2m-zhWB$2yjP?`mFq9~x3 z9$uelz$Tyq+1--I6`1_)N%^eDkFSaPC;yyi@S&7q2W^7mQa`vah0WhIF=%tYIU1## zq9W{w%HdUiho5R4C0Sj?8`qg)~$+~@;A6gZwJjpe3oH~exiGK!MN7NZ2DsD zMr<-vuz`WGw(%p9f70;iQ%EV(M9Pa;cTlr7?Sg4ox;qg|xX*r#iEec*H2?*X8Na9? zU$8DLB4Q8w4$h}ldS%bpE0o91 zi>8;Lptc?@cQo>KjJhGJ?XhLW8^m5S^D<~ys;_U#U%Nmktv!=HhLAIu?lZac!9E01 z(%ZbDXF{9xm6XER+mVmv78XpN-1-D5HPnpsq0-3SP6$jDstw+2%Ck!csAA}cl+S%8 z>w0{IkNQd&+@L&`Nu$3GO7pJ5J&GP@cLJ$KamVZ1c-mw9S>s@qFQ?&=^vA}q zvG6}jB)tE0LWQVM{wte{{);N)GapDUhTQ|*m(c&{UI$$R!m}QDL=(UVlye~;D6127 z`SHe=_Xq{aEofqpHNGc=^?biCDV>;Isp|%ZyAB_w4zR$u$}X0-Q~8h_ z8i~G$p|inY#}ZYRW!mN3rk_K558QK7$&Z~!vVjMk3kBIab@L)je|tbjgMDu7gPWDM zpR^VGsKwwmMkEdeboi$|OShMsR@IYvI_HVN|Wuy&pi93!gqEfx4vvk^mzx z9|Ar_Nv+2W1Y9E|eK|ST2!;nxQ?mf@TL0_i6;PTJM+&pEZ%ar>{3&nLA@C~}D?8(^ z8nbVN?U7(hsD|}=9xhb7DfH+x9br+}X67SJ2r=*i5e+xmgD41Cuj8jw?N6|t3? zBI#AkX1}vK>c7<`<~8nIOCahn9%6he7VxV+q*V3GZ>|u+p|D zMxB6wfayHBjFQGiGx+$Pk8tSuEn1{`P4IX^NwixE6F(q@>jhGPL|%kc?uyB=plSKh zG)GBM8bajFQQgg(H@BhXj1YrOYMiuyasctJf))oz@wEZ_01JB=fQ5IY+N~3v9Ha^w}Jc!w>OLrDl-wRs}RxQ)LG4cd)bj4m}58b`Z3n2?N@TT&kXL z_Y6)wIdM8ZGc&VK>t*ab>}tPIk902c;m^|$u!bS&cIp91At5d<7h0^Y%iBzI>;-8Y z>9k^Yp?zVwP!3;2u%#JNZ%*|t;KMgE7|d=V4#uaJ0WiG#&Uip1f(k<1n;LCMOJ2Tw z8LvKZS*cuHrynJs!gDEt5E;Wt+>-enpUuHh^!01Vl_e%#g5#_+<>xd1Xb3hXPo@Y8 zhGm7%-Mi10S5`s;UBnsm6%-UYgd#-=8+>nWgk*a6KtY&tas^uqJw}?vzdRsPt0muT z-P!6N2xy3_3Q=*}iUbLCI%>8~Ugn^x_$w6yxXQNuh+O1X@G(#gvbw;8w% zES}uDMHsIal#018I}5{rS@kZBwcXfU)!|$UxX|F9r|zo|5E-%jnDrZ8-I9Aw~mP|FURQ- Pd_d{G`n~cy51#%Hpv4;S diff --git a/src/tests/snapshots/app-datepicker/initial-render-calendar-view-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker/initial-render-calendar-view-MicrosoftEdge.png deleted file mode 100644 index 4dbbc990f436f39dc9d9213f41a7fe7436307cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13350 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%0AMNTO;GvHy}EtZS(ev%DjMU5PQTeK79K>5sH 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 E4G-u`0udFP+A)?MqZ?sM;5{RiaBw`*6` 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 M!;u4J`}}|Yzkim_cK`qY diff --git a/src/tests/snapshots/app-datepicker/initial-render-calendar-view-msedge.png b/src/tests/snapshots/app-datepicker/initial-render-calendar-view-msedge.png deleted file mode 100644 index 238d245afc6c3424fd6c205919c992072ecc2564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15384 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 LreC3V^TGcEe81}8 diff --git a/src/tests/snapshots/app-datepicker/initial-render-year-view-Safari.png b/src/tests/snapshots/app-datepicker/initial-render-year-view-Safari.png deleted file mode 100644 index ac4febec8581fdc29e3b09eac383849aa1e88c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27506 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 diff --git a/src/tests/snapshots/app-datepicker/initial-render-year-view-chrome.png b/src/tests/snapshots/app-datepicker/initial-render-year-view-chrome.png deleted file mode 100644 index 31255963ee23c8e52e45e9825ff78cc772dcb987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10405 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 `JKW^pIcjtS(HON7OAO!ysjIc9BOt3S2-$?Ty zk7cxjzH+>A;|5w7M1ube5l+$LFlH1$cFMGttUS8BspKM^cI@KZbs{p6d>4Ji^1zm<%R&f2Rf&yrv#x11Q zA@6qLwc|~SEh3XNyd81~etxJQ2z_AQw^ijfKra4RT zE?^M8zqWLv190!KdHbnVXvfbjh3hg5y`jW5x~=(s53Rrj=S(m0Y^SC$;g<2eYxz&_ z6AEkT>cV*!p9fD;XKA7Fcy*2<#XQemzlvpShNgvK(7T77{v@{YqUIE6X! z@dsML{|%!4Ad?w(w0`h9%`n4c8@b$M@9C1jJm9`(t^vgs$@$GZtD^6B(50A~>q{IF z#V*$$L7qlunr5~YYw-`|TrUMIlSDl>1wybH0Q)~{*G1&_)&Zf!9Nm}0A z+?mSH$tWCKJ<^>DYz0UnU+n(9Yq%fhb6u z#f60@XLs9=AJ))FD=aJ=Wy$UXU!!`9;VA;@NX#T4myBv`_ruqAzW^-SRQ?LE#OW;` zJc=zeKUeayM$)312KCkU*9=O2O2bNr_m0Lr|`i@1u*e@2vE|R42~T-If#gY4AI;H zr$JO<`cZQEe}_~5)4;B6nHQQrw}7bZ<=^!Dnb3w+jEZa#6%^Eq6n9iFAG*mWiI#X# z&7+_vrFq^w1STbs9BbeBFuY+r!R{eUjY^3_sFRUPCktGplN=w6yy}{@1P{Yv?oL!R}k)-W1%2?`}S>xhBe4Vn?#<}J^5Wj1^M}H z^3B6DEp2TvZ@&sr7u=qp>hfYkLb%5WMe~xjEG%lF)Dk{}UvYS2^^bA*qZWs`tx2?LQiZC!ZM= zzD0GX83$t3nB_6NfW)tql$NHMXX)zb0BHagMa0F!Q4&-al!6-D^&GH@!QfUUYe&WM ztg{$`2r2x|sw`=pVS>)($ejIPE6GC90^$tw*Rn2j=1dRLrT_-$;EO^zf@|;Tkpu~P z4mdwDO5J^qfsP9S4ujWyg|xsBn7Q+72K@&*wJ`lrEAvsX22@p8fJHh4U5}j25GYZ& z0p^M8GIcaEr^Y}}Pfz@a-$9hjt>@neKj%uqCRjK9La=tu0|#=sTu%=jWVOitqO!X% z^(Gs2|54W&X8Bj!PDvd2nH2Zr;90EZL;ot+#x_8C*&|=Z`<`z@dsZ%jw|q z2id=1fi~TzDD1z|=HLrS>_(XJ_J8xI&4T}E0dUk9x|=!U)v0pK$>?migXPaJ$~knM z-y0*!{RU!1`4wQRL$pUGCcmDD|#sW)olfVM~ zfbI?GZz~9z#G7efAvWc3&3d3&+wt}+Wz}-8*nxqDoaKd_mBWxudFrSTfQB;bmy9cG zec*gpsEk4EL2+!daV-Gr8b8#2f|uUEto{D-HdKwS9gqq_k~~L`!8{z4H;nCNai(%Y zxVen(I z2Y#*uLQzsuVteJvZk*}v@1Er3C=%!$9m3!iWUvOWAM*3_8|#^Yt{r`|!i)p$aijdt zpr$5K|U{|d%kot@OO;VJ>Fc&2IAGOGECatne*AI$rswux2;_plY$i4}y$@i1I_TXi+guUg zI?p&<+fZPle?xcYvkRcf9o3iZ6)K?m&qEK8L04seP_O&%N`J}(EX%z?zOZrN63CWj z{!QEV#+-zisfl-KH(VN4j~V+Fr{?(1_XRV&1BbmG#_izM5CIgEazbfjvNDX7jo1&T z0j`(v$}pX@t-8CBRsy`@Y^ltUwt!V!E2x7vZN@BMY7UObwRQiACe;6b=Ko8!${*GQ p|5@*F{W;9{=e~FL|Hd;nuJBn2ZpyKVXhqN;{o`kJvX9!_`d_`OLMi|N diff --git a/src/tests/snapshots/app-datepicker/initial-render-year-view-firefox.png b/src/tests/snapshots/app-datepicker/initial-render-year-view-firefox.png deleted file mode 100644 index 8688cde9d5ce392f036388f4828c28735e66efb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9633 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 F{(lL8)I-}lb)=AYzu@|<&?^W4{S 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 AqW}N^ diff --git a/src/tests/snapshots/app-datepicker/properties-0-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker/properties-0-MicrosoftEdge.png deleted file mode 100644 index 075982910d4d3697f7ee2f768d9f1b2caf6bcfbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14385 zcmeHuS6Gv6*X4uwii(PgG^xIbNEekRC3X~0r1t~~NC^;nOGvQNK~Z{B5Re)}ZvhoZ zq!%G{5JIm8NJ2@-g!lUn=3owHuIu|}{)0J!JaFCZ*?X;hueB5Ykxjz+j^N15 z4VRatV4QT#Qc>zOe%BpO>hv}E2ZtZNw={iCPrB-XFp)(sc9 zm}0Khm|qE28Knz~vId%AYBvna<%O`!LrfmO1L2fR8<4GtO_2tUHPwQfcaS#!o z@csKxX{AhU?Na+lLs$^|J(#R@3P`0&L3-zH^e3IIS^WWV&viJn@8+6e^@BO zh>Bod_b!x|&H9pO%wWPmuT}lrtHHXUw8r(GS)R-xoBF3qe&}f)(tgp)!~x0e)-mQ2 zG?I!RY^HC{okRax^nARWwO!W9Y3GOCv-NLeUL#{#cKhit(h_G?QZoVo5iEQ@^l4|BbAn;~PH{Q$-WV$lR$Hhgr87r^9mf_nqz5T~bREjDZ z&L9s}RpFyCfvD@9Y9MfRKw$l*I9hOWr-iS%AU0U7Vdv+F>Qj9|;G5^$Dknl-9@Uo5R@c;PqHo z#OfU+2}f>4(D(#HtC$n|ctoS8Us~|O!_Im&cO-2(fSR1gGb))Si*yB_Q`ml~kN?(S zHy9wYhotYcU?Q#Fqz>dxzr*0?RJ2sO8h)1s5FGbNSXtgm`o!M!8iz>CIFlAry?=6( z^rI|h<^3t($}b5{F-J_T+{E}!l-;sZI`1YJr=>-m3twYqUVN;sgwooZ&x({UfX9+O zd?x9yhpb#5xxVZC~ESsBo7cmzIa@$JG{zfT!4@(zZYfh zL#g2QyLBU(K3LTlJZ731tTK5nGgU`!ch8@|tW}#%Sq6)Cwv;40z_;835L^3nI6g(a zftQQdrd4E;QBe(j;qJP(Rxh=tr6==K9I_f?M&C`HhWqiTKl8_PtTS|wGXu=-GnFfB zKpL{|@Y~Er4e-VbI|je1+tjS5+r(jy(!BvQyzgL?S#*Q?1T(oQ_V6&{_2_h0S>1Gs zZuezs#}!25xhkaHEhN1`p(Pr#Uy)?yBcaYPL(72~&lQ@-3+DzZ2_t71T)c&(A?CNa zfbkZ1^u)VM@x$afee{i5@bz(`CJ^%e&I_RLZ2Q{IO}Zb}S1*kyu)JoGz?gYIo>sjT zOKc7pSb*2l-Yf1rdAs|2Gjd|*O?5ynl`m*}-p-)AlZ@xY@3Ci|NnhV*PWRB2)gP

    !==0CryhAkLn#FG|z3f(q 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 diff --git a/src/tests/snapshots/app-datepicker/properties-0-Safari.png b/src/tests/snapshots/app-datepicker/properties-0-Safari.png deleted file mode 100644 index cee450ef54eabf2ce92a098298b01e4fccbd9974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34329 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 C^|7e{ diff --git a/src/tests/snapshots/app-datepicker/properties-0-chrome.png b/src/tests/snapshots/app-datepicker/properties-0-chrome.png deleted file mode 100644 index 827506a4255f48df3272c12a9d691b216b5aaaee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14607 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 diff --git a/src/tests/snapshots/app-datepicker/properties-0-firefox.png b/src/tests/snapshots/app-datepicker/properties-0-firefox.png deleted file mode 100644 index 9303efbe4fed43e86fd86237fc603daa0ab4c2b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12637 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 phuvR!L-NaV0U{-oAYcUn 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 TkWJ_uD+mx8dg`T@Z#?`jQ;QDb diff --git a/src/tests/snapshots/app-datepicker/properties-1-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker/properties-1-MicrosoftEdge.png deleted file mode 100644 index 032fd569273795fd4401e61107f39ae7890f662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13224 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

  • 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 Hk2v>VO#yyU diff --git a/src/tests/snapshots/app-datepicker/properties-1-chrome.png b/src/tests/snapshots/app-datepicker/properties-1-chrome.png deleted file mode 100644 index 0f2e96fa68f26ad07e5f3b222c7bac4fe88b236c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13212 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 Pd_d{G`n~cy51#%Hpv4;S diff --git a/src/tests/snapshots/app-datepicker/timezones-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker/timezones-MicrosoftEdge.png deleted file mode 100644 index 74ded7cbd2ce7a2f832411bc6e7a3db7ee8c964b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13705 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 RfQkaRY+-Yu>io?I{|kQZDUtvH diff --git a/src/tests/snapshots/app-datepicker/timezones-Safari.png b/src/tests/snapshots/app-datepicker/timezones-Safari.png deleted file mode 100644 index 7612aabc00bf434cecf84a47f58ce2c82002b258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32909 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 S>3+!V?Ty_BFf! diff --git a/src/tests/snapshots/app-datepicker/timezones-msedge.png b/src/tests/snapshots/app-datepicker/timezones-msedge.png deleted file mode 100644 index fbe04106f7205b570f567428d8d4a57e730b1475..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15609 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 P0Sd)iYBvk7n?Cq2-nRcj diff --git a/src/tests/timezones.ts b/src/tests/timezones.ts deleted file mode 100644 index 9ccbc4a3e..000000000 --- a/src/tests/timezones.ts +++ /dev/null @@ -1,86 +0,0 @@ -const timezones = [ - '-12:00', - '-11:00', - '-10:00', - '-09:30', - '-09:00', - '-08:00', - '-07:00', - '-06:00', - '-05:00', - '-04:00', - '-03:30', - '-03:00', - '-02:00', - '-01:00', - '-00:00', - '+00:00', - '+01:00', - '+02:00', - '+03:00', - '+03:30', - '+04:00', - '+04:30', - '+05:00', - '+05:30', - '+05:45', - '+06:00', - '+06:30', - '+07:00', - '+08:00', - '+08:45', - '+09:00', - '+09:30', - '+10:00', - '+10:30', - '+11:00', - '+12:00', - '+12:45', - '+13:00', - '+14:00', -]; - -interface DateStringVal { - date: string; - value: string; -} -export type DateString = [string, DateStringVal]; -export function getAllDateStrings(): DateString[] { - const fullYear = '2020'; - const month = '02'; - const date = '02'; - - const timezonesSet: Map = new Map(); - const hours = Array.from(Array(24), (_, i) => i); - - /** - * NOTE: Different date string with specified timezone will render the date output to be - * different if the local is on another timezone which is also different from the specified - * timezone from the date string. To avoid that, by normalizing the date output to be in UTC - * timezone will most likely mimic the expected behavior as if the date string was the date - * returned by the local browser. - * - * e.g. `2020-02-02T00:00:00.000-12:00` will have different output: - * - * 1. `2020-02-02T02:00:00.000+14:00` in GMT+14 timezone == `2020-02-01T12:00:00.000Z` - * 2. `2020-02-02T00:00:00.000-12:00` in GMT-12 timezone == `2020-02-02T12:00:00.000Z` - * - * There is a clear difference between the 2 different timezone. - */ - for (const timezone of timezones) { - for (const hour of hours) { - const isoDateString = - `${fullYear}-${month}-${date}T${`0${hour}`.slice(-2)}:00:00.000${timezone}`; - const jsonDate = new Date(isoDateString).toJSON(); - - if (timezonesSet.has(jsonDate)) continue; - - timezonesSet.set(jsonDate, { - date: jsonDate, - value: jsonDate.replace(/^(.+)T.+/i, '$1'), - }); - } - } - - return Array.from(timezonesSet); -} diff --git a/src/tests/wdio.config.ts b/src/tests/wdio.config.ts deleted file mode 100644 index ab73db845..000000000 --- a/src/tests/wdio.config.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { WdioConfig } from './custom_wdio.js'; - -export const config: WdioConfig = { - runner: 'local', - specs: [ - './dist/tests/**/*.spec.js', - // './dist/tests/app-datepicker/tests.js', - // './dist/tests/app-datepicker-dialog/tests.js', - ], - exclude: [], - maxInstances: 36, - capabilities: [ - { - browserName: 'chrome', - 'goog:chromeOptions': { - args: [ - 'disable-background-timer-throttling', - 'disable-gpu', - 'disable-renderer-backgrounding', - 'headless', - 'no-sandbox', - 'window-size=800,600', - ], - w3c: true, - }, - maxInstances: 10, - }, - { - browserName: 'firefox', - 'moz:firefoxOptions': { - args: [ - '--window-size=800,600', - '--headless', - ], - }, - maxInstances: 10, - }, - ], - logLevel: 'error', - bail: 1, - baseUrl: 'http://localhost', - waitforTimeout: 10e3, - connectionRetryCount: 2, - - services: [ - 'selenium-standalone', - ], - seleniumLogs: 'logs', - - framework: 'mocha', - specFileRetries: 1, - reporters: ['spec'], - mochaOpts: { - checkLeaks: true, - inlineDiffs: true, - require: ['reify'], - timeout: 30e3, - ui: 'bdd', - }, -}; diff --git a/src/tests/wdio.sl.config.ts b/src/tests/wdio.sl.config.ts deleted file mode 100644 index 4cb7cf610..000000000 --- a/src/tests/wdio.sl.config.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { - SauceLabsCapability, - WdioConfig, -} from './custom_wdio.js'; - -import { config as baseConfig } from './wdio.config.js'; - -const baseCapability: SauceLabsCapability = { - browserVersion: 'latest', - 'sauce:options': { - build: new Date().toJSON(), - screenResolution: '800x600', - seleniumVersion: '3.141.59', - }, - specs: ['./dist/tests/**/*.spec.js'], - // specs: ['./dist/tests/app-datepicker/tests.js'], - // specs: ['./dist/tests/app-datepicker-dialog/tests.js'], - browserName: 'googlechrome', - platformName: 'windows 10', -}; -const sauceLabsUser = process.env.SAUCE_USERNAME || ''; -const sauceLabsAccessKey = process.env.SAUCE_ACCESS_KEY || ''; - -export const config: WdioConfig = { - ...baseConfig, - // maxInstances: 72, - services: ['sauce'], - specs: [], - region: 'us', - user: sauceLabsUser, - key: sauceLabsAccessKey, - sauceConnect: true, - sauceConnectOpts: { - user: sauceLabsUser, - accessKey: sauceLabsAccessKey, - }, - capabilities: [ - // { - // ...baseCapability, - // 'goog:chromeOptions': { - // w3c: true, - // }, - // }, - // { - // ...baseCapability, - // browserName: 'firefox', - // }, - { - ...baseCapability, - browserName: 'safari', - platformName: 'macos 10.13', - 'sauce:options': { - ...baseCapability['sauce:options'], - screenResolution: '1024x768', - }, - }, - { - ...baseCapability, - browserName: 'microsoftedge', - browserVersion: '18', - }, - - // { - // ...baseCapability, - // browserName: 'internet explorer', - // }, - ] as SauceLabsCapability[], -}; diff --git a/src/tracker.ts b/src/tracker.ts deleted file mode 100644 index 54ebad129..000000000 --- a/src/tracker.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { supportsPassiveEventListener } from '@material/mwc-base/utils.js'; - -type PointerType = MouseEvent | TouchEvent | PointerEvent | TouchInit; -interface ResolvedPointer { - x: PointerEvent['pageX']; - y: PointerEvent['pageY']; - id: PointerEvent['pageY'] | Touch['identifier']; -} -interface FirstTouch { - newPointer: ResolvedPointer; - oldPointer: ResolvedPointer | null; -} -interface PointerHandler { - handler(ev: PointerType): void; -} -export interface TrackerHandlers { - down(startPointer: ResolvedPointer, ev: PointerType): void; - move(startPointer: ResolvedPointer, oldPointer: ResolvedPointer, ev: PointerType): void; - up(startPointer: ResolvedPointer, oldPointer: ResolvedPointer, ev: PointerType): void; -} - -function toPointer(ev: PointerType): ResolvedPointer { - const { clientX, clientY, pageX, pageY } = ev as PointerEvent; - /** - * NOTE: For MS Edge < 16, `PointerEvents` triggered by unit tests always fail to set defined - * `pageX` and `pageY`. Those values are overridden by the browser but the values are incorrect as - * they are less than 10. - * - * Therefore, we are finding the max values between `pageX` and `clientX`. Perhaps `client*` - * properties can be used instead. For code safety during typical situation/ testing, this seems - * like the best of both worlds. - */ - const x = Math.max(pageX, clientX); - const y = Math.max(pageY, clientY); - const id = (ev as TouchInit).identifier || (ev as PointerEvent).pointerId; - - return { x, y, id: id == null ? 0 : id }; -} - -function getFirstTouch(startPointer: ResolvedPointer | null, ev: PointerType): FirstTouch { - const changedTouches = (ev as TouchEvent).changedTouches; - - if (changedTouches == null) return { newPointer: toPointer(ev), oldPointer: startPointer }; - - const touches = Array.from(changedTouches, n => toPointer(n)); - const newPointer = startPointer == null - ? touches[0] - : touches.find(n => n.id === startPointer.id)!; - - return { newPointer, oldPointer: startPointer }; -} - -function addPassiveEventListener( - node: HTMLElement, - event: string, - callback: unknown -): void { - node.addEventListener( - event, - callback as EventListenerOrEventListenerObject, - supportsPassiveEventListener ? { passive: true } : false - ); -} - -export class Tracker { - private _startPointer: ResolvedPointer | null = null; - private readonly _down: PointerHandler['handler']; - private readonly _move: PointerHandler['handler']; - private readonly _up: PointerHandler['handler']; - - constructor(private _element: HTMLElement, handlers: TrackerHandlers) { - const { down, move, up } = handlers; - - this._down = this._onDown(down); - this._move = this._onMove(move); - this._up = this._onUp(up); - - if (_element && _element.addEventListener) { - _element.addEventListener('mousedown', this._down); - - addPassiveEventListener(_element, 'touchstart', this._down); - addPassiveEventListener(_element, 'touchmove', this._move); - addPassiveEventListener(_element, 'touchend', this._up); - } - } - - public disconnect() { - const rootEl = this._element; - - if (rootEl && rootEl.removeEventListener) { - rootEl.removeEventListener('mousedown', this._down); - rootEl.removeEventListener('touchstart', this._down); - rootEl.removeEventListener('touchmove', this._move); - rootEl.removeEventListener('touchend', this._up); - } - } - - private _onDown(down: TrackerHandlers['down']) { - return (ev: PointerType) => { - if (ev instanceof MouseEvent) { - this._element.addEventListener('mousemove', this._move); - this._element.addEventListener('mouseup', this._up); - this._element.addEventListener('mouseleave', this._up); - } - - const { newPointer } = getFirstTouch(this._startPointer, ev); - - down(newPointer, ev); - this._startPointer = newPointer; - }; - } - - private _onMove(move: TrackerHandlers['move']) { - return (ev: PointerType) => { - this._updatePointers(move, ev); - }; - } - - private _onUp(up: TrackerHandlers['up']) { - return (ev: PointerType) => { - this._updatePointers(up, ev, true); - }; - } - - private _updatePointers(cb: (...args: any[]) => void, ev: PointerType, shouldReset?: boolean) { - if (shouldReset && ev instanceof MouseEvent) { - this._element.removeEventListener('mousemove', this._move); - this._element.removeEventListener('mouseup', this._up); - this._element.removeEventListener('mouseleave', this._up); - } - - const { newPointer, oldPointer } = getFirstTouch(this._startPointer, ev); - - cb(newPointer, oldPointer, ev); - - this._startPointer = shouldReset ? null : newPointer; - } -} diff --git a/tsconfig.json b/tsconfig.json index b28b94f32..fa902ed40 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,12 +6,7 @@ "declarationDir": "dist", "target": "ES2019", "sourceMap": false, - "inlineSources": false, - "types": [ - "@wdio/mocha-framework", - "node", - "webdriverio" - ] + "inlineSources": false }, "include": [ "src/**/*.ts" diff --git a/tsconfig.test.json b/tsconfig.test.json deleted file mode 100644 index a1b67cc6d..000000000 --- a/tsconfig.test.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "ES2017" - } -} diff --git a/tsconfig.wdio.json b/tsconfig.wdio.json deleted file mode 100644 index 58928f257..000000000 --- a/tsconfig.wdio.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.test.json", - "compilerOptions": { - "module": "CommonJS" - }, - "include": [ - "src/tests/*.config.ts" - ] -} diff --git a/tslint.json b/tslint.json deleted file mode 100644 index f18e111e3..000000000 --- a/tslint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": [ - "@reallyland/tslint-config" - ], - "rules": {} -} diff --git a/tslint.prod.json b/tslint.prod.json deleted file mode 100644 index afb6e4e26..000000000 --- a/tslint.prod.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tslint.json", - "rules": { - "no-debugger": true - } -} From d1b5c911f75d548faa1d67e8f613149d3c9e956b Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sat, 1 May 2021 17:16:09 +0800 Subject: [PATCH 002/276] chore: complete setup --- .build.eslintrc.json | 8 + .eslintrc.json | 47 + .husky/.gitignore | 1 + .husky/commit-msg | 4 + .husky/pre-commit | 6 + package-lock.json | 3632 +++++++++++++++++++++++++++++++++++++++++- package.json | 19 +- 7 files changed, 3689 insertions(+), 28 deletions(-) create mode 100644 .build.eslintrc.json create mode 100644 .eslintrc.json create mode 100644 .husky/.gitignore create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit diff --git a/.build.eslintrc.json b/.build.eslintrc.json new file mode 100644 index 000000000..80ededfe9 --- /dev/null +++ b/.build.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": [ + "./.eslintrc.json" + ], + "rules": { + "no-debugger": "error" + } +} \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..024b9275a --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "env": { + "browser": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:promise/recommended", + "plugin:regexp/recommended", + "plugin:lit/recommended", + "plugin:lit-a11y/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "no-async-promise-executor": "off", + "no-debugger": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" + } + ], + "comma-dangle": "off", + "@typescript-eslint/comma-dangle": [ + "error", { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "never" + } + ], + "@typescript-eslint/consistent-type-imports": [ + "error", { + "prefer": "type-imports", + "disallowTypeAnnotations": false + } + ] + } +} \ No newline at end of file diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 000000000..31354ec13 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 000000000..617efbdae --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..3760c9709 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,6 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run check && \ +npm run lint && \ +npm run ts -- --noEmit diff --git a/package-lock.json b/package-lock.json index 614bc126c..146d6ffc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "app-datepicker", - "version": "4.5.1", + "version": "5.0.0-rc.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "4.5.1", + "version": "5.0.0-rc.0", "license": "MIT", "dependencies": { "lit": "^2.0.0-rc.1", @@ -13,14 +13,23 @@ "tslib": "^2.2.0" }, "devDependencies": { + "@commitlint/config-conventional": "^12.1.1", "@reallyland/tsconfig": "^3.0.2", "@skypack/package-check": "^0.2.2", + "@typescript-eslint/eslint-plugin": "^4.22.0", + "@typescript-eslint/parser": "^4.22.0", + "commitlint": "^12.1.1", "eslint": "^7.25.0", + "eslint-plugin-lit": "^1.3.0", + "eslint-plugin-lit-a11y": "^1.0.1", + "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-regexp": "^0.9.0", + "husky": "^6.0.0", "typescript": "^4.2.4" }, "engines": { - "node": ">= 10.18.1", - "npm": ">= 6.13.4" + "node": ">= 14.16.1", + "npm": ">= 6.14.12" } }, "node_modules/@babel/code-frame": { @@ -111,6 +120,270 @@ "node": ">=4" } }, + "node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@commitlint/cli": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.1.tgz", + "integrity": "sha512-SB67/s6VJ50seoPx/Sr2gj1fMzKrx+udgarecGdr8h43ah+M2e22gjQJ7xHv5KwyPQ+6ug1YOMCL34ubT4zupQ==", + "dev": true, + "dependencies": { + "@commitlint/format": "^12.1.1", + "@commitlint/lint": "^12.1.1", + "@commitlint/load": "^12.1.1", + "@commitlint/read": "^12.1.1", + "@commitlint/types": "^12.1.1", + "get-stdin": "8.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.1.tgz", + "integrity": "sha512-15CqbXMsQiEb0qbzjEHe2OkzaXPYSp7RxaS6KoSVk/4W0QiigquavQ+M0huBZze92h0lMS6Pxoq4AJ5CQ3D+iQ==", + "dev": true, + "dependencies": { + "conventional-changelog-conventionalcommits": "^4.3.1" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/ensure": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.1.tgz", + "integrity": "sha512-XEUQvUjzBVQM7Uv8vYz+c7PDukFvx0AvQEyX/V+PaTkCK/xPvexu7FLbFwvypjSt9BPMf+T/rhB1hVmldkd6lw==", + "dev": true, + "dependencies": { + "@commitlint/types": "^12.1.1", + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.1.tgz", + "integrity": "sha512-6mplMGvLCKF5LieL7BRhydpg32tm6LICnWQADrWU4S5g9PKi2utNvhiaiuNPoHUXr29RdbNaGNcyyPv8DSjJsQ==", + "dev": true, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/format": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.1.tgz", + "integrity": "sha512-bTAoOryTFLqls17JTaRwk2WDVOP0NwuG4F/JPK8RaF6DMZNVQTfajkgTxFENNZRnESfau1BvivvEXfUAW2ZsvA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.1.tgz", + "integrity": "sha512-Sn4fsnWX+wLAJOD/UZeoVruB98te1TyPYRiDEq0MhRJAQIrP+7jE/O3/ass68AAMq00HvH3OK9kt4UBXggcGjA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^12.1.1", + "semver": "7.3.5" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/lint": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.1.tgz", + "integrity": "sha512-FFFPpku/E0svL1jaUVqosuZJDDWiNWYBlUw5ZEljh3MwWRcoaWtMIX5bseX+IvHpFZsCTAiBs1kCgNulCi0UvA==", + "dev": true, + "dependencies": { + "@commitlint/is-ignored": "^12.1.1", + "@commitlint/parse": "^12.1.1", + "@commitlint/rules": "^12.1.1", + "@commitlint/types": "^12.1.1" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/load": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.1.tgz", + "integrity": "sha512-qOQtgNdJRULUQWP9jkpTwhj7aEtnqUtqeUpbQ9rjS+GIUST65HZbteNUX4S0mAEGPWqy2aK5xGd73cUfFSvuuw==", + "dev": true, + "dependencies": { + "@commitlint/execute-rule": "^12.1.1", + "@commitlint/resolve-extends": "^12.1.1", + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/load/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/message": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.1.tgz", + "integrity": "sha512-RakDSLAiOligXjhbLahV8HowF4K75pZIcs0+Ii9Q8Gz5H3DWf1Ngit7alFTWfcbf/+DTjSzVPov5HiwQZPIBUg==", + "dev": true, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/parse": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.1.tgz", + "integrity": "sha512-nuljIvAbBDr93DgL0wCArftEIhjSghawAwhvrKNV9FFcqAJqfVqitwMxJrNDCQ5pgUMCSKULLOEv+dA0bLlTEQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^12.1.1", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/read": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.1.tgz", + "integrity": "sha512-1k0CQEoZIdixvmqZRKEcWdj2XiKS7SlizEOJ1SE99Qui5d5FlBey8eaooTGgmpR6zObpIHJehtEPzM3VzUT3qA==", + "dev": true, + "dependencies": { + "@commitlint/top-level": "^12.1.1", + "@commitlint/types": "^12.1.1", + "fs-extra": "^9.0.0", + "git-raw-commits": "^2.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.1.tgz", + "integrity": "sha512-/DXRt0S0U3o9lq5cc8OL1Lkx0IjW0HcDWjUkUXshAajBIKBYSJB8x/loNCi1krNEJ8SwLXUEFt5OLxNO6wE9yQ==", + "dev": true, + "dependencies": { + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.1.tgz", + "integrity": "sha512-oCcLF/ykcJfhM2DeeaDyrgdaiuKsqIPNocugdPj2WEyhSYqmx1/u18CV96LAtW+WyyiOLCCeiZwiQutx3T5nXg==", + "dev": true, + "dependencies": { + "@commitlint/ensure": "^12.1.1", + "@commitlint/message": "^12.1.1", + "@commitlint/to-lines": "^12.1.1", + "@commitlint/types": "^12.1.1" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.1.tgz", + "integrity": "sha512-W23AH2XF5rI27MOAPSSr0TUDoRe7ZbFoRtYhFnPu2MBmcuDA9Tmfd9N5sM2tBXtdE26uq3SazwKqGt1OoGAilQ==", + "dev": true, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/top-level": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.1.tgz", + "integrity": "sha512-g7uRbr81QEIg+pbii0OkE17Zh/2C/f6dSmiMDVRn1S0+hNHR1bENCh18hVUKcV/qKTUsKkFlhhWXM9mQBfxQJw==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/types": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.1.tgz", + "integrity": "sha512-+qGH+s2Lo6qwacV2X3/ZypZwaAI84ift+1HBjXdXtI/q0F5NtmXucV3lcQOTviMTNiJhq4qWON2fjci2NItASw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=v10" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -160,6 +433,41 @@ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.1.tgz", "integrity": "sha512-TLRPKOhQLNOMcpCXHiTKrNKX5eNzhf9y07jp27MXkjTH1IbXFvcT9/mVdOG/3qfMkip+iO6CEfv5a+y0wFhQig==" }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@reallyland/tsconfig": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", @@ -184,6 +492,36 @@ "package-check": "index.bin.js" } }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.1.tgz", + "integrity": "sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "node_modules/@types/parse5": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", @@ -199,6 +537,163 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz", + "integrity": "sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "4.22.0", + "@typescript-eslint/scope-manager": "4.22.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz", + "integrity": "sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz", + "integrity": "sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", + "debug": "^4.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz", + "integrity": "sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz", + "integrity": "sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz", + "integrity": "sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz", + "integrity": "sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.22.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -278,31 +773,104 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, "engines": { - "node": ">=8" + "node": ">=6.0" } }, - "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==", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "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==", + "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": { - "balanced-match": "^1.0.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axe-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "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/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/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -312,6 +880,32 @@ "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/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/chalk": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", @@ -328,6 +922,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "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": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -346,12 +960,122 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/commitlint": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-12.1.1.tgz", + "integrity": "sha512-mAA0n62vKBe+70dCcji3YSVJNI9zOa3yqZ5z1KtTUwiyNkVlwscZnUSjYLofwfKNGxy3HXE5CD41kOMpRdhzcw==", + "dev": true, + "dependencies": { + "@commitlint/cli": "^12.1.1", + "@commitlint/types": "^12.1.1" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v10" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, "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/conventional-changelog-angular": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", + "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", + "trim-off-newlines": "^1.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-js-pure": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.1.tgz", + "integrity": "sha512-2JukQi8HgAOCD5CSimxWWXVrUBoA9Br796uIA5Z06bIjt7PBBI19ircFaAxplgE1mJf3x2BY6MkT/HWA/UryPg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -366,6 +1090,15 @@ "node": ">= 8" } }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -383,12 +1116,55 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "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/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/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -401,6 +1177,44 @@ "node": ">=6.0.0" } }, + "node_modules/dom5": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.1.tgz", + "integrity": "sha512-JPFiouQIr16VQ4dX6i0+Hpbg3H2bMKPmZ+WZgBOSSvOPx9QHwwY8sPzeM2baUtViESYto6wC2nuZOMC/6gulcA==", + "dev": true, + "dependencies": { + "@types/parse5": "^2.2.34", + "clone": "^2.1.0", + "parse5": "^4.0.0" + } + }, + "node_modules/dom5/node_modules/@types/parse5": { + "version": "2.2.34", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-2.2.34.tgz", + "integrity": "sha1-44cKEOgnNacg9i1x3NGDunjvOp0=", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/dom5/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -419,6 +1233,24 @@ "node": ">=8.6" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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", @@ -482,6 +1314,108 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-plugin-lit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.3.0.tgz", + "integrity": "sha512-fy6Lr5vYI3kvCYaDXA20lwyKAp1keS9UjR5ntj8U2TeV+1yUta3S7xxXe+rABKRPbcNzi1ZvQLE1LmNKc9yr4Q==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + }, + "peerDependencies": { + "eslint": ">= 5" + } + }, + "node_modules/eslint-plugin-lit-a11y": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-1.0.1.tgz", + "integrity": "sha512-c+GgGSXb9HMgbzJGp0yl+msHk2rBXcA7KwbobbLonSXdHm6ln7zRwAEj4i7527FOaCKkhxiN6RXfOJcZT1/Bow==", + "dev": true, + "dependencies": { + "aria-query": "^4.2.2", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "dom5": "^3.0.1", + "emoji-regex": "^9.0.0", + "eslint": "^7.6.0", + "eslint-rule-extender": "0.0.1", + "intl-list-format": "^1.0.3", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "requireindex": "~1.1.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">= 5" + } + }, + "node_modules/eslint-plugin-lit-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-lit-a11y/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/eslint-plugin-lit-a11y/node_modules/requireindex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", + "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", + "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "dev": true, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0" + } + }, + "node_modules/eslint-plugin-regexp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.9.0.tgz", + "integrity": "sha512-pNuLfFNjEZWrQKy3FXXJNqTbgq10401rlCIlXi7TOunzIpdu/L1D/jtCSYHsXaNXICdh22mClA8A7buphun3wg==", + "dev": true, + "dependencies": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.7.1", + "regexp-ast-analysis": "^0.1.1", + "regexpp": "^3.1.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-rule-extender": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/eslint-rule-extender/-/eslint-rule-extender-0.0.1.tgz", + "integrity": "sha512-F0j1Twve3lamL3J0rRSVAynlp58sDPG39JFcQrM+u9Na7PmCgiPHNODh6YE9mduaGcsn3NBqbf6LZRj0cLr8Ng==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kaicataldo" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -630,6 +1564,23 @@ "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-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -642,6 +1593,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "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/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -654,9 +1614,37 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { @@ -673,18 +1661,79 @@ "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "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/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/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "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-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -717,6 +1766,18 @@ "node": ">= 6" } }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/globals": { "version": "13.8.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", @@ -732,6 +1793,62 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "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/sponsors/sindresorhus" + } + }, + "node_modules/globby/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" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -741,6 +1858,30 @@ "node": ">=8" } }, + "node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/husky": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -775,6 +1916,15 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -791,6 +1941,39 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/intl-list-format": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/intl-list-format/-/intl-list-format-1.0.3.tgz", + "integrity": "sha512-VNF1Mh0K1xALXkz/5QsK1gfKRvEQO/jWaniTGAzQvbzGr5uyGDskQrRjnf6Qnbc9/JRbNE8BQtTg6iWuFrZorw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -821,6 +2004,45 @@ "node": ">=0.10.0" } }, + "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": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -846,6 +2068,24 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true, + "bin": { + "jsdoctypeparser": "bin/jsdoctypeparser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -858,6 +2098,52 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", @@ -880,6 +2166,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "node_modules/lit": { "version": "2.0.0-rc.1", "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.1.tgz", @@ -921,6 +2213,21 @@ "@types/trusted-types": "^1.0.1" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -957,6 +2264,86 @@ "node": ">=10" } }, + "node_modules/map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "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.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -969,6 +2356,20 @@ "node": "*" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1008,6 +2409,21 @@ "npm": ">= 6.13.4" } }, + "node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1034,6 +2450,45 @@ "node": ">= 0.8.0" } }, + "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/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1046,11 +2501,47 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1069,6 +2560,33 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -1096,6 +2614,226 @@ "node": ">=6" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dev": true, + "dependencies": { + "regexpp": "^3.1.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "node_modules/regexp-ast-analysis": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.1.3.tgz", + "integrity": "sha512-lYzjpFaCoSw6ghkIsZCP6X1+pCaJQnWsqBLcFogi0QnbcXlZa9ElbnGGef8tvGQM3v+kM9YFTIQkwX/8UsM6cw==", + "dev": true, + "dependencies": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + } + }, "node_modules/regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", @@ -1108,6 +2846,15 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -1117,6 +2864,28 @@ "node": ">=0.10.0" } }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -1126,6 +2895,28 @@ "node": ">=4" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -1141,6 +2932,49 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1177,6 +3011,15 @@ "node": ">=8" } }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -1194,12 +3037,62 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -1226,6 +3119,18 @@ "node": ">=8" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -1290,17 +3195,92 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tslib": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -1338,6 +3318,15 @@ "node": ">=4.2.0" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -1347,12 +3336,28 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1377,18 +3382,71 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/yargs-parser": { "version": "20.2.7", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", @@ -1397,6 +3455,18 @@ "engines": { "node": ">=10" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -1478,6 +3548,216 @@ } } }, + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@commitlint/cli": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.1.tgz", + "integrity": "sha512-SB67/s6VJ50seoPx/Sr2gj1fMzKrx+udgarecGdr8h43ah+M2e22gjQJ7xHv5KwyPQ+6ug1YOMCL34ubT4zupQ==", + "dev": true, + "requires": { + "@commitlint/format": "^12.1.1", + "@commitlint/lint": "^12.1.1", + "@commitlint/load": "^12.1.1", + "@commitlint/read": "^12.1.1", + "@commitlint/types": "^12.1.1", + "get-stdin": "8.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^16.2.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@commitlint/config-conventional": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.1.tgz", + "integrity": "sha512-15CqbXMsQiEb0qbzjEHe2OkzaXPYSp7RxaS6KoSVk/4W0QiigquavQ+M0huBZze92h0lMS6Pxoq4AJ5CQ3D+iQ==", + "dev": true, + "requires": { + "conventional-changelog-conventionalcommits": "^4.3.1" + } + }, + "@commitlint/ensure": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.1.tgz", + "integrity": "sha512-XEUQvUjzBVQM7Uv8vYz+c7PDukFvx0AvQEyX/V+PaTkCK/xPvexu7FLbFwvypjSt9BPMf+T/rhB1hVmldkd6lw==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.1", + "lodash": "^4.17.19" + } + }, + "@commitlint/execute-rule": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.1.tgz", + "integrity": "sha512-6mplMGvLCKF5LieL7BRhydpg32tm6LICnWQADrWU4S5g9PKi2utNvhiaiuNPoHUXr29RdbNaGNcyyPv8DSjJsQ==", + "dev": true + }, + "@commitlint/format": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.1.tgz", + "integrity": "sha512-bTAoOryTFLqls17JTaRwk2WDVOP0NwuG4F/JPK8RaF6DMZNVQTfajkgTxFENNZRnESfau1BvivvEXfUAW2ZsvA==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0" + } + }, + "@commitlint/is-ignored": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.1.tgz", + "integrity": "sha512-Sn4fsnWX+wLAJOD/UZeoVruB98te1TyPYRiDEq0MhRJAQIrP+7jE/O3/ass68AAMq00HvH3OK9kt4UBXggcGjA==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.1", + "semver": "7.3.5" + } + }, + "@commitlint/lint": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.1.tgz", + "integrity": "sha512-FFFPpku/E0svL1jaUVqosuZJDDWiNWYBlUw5ZEljh3MwWRcoaWtMIX5bseX+IvHpFZsCTAiBs1kCgNulCi0UvA==", + "dev": true, + "requires": { + "@commitlint/is-ignored": "^12.1.1", + "@commitlint/parse": "^12.1.1", + "@commitlint/rules": "^12.1.1", + "@commitlint/types": "^12.1.1" + } + }, + "@commitlint/load": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.1.tgz", + "integrity": "sha512-qOQtgNdJRULUQWP9jkpTwhj7aEtnqUtqeUpbQ9rjS+GIUST65HZbteNUX4S0mAEGPWqy2aK5xGd73cUfFSvuuw==", + "dev": true, + "requires": { + "@commitlint/execute-rule": "^12.1.1", + "@commitlint/resolve-extends": "^12.1.1", + "@commitlint/types": "^12.1.1", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@commitlint/message": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.1.tgz", + "integrity": "sha512-RakDSLAiOligXjhbLahV8HowF4K75pZIcs0+Ii9Q8Gz5H3DWf1Ngit7alFTWfcbf/+DTjSzVPov5HiwQZPIBUg==", + "dev": true + }, + "@commitlint/parse": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.1.tgz", + "integrity": "sha512-nuljIvAbBDr93DgL0wCArftEIhjSghawAwhvrKNV9FFcqAJqfVqitwMxJrNDCQ5pgUMCSKULLOEv+dA0bLlTEQ==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.1", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.0.0" + } + }, + "@commitlint/read": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.1.tgz", + "integrity": "sha512-1k0CQEoZIdixvmqZRKEcWdj2XiKS7SlizEOJ1SE99Qui5d5FlBey8eaooTGgmpR6zObpIHJehtEPzM3VzUT3qA==", + "dev": true, + "requires": { + "@commitlint/top-level": "^12.1.1", + "@commitlint/types": "^12.1.1", + "fs-extra": "^9.0.0", + "git-raw-commits": "^2.0.0" + } + }, + "@commitlint/resolve-extends": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.1.tgz", + "integrity": "sha512-/DXRt0S0U3o9lq5cc8OL1Lkx0IjW0HcDWjUkUXshAajBIKBYSJB8x/loNCi1krNEJ8SwLXUEFt5OLxNO6wE9yQ==", + "dev": true, + "requires": { + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@commitlint/rules": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.1.tgz", + "integrity": "sha512-oCcLF/ykcJfhM2DeeaDyrgdaiuKsqIPNocugdPj2WEyhSYqmx1/u18CV96LAtW+WyyiOLCCeiZwiQutx3T5nXg==", + "dev": true, + "requires": { + "@commitlint/ensure": "^12.1.1", + "@commitlint/message": "^12.1.1", + "@commitlint/to-lines": "^12.1.1", + "@commitlint/types": "^12.1.1" + } + }, + "@commitlint/to-lines": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.1.tgz", + "integrity": "sha512-W23AH2XF5rI27MOAPSSr0TUDoRe7ZbFoRtYhFnPu2MBmcuDA9Tmfd9N5sM2tBXtdE26uq3SazwKqGt1OoGAilQ==", + "dev": true + }, + "@commitlint/top-level": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.1.tgz", + "integrity": "sha512-g7uRbr81QEIg+pbii0OkE17Zh/2C/f6dSmiMDVRn1S0+hNHR1bENCh18hVUKcV/qKTUsKkFlhhWXM9mQBfxQJw==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "@commitlint/types": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.1.tgz", + "integrity": "sha512-+qGH+s2Lo6qwacV2X3/ZypZwaAI84ift+1HBjXdXtI/q0F5NtmXucV3lcQOTviMTNiJhq4qWON2fjci2NItASw==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, "@eslint/eslintrc": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", @@ -1517,6 +3797,32 @@ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.0-rc.1.tgz", "integrity": "sha512-TLRPKOhQLNOMcpCXHiTKrNKX5eNzhf9y07jp27MXkjTH1IbXFvcT9/mVdOG/3qfMkip+iO6CEfv5a+y0wFhQig==" }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, "@reallyland/tsconfig": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@reallyland/tsconfig/-/tsconfig-3.0.2.tgz", @@ -1533,6 +3839,36 @@ "yargs-parser": "^20.2.3" } }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/node": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.1.tgz", + "integrity": "sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "@types/parse5": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", @@ -1543,10 +3879,93 @@ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.5.tgz", "integrity": "sha512-nSU7U6FQDJJCraFNwaHmH5YDsd/VA9rTnJ7B7AGFdn+m+VSt3FjLWN7+AbqxZ67dbFazqtrDFUto3HK4ljrHIg==" }, - "@types/trusted-types": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", - "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" + "@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz", + "integrity": "sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.22.0", + "@typescript-eslint/scope-manager": "4.22.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz", + "integrity": "sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.22.0.tgz", + "integrity": "sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.22.0", + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/typescript-estree": "4.22.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz", + "integrity": "sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0" + } + }, + "@typescript-eslint/types": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.22.0.tgz", + "integrity": "sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz", + "integrity": "sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.22.0", + "@typescript-eslint/visitor-keys": "4.22.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz", + "integrity": "sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.22.0", + "eslint-visitor-keys": "^2.0.0" + } }, "acorn": { "version": "7.4.1", @@ -1603,12 +4022,58 @@ "sprintf-js": "~1.0.2" } }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "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 + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "axe-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1625,12 +4090,38 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, "chalk": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", @@ -1641,6 +4132,23 @@ "supports-color": "^7.1.0" } }, + "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, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1656,12 +4164,93 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true + }, + "commitlint": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-12.1.1.tgz", + "integrity": "sha512-mAA0n62vKBe+70dCcji3YSVJNI9zOa3yqZ5z1KtTUwiyNkVlwscZnUSjYLofwfKNGxy3HXE5CD41kOMpRdhzcw==", + "dev": true, + "requires": { + "@commitlint/cli": "^12.1.1", + "@commitlint/types": "^12.1.1" + } + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, "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 }, + "conventional-changelog-angular": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", + "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, + "conventional-commits-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", + "trim-off-newlines": "^1.0.0" + } + }, + "core-js-pure": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.11.1.tgz", + "integrity": "sha512-2JukQi8HgAOCD5CSimxWWXVrUBoA9Br796uIA5Z06bIjt7PBBI19ircFaAxplgE1mJf3x2BY6MkT/HWA/UryPg==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1673,6 +4262,12 @@ "which": "^2.0.1" } }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -1682,12 +4277,45 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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=", "dev": true }, + "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, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1697,6 +4325,43 @@ "esutils": "^2.0.2" } }, + "dom5": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.1.tgz", + "integrity": "sha512-JPFiouQIr16VQ4dX6i0+Hpbg3H2bMKPmZ+WZgBOSSvOPx9QHwwY8sPzeM2baUtViESYto6wC2nuZOMC/6gulcA==", + "dev": true, + "requires": { + "@types/parse5": "^2.2.34", + "clone": "^2.1.0", + "parse5": "^4.0.0" + }, + "dependencies": { + "@types/parse5": { + "version": "2.2.34", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-2.2.34.tgz", + "integrity": "sha1-44cKEOgnNacg9i1x3NGDunjvOp0=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + } + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1712,6 +4377,21 @@ "ansi-colors": "^4.1.1" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1763,6 +4443,82 @@ "v8-compile-cache": "^2.0.3" } }, + "eslint-plugin-lit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.3.0.tgz", + "integrity": "sha512-fy6Lr5vYI3kvCYaDXA20lwyKAp1keS9UjR5ntj8U2TeV+1yUta3S7xxXe+rABKRPbcNzi1ZvQLE1LmNKc9yr4Q==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "requireindex": "^1.2.0" + } + }, + "eslint-plugin-lit-a11y": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-1.0.1.tgz", + "integrity": "sha512-c+GgGSXb9HMgbzJGp0yl+msHk2rBXcA7KwbobbLonSXdHm6ln7zRwAEj4i7527FOaCKkhxiN6RXfOJcZT1/Bow==", + "dev": true, + "requires": { + "aria-query": "^4.2.2", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "dom5": "^3.0.1", + "emoji-regex": "^9.0.0", + "eslint-rule-extender": "0.0.1", + "intl-list-format": "^1.0.3", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "requireindex": "~1.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "requireindex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", + "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", + "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "dev": true, + "requires": {} + }, + "eslint-plugin-regexp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-0.9.0.tgz", + "integrity": "sha512-pNuLfFNjEZWrQKy3FXXJNqTbgq10401rlCIlXi7TOunzIpdu/L1D/jtCSYHsXaNXICdh22mClA8A7buphun3wg==", + "dev": true, + "requires": { + "comment-parser": "^1.1.2", + "eslint-utils": "^2.1.0", + "jsdoctypeparser": "^9.0.0", + "refa": "^0.7.1", + "regexp-ast-analysis": "^0.1.1", + "regexpp": "^3.1.0" + } + }, + "eslint-rule-extender": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/eslint-rule-extender/-/eslint-rule-extender-0.0.1.tgz", + "integrity": "sha512-F0j1Twve3lamL3J0rRSVAynlp58sDPG39JFcQrM+u9Na7PmCgiPHNODh6YE9mduaGcsn3NBqbf6LZRj0cLr8Ng==", + "dev": true + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -1873,6 +4629,20 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "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, + "requires": { + "@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" + } + }, "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", @@ -1885,6 +4655,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "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, + "requires": { + "reusify": "^1.0.4" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -1894,6 +4673,25 @@ "flat-cache": "^3.0.4" } }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -1910,18 +4708,61 @@ "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "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 + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1945,6 +4786,15 @@ "is-glob": "^4.0.1" } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, "globals": { "version": "13.8.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", @@ -1954,12 +4804,70 @@ "type-fest": "^0.20.2" } }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "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 }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "husky": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -1982,6 +4890,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1998,6 +4912,33 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "intl-list-format": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/intl-list-format/-/intl-list-format-1.0.3.tgz", + "integrity": "sha512-VNF1Mh0K1xALXkz/5QsK1gfKRvEQO/jWaniTGAzQvbzGr5uyGDskQrRjnf6Qnbc9/JRbNE8BQtTg6iWuFrZorw==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2019,6 +4960,33 @@ "is-extglob": "^2.1.1" } }, + "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 + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2041,6 +5009,18 @@ "esprima": "^4.0.0" } }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2053,6 +5033,38 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, "kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", @@ -2069,6 +5081,12 @@ "type-check": "~0.4.0" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "lit": { "version": "2.0.0-rc.1", "resolved": "https://registry.npmjs.org/lit/-/lit-2.0.0-rc.1.tgz", @@ -2107,6 +5125,15 @@ "tslib": "^2.0.2" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -2140,6 +5167,61 @@ "yallist": "^4.0.0" } }, + "map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2149,6 +5231,17 @@ "brace-expansion": "^1.1.7" } }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2178,6 +5271,18 @@ "resolved": "https://registry.npmjs.org/normalize-diacritics/-/normalize-diacritics-2.13.2.tgz", "integrity": "sha512-LZL2gF7eakya7lIIqIHohYMsjLY4udTycCs7+RoLJozhaMSKFK77Mxqy9keb1lLkHiTTyAhoaueDaZQBzAuMkQ==" }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2201,6 +5306,30 @@ "word-wrap": "^1.2.3" } }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2210,11 +5339,38 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2227,6 +5383,24 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "dev": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2245,24 +5419,225 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "refa": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.7.1.tgz", + "integrity": "sha512-rvs2Px1z/PS01L8wY06YZZYDg4KzWz2CZjjsUekhyF3gnvUhu9EMfdgKwGmSJYUQItpZEPJjv2uz4vUlOkUiZg==", + "dev": true, + "requires": { + "regexpp": "^3.1.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regexp-ast-analysis": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.1.3.tgz", + "integrity": "sha512-lYzjpFaCoSw6ghkIsZCP6X1+pCaJQnWsqBLcFogi0QnbcXlZa9ElbnGGef8tvGQM3v+kM9YFTIQkwX/8UsM6cw==", + "dev": true, + "requires": { + "refa": "^0.7.1", + "regexpp": "^3.1.0" + } + }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "requires": { + "global-dirs": "^0.1.1" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2272,6 +5647,21 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2296,6 +5686,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -2307,12 +5703,62 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -2333,6 +5779,15 @@ "ansi-regex": "^5.0.0" } }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -2383,17 +5838,76 @@ } } }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, "tslib": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2415,6 +5929,12 @@ "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", "dev": true }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -2424,12 +5944,28 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2445,23 +5981,67 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, "yargs-parser": { "version": "20.2.7", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index f9e669121..512229a22 100644 --- a/package.json +++ b/package.json @@ -55,22 +55,37 @@ "build": "tsc -p tsconfig.prod.json", "check": "package-check", "clean": "shx rm -rf dist/ src/tests/snapshots/*.png logs/ .*cache *.log", - "lint": "tslint --project tsconfig.json --config tslint.prod.json --format stylish", - "lint:dev": "tslint --config tslint.json --project tsconfig.json --format stylish", + "lint": "eslint src/**/*.ts --ext .js,.jsx,.ts,.tsx", + "lint:build": "npm run lint -- --config .build.eslintrc.json", "prepublishOnly": "npm run lint && npm run build:prod", "serve": "es-dev-server --watch --port 3000 --node-resolve --dedupe", "ts": "tsc", "watch": "tsc --watch" }, + "type": "module", "dependencies": { "lit": "^2.0.0-rc.1", "nodemod": "^2.7.3", "tslib": "^2.2.0" }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, "devDependencies": { + "@commitlint/config-conventional": "^12.1.1", "@reallyland/tsconfig": "^3.0.2", "@skypack/package-check": "^0.2.2", + "@typescript-eslint/eslint-plugin": "^4.22.0", + "@typescript-eslint/parser": "^4.22.0", + "commitlint": "^12.1.1", "eslint": "^7.25.0", + "eslint-plugin-lit": "^1.3.0", + "eslint-plugin-lit-a11y": "^1.0.1", + "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-regexp": "^0.9.0", + "husky": "^6.0.0", "typescript": "^4.2.4" }, "engines": { From b9b2e9cea846248f46ce99ecb88a452a79eafc6d Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sat, 1 May 2021 17:19:12 +0800 Subject: [PATCH 003/276] chore: sort package.json --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 512229a22..b8b61f142 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "email": "wes.ngrongsen@gmail.com", "url": "https://github.com/motss" }, + "type": "module", "exports": { ".": "./dist/app-datepicker.js", "./dist/*": "./dist/*", @@ -62,17 +63,16 @@ "ts": "tsc", "watch": "tsc --watch" }, - "type": "module", - "dependencies": { - "lit": "^2.0.0-rc.1", - "nodemod": "^2.7.3", - "tslib": "^2.2.0" - }, "commitlint": { "extends": [ "@commitlint/config-conventional" ] }, + "dependencies": { + "lit": "^2.0.0-rc.1", + "nodemod": "^2.7.3", + "tslib": "^2.2.0" + }, "devDependencies": { "@commitlint/config-conventional": "^12.1.1", "@reallyland/tsconfig": "^3.0.2", From 69eedabdd741552d412f09833bcefdea94b34bda Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Fri, 7 May 2021 00:56:56 +0800 Subject: [PATCH 004/276] refactor: code refactoring --- index.html | 9 +- package-lock.json | 154 ++++++++++----------- package.json | 10 +- src/app-date-picker.ts | 13 ++ src/constants.ts | 19 +++ src/date-picker-mixin.ts | 63 +++++++++ src/date-picker.ts | 131 ++++++++++++++++++ src/helpers/date-validator.ts | 13 ++ src/helpers/is-valid-date.ts | 3 + src/helpers/nullish-attribute-converter.ts | 4 + src/helpers/to-date-range.ts | 3 + src/helpers/to-date-string.ts | 8 ++ src/helpers/to-formatters.ts | 40 ++++++ src/helpers/to-resolved-date.ts | 46 ++++++ src/helpers/to-resolved-locale.ts | 9 ++ src/helpers/to-year-list.ts | 9 ++ src/helpers/typings.ts | 6 + src/test.ts | 0 src/typings.ts | 50 +++++++ tsconfig.json | 22 ++- tsconfig.prod.json | 5 +- 21 files changed, 529 insertions(+), 88 deletions(-) create mode 100644 src/app-date-picker.ts create mode 100644 src/constants.ts create mode 100644 src/date-picker-mixin.ts create mode 100644 src/date-picker.ts create mode 100644 src/helpers/date-validator.ts create mode 100644 src/helpers/is-valid-date.ts create mode 100644 src/helpers/nullish-attribute-converter.ts create mode 100644 src/helpers/to-date-range.ts create mode 100644 src/helpers/to-date-string.ts create mode 100644 src/helpers/to-formatters.ts create mode 100644 src/helpers/to-resolved-date.ts create mode 100644 src/helpers/to-resolved-locale.ts create mode 100644 src/helpers/to-year-list.ts create mode 100644 src/helpers/typings.ts delete mode 100644 src/test.ts create mode 100644 src/typings.ts diff --git a/index.html b/index.html index 20288a575..0408b8a06 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,8 @@ app-datepicker - diff --git a/src/date-picker.ts b/src/date-picker.ts index 1ff81f1c1..b510e84e5 100644 --- a/src/date-picker.ts +++ b/src/date-picker.ts @@ -3,8 +3,10 @@ import './month-calendar/app-month-calendar.js'; import './year-grid/app-year-grid.js'; import type { TemplateResult } from 'lit'; +import { nothing } from 'lit'; import { html,LitElement } from 'lit'; import { state } from 'lit/decorators.js'; +import { classMap } from 'lit/directives/class-map.js'; import { repeat } from 'lit/directives/repeat.js'; import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; @@ -24,7 +26,7 @@ import { DatePickerMinMaxMixin } from './mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from './mixins/date-picker-mixin.js'; import type { MonthCalendarData } from './month-calendar/typings.js'; import { datePickerStyling } from './stylings.js'; -import type { CalendarView, DatePickerChangedProperties, DatePickerProperties, Formatters, YearUpdatedEvent } from './typings.js'; +import type { CalendarView, DatePickerChangedProperties, DatePickerProperties, Formatters, ValueUpdatedEvent, YearUpdatedEvent } from './typings.js'; import type { YearGridData } from './year-grid/typings.js'; export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement)) implements DatePickerProperties { @@ -53,8 +55,8 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @state() private _selectedDate: Date; - @state() - private _startView: CalendarView = 'calendar'; + // @state() + // private startView: CalendarView = 'calendar'; //#endregion private states //#region private properties @@ -92,7 +94,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement const oldStartView = changedProperties.get('startView') as CalendarView; if (!calendarViews.includes(this.startView)) { - this._startView = this.startView = oldStartView; + this.startView = this.startView = oldStartView; } } @@ -135,7 +137,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement this.value = toDateString(adjustedCurrentDate); } - if (changedProperties.has('_startView') && this._startView === 'calendar') { + if (changedProperties.has('startView') && this.startView === 'calendar') { const newSelectedYear = adjustOutOfRangeValue( this._min, this._max, @@ -153,7 +155,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement const focusableElements: HTMLElement[] = []; // TODO: focus element - if (this._startView === 'calendar') { + if (this.startView === 'calendar') { // TODO: query select elements in calendar } else { // TODO: query select elements in year list @@ -169,9 +171,9 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement protected updated(changedProperties: DatePickerChangedProperties): void { super.updated(changedProperties); - if (this._startView === 'calendar') { + if (this.startView === 'calendar') { // TODO: Do stuff for calendar - } else if (this._startView === 'yearGrid') { + } else if (this.startView === 'yearGrid') { // TODO: Do stuff for year grid } } @@ -185,6 +187,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement const locale = this.locale; const todayDate = this._TODAY_DATE; const showWeekNumber = this.showWeekNumber; + const startView = this.startView; const { dayFormat, @@ -196,7 +199,8 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement } = formatters; const selectedMonth = longMonthFormat(currentDate); const selectedYear = yearFormat(currentDate); - const multiCldr = toMultiCalendars({ + const isStartViewYearGrid = startView === 'yearGrid'; + const multiCldr = isStartViewYearGrid ? undefined : toMultiCalendars({ dayFormat, disabledDates: splitString(this.disabledDates, toResolvedDate), disabledDays: splitString(this.disabledDays, Number), @@ -227,24 +231,36 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement -
    - ${iconChevronLeft} - ${iconChevronRight} -
    + ${ + isStartViewYearGrid ? + nothing : + html` +
    + ${iconChevronLeft} + ${iconChevronRight} +
    + ` + } -
    ${ - this._startView === 'yearGrid' ? +
    ${ + isStartViewYearGrid ? html` ` : - html`${ + multiCldr ? html`${ repeat(multiCldr.calendars, ({ key }) => key, (calendar, idx) => { const isVisibleCalendar = idx === 1; const data: MonthCalendarData = { @@ -274,12 +290,14 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement return html` `; }) - }` + }` : nothing }
    `; } @@ -299,16 +317,31 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement this._currentDate = newCurrentDate; }; + #updateSelectedDate = ({ + detail: { value }, + }: CustomEvent): void => { + this.#updateSelectedAndCurrentDate(value); + + // TODO: To fire value update event + }; + #updateStartView = (): void => { - const isYearGrid = this._startView === 'yearGrid'; + const isYearGrid = this.startView === 'yearGrid'; + + this.startView = isYearGrid ? 'calendar' : 'yearGrid'; + }; - this._startView = isYearGrid ? 'calendar' : 'yearGrid'; + #updateYear = ({ + detail: { year }, + }: CustomEvent): void => { + this.#updateSelectedAndCurrentDate(this._selectedDate.setUTCFullYear(year)); + this.startView = 'calendar'; }; - #updateYear = (ev: CustomEvent): void => { - const { year } = ev.detail; + #updateSelectedAndCurrentDate = (maybeDate: Date | number | string): void => { + const newSelectedDate = new Date(maybeDate); - this._selectedDate = new Date(this._selectedDate.setUTCFullYear(year)); - this._startView = 'calendar'; + this._selectedDate = newSelectedDate; + this._currentDate = new Date(newSelectedDate); }; } diff --git a/src/helpers/to-closest-target.ts b/src/helpers/to-closest-target.ts new file mode 100644 index 000000000..d5bbda1e0 --- /dev/null +++ b/src/helpers/to-closest-target.ts @@ -0,0 +1,10 @@ +export function toClosestTarget( + event: TargetEvent, + selector: string +): Target | undefined { + const matchedTarget = ( + Array.from(event.composedPath()) as Target[] + ).find((element => element.nodeType === Node.ELEMENT_NODE && element.matches(selector))); + + return matchedTarget; +} diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index c822b67b8..38ffbc41c 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -7,7 +7,9 @@ import { classMap } from 'lit/directives/class-map.js'; import { resetShadowRoot } from '../ stylings.js'; import { keyCodesRecord } from '../constants.js'; import { computeNextFocusedDate } from '../helpers/compute-next-focused-date.js'; +import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { isInTargetMonth } from '../helpers/is-in-current-month.js'; +import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { monthCalendarStyling } from './stylings.js'; import type { MonthCalendarData, MonthCalendarProperties } from './typings.js'; @@ -88,9 +90,16 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties focusedDate; calendarContent = html` - -
    -
    ${ + + - ${ + ${ weekdays.map( weekday => html` ` ) } @@ -116,46 +125,49 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties ${ calendar.map((calendarRow) => { return html` - ${ + ${ calendarRow.map((calendarCol, i) => { const { disabled, fullDate, label, value } = calendarCol; /** Week label, if any */ if (!fullDate && value && showWeekNumber && i < 1) { return html``; } /** Empty day */ if (!value || !fullDate) { - return html``; + return html``; } const curTime = +new Date(fullDate); const isCurrentDate = +focusedDate === curTime; const shouldTab = showCaption && $newFocusedDate.getUTCDate() === Number(value); + /** NOTE: lit-plugin does not like this */ + const calendarDayClasses = classMap({ + 'calendar-day': true, + 'day--disabled': disabled, + 'day--today': +todayDate === curTime, + 'day--focused': !disabled && isCurrentDate, + }) as unknown as string; + return html` `; }) @@ -168,4 +180,52 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties return html`
    ${calendarContent}
    `; } + + #updateSelectedDate = (ev: MouseEvent | KeyboardEvent): void => { + /** Do nothing when keyup.key is neither Enter nor ' ' (or Spacebar on older browsers) */ + if ( + (ev as KeyboardEvent).type === 'keyup' && + !['Enter', ' ', 'Spacebar'].includes((ev as KeyboardEvent).key) + ) return; + + const selectedCalendarDay = toClosestTarget(ev, '.calendar-day'); + + /** NOTE: Required condition check else these will trigger unwanted re-rendering */ + if ( + selectedCalendarDay == null || + [ + 'day--empty', + 'day--disabled', + 'day--focused', + 'weekday-label', + ].some(className => selectedCalendarDay.classList.contains(className)) + ) return; + + const { fullDate } = selectedCalendarDay; + + dispatchCustomEvent(this, 'date-updated', { + isKeypress: false, + value: new Date(fullDate), + }); + + return; + }; +} + +declare global { + // #region HTML element type extensions + // interface HTMLButtonElement { + // year: number; + // } + + // interface HTMLElement { + // part: HTMLElementPart; + // } + + interface HTMLTableCellElement { + day: string; + fullDate: Date; + } + // #endregion HTML element type extensions + } diff --git a/src/month-calendar/stylings.ts b/src/month-calendar/stylings.ts index 0739b170f..a05ac1445 100644 --- a/src/month-calendar/stylings.ts +++ b/src/month-calendar/stylings.ts @@ -1,4 +1,89 @@ import { css } from 'lit'; export const monthCalendarStyling = css` +.calendar-table, +.calendar-day { + text-align: center; +} + +.calendar-table { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + + border-collapse: collapse; + border-spacing: 0; +} + +.calendar-day, +.calendar-day-value, +.weekday-value { + position: relative; + font-size: 14px; +} + +th, +td { + padding: 0; +} + +.weekday-value { + padding: 0 0 9px; + color: #8c8c8c; +} + +.calendar-day::after, +.calendar-day-value { + top: calc((32px - 28px) / 2); + right: 0; + bottom: 0; + left: calc((32px - 28px) / 2); + width: 28px; + height: 28px; +} + +.calendar-day { + width: 32px; + height: 0; + padding-top: 32px; + outline: none; +} +.calendar-day::after { + content: ''; + display: block; + content: ''; + position: absolute; + border-radius: 50%; + opacity: 0; + pointer-events: none; + will-change: opacity; +} +.calendar-day[aria-selected="true"] { + color: #fff; +} +.calendar-day[aria-selected="true"]::after { + background-color: #1d1d1d; + opacity: 1; +} +.calendar-day:hover::after, +.calendar-day:focus::after { + outline: 1px solid #1d1d1d; + opacity: 1; +} +.calendar-day[aria-disabled="true"], +.calendar-day.day--empty { + background-color: none; + outline: none; + opacity: 0; +} + +.calendar-day-value { + display: flex; + align-items: center; + justify-content: center; + + position: absolute; + color: currentColor; + z-index: 1; +} `; diff --git a/src/stylings.ts b/src/stylings.ts index f384c4048..ae1f0a9d3 100644 --- a/src/stylings.ts +++ b/src/stylings.ts @@ -1,12 +1,41 @@ import { css } from 'lit'; export const datePickerStyling = css` +:host { + --date-picker-header-base-height: 52px; + --date-picker-year-grid-base-height: calc(4px + (32px * 7)); + --date-picker-base-width: calc((16px * 2) + (32px * 7)); + --date-picker-base-height: calc(32px + 36px + 12px + (32px * 6) + 8px); + + --date-picker-with-week-number-width: calc(var(--date-picker-base-width) + 32px); + --date-picker-in-year-grid-height: calc(var(--date-picker-base-height) + var(--date-picker-year-grid-base-height)); + + --date-picker-width: var(--date-picker-base-width); + --date-picker-height: var(--date-picker-base-height); + + min-width: var(--date-picker-width); + max-width: var(--date-picker-width); + min-height: var(--date-picker-height); + max-height: var(--date-picker-height); + width: 100%; + height: 100%; +} +:host([startview="calendar"][show-week-number]) { + --date-picker-width: var(--date-picker-with-week-number-width); +} +:host(startview="yearGrid") { + --date-picker-height: var(----date-picker-in-year-grid-height); +} + .header { display: grid; grid-auto-flow: column; justify-content: space-between; - margin: 0 8px 0 24px; + max-height: var(--date-picker-base-height); + height: 100%; + margin: 4px 0 0; + padding: 0 0 0 24px; } /** #region header */ @@ -22,10 +51,18 @@ export const datePickerStyling = css` .month-pagination { display: flex; + margin: 0 -4px 0 0; } +/** #endregion header */ -[data-navigation="next"] { - margin: 0 0 0 24px; +.year-grid { + max-height: var(--date-picker-year-grid-base-height); + height: 100%; + padding: 4px 20px 8px 12px; + overflow: auto; +} + +.calendar { + padding: 0 16px 8px; } -/** #endregion header */ `; diff --git a/src/typings.ts b/src/typings.ts index 74b8b44f9..700ceb339 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -25,9 +25,13 @@ export type DatePickerChangedProperties = ChangedProperties; +export interface DateUpdatedEvent { + isKeypress: boolean; + value: Date; +} + export interface FirstUpdatedEvent { focusableElements: HTMLElement[]; value: DatePickerMixinProperties['value']; @@ -49,12 +53,18 @@ export interface Formatters extends Pick { export interface SupportedCustomEvent { ['animation-finished']: null; ['changed']: ChangedEvent; + ['date-updated']: DateUpdatedEvent; ['first-updated']: FirstUpdatedEvent; + ['value-updated']: ValueUpdatedEvent; ['year-updated']: YearUpdatedEvent; } export type SupportedKeyCode = typeof keyCodesRecord[keyof typeof keyCodesRecord]; +export interface ValueUpdatedEvent extends Pick { + value: string; +} + export interface YearUpdatedEvent { year: number; } diff --git a/src/year-grid-button/stylings.ts b/src/year-grid-button/stylings.ts index 07197376b..832cd02ab 100644 --- a/src/year-grid-button/stylings.ts +++ b/src/year-grid-button/stylings.ts @@ -9,6 +9,7 @@ export const yearGridButtonStyling = css` width: 56px; height: 32px; + pointer-events: none; } .mdc-button { @@ -17,6 +18,9 @@ export const yearGridButtonStyling = css` width: 52px; height: 28px; padding: 0; + font: inherit; + font-size: 14px; border-radius: 52px; + pointer-events: auto; } `; diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index 831a3847b..36ed27be3 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -9,6 +9,7 @@ import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; import { resetShadowRoot } from '../ stylings.js'; import { MAX_DATE } from '../constants.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; +import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; import { APP_YEAR_GRID_BUTTON_NAME } from '../year-grid-button/constants.js'; @@ -73,17 +74,20 @@ export class YearGrid extends LitElement implements YearGridProperties { `; } - #updateYear = (ev: MouseEvent): void => { - const selectedYearGridButton = Array.from( - ev.composedPath() as HTMLElement[] - ).find( - element => - element.localName === APP_YEAR_GRID_BUTTON_NAME && - element.hasAttribute('data-year') - ); + #updateYear = (ev: MouseEvent | KeyboardEvent): void => { + /** Do nothing when keyup.key is neither Enter nor ' ' (or Spacebar on older browsers) */ + if ( + (ev as KeyboardEvent).type === 'keyup' && + !['Enter', ' ', 'Spacebar'].includes((ev as KeyboardEvent).key) + ) return; + + const selectedYearGridButton = toClosestTarget(ev, `${APP_YEAR_GRID_BUTTON_NAME}[data-year]`); + + /** Do nothing when not tapping on the year button */ + if (selectedYearGridButton == null) return; + const year = Number( - selectedYearGridButton?.getAttribute('data-year') ?? - this.data.date.getUTCFullYear() + selectedYearGridButton.getAttribute('data-year') ); dispatchCustomEvent(this, 'year-updated', { year }); From e05f26e414981adc297876adf9f91d450cd1d88f Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sat, 22 May 2021 17:31:07 +0800 Subject: [PATCH 021/276] chore: update dependencies --- package-lock.json | 499 ++++++++++++++-------------------------------- package.json | 4 +- 2 files changed, 156 insertions(+), 347 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1757153e..3f850b890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,8 +20,8 @@ "@commitlint/config-conventional": "^12.1.4", "@reallyland/tsconfig": "^3.0.2", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^4.23.0", - "@typescript-eslint/parser": "^4.23.0", + "@typescript-eslint/eslint-plugin": "^4.24.0", + "@typescript-eslint/parser": "^4.24.0", "eslint-plugin-lit": "^1.4.1", "eslint-plugin-lit-a11y": "^1.0.1", "eslint-plugin-promise": "^5.1.0", @@ -39,7 +39,6 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "peer": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -48,15 +47,13 @@ "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@babel/highlight": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", @@ -68,7 +65,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -81,7 +77,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -96,7 +91,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -105,15 +99,13 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true + "dev": true }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -123,7 +115,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -167,7 +158,6 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", "dev": true, - "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -188,7 +178,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, - "peer": true, "dependencies": { "type-fest": "^0.8.1" }, @@ -204,7 +193,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -428,13 +416,13 @@ "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz", - "integrity": "sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz", + "integrity": "sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.23.0", - "@typescript-eslint/scope-manager": "4.23.0", + "@typescript-eslint/experimental-utils": "4.24.0", + "@typescript-eslint/scope-manager": "4.24.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -460,15 +448,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz", - "integrity": "sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz", + "integrity": "sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", + "@typescript-eslint/scope-manager": "4.24.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/typescript-estree": "4.24.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, @@ -484,14 +472,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.23.0.tgz", - "integrity": "sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.24.0.tgz", + "integrity": "sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", + "@typescript-eslint/scope-manager": "4.24.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/typescript-estree": "4.24.0", "debug": "^4.1.1" }, "engines": { @@ -511,13 +499,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz", - "integrity": "sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz", + "integrity": "sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0" + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/visitor-keys": "4.24.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -528,9 +516,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.23.0.tgz", - "integrity": "sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.24.0.tgz", + "integrity": "sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -541,13 +529,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz", - "integrity": "sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz", + "integrity": "sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/visitor-keys": "4.24.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -568,12 +556,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz", - "integrity": "sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz", + "integrity": "sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/types": "4.24.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -589,7 +577,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -602,7 +589,6 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -612,7 +598,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -629,7 +614,6 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -639,7 +623,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -649,7 +632,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -665,7 +647,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "peer": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -703,7 +684,6 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -727,15 +707,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -758,7 +736,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -768,7 +745,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -794,7 +770,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -806,8 +781,7 @@ "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, - "peer": true + "dev": true }, "node_modules/comment-parser": { "version": "1.1.5", @@ -832,8 +806,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "peer": true + "dev": true }, "node_modules/conventional-changelog-conventionalcommits": { "version": "4.6.0", @@ -865,7 +838,6 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -896,8 +868,7 @@ "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, - "peer": true + "dev": true }, "node_modules/dir-glob": { "version": "3.0.1", @@ -916,7 +887,6 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -964,7 +934,6 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "peer": true, "dependencies": { "ansi-colors": "^4.1.1" }, @@ -977,7 +946,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "peer": true, "engines": { "node": ">=0.8.0" } @@ -987,7 +955,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", "dev": true, - "peer": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.1", @@ -1193,7 +1160,6 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "peer": true, "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -1208,7 +1174,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -1218,7 +1183,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1232,7 +1196,6 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -1245,7 +1208,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "peer": true, "engines": { "node": ">=4.0" } @@ -1285,7 +1247,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1294,8 +1255,7 @@ "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, - "peer": true + "dev": true }, "node_modules/fast-glob": { "version": "3.2.5", @@ -1318,15 +1278,13 @@ "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, - "peer": true + "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, - "peer": true + "dev": true }, "node_modules/fastq": { "version": "1.11.0", @@ -1342,7 +1300,6 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -1367,7 +1324,6 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "peer": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -1380,15 +1336,13 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -1401,7 +1355,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1434,7 +1387,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", "dev": true, - "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1479,7 +1431,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1489,7 +1440,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "peer": true, "engines": { "node": ">= 4" } @@ -1499,7 +1449,6 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1516,7 +1465,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "peer": true, "engines": { "node": ">=0.8.19" } @@ -1526,7 +1474,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1536,8 +1483,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/intl-list-format": { "version": "1.0.3", @@ -1562,7 +1508,6 @@ "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, - "peer": true, "engines": { "node": ">=8" } @@ -1601,22 +1546,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true, - "peer": true + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1641,15 +1583,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true, - "peer": true + "dev": true }, "node_modules/kleur": { "version": "4.1.4", @@ -1665,7 +1605,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1738,15 +1677,13 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true, - "peer": true + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true, - "peer": true + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", @@ -1787,7 +1724,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1805,8 +1741,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true, - "peer": true + "dev": true }, "node_modules/nodemod": { "version": "2.8.3", @@ -1846,7 +1781,6 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "peer": true, "dependencies": { "wrappy": "1" } @@ -1856,7 +1790,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -1874,7 +1807,6 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -1901,7 +1833,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1911,7 +1842,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -1926,9 +1856,9 @@ } }, "node_modules/picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "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" @@ -1942,7 +1872,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -1952,7 +1881,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "peer": true, "engines": { "node": ">=0.4.0" } @@ -1962,7 +1890,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -2039,7 +1966,6 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2058,7 +1984,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -2078,7 +2003,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -2132,7 +2056,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2145,7 +2068,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -2164,7 +2086,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2181,15 +2102,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true, - "peer": true + "dev": true }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2203,15 +2122,13 @@ "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, - "peer": true + "dev": true }, "node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "peer": true, "dependencies": { "ansi-regex": "^5.0.0" }, @@ -2224,7 +2141,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "peer": true, "engines": { "node": ">=8" }, @@ -2237,7 +2153,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2250,7 +2165,6 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", "dev": true, - "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", @@ -2268,7 +2182,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", "dev": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2284,15 +2197,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true + "dev": true }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true, - "peer": true + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -2337,7 +2248,6 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2350,7 +2260,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "peer": true, "engines": { "node": ">=10" }, @@ -2376,7 +2285,6 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -2385,15 +2293,13 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2409,7 +2315,6 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2418,8 +2323,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "peer": true + "dev": true }, "node_modules/yallist": { "version": "4.0.0", @@ -2443,7 +2347,6 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "peer": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -2452,15 +2355,13 @@ "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true, - "peer": true + "dev": true }, "@babel/highlight": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, - "peer": true, "requires": { "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", @@ -2472,7 +2373,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "peer": true, "requires": { "color-convert": "^1.9.0" } @@ -2482,7 +2382,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2494,7 +2393,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "peer": true, "requires": { "color-name": "1.1.3" } @@ -2503,22 +2401,19 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true, - "peer": true + "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "peer": true, "requires": { "has-flag": "^3.0.0" } @@ -2558,7 +2453,6 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", "dev": true, - "peer": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -2576,7 +2470,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, - "peer": true, "requires": { "type-fest": "^0.8.1" } @@ -2585,8 +2478,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "peer": true + "dev": true } } }, @@ -2792,13 +2684,13 @@ "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz", - "integrity": "sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz", + "integrity": "sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.23.0", - "@typescript-eslint/scope-manager": "4.23.0", + "@typescript-eslint/experimental-utils": "4.24.0", + "@typescript-eslint/scope-manager": "4.24.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -2808,55 +2700,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz", - "integrity": "sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz", + "integrity": "sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", + "@typescript-eslint/scope-manager": "4.24.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/typescript-estree": "4.24.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.23.0.tgz", - "integrity": "sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.24.0.tgz", + "integrity": "sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.23.0", - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/typescript-estree": "4.23.0", + "@typescript-eslint/scope-manager": "4.24.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/typescript-estree": "4.24.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz", - "integrity": "sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz", + "integrity": "sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0" + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/visitor-keys": "4.24.0" } }, "@typescript-eslint/types": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.23.0.tgz", - "integrity": "sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.24.0.tgz", + "integrity": "sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz", - "integrity": "sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz", + "integrity": "sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.23.0", - "@typescript-eslint/visitor-keys": "4.23.0", + "@typescript-eslint/types": "4.24.0", + "@typescript-eslint/visitor-keys": "4.24.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -2865,12 +2757,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz", - "integrity": "sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz", + "integrity": "sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.23.0", + "@typescript-eslint/types": "4.24.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -2878,15 +2770,13 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "peer": true + "dev": true }, "acorn-jsx": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "peer": true, "requires": {} }, "ajv": { @@ -2894,7 +2784,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2906,22 +2795,19 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true + "dev": true }, "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, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -2931,7 +2817,6 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "peer": true, "requires": { "sprintf-js": "~1.0.2" } @@ -2962,8 +2847,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "peer": true + "dev": true }, "axe-core": { "version": "4.2.0", @@ -2981,15 +2865,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3008,15 +2890,13 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "peer": true + "dev": true }, "chalk": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3033,7 +2913,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } @@ -3042,8 +2921,7 @@ "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, - "peer": true + "dev": true }, "comment-parser": { "version": "1.1.5", @@ -3065,8 +2943,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "peer": true + "dev": true }, "conventional-changelog-conventionalcommits": { "version": "4.6.0", @@ -3090,7 +2967,6 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "peer": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3110,8 +2986,7 @@ "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, - "peer": true + "dev": true }, "dir-glob": { "version": "3.0.1", @@ -3127,7 +3002,6 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "peer": true, "requires": { "esutils": "^2.0.2" } @@ -3171,7 +3045,6 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "peer": true, "requires": { "ansi-colors": "^4.1.1" } @@ -3180,15 +3053,13 @@ "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, - "peer": true + "dev": true }, "eslint": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", "dev": true, - "peer": true, "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.1", @@ -3251,6 +3122,7 @@ "axobject-query": "^2.2.0", "dom5": "^3.0.1", "emoji-regex": "^9.0.0", + "eslint": "^7.6.0", "eslint-rule-extender": "0.0.1", "intl-list-format": "^1.0.3", "parse5": "^5.1.1", @@ -3344,7 +3216,6 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "peer": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -3355,8 +3226,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true + "dev": true } } }, @@ -3364,15 +3234,13 @@ "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, - "peer": true + "dev": true }, "esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "peer": true, "requires": { "estraverse": "^5.1.0" }, @@ -3381,8 +3249,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "peer": true + "dev": true } } }, @@ -3413,15 +3280,13 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true + "dev": true }, "fast-glob": { "version": "3.2.5", @@ -3441,15 +3306,13 @@ "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, - "peer": true + "dev": true }, "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, - "peer": true + "dev": true }, "fastq": { "version": "1.11.0", @@ -3465,7 +3328,6 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "peer": true, "requires": { "flat-cache": "^3.0.4" } @@ -3484,7 +3346,6 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "peer": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -3494,15 +3355,13 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true, - "peer": true + "dev": true }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "peer": true + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -3515,7 +3374,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "peer": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3539,7 +3397,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", "dev": true, - "peer": true, "requires": { "type-fest": "^0.20.2" } @@ -3570,22 +3427,19 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true + "dev": true }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "peer": true + "dev": true }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "peer": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3595,15 +3449,13 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "peer": true + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "peer": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3613,8 +3465,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "peer": true + "dev": true }, "intl-list-format": { "version": "1.0.3", @@ -3632,8 +3483,7 @@ "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, - "peer": true + "dev": true }, "is-glob": { "version": "4.0.1", @@ -3660,22 +3510,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true, - "peer": true + "dev": true }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true + "dev": true }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "peer": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3691,15 +3538,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true, - "peer": true + "dev": true }, "kleur": { "version": "4.1.4", @@ -3712,7 +3557,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "peer": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -3779,15 +3623,13 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true, - "peer": true + "dev": true }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true, - "peer": true + "dev": true }, "lru-cache": { "version": "6.0.0", @@ -3819,7 +3661,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "peer": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3834,8 +3675,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true, - "peer": true + "dev": true }, "nodemod": { "version": "2.8.3", @@ -3867,7 +3707,6 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "peer": true, "requires": { "wrappy": "1" } @@ -3877,7 +3716,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "peer": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -3892,7 +3730,6 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "peer": true, "requires": { "callsites": "^3.0.0" } @@ -3915,15 +3752,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "peer": true + "dev": true }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "peer": true + "dev": true }, "path-type": { "version": "4.0.0", @@ -3932,31 +3767,28 @@ "dev": true }, "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "peer": true + "dev": true }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "peer": true + "dev": true }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "peer": true + "dev": true }, "q": { "version": "1.5.1", @@ -4005,8 +3837,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true + "dev": true }, "requireindex": { "version": "1.2.0", @@ -4018,8 +3849,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "peer": true + "dev": true }, "reusify": { "version": "1.0.4", @@ -4032,7 +3862,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "peer": true, "requires": { "glob": "^7.1.3" } @@ -4060,7 +3889,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "peer": true, "requires": { "shebang-regex": "^3.0.0" } @@ -4069,8 +3897,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "peer": true + "dev": true }, "slash": { "version": "3.0.0", @@ -4083,7 +3910,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -4094,15 +3920,13 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true, - "peer": true + "dev": true }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "peer": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4113,8 +3937,7 @@ "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, - "peer": true + "dev": true } } }, @@ -4123,7 +3946,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "peer": true, "requires": { "ansi-regex": "^5.0.0" } @@ -4132,15 +3954,13 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -4150,7 +3970,6 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.7.0.tgz", "integrity": "sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw==", "dev": true, - "peer": true, "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", @@ -4165,7 +3984,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz", "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==", "dev": true, - "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -4177,8 +3995,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true + "dev": true } } }, @@ -4186,8 +4003,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true, - "peer": true + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -4225,7 +4041,6 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "peer": true, "requires": { "prelude-ls": "^1.2.1" } @@ -4234,8 +4049,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "peer": true + "dev": true }, "typescript": { "version": "4.2.4", @@ -4248,7 +4062,6 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "peer": true, "requires": { "punycode": "^2.1.0" } @@ -4257,15 +4070,13 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true, - "peer": true + "dev": true }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "peer": true, "requires": { "isexe": "^2.0.0" } @@ -4274,15 +4085,13 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "peer": true + "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "peer": true + "dev": true }, "yallist": { "version": "4.0.0", diff --git a/package.json b/package.json index bac7b4150..37774814d 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@commitlint/config-conventional": "^12.1.4", "@reallyland/tsconfig": "^3.0.2", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^4.23.0", - "@typescript-eslint/parser": "^4.23.0", + "@typescript-eslint/eslint-plugin": "^4.24.0", + "@typescript-eslint/parser": "^4.24.0", "eslint-plugin-lit": "^1.4.1", "eslint-plugin-lit-a11y": "^1.0.1", "eslint-plugin-promise": "^5.1.0", From 305168bbac4b37463fe2080df44816e2e773788f Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sat, 22 May 2021 17:47:19 +0800 Subject: [PATCH 022/276] fix: fix lint command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 37774814d..b4acadb7b 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "build": "tsc -p tsconfig.prod.json", "check": "package-check", "clean": "shx rm -rf dist/ src/tests/snapshots/*.png logs/ .*cache *.log", - "lint": "eslint src/**/*.ts* --ext .js,.jsx,.ts,.tsx", + "lint": "eslint src --ext .js,.ts", "lint:build": "npm run lint -- --config .build.eslintrc.json", "prepublishOnly": "npm run lint && npm run build:prod", "serve": "npm x --no @web/dev-server@latest -- wds --node-resolve -dw -p 4343 -a index.html", From e6a9dbaaa72c97bd102f6e0a006cee6973e1b305 Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sun, 23 May 2021 17:17:37 +0800 Subject: [PATCH 023/276] style: fix stylings and focus selected year in year grid --- src/date-picker.ts | 25 +++++++++++++------------ src/month-calendar/stylings.ts | 11 +++++++++-- src/stylings.ts | 10 ++++++++-- src/year-grid-button/stylings.ts | 4 ++++ src/year-grid/year-grid.ts | 12 ++++++++++++ 5 files changed, 46 insertions(+), 16 deletions(-) diff --git a/src/date-picker.ts b/src/date-picker.ts index b510e84e5..570d3f3c4 100644 --- a/src/date-picker.ts +++ b/src/date-picker.ts @@ -92,8 +92,9 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement if (changedProperties.has('startView')) { const oldStartView = changedProperties.get('startView') as CalendarView; + const newStartView = this.startView; - if (!calendarViews.includes(this.startView)) { + if (!calendarViews.includes(newStartView)) { this.startView = this.startView = oldStartView; } } @@ -171,11 +172,12 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement protected updated(changedProperties: DatePickerChangedProperties): void { super.updated(changedProperties); - if (this.startView === 'calendar') { - // TODO: Do stuff for calendar - } else if (this.startView === 'yearGrid') { - // TODO: Do stuff for year grid - } + // FIXME: focus element based on start view + // if (this.startView === 'calendar') { + // // TODO: Do stuff for calendar + // } else if (this.startView === 'yearGrid') { + // // TODO: Do stuff for year grid + // } } protected render(): TemplateResult { @@ -223,12 +225,11 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement
    ${selectedMonth}
    ${selectedYear}
    -
    - ${iconArrowDropdown} -
    + ${iconArrowDropdown} ${ diff --git a/src/month-calendar/stylings.ts b/src/month-calendar/stylings.ts index a05ac1445..f79117c67 100644 --- a/src/month-calendar/stylings.ts +++ b/src/month-calendar/stylings.ts @@ -19,7 +19,7 @@ export const monthCalendarStyling = css` .calendar-day-value, .weekday-value { position: relative; - font-size: 14px; + font-size: 13px; } th, @@ -27,9 +27,16 @@ td { padding: 0; } +.weekday { + max-height: 28px; + height: 28px; +} + .weekday-value { - padding: 0 0 9px; + max-height: 16px; + height: 16px; color: #8c8c8c; + line-height: 1; } .calendar-day::after, diff --git a/src/stylings.ts b/src/stylings.ts index ae1f0a9d3..9b76d6eda 100644 --- a/src/stylings.ts +++ b/src/stylings.ts @@ -13,6 +13,8 @@ export const datePickerStyling = css` --date-picker-width: var(--date-picker-base-width); --date-picker-height: var(--date-picker-base-height); + display: flex; + flex-direction: column; min-width: var(--date-picker-width); max-width: var(--date-picker-width); min-height: var(--date-picker-height); @@ -42,13 +44,17 @@ export const datePickerStyling = css` .month-and-year-selector { display: flex; align-items: center; + font-size: 13px; } -.selected-year, -.month-dropdown { +.selected-year { margin: 0 0 0 4px; } +.month-dropdown { + margin: 0 0 0 -8px; +} + .month-pagination { display: flex; margin: 0 -4px 0 0; diff --git a/src/year-grid-button/stylings.ts b/src/year-grid-button/stylings.ts index 832cd02ab..d1853d06c 100644 --- a/src/year-grid-button/stylings.ts +++ b/src/year-grid-button/stylings.ts @@ -3,6 +3,8 @@ import { css } from '@lit/reactive-element'; export const yearGridButtonStyling = css` :host { --mdc-button-horizontal-padding: 0; + --mdc-theme-primary: var(--year-grid-button-color, #000); + --mdc-theme-on-primary: var(--year-grid-button-text-color); align-items: center; justify-content: center; @@ -18,6 +20,8 @@ export const yearGridButtonStyling = css` width: 52px; height: 28px; padding: 0; + background-color: inherit; + color: inherit; font: inherit; font-size: 14px; border-radius: 52px; diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index 36ed27be3..ae21f1597 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -1,6 +1,7 @@ import '../year-grid-button/app-year-grid-button.js'; import { property } from '@lit/reactive-element/decorators/property.js'; +import { queryAsync } from '@lit/reactive-element/decorators/query-async.js'; import type { TemplateResult } from 'lit'; import { nothing } from 'lit'; import { html, LitElement } from 'lit'; @@ -20,6 +21,9 @@ export class YearGrid extends LitElement implements YearGridProperties { @property({ attribute: false }) public data: YearGridData; + @queryAsync('app-year-grid-button[data-year][unelevated]') + public selectedYearGridButton!: Promise; + public static styles = [ resetShadowRoot, yearGridStyling, @@ -42,6 +46,14 @@ export class YearGrid extends LitElement implements YearGridProperties { return this.data.formatters != null; } + protected async updated(): Promise { + const selectedYearGridButton = await this.selectedYearGridButton; + + if (selectedYearGridButton) { + selectedYearGridButton.scrollIntoView(); + } + } + protected render(): TemplateResult | typeof nothing { const { date, From 08fc85c6f071f7f8063919ed1ca3ffb28601ceff Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Sun, 23 May 2021 20:38:26 +0800 Subject: [PATCH 024/276] refactor: drop focused date in favor of selected date and minor update --- src/constants.ts | 12 +- src/date-picker.ts | 5 +- src/helpers/compute-next-focused-date.ts | 38 +++--- src/helpers/is-valid-date.ts | 2 +- src/helpers/to-next-selectable-date.ts | 52 ++++---- src/helpers/typings.ts | 18 +-- src/month-calendar/month-calendar.ts | 148 +++++++++++++++-------- src/month-calendar/stylings.ts | 16 ++- src/month-calendar/typings.ts | 8 +- 9 files changed, 184 insertions(+), 115 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index c18f1b8a1..211b4fa91 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -49,14 +49,18 @@ export const navigationKeyCodes = { } as const; export const navigationKeyCodeSet = { - whenFocusedDateIsMinDatePrevious: new Set([keyCodesRecord.ARROW_LEFT, ...navigationKeyCodes.previous]), - whenFocusedDateIsMaxDateNext: new Set([keyCodesRecord.ARROW_RIGHT, ...navigationKeyCodes.next]), - dayPrevious: new Set([keyCodesRecord.ARROW_LEFT, ...navigationKeyCodes.previous]), - dayNext: new Set([keyCodesRecord.ARROW_RIGHT, ...navigationKeyCodes.next]), all: new Set([ ...navigationKeyCodes.next, ...navigationKeyCodes.previous, keyCodesRecord.ARROW_LEFT, keyCodesRecord.ARROW_RIGHT, ]), + dayNext: new Set([keyCodesRecord.ARROW_RIGHT, ...navigationKeyCodes.next]), + dayPrevious: new Set([keyCodesRecord.ARROW_LEFT, ...navigationKeyCodes.previous]), } as const; + +export const calendarKeyCodeSet = new Set([ + ...navigationKeyCodeSet.all, + keyCodesRecord.ENTER, + keyCodesRecord.SPACE, +]); diff --git a/src/date-picker.ts b/src/date-picker.ts index 570d3f3c4..affc45333 100644 --- a/src/date-picker.ts +++ b/src/date-picker.ts @@ -272,8 +272,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement > ` : multiCldr ? html`${ - repeat(multiCldr.calendars, ({ key }) => key, (calendar, idx) => { - const isVisibleCalendar = idx === 1; + repeat(multiCldr.calendars, ({ key }) => key, (calendar) => { const data: MonthCalendarData = { calendar: calendar.calendar, date: selectedDate, @@ -282,7 +281,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement currentDate, max, min, - showCaption: isVisibleCalendar, showWeekNumber, todayDate, weekdays: multiCldr.weekdays, @@ -293,7 +291,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement `; diff --git a/src/helpers/compute-next-focused-date.ts b/src/helpers/compute-next-focused-date.ts index 32dbcec30..575243fe2 100644 --- a/src/helpers/compute-next-focused-date.ts +++ b/src/helpers/compute-next-focused-date.ts @@ -3,7 +3,7 @@ import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; import { keyCodesRecord, navigationKeyCodeSet } from '../constants.js'; import type { SupportedKeyCode } from '../typings.js'; import { toNextSelectableDate } from './to-next-selectable-date.js'; -import type { ComputeNextFocusedDateInit } from './typings.js'; +import type { ComputeNextSelectedDateInit as ComputeNextSelectedDateInit } from './typings.js'; const { ARROW_DOWN, @@ -16,16 +16,16 @@ const { PAGE_UP, } = keyCodesRecord; -export function computeNextFocusedDate({ +export function computeNextSelectedDate({ + currentDate, + date, + disabledDatesSet, + disabledDaysSet, hasAltKey, keyCode, - focusedDate, - selectedDate, - disabledDaysSet, - disabledDatesSet, - minTime, maxTime, -}: ComputeNextFocusedDateInit): Date { + minTime, +}: ComputeNextSelectedDateInit): Date { /** * To update focused date, * @@ -49,13 +49,13 @@ export function computeNextFocusedDate({ * c. If new focused date is either `min` or `max`, reverse order `d += 1` -> `d -= 1` and * continue the loop until new selectable focused date. */ - const oldFy = focusedDate.getUTCFullYear(); - const oldM = focusedDate.getUTCMonth(); - const oldD = focusedDate.getUTCDate(); - const focusedDateTime = +focusedDate; + const oldFy = currentDate.getUTCFullYear(); + const oldM = currentDate.getUTCMonth(); + const oldD = currentDate.getUTCDate(); + const focusedDateTime = +currentDate; - const sdFy = selectedDate.getUTCFullYear(); - const sdM = selectedDate.getUTCMonth(); + const sdFy = date.getUTCFullYear(); + const sdM = date.getUTCMonth(); const notInCurrentMonth = sdM !== oldM || sdFy !== oldFy; @@ -81,8 +81,8 @@ export function computeNextFocusedDate({ } switch (shouldRunSwitch) { - case focusedDateTime === minTime && (navigationKeyCodeSet.whenFocusedDateIsMinDatePrevious as Set).has(keyCode): - case focusedDateTime === maxTime && (navigationKeyCodeSet.whenFocusedDateIsMaxDateNext as Set).has(keyCode): + case focusedDateTime === minTime && (navigationKeyCodeSet.dayPrevious as Set).has(keyCode): + case focusedDateTime === maxTime && (navigationKeyCodeSet.dayNext as Set).has(keyCode): break; case keyCode === ARROW_UP: { d -= 7; @@ -135,14 +135,14 @@ export function computeNextFocusedDate({ } /** Get next selectable focused date */ - const newFocusedDate = toNextSelectableDate({ + const nextSelectableDate = toNextSelectableDate({ + date: toUTCDate(fy, m, d), disabledDatesSet, disabledDaysSet, - focusedDate: toUTCDate(fy, m, d), keyCode, maxTime, minTime, }); - return newFocusedDate; + return nextSelectableDate; } diff --git a/src/helpers/is-valid-date.ts b/src/helpers/is-valid-date.ts index fc125b96c..76ab9eb98 100644 --- a/src/helpers/is-valid-date.ts +++ b/src/helpers/is-valid-date.ts @@ -1,3 +1,3 @@ export function isValidDate(date: Date | null | number | string, dateDate: Date): boolean { return !(date == null || !(dateDate instanceof Date) || isNaN(+dateDate)); -} \ No newline at end of file +} diff --git a/src/helpers/to-next-selectable-date.ts b/src/helpers/to-next-selectable-date.ts index 79c8f4565..a353ae0fa 100644 --- a/src/helpers/to-next-selectable-date.ts +++ b/src/helpers/to-next-selectable-date.ts @@ -6,68 +6,68 @@ import { toDateRange } from './to-date-range.js'; import type { ToNextSelectableDateInit } from './typings.js'; export function toNextSelectableDate({ - keyCode, - disabledDaysSet, + date, disabledDatesSet, - focusedDate, + disabledDaysSet, + keyCode, maxTime, minTime, }: ToNextSelectableDateInit): Date { - const focusedDateTime = +focusedDate; + const focusedDateTime = +date; let isLessThanMinTime = focusedDateTime < minTime; let isMoreThanMaxTime = focusedDateTime > maxTime; // Bail when there is no valid date range (< 1 day). - if (toDateRange(minTime, maxTime) < 864e5) return focusedDate; + if (toDateRange(minTime, maxTime) < 864e5) return date; let isDisabledDay = isLessThanMinTime || isMoreThanMaxTime || - disabledDaysSet.has((focusedDate as Date).getUTCDay()) || + disabledDaysSet.has((date as Date).getUTCDay()) || disabledDatesSet.has(focusedDateTime); - if (!isDisabledDay) return focusedDate; + if (!isDisabledDay) return date; - let selectableFocusedDateTime = 0; - let selectableFocusedDate = isLessThanMinTime === isMoreThanMaxTime ? - focusedDate : new Date(isLessThanMinTime ? minTime - 864e5 : 864e5 + maxTime); + let selectableDateTime = 0; + let selectableDate = isLessThanMinTime === isMoreThanMaxTime ? + date : new Date(isLessThanMinTime ? minTime - 864e5 : 864e5 + maxTime); - const fy = selectableFocusedDate.getUTCFullYear(); - const m = selectableFocusedDate.getUTCMonth(); - let d = selectableFocusedDate.getUTCDate(); + const fy = selectableDate.getUTCFullYear(); + const m = selectableDate.getUTCMonth(); + let d = selectableDate.getUTCDate(); while (isDisabledDay) { if (isLessThanMinTime || (!isMoreThanMaxTime && (navigationKeyCodeSet.dayNext as Set).has(keyCode))) d += 1; if (isMoreThanMaxTime || (!isLessThanMinTime && (navigationKeyCodeSet.dayPrevious as Set).has(keyCode))) d -= 1; - selectableFocusedDate = toUTCDate(fy, m, d); - selectableFocusedDateTime = +selectableFocusedDate; + selectableDate = toUTCDate(fy, m, d); + selectableDateTime = +selectableDate; if (!isLessThanMinTime) { - isLessThanMinTime = selectableFocusedDateTime < minTime; + isLessThanMinTime = selectableDateTime < minTime; if (isLessThanMinTime) { - selectableFocusedDate = new Date(minTime); - selectableFocusedDateTime = +selectableFocusedDate; - d = selectableFocusedDate.getUTCDate(); + selectableDate = new Date(minTime); + selectableDateTime = +selectableDate; + d = selectableDate.getUTCDate(); } } if (!isMoreThanMaxTime) { - isMoreThanMaxTime = selectableFocusedDateTime > maxTime; + isMoreThanMaxTime = selectableDateTime > maxTime; if (isMoreThanMaxTime) { - selectableFocusedDate = new Date(maxTime); - selectableFocusedDateTime = +selectableFocusedDate; - d = selectableFocusedDate.getUTCDate(); + selectableDate = new Date(maxTime); + selectableDateTime = +selectableDate; + d = selectableDate.getUTCDate(); } } isDisabledDay = - disabledDaysSet.has(selectableFocusedDate.getUTCDay()) || - disabledDatesSet.has(selectableFocusedDateTime); + disabledDaysSet.has(selectableDate.getUTCDay()) || + disabledDatesSet.has(selectableDateTime); } - return selectableFocusedDate; + return selectableDate; } diff --git a/src/helpers/typings.ts b/src/helpers/typings.ts index 82372ffe1..91a4fba3f 100644 --- a/src/helpers/typings.ts +++ b/src/helpers/typings.ts @@ -6,15 +6,15 @@ import type { import type { DatePickerProperties, Formatters, SupportedKeyCode } from '../typings.js'; -export interface ComputeNextFocusedDateInit { +export interface ComputeNextSelectedDateInit { + currentDate: Date; + date: Date; + disabledDatesSet: Set; + disabledDaysSet: Set; hasAltKey: boolean; keyCode: SupportedKeyCode; - focusedDate: Date; - selectedDate: Date; - disabledDaysSet: Set; - disabledDatesSet: Set; - minTime: number; maxTime: number; + minTime: number; } export interface DateValidatorResult { @@ -41,10 +41,10 @@ Pick { } export interface ToNextSelectableDateInit { - keyCode: SupportedKeyCode; - disabledDaysSet: Set; + date: Date; disabledDatesSet: Set; - focusedDate: Date; + disabledDaysSet: Set; + keyCode: SupportedKeyCode; maxTime: number; minTime: number; } diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 38ffbc41c..1db0bf9a0 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -1,28 +1,38 @@ import { property } from '@lit/reactive-element/decorators/property.js'; +import { queryAsync } from '@lit/reactive-element/decorators/query-async.js'; import type { TemplateResult } from 'lit'; import { nothing } from 'lit'; import { html, LitElement } from 'lit'; import { classMap } from 'lit/directives/class-map.js'; import { resetShadowRoot } from '../ stylings.js'; -import { keyCodesRecord } from '../constants.js'; -import { computeNextFocusedDate } from '../helpers/compute-next-focused-date.js'; +import type { navigationKeyCodeSet } from '../constants.js'; +import { calendarKeyCodeSet, keyCodesRecord } from '../constants.js'; +import { computeNextSelectedDate } from '../helpers/compute-next-focused-date.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { isInTargetMonth } from '../helpers/is-in-current-month.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { monthCalendarStyling } from './stylings.js'; -import type { MonthCalendarData, MonthCalendarProperties } from './typings.js'; +import type { MonthCalendarChangedProperties, MonthCalendarData, MonthCalendarProperties } from './typings.js'; export class MonthCalendar extends LitElement implements MonthCalendarProperties { @property({ attribute: false }) public data: MonthCalendarData; + public static shadowRootOptions = { + ...LitElement.shadowRootOptions, + delegatesFocus: true, + }; + public static styles = [ resetShadowRoot, monthCalendarStyling, ]; + @queryAsync('.calendar-day[aria-selected="true"]') + public selectedCalendarDay!: Promise; + public constructor() { super(); @@ -48,17 +58,27 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties return this.data.formatters != null; } + protected async updated(changedProperties: MonthCalendarChangedProperties): Promise { + super.updated(changedProperties); + + const selectedCalendarDay = await this.selectedCalendarDay; + + if (selectedCalendarDay) { + selectedCalendarDay.focus(); + } + } + protected render(): TemplateResult | typeof nothing { const { calendar, date, disabledDatesSet, disabledDaysSet, - currentDate: focusedDate, + currentDate, max, min, - showCaption, - showWeekNumber, + showCaption = false, + showWeekNumber = false, todayDate, weekdays, formatters, @@ -75,19 +95,18 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties const calendarCaptionId = `calendar-caption-${id}`; const [, [, secondMonthSecondCalendarDay]] = calendar; const secondMonthSecondCalendarDayFullDate = secondMonthSecondCalendarDay.fullDate; - const $newFocusedDate: Date = - showCaption && !isInTargetMonth(focusedDate, date) ? - computeNextFocusedDate({ - disabledDaysSet, + const selectedDate: Date = isInTargetMonth(currentDate, date) ? + date : + computeNextSelectedDate({ + currentDate, + date, disabledDatesSet, + disabledDaysSet, hasAltKey: false, keyCode: keyCodesRecord.HOME, - focusedDate: focusedDate, - selectedDate: date, - minTime: +min, maxTime: +max, - }) : - focusedDate; + minTime: +min, + }); calendarContent = html`
    +
    ${ showCaption && secondMonthSecondCalendarDayFullDate ? longMonthYearFormat(secondMonthSecondCalendarDayFullDate) : '' @@ -98,16 +107,16 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties
    -
    ${weekday.value}
    +
    ${weekday.value}
    ${value} -
    ${value}
    +
    ${value}
    - + ${ + showCaption ? html` + + ` : nothing + } ${ @@ -142,17 +165,17 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties } /** Empty day */ if (!value || !fullDate) { - return html``; + return html``; } const curTime = +new Date(fullDate); - const isCurrentDate = +focusedDate === curTime; - const shouldTab = showCaption && $newFocusedDate.getUTCDate() === Number(value); + const isSelectedDate = +selectedDate === curTime; + const shouldTab = selectedDate.getUTCDate() === Number(value); /** NOTE: lit-plugin does not like this */ const calendarDayClasses = classMap({ 'calendar-day': true, 'day--disabled': disabled, 'day--today': +todayDate === curTime, - 'day--focused': !disabled && isCurrentDate, + 'day--selected': !disabled && isSelectedDate, }) as unknown as string; return html` @@ -163,7 +186,7 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties role=gridcell aria-disabled=${disabled ? 'true' : 'false'} aria-label=${label} - aria-selected=${isCurrentDate ? 'true' : 'false'} + aria-selected=${isSelectedDate ? 'true' : 'false'} .fullDate=${fullDate} .day=${value} > @@ -182,30 +205,59 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties } #updateSelectedDate = (ev: MouseEvent | KeyboardEvent): void => { - /** Do nothing when keyup.key is neither Enter nor ' ' (or Spacebar on older browsers) */ - if ( - (ev as KeyboardEvent).type === 'keyup' && - !['Enter', ' ', 'Spacebar'].includes((ev as KeyboardEvent).key) - ) return; - - const selectedCalendarDay = toClosestTarget(ev, '.calendar-day'); - - /** NOTE: Required condition check else these will trigger unwanted re-rendering */ - if ( - selectedCalendarDay == null || - [ - 'day--empty', - 'day--disabled', - 'day--focused', - 'weekday-label', - ].some(className => selectedCalendarDay.classList.contains(className)) - ) return; - - const { fullDate } = selectedCalendarDay; + let newSelectedDate: Date | undefined = undefined; + + if (ev.type === 'keyup') { + const { altKey, keyCode } = ev as KeyboardEvent; + const keyCodeNum = keyCode as typeof navigationKeyCodeSet.all extends Set ? T : never; + + if (!calendarKeyCodeSet.has(keyCodeNum)) return; + + const { + currentDate, + date, + disabledDatesSet, + disabledDaysSet, + max, + min, + } = this.data; + + newSelectedDate = isInTargetMonth(currentDate, date) ? + computeNextSelectedDate({ + currentDate, + date, + disabledDatesSet, + disabledDaysSet, + hasAltKey: altKey, + keyCode: keyCodeNum, + maxTime: +max, + minTime: +min, + }) : + currentDate; + } else { + const selectedCalendarDay = toClosestTarget(ev, '.calendar-day'); + + /** NOTE: Required condition check else these will trigger unwanted re-rendering */ + if ( + selectedCalendarDay == null || + [ + 'day--empty', + 'day--disabled', + 'day--focused', + 'weekday-label', + ].some(className => selectedCalendarDay.classList.contains(className)) + ) { + return; + } + + newSelectedDate = selectedCalendarDay.fullDate; + } + + if (newSelectedDate == null) return; dispatchCustomEvent(this, 'date-updated', { isKeypress: false, - value: new Date(fullDate), + value: new Date(newSelectedDate), }); return; diff --git a/src/month-calendar/stylings.ts b/src/month-calendar/stylings.ts index f79117c67..eb5ae687f 100644 --- a/src/month-calendar/stylings.ts +++ b/src/month-calendar/stylings.ts @@ -55,6 +55,11 @@ td { padding-top: 32px; outline: none; } +@media (any-hover: hover) { + .calendar-day:not([aria-hidden="true"]) :not([aria-disabled="true"]) { + cursor: pointer; + } +} .calendar-day::after { content: ''; display: block; @@ -72,10 +77,19 @@ td { background-color: #1d1d1d; opacity: 1; } +.calendar-day.day--today::after, .calendar-day:hover::after, .calendar-day:focus::after { - outline: 1px solid #1d1d1d; opacity: 1; + outline-width: 1px; + outline-style: solid +} +.calendar-day.day--today::after { + outline-color: #1d1d1d; +} +.calendar-day:hover::after, +.calendar-day:focus::after { + outline-color: #b5b5b5; } .calendar-day[aria-disabled="true"], .calendar-day.day--empty { diff --git a/src/month-calendar/typings.ts b/src/month-calendar/typings.ts index 0f050394b..aefeb70b5 100644 --- a/src/month-calendar/typings.ts +++ b/src/month-calendar/typings.ts @@ -1,6 +1,8 @@ import type { Calendar, CalendarWeekday } from 'nodemod/dist/calendar/calendar_typing.js'; -import type { Formatters } from '../typings.js'; +import type { ChangedProperties, Formatters } from '../typings.js'; + +export type MonthCalendarChangedProperties = ChangedProperties; export interface MonthCalendarData { calendar: Calendar['calendar']; @@ -11,8 +13,8 @@ export interface MonthCalendarData { currentDate: Date; max: Date; min: Date; - showCaption: boolean; - showWeekNumber: boolean; + showCaption?: boolean; + showWeekNumber?: boolean; todayDate: Date; weekdays: CalendarWeekday[]; } From c8ec5a95ac393edab92ce8b0293ae8e251a77274 Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Mon, 24 May 2021 01:20:10 +0800 Subject: [PATCH 025/276] refactor: add keyboard support in year grid --- src/constants.ts | 11 +++ ...-date.ts => compute-next-selected-date.ts} | 0 src/month-calendar/month-calendar.ts | 2 +- src/year-grid/ to-next-selected-year.ts | 29 +++++++ src/year-grid/stylings.ts | 3 +- src/year-grid/typings.ts | 11 ++- src/year-grid/year-grid.ts | 76 +++++++++++++++---- 7 files changed, 113 insertions(+), 19 deletions(-) rename src/helpers/{compute-next-focused-date.ts => compute-next-selected-date.ts} (100%) create mode 100644 src/year-grid/ to-next-selected-year.ts diff --git a/src/constants.ts b/src/constants.ts index 211b4fa91..15448f284 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -64,3 +64,14 @@ export const calendarKeyCodeSet = new Set([ keyCodesRecord.ENTER, keyCodesRecord.SPACE, ]); + +export const yearGridKeyCodeSet = new Set([ + keyCodesRecord.ARROW_DOWN, + keyCodesRecord.ARROW_LEFT, + keyCodesRecord.ARROW_RIGHT, + keyCodesRecord.ARROW_UP, + keyCodesRecord.END, + keyCodesRecord.ENTER, + keyCodesRecord.HOME, + keyCodesRecord.SPACE, +]); diff --git a/src/helpers/compute-next-focused-date.ts b/src/helpers/compute-next-selected-date.ts similarity index 100% rename from src/helpers/compute-next-focused-date.ts rename to src/helpers/compute-next-selected-date.ts diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 1db0bf9a0..2d087ca73 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -8,7 +8,7 @@ import { classMap } from 'lit/directives/class-map.js'; import { resetShadowRoot } from '../ stylings.js'; import type { navigationKeyCodeSet } from '../constants.js'; import { calendarKeyCodeSet, keyCodesRecord } from '../constants.js'; -import { computeNextSelectedDate } from '../helpers/compute-next-focused-date.js'; +import { computeNextSelectedDate } from '../helpers/compute-next-selected-date.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { isInTargetMonth } from '../helpers/is-in-current-month.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; diff --git a/src/year-grid/ to-next-selected-year.ts b/src/year-grid/ to-next-selected-year.ts new file mode 100644 index 000000000..5a22f1c9c --- /dev/null +++ b/src/year-grid/ to-next-selected-year.ts @@ -0,0 +1,29 @@ +import { keyCodesRecord } from '../constants.js'; +import type { ToNextSelectableYearInit } from './typings.js'; + +const { + ARROW_DOWN, + ARROW_LEFT, + ARROW_RIGHT, + ARROW_UP, + END, + HOME, +} = keyCodesRecord; + +export function toNextSelectedYear({ + keyCode, + max, + min, + year, +}: ToNextSelectableYearInit): number { + switch (keyCode) { + case ARROW_UP: return year - 4; + case ARROW_DOWN: return year + 4; + case ARROW_LEFT: return year - 1; + case ARROW_RIGHT: return year + 1; + case END: return max.getUTCFullYear(); + case HOME: return min.getUTCFullYear(); + default: + return year; + } +} diff --git a/src/year-grid/stylings.ts b/src/year-grid/stylings.ts index f15b812e6..1b3c58763 100644 --- a/src/year-grid/stylings.ts +++ b/src/year-grid/stylings.ts @@ -6,6 +6,7 @@ export const yearGridStyling = css` grid-auto-flow: row; grid-template-columns: repeat(4, minmax(1px, 56px)); grid-template-rows: repeat(auto-fit, 32px); - place-items: center; + align-items: center; + justify-items: center; } `; diff --git a/src/year-grid/typings.ts b/src/year-grid/typings.ts index b7e8ec5e7..3f977bdbc 100644 --- a/src/year-grid/typings.ts +++ b/src/year-grid/typings.ts @@ -1,4 +1,13 @@ -import type { Formatters } from '../typings.js'; +import type { ChangedProperties, Formatters, SupportedKeyCode } from '../typings.js'; + +export interface ToNextSelectableYearInit { + year: number; + keyCode: SupportedKeyCode; + max: Date; + min: Date; +} + +export type YearGridChangedProperties = ChangedProperties; export interface YearGridData { date: Date; diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index ae21f1597..f7d944bdd 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -8,14 +8,15 @@ import { html, LitElement } from 'lit'; import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; import { resetShadowRoot } from '../ stylings.js'; -import { MAX_DATE } from '../constants.js'; +import { keyCodesRecord, MAX_DATE, yearGridKeyCodeSet } from '../constants.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; import { APP_YEAR_GRID_BUTTON_NAME } from '../year-grid-button/constants.js'; +import { toNextSelectedYear } from './ to-next-selected-year.js'; import { yearGridStyling } from './stylings.js'; -import type { YearGridData, YearGridProperties } from './typings.js'; +import type { YearGridChangedProperties, YearGridData, YearGridProperties } from './typings.js'; export class YearGrid extends LitElement implements YearGridProperties { @property({ attribute: false }) @@ -29,6 +30,8 @@ export class YearGrid extends LitElement implements YearGridProperties { yearGridStyling, ]; + #selectedYear: number; + constructor() { super(); @@ -40,13 +43,14 @@ export class YearGrid extends LitElement implements YearGridProperties { max: MAX_DATE, min: todayDate, }; + this.#selectedYear = todayDate.getUTCFullYear(); } protected shouldUpdate(): boolean { return this.data.formatters != null; } - protected async updated(): Promise { + protected async firstUpdated(): Promise { const selectedYearGridButton = await this.selectedYearGridButton; if (selectedYearGridButton) { @@ -54,6 +58,14 @@ export class YearGrid extends LitElement implements YearGridProperties { } } + protected update(changedProperties: YearGridChangedProperties): void { + super.update(changedProperties); + + if (changedProperties.has('data')) { + this.#selectedYear = this.data.date.getUTCFullYear(); + } + } + protected render(): TemplateResult | typeof nothing { const { date, @@ -72,11 +84,14 @@ export class YearGrid extends LitElement implements YearGridProperties { yearList.map((year) => { const yearDate = toUTCDate(year, 1, 1); const yearLabel = yearFormat(yearDate); - const isYearSelected = yearDate.getUTCFullYear() === date.getUTCFullYear(); + const fullYear = yearDate.getUTCFullYear(); + // FIXME: To update tabindex + const isYearSelected = fullYear === date.getUTCFullYear(); return html` @@ -87,20 +102,49 @@ export class YearGrid extends LitElement implements YearGridProperties { } #updateYear = (ev: MouseEvent | KeyboardEvent): void => { - /** Do nothing when keyup.key is neither Enter nor ' ' (or Spacebar on older browsers) */ - if ( - (ev as KeyboardEvent).type === 'keyup' && - !['Enter', ' ', 'Spacebar'].includes((ev as KeyboardEvent).key) - ) return; + const { + date, + max, + min, + } = this.data; + + let year = date.getUTCFullYear(); + + if (ev.type === 'keyup') { + const { keyCode } = ev as KeyboardEvent; + const keyCodeNum = keyCode as typeof keyCode extends Set ? U : never; + + if (keyCodeNum === keyCodesRecord.TAB) return; + + if (yearGridKeyCodeSet.has(keyCodeNum)) { + const selectedYear = toNextSelectedYear({ + keyCode: keyCodeNum, + max, + min, + year: this.#selectedYear, + }); - const selectedYearGridButton = toClosestTarget(ev, `${APP_YEAR_GRID_BUTTON_NAME}[data-year]`); + const selectedYearGridButton = this.shadowRoot?.querySelector( + `${APP_YEAR_GRID_BUTTON_NAME}[data-year="${selectedYear}"]` + ); - /** Do nothing when not tapping on the year button */ - if (selectedYearGridButton == null) return; + if (selectedYearGridButton) { + selectedYearGridButton.focus(); + selectedYearGridButton.scrollIntoView(); + } - const year = Number( - selectedYearGridButton.getAttribute('data-year') - ); + this.#selectedYear = selectedYear; + + return; + } + } else { + const selectedYearGridButton = toClosestTarget(ev, `${APP_YEAR_GRID_BUTTON_NAME}[data-year]`); + + /** Do nothing when not tapping on the year button */ + if (selectedYearGridButton == null) return; + + year = Number(selectedYearGridButton.getAttribute('data-year')); + } dispatchCustomEvent(this, 'year-updated', { year }); }; From 3619a7b8a200cbbfb2cff84577a54cafba312217 Mon Sep 17 00:00:00 2001 From: Rong Sen Ng Date: Wed, 26 May 2021 17:37:33 +0800 Subject: [PATCH 026/276] refactor: refactor year grid button and add base stylings --- index.html | 2 +- package.json | 4 +- src/ stylings.ts | 62 ------------- src/constants.ts | 1 - src/{ => date-picker}/app-date-picker.ts | 0 src/date-picker/constants.ts | 1 + src/{ => date-picker}/date-picker.ts | 43 +++++---- src/date-picker/stylings.ts | 74 +++++++++++++++ src/date-picker/typings.ts | 8 ++ src/month-calendar/month-calendar.ts | 9 +- src/month-calendar/stylings.ts | 32 ++++--- src/stylings.ts | 112 +++++++++++------------ src/typings.ts | 9 -- src/year-grid/stylings.ts | 50 +++++++++- src/year-grid/year-grid.ts | 31 ++++--- 15 files changed, 253 insertions(+), 185 deletions(-) delete mode 100644 src/ stylings.ts rename src/{ => date-picker}/app-date-picker.ts (100%) create mode 100644 src/date-picker/constants.ts rename src/{ => date-picker}/date-picker.ts (87%) create mode 100644 src/date-picker/stylings.ts create mode 100644 src/date-picker/typings.ts diff --git a/index.html b/index.html index 1dba8fe7b..e5f0d2bc0 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ @@ -68,15 +51,8 @@ background-color: #5a5a5a; } } - - app-date-picker { - background-color: #f5f5f5; - } - - - - + diff --git a/src/__demo__/demo-app.ts b/src/__demo__/demo-app.ts new file mode 100644 index 000000000..35e93c3a1 --- /dev/null +++ b/src/__demo__/demo-app.ts @@ -0,0 +1,34 @@ +import '../date-picker/app-date-picker.js'; + +import { css, html, LitElement } from 'lit'; +import { customElement } from 'lit/decorators.js'; + +@customElement('demo-app') +export class DemoApp extends LitElement { + public static override styles = [ + css` + * { + display: block; + box-sizing: border-box; + } + + app-date-picker { + background-color: #f5f5f5; + } + `, + ]; + + protected override render() { + return html` + + + + + + `; + } +} diff --git a/src/tests/date-picker/app-date-picker.test.ts b/src/__tests__/date-picker/app-date-picker.test.ts similarity index 100% rename from src/tests/date-picker/app-date-picker.test.ts rename to src/__tests__/date-picker/app-date-picker.test.ts diff --git a/src/tests/helpers/clamp-value.test.ts b/src/__tests__/helpers/clamp-value.test.ts similarity index 100% rename from src/tests/helpers/clamp-value.test.ts rename to src/__tests__/helpers/clamp-value.test.ts diff --git a/src/tests/helpers/date-validator.test.ts b/src/__tests__/helpers/date-validator.test.ts similarity index 100% rename from src/tests/helpers/date-validator.test.ts rename to src/__tests__/helpers/date-validator.test.ts diff --git a/src/tests/helpers/dispatch-custom-event.test.ts b/src/__tests__/helpers/dispatch-custom-event.test.ts similarity index 100% rename from src/tests/helpers/dispatch-custom-event.test.ts rename to src/__tests__/helpers/dispatch-custom-event.test.ts diff --git a/src/tests/helpers/focus-element.test.ts b/src/__tests__/helpers/focus-element.test.ts similarity index 100% rename from src/tests/helpers/focus-element.test.ts rename to src/__tests__/helpers/focus-element.test.ts diff --git a/src/tests/helpers/is-in-current-month.test.ts b/src/__tests__/helpers/is-in-current-month.test.ts similarity index 100% rename from src/tests/helpers/is-in-current-month.test.ts rename to src/__tests__/helpers/is-in-current-month.test.ts diff --git a/src/tests/helpers/nullish-attribute-converter.test.ts b/src/__tests__/helpers/nullish-attribute-converter.test.ts similarity index 100% rename from src/tests/helpers/nullish-attribute-converter.test.ts rename to src/__tests__/helpers/nullish-attribute-converter.test.ts diff --git a/src/tests/helpers/split-string.test.ts b/src/__tests__/helpers/split-string.test.ts similarity index 100% rename from src/tests/helpers/split-string.test.ts rename to src/__tests__/helpers/split-string.test.ts diff --git a/src/tests/helpers/to-closest-target.test.ts b/src/__tests__/helpers/to-closest-target.test.ts similarity index 100% rename from src/tests/helpers/to-closest-target.test.ts rename to src/__tests__/helpers/to-closest-target.test.ts diff --git a/src/tests/helpers/to-date-string.test.ts b/src/__tests__/helpers/to-date-string.test.ts similarity index 100% rename from src/tests/helpers/to-date-string.test.ts rename to src/__tests__/helpers/to-date-string.test.ts diff --git a/src/tests/helpers/to-day-diff-inclusive.test.ts b/src/__tests__/helpers/to-day-diff-inclusive.test.ts similarity index 100% rename from src/tests/helpers/to-day-diff-inclusive.test.ts rename to src/__tests__/helpers/to-day-diff-inclusive.test.ts diff --git a/src/tests/helpers/to-formatters.test.ts b/src/__tests__/helpers/to-formatters.test.ts similarity index 100% rename from src/tests/helpers/to-formatters.test.ts rename to src/__tests__/helpers/to-formatters.test.ts diff --git a/src/tests/helpers/to-multi-calendars.test.ts b/src/__tests__/helpers/to-multi-calendars.test.ts similarity index 100% rename from src/tests/helpers/to-multi-calendars.test.ts rename to src/__tests__/helpers/to-multi-calendars.test.ts diff --git a/src/tests/helpers/to-next-selectable-date.test.ts b/src/__tests__/helpers/to-next-selectable-date.test.ts similarity index 100% rename from src/tests/helpers/to-next-selectable-date.test.ts rename to src/__tests__/helpers/to-next-selectable-date.test.ts diff --git a/src/tests/helpers/to-next-selected-date.test.ts b/src/__tests__/helpers/to-next-selected-date.test.ts similarity index 100% rename from src/tests/helpers/to-next-selected-date.test.ts rename to src/__tests__/helpers/to-next-selected-date.test.ts diff --git a/src/tests/helpers/to-resolved-date.test.ts b/src/__tests__/helpers/to-resolved-date.test.ts similarity index 100% rename from src/tests/helpers/to-resolved-date.test.ts rename to src/__tests__/helpers/to-resolved-date.test.ts diff --git a/src/tests/helpers/to-year-list.test.ts b/src/__tests__/helpers/to-year-list.test.ts similarity index 100% rename from src/tests/helpers/to-year-list.test.ts rename to src/__tests__/helpers/to-year-list.test.ts diff --git a/src/tests/month-calendar/app-month-calendar.test.ts b/src/__tests__/month-calendar/app-month-calendar.test.ts similarity index 100% rename from src/tests/month-calendar/app-month-calendar.test.ts rename to src/__tests__/month-calendar/app-month-calendar.test.ts diff --git a/src/tests/test-utils/it-each.ts b/src/__tests__/test-utils/it-each.ts similarity index 100% rename from src/tests/test-utils/it-each.ts rename to src/__tests__/test-utils/it-each.ts diff --git a/src/tests/test-utils/message-formatter.ts b/src/__tests__/test-utils/message-formatter.ts similarity index 100% rename from src/tests/test-utils/message-formatter.ts rename to src/__tests__/test-utils/message-formatter.ts diff --git a/src/tests/utils.ts b/src/__tests__/utils.ts similarity index 100% rename from src/tests/utils.ts rename to src/__tests__/utils.ts diff --git a/src/tests/year-grid-button/app-year-grid-button.test.ts b/src/__tests__/year-grid-button/app-year-grid-button.test.ts similarity index 100% rename from src/tests/year-grid-button/app-year-grid-button.test.ts rename to src/__tests__/year-grid-button/app-year-grid-button.test.ts diff --git a/src/tests/year-grid/app-year-grid.test.ts b/src/__tests__/year-grid/app-year-grid.test.ts similarity index 100% rename from src/tests/year-grid/app-year-grid.test.ts rename to src/__tests__/year-grid/app-year-grid.test.ts diff --git a/src/tests/year-grid/to-next-selected-year.test.ts b/src/__tests__/year-grid/to-next-selected-year.test.ts similarity index 100% rename from src/tests/year-grid/to-next-selected-year.test.ts rename to src/__tests__/year-grid/to-next-selected-year.test.ts diff --git a/wtr.config.mjs b/wtr.config.mjs index e3fd9b7f6..b08678f21 100644 --- a/wtr.config.mjs +++ b/wtr.config.mjs @@ -32,17 +32,16 @@ const config = { }, nativeInstrumentation: true, exclude: [ - './src/tests/**', + './src/*tests*/**', 'node_modules/**' ], }, files: [ - `src/tests/${isTestHelpersOnly ? 'helpers' : '!(helpers)'}/*.test.ts` + `src/*tests*/${isTestHelpersOnly ? 'helpers' : '!(helpers)'}/*.test.ts` ], - // nodeResolve: true, plugins: [ nodeResolvePlugin({ - exportConditions: ['default', 'esbuild', 'import'], + exportConditions: ['default', 'dev', 'development', 'esbuild', 'import'], extensions: ['.mjs', '.js', '.ts', '.css', '.graphql'], }), esbuildPlugin({ ts: true }), From 6858944c42786f636cb29ebf41277cb74ce11c9c Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Mon, 18 Oct 2021 21:24:26 +0800 Subject: [PATCH 107/276] chore: cleanup --- src/__tests__/utils.ts | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 src/__tests__/utils.ts diff --git a/src/__tests__/utils.ts b/src/__tests__/utils.ts deleted file mode 100644 index bdd2df5d8..000000000 --- a/src/__tests__/utils.ts +++ /dev/null @@ -1,34 +0,0 @@ -// import type { Context, Test } from 'uvu'; -// import { test as testBase } from 'uvu'; -// import * as assert from 'uvu/assert'; - -// import { messageFormatter } from './test-utils/message-formatter'; - -// function eachFn( -// groups: T[] -// ) { -// return ( -// message: string, -// cb: Parameters>['1'] -// ) => { -// groups.forEach((group) => { -// testBase( -// messageFormatter(message, group), -// (ctx) => -// cb({ ...ctx, group } as never) -// ); -// }); -// }; -// } - -// Object.assign(testBase, { -// each: eachFn, -// }); - -// interface A extends Test { -// each: typeof eachFn; -// } - -// const test = testBase as A; - -// export { assert, test }; From d4122bd460c99061cdd37315c13f60dcaa2d93e2 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Mon, 18 Oct 2021 21:28:24 +0800 Subject: [PATCH 108/276] chore: update package.json --- package.json | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 02ee67b30..f39055c7b 100644 --- a/package.json +++ b/package.json @@ -31,17 +31,14 @@ }, "type": "module", "exports": { - ".": "./dist/app-datepicker.js", + ".": "./dist/date-picker/app-date-picker.js", "./dist/*": "./dist/*", - "./app-datepicker": "./dist/app-datepicker.js", - "./app-datepicker-dialog": "./dist/app-datepicker-dialog.js", - "./datepicker": "./dist/datepicker.js", - "./datepicker-dialog": "./dist/datepicker-dialog.js", - "./typings": "./dist/custom_typings.d.ts" + "./date-picker/*": "./dist/date-picker/*", + "./app-date-picker": "./dist/date-picker/app-date-picker.js" }, - "main": "./dist/app-datepicker.js", - "module": "./dist/app-datepicker.js", - "typings": "./dist/app-datepicker.d.ts", + "main": "./dist/date-picker/app-date-picker.js", + "module": "./dist/date-picker/app-date-picker.js", + "typings": "./dist/date-picker/typings.js", "files": [ "dist/*.*js.map", "dist/*.*js", @@ -56,17 +53,17 @@ "build": "tsc -p tsconfig.prod.json", "check": "package-check", "clean": "rm -rf .*cache *.log coverage/ dist/ logs/", + "postinstall": "if [ \"$CI\" != 'true' ]; then npm dedupe; fi", "lint": "eslint src --ext .js,.ts", "lint:build": "npm run lint -- --config .build.eslintrc.json", + "prepare": "if [ \"$CI\" != 'true' ]; then npm x -- husky install; fi", "prepublishOnly": "npm run lint && npm run build:prod", "serve": "npm x --no @web/dev-server@latest -- wds --node-resolve -dw -p 3000 -a index.html", - "ts": "tsc", - "test:helpers": "TEST_HELPERS=1 npm run wtr -- --config wtr.config.mjs", - "test:elements": "npm run wtr -- --config wtr.config.mjs", "test": "npm run test:helpers && npm run test:elements", + "test:elements": "npm run wtr -- --config wtr.config.mjs", + "test:helpers": "TEST_HELPERS=1 npm run wtr -- --config wtr.config.mjs", + "ts": "tsc", "watch": "npm run clean && tsc --watch", - "prepare": "if [ \"$CI\" != 'true' ]; then npm x -- husky install; fi", - "postinstall": "if [ \"$CI\" != 'true' ]; then npm dedupe; fi", "wtr": "node --max-old-space-size=8192 --trace-deprecation node_modules/@web/test-runner/dist/bin.js" }, "commitlint": { From ab32816f8c2db9b8b83aa740835cc580f731c465 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Fri, 5 Nov 2021 14:08:57 +0800 Subject: [PATCH 109/276] chore: update dependencies --- package-lock.json | 2032 ++++++++++++++++++++++++++++++++------------- package.json | 33 +- 2 files changed, 1476 insertions(+), 589 deletions(-) diff --git a/package-lock.json b/package-lock.json index 42b35f453..5a3f93b4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,30 +10,33 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@material/mwc-base": "^0.25.2", - "@material/mwc-button": "^0.25.2", - "@material/mwc-icon-button": "^0.25.2", + "@material/mwc-base": "^0.25.3", + "@material/mwc-button": "^0.25.3", + "@material/mwc-dialog": "^0.25.3", + "@material/mwc-icon-button": "^0.25.3", + "@material/mwc-menu": "^0.25.3", + "@material/mwc-textfield": "^0.25.3", "lit": "^2.0.2", "nodemod": "^3.0.0", "tslib": "^2.3.1" }, "devDependencies": { - "@commitlint/config-conventional": "^13.1.0", - "@open-wc/testing": "^3.0.1", + "@commitlint/config-conventional": "^14.1.0", + "@open-wc/testing": "^3.0.2", "@reallyland/tsconfig": "^3.0.2", - "@rollup/plugin-node-resolve": "^13.0.4", + "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "@web/dev-server-esbuild": "^0.2.14", - "@web/dev-server-rollup": "^0.3.11", - "@web/test-runner": "^0.13.20", + "@typescript-eslint/eslint-plugin": "^5.3.0", + "@typescript-eslint/parser": "^5.3.0", + "@web/dev-server-esbuild": "^0.2.15", + "@web/dev-server-rollup": "^0.3.12", + "@web/test-runner": "^0.13.21", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", - "eslint-plugin-lit": "^1.6.0", - "eslint-plugin-lit-a11y": "^2.0.0", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-regexp": "^1.4.1", + "eslint-plugin-lit": "^1.6.1", + "eslint-plugin-lit-a11y": "^2.2.0", + "eslint-plugin-promise": "^5.1.1", + "eslint-plugin-regexp": "^1.5.0", "eslint-plugin-simple-import-sort": "^7.0.0", "typescript": "^4.4.4" }, @@ -61,12 +64,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -75,9 +78,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -87,12 +90,12 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", + "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", "dev": true, "dependencies": { - "core-js-pure": "^3.16.0", + "core-js-pure": "^3.19.0", "regenerator-runtime": "^0.13.4" }, "engines": { @@ -100,9 +103,9 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-13.2.0.tgz", - "integrity": "sha512-7u7DdOiF+3qSdDlbQGfpvCH8DCQdLFvnI2+VucYmmV7E92iD6t9PBj+UjIoSQCaMAzYp27Vkall78AkcXBh6Xw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", + "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", "dev": true, "dependencies": { "conventional-changelog-conventionalcommits": "^4.3.1" @@ -167,9 +170,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true, "peer": true }, @@ -179,128 +182,489 @@ "integrity": "sha512-dJMha+4NFYdpnUJzRrWTFV5Hdp9QHWFuPnaoqonrKl4lGJVnYez9mu8ev9F/5KM47tjAjh22DuRHrdFDHfOijA==" }, "node_modules/@material/animation": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-r2H1k9iSLw/gR16TFAL8rCcr13unLyLVhI79FV39D2w6FvjXIH4XUqCOwHjUxDkO7NiHuB4TBCC5trgGVmwrXg==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-OjxWJYSRNs4vnPe8NclaNn+TsNc8TR/wHusGtezF5F+wl+5mh+K69BMXAmURtq3idoRg4XaOSC/Ohk1ovD1fMQ==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/base": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-Qg2H+G+QmJ5eXLaMDU5E6r3gHchRFmVxeYcgjPJ9LOGoneYELjahLFFdjMTkktCRF6vhIgP2dZ0YBejtMNpo3w==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-vy5SQt+jcwwdRFfBvtpVdpULUBujecVUKOXcopaQoi2XIzI5EBHuR4gPN0cd1yfmVEucD6p2fvVv2FJ3Ngr61w==", "dependencies": { "tslib": "^2.1.0" } }, + "node_modules/@material/button": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-DB0MAvdIGWKuFwlQ57hjv7ZuHIioT2mnG7RWtL7ZoCWoY45nCrsbJirmX5zZFipm9gIOJ3YnIkIrUyMVSrDX+g==", + "dependencies": { + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/tokens": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-zOR5wISqPVr8KS/ERNC1jdRV9O832lzclyS9Ea20rDrWfuOiYsQ9bbIk12xWlxpgsn7r9fxQJyd1O2SURoHdRA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-NfQR0fmNS/y2iRAx5YeODLLywBAnSyZI/CL9GUq4NiNj+FeSxe+5bhG1p9NxHeGMjEVrl6fG5L9ql7lqtfQaYQ==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/button": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/icon-button": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/tokens": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, "node_modules/@material/dom": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-nKETPNDJ3rR8T6KoLzTLiyuBctYBk5YuVSWlfrdA6GQnJR50GplUcaD0BYycpYfoYlIDh0lsfSjuTt2hpoBu8w==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-iUpZG6Bb2l/PfNV2Fb/pXfG1p4Bz4PC9A7ATPlKfcU5HioObcnYVc/+Hrtaw8eu28BNIc+VVROtbfpqG/YgKSQ==", + "dependencies": { + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-AqN/tsTGGyBzZ7CtoSMBY9bDYvCuUt98EUfiGjZGXcf4HgoHV3Cn/JSLrhru5Cq8Nx6HF6AmHh3dQCfNCQduew==", "dependencies": { - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "node_modules/@material/feature-targeting": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-JhFsnWvNwdGfbNGC1F3+QlYKWpAFfRkPhtuOjrs9G1DRZWj2zIy7ZuJTvtefK4VntDY+8vDFVwm8sV+9bn8eow==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-CrVoGNu0ym52OPEKy3kgeNL2oSWOCBYbYxSH3GhERxCq5FwGBN+XmK/ZDLFVQlHYy3v8x4TqVEwXviCeumNTxQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-Cp0/LngkW6/uZWbEDTe3Ox143V4kYtxl9twiM3XLKd6a67JHCzneQWFzC0qSg90b3r5O+1zOkT3ZMF2Pbu2Vwg==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-9P6cjRqKtjE6ML+r5yz0ExU/f2KLdNabHQxmO6RpKd/FnjTyP1NcWqqj8dsvo/DZ7mOtT1MIThgkQDdiMqcYLg==", + "dependencies": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-LlyiyxpHNlFt0PZ8Q2tvOPbjNcgm3L7tUebXsM7iGyoKXfj0HwyDI31S0KgtU3Vs5DIK4U4mnRWtoAxtBW6Jfg==", "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bjHXXk2ZeWxAFs4cJxy5J5A5ClUd3FGjRv/LwCYpsh7Dm7e8kSe8Lw2MWb6FXyF3mDJM6xqN3xXQWOh6UEu5wA==", + "dependencies": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-x59UHoTLvEsPKjFdffrKTgEyc0T4W3m58RsizAmapXr59Uthq8+PTFOkAv9R1PV/ZCzxay7Vx+QcekC4qOr40A==", + "dependencies": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/list": "14.0.0-canary.261f2db59.0", + "@material/menu-surface": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-zv/fv/W3zdSb+c/p6GNcOqA3+wAc/r8MOtV53WJPLlvZZSpGoTwHUp+GPiNeovfbsTSxN95XOXuVQBEfKEb8vA==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "node_modules/@material/mwc-base": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.25.2.tgz", - "integrity": "sha512-nTJyaC8nCnZUAvxn5l7NH25FyvgOGyp8HoAWZeddXW9k5tg6esQYfebauWQG0p4si/gcfk9LFCzyl0MLutMEUA==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.25.3.tgz", + "integrity": "sha512-4wvxZ9dhPr0O4jjOHPmFyn77pafe+h1gHPlT9sbQ+ly8NY/fSn/TXn7/PbxgL8g4ZHxMvD3o7PJopg+6cbHp8Q==", "dependencies": { "@lit/reactive-element": "1.0.0-rc.4", - "@material/base": "=14.0.0-canary.353ca7e9f.0", - "@material/dom": "=14.0.0-canary.353ca7e9f.0", + "@material/base": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "node_modules/@material/mwc-button": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.25.2.tgz", - "integrity": "sha512-1gGvbK9N9LQQhuBJ9JZ2TEzlW2og+okwFlVOcFXBIOFb34LZ69djp70BqZ7oTrz6CLCDXR6m7EKGsQfSNPqAtg==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.25.3.tgz", + "integrity": "sha512-usHEKchj9hqetY7n0yebTz1Pk9Z+9W/sNZheFoSaiWQCv9XhtCdKkHH0MXTv8SpwxWuEKUf/XjtyvikGIcIn7w==", + "dependencies": { + "@material/mwc-icon": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-checkbox": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-checkbox/-/mwc-checkbox-0.25.3.tgz", + "integrity": "sha512-PSh9IAgQK4XiDzBwgclheejkA4cbZ3K9V1JTTl/YVRDD/OLLM+Bh8tbnAg/1kGVlPWOUfDrYCcZ0gg472ca7gw==", "dependencies": { - "@material/mwc-icon": "^0.25.2", - "@material/mwc-ripple": "^0.25.2", + "@material/mwc-base": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-dialog": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-dialog/-/mwc-dialog-0.25.3.tgz", + "integrity": "sha512-UpxAYAzKXO1MW4ezpiYfEQgov08p0J8KDVKqKrMwg7lsZRkAtUMk4YJkM6qmWGqGPqd/cN++42PMPHAISJH3yA==", + "dependencies": { + "@material/dialog": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-button": "^0.25.3", + "blocking-elements": "^0.1.0", + "lit": "^2.0.0", + "tslib": "^2.0.1", + "wicg-inert": "^3.0.0" + } + }, + "node_modules/@material/mwc-floating-label": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-floating-label/-/mwc-floating-label-0.25.3.tgz", + "integrity": "sha512-3uFMi8Y680P0nzP5zih4YuOZJLl/C6Ux9G810Unwo44zblG/ckgJlFiM+T+oR+OH5KM8LbfNlV0ypo7FT5zYJA==", + "dependencies": { + "@material/floating-label": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "node_modules/@material/mwc-icon": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.25.2.tgz", - "integrity": "sha512-W0qJRUE7Q2nFkOwV+8rlDXaRgZtH0FaWr1C2nUykv4IqXLeAGIb9u6XSuDCbBxuvHeqG2hFmEbfQ5zJoWU21kw==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.25.3.tgz", + "integrity": "sha512-36076AWZIRSr8qYOLjuDDkxej/HA0XAosrj7TS1ZeLlUBnLUtbDtvc1S7KSa0hqez7ouzOqGaWK24yoNnTa2OA==", "dependencies": { "lit": "^2.0.0", "tslib": "^2.0.1" } }, "node_modules/@material/mwc-icon-button": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-icon-button/-/mwc-icon-button-0.25.2.tgz", - "integrity": "sha512-OHbTkux0j4eDdK8Aa7Zi729vRfTWh730/ZjgvN6Q//Lh7x+QiWeapfeUA615hvftCvhFhzI7Zo0a+TBxOqce4A==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-icon-button/-/mwc-icon-button-0.25.3.tgz", + "integrity": "sha512-FexkMpK3ZSHh7NF+PIqvVhvAbBOgFDYPck/lqnxIDC3VGJ0rjD/1MqevDy2fY6IcHGlc8Ai7VuYbdQ6Cvw8WcQ==", "dependencies": { - "@material/mwc-ripple": "^0.25.2", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-line-ripple": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-line-ripple/-/mwc-line-ripple-0.25.3.tgz", + "integrity": "sha512-ANJzSyumb+shBVTIhqF1+YByPU/EpFXxI9CS26qThFqlUDpYXg5xcoZpkMSmZv3Wv/loF1rs2mJfFWOcC6nFnw==", + "dependencies": { + "@material/line-ripple": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-list": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-list/-/mwc-list-0.25.3.tgz", + "integrity": "sha512-2T297qVaQsKv+QDNP2ag9g04RLKO1tm2F6BwwqvdbXTsY+LKYOJe2/aSe0kX2tQLayX4ydy2RnTevo9Ld+c+4g==", + "dependencies": { + "@material/base": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/list": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-checkbox": "^0.25.3", + "@material/mwc-radio": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-menu": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-menu/-/mwc-menu-0.25.3.tgz", + "integrity": "sha512-jr5R61BfqrJC0lsAI63y4BsEM2eY3n6kiCy2ZnwinmxrfFrS709T/zuSUUW/xG9b9inSku4WjjSkDhPzQrmS3g==", + "dependencies": { + "@material/menu": "=14.0.0-canary.261f2db59.0", + "@material/menu-surface": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-list": "^0.25.3", + "@material/shape": "=14.0.0-canary.261f2db59.0", + "@material/theme": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-notched-outline": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-notched-outline/-/mwc-notched-outline-0.25.3.tgz", + "integrity": "sha512-8jvU8GD0Pke+pfTQ0PdXpZmkU3XIHhMVY6AHM/2IQrXHkVZmAm9kbwL7ne3Ao+6f5n+DeXDGd+SG9U6ZZjD7gw==", + "dependencies": { + "@material/mwc-base": "^0.25.3", + "@material/notched-outline": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/mwc-radio": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-radio/-/mwc-radio-0.25.3.tgz", + "integrity": "sha512-SXpVDrsQnz7+2w/kfBxcOJ4P+uJ0RxBd9mCLE7wVyN53gDLkNHqA0npdl2PNpRaaMavVrt27L8wWo5QIT+7zWA==", + "dependencies": { + "@material/mwc-base": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "@material/radio": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "node_modules/@material/mwc-ripple": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.25.2.tgz", - "integrity": "sha512-z39JamHlKVEG0nRfyJeFUACbGjP6AqP0uUamE7qFtuJFQTlCU/jvdBoFdNo5V3xtKIN3/iH8ca3BXVxRC8u63A==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.25.3.tgz", + "integrity": "sha512-G/gt/csxgME6/sAku3GiuB0O2LLvoPWsRTLq/9iABpaGLJjqaKHvNg/IVzNDdF3YZT7EORgR9cBWWl7umA4i4Q==", "dependencies": { - "@material/dom": "=14.0.0-canary.353ca7e9f.0", - "@material/mwc-base": "^0.25.2", - "@material/ripple": "=14.0.0-canary.353ca7e9f.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/ripple": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, + "node_modules/@material/mwc-textfield": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-textfield/-/mwc-textfield-0.25.3.tgz", + "integrity": "sha512-stpZ8sEyo2Mb9fG2XCoTc1Kom8oRXZiVI5rU88GtfcBU7nH0em8S4grq9X1mVfUG6Cfi1G/T+avCSIhzbYtr0w==", + "dependencies": { + "@material/floating-label": "=14.0.0-canary.261f2db59.0", + "@material/line-ripple": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-floating-label": "^0.25.3", + "@material/mwc-line-ripple": "^0.25.3", + "@material/mwc-notched-outline": "^0.25.3", + "@material/textfield": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "node_modules/@material/notched-outline": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-gtn+IKAiX2rbfbX3a9aDlfUoKCEYrlAPOZifKXUaZ4UJYMNLzZuAqy7l5Ds30emtqUE22mySTEWqhzK6dePKsA==", + "dependencies": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/floating-label": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-AvrsOqhP8UZ5d58RWgaTmQVlWQRULwk2BXhsEhtxz56CmTsyVM49thNbaNnc/TzuY9Ssxv/L2wYVbR2B3BX9Yw==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, "node_modules/@material/ripple": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-5/n2bZ2TmVJGDzSn0jjHHaI21h2tgTADxVocSzecXUFj/XuHOHlIVIPQRlNOYhx/ZG1rD2DOdLNi+CemBizZqQ==", - "dependencies": { - "@material/animation": "14.0.0-canary.353ca7e9f.0", - "@material/base": "14.0.0-canary.353ca7e9f.0", - "@material/dom": "14.0.0-canary.353ca7e9f.0", - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", - "@material/rtl": "14.0.0-canary.353ca7e9f.0", - "@material/theme": "14.0.0-canary.353ca7e9f.0", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-3FLCLj8X7KrFfuYBHJg1b7Odb3V/AW7fxk3m1i1zhDnygKmlQ/abVucH1s2qbX3Y+JIiq+5/C5407h9BFtOf+A==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "node_modules/@material/rtl": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-3NuIyWGSPyc4ZzxBRjZvMNmGodrOYNmD4ef1CCT0erfVP7/DFyEaFcIkwfqQJo2vL/j+IiKq/mS4f2kekLjPdQ==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bVnXBbUsHs57+EXdeFbcwaKy3lT/itI/qTLmJ88ar0qaGEujO1GmESHm3ioqkeo4kQpTfDhBwQGeEi1aDaTdFg==", + "dependencies": { + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-VjcQltd1uF9ugvLExMy00SMISjy/370o8lsZlb1T+xHyhXHL3UxeuWYLW5Amq6mbx65+c9Df9WmlXXOdebpEkw==", "dependencies": { - "@material/theme": "14.0.0-canary.353ca7e9f.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-KBPgpvvVFBfLx9nc6+wWOS2hJ40JVwh5KBjMoYbiOEFLf0O7SgCAVREHaFAXrPsC8AeTyUipx6TReONIGfMCPQ==", + "dependencies": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/floating-label": "14.0.0-canary.261f2db59.0", + "@material/line-ripple": "14.0.0-canary.261f2db59.0", + "@material/notched-outline": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "node_modules/@material/theme": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-1gWWB6ZuKoNDwWpeCbxu2UYWRAhuRW25KWPw4tZIOw2jwN6gqptgyyweC18vLhT/YuSvq15bReiAeo7WyOfg6A==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bUqyFT0QF8Nxx02fekt3CXIfC9DEPOPdo2hjgdtvhrNP+vftbkI2tKZ5/uRUnVA+zqQAOyIl5z6FOMg4fyemCA==", "dependencies": { - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-mgar9gsLv00HTvXIDvNR1vEEXpfKgeWhVTO8a7aWofSNyENNOVc5ImJwBgCAMb5SgLHBi6w8/c1tPzjOewBfCA==", + "dependencies": { + "@material/elevation": "14.0.0-canary.261f2db59.0" + } + }, + "node_modules/@material/touch-target": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-xA6TTHN7aOTXg/+c6mQJlogzTD+Sp8WPC5TK8RBXbQxEykGXGW15p+H9pG+rX/gzD5iehnHRBrDUFmAGoskhcQ==", + "dependencies": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-WOCdcNkD5KBRAwICcRqWBRG3cDkyrwK5USTNmG0oxnwnZAN7daOpPTdLppVAhadE7faj8d67ON+V9pH7+T62FQ==", + "dependencies": { + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.6.tgz", - "integrity": "sha512-sjwvUfaKRKHNgOgEOgIEOnYc8iNeRlcFYdUzCFejN5bJUe0ob4C9VNIzNMtQ2Qb/UAOopSjWX/YyupxQFm36/g==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.9.tgz", + "integrity": "sha512-6Viqyrqpb7fVXJ5VoIIu5UdQR9ftk1kvh4X40FQhy5IOFnawQ38CpEZw34ZPOtpVed72W27m3gRSJo+4qAFuqA==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -388,9 +752,9 @@ } }, "node_modules/@open-wc/testing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.1.tgz", - "integrity": "sha512-8ZVdmNT8e0hcB0tGrdfsvWydpDUr+1oeQ4XRm2T3Ck+nTJIddQO28tO0OvDLrJU/5WtT7LLZDqRpM32SPdcxjA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.2.tgz", + "integrity": "sha512-V0ZPX0ts1qtYKV5rMwTt0WBMdO5XG/1ONbN4mZqYOXOW5QYQcOFvCPe56giEh351u9wTp+0czFviFknk8I3xtw==", "dev": true, "dependencies": { "@esm-bundle/chai": "^4.3.4", @@ -425,9 +789,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -702,15 +1066,15 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.1.tgz", - "integrity": "sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "node_modules/@types/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.2.tgz", + "integrity": "sha512-+hQX+WyJAOne7Fh3zF5CxPemILIbuhNcqHHodzK9caYOLnC8pD5efmPleRnw0z++LfKUC/sVNMwk0Gap+B0baA==", "dev": true }, "node_modules/@types/qs": { @@ -745,9 +1109,9 @@ } }, "node_modules/@types/sinon": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.4.tgz", - "integrity": "sha512-fOYjrxQv8zJsqOY6V6ecP4eZhQBxtY80X0er1VVnUIAIZo74jHm8e1vguG5Yt4Iv8W2Wr7TgibB8MfRe32k9pA==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.6.tgz", + "integrity": "sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg==", "dev": true, "dependencies": { "@sinonjs/fake-timers": "^7.1.0" @@ -788,17 +1152,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.0.0.tgz", - "integrity": "sha512-T6V6fCD2U0YesOedvydTnrNtsC8E+c2QzpawIpDdlaObX0OX5dLo7tLU5c64FhTZvA1Xrdim+cXDI7NPsVx8Cg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", + "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.0.0", - "@typescript-eslint/scope-manager": "5.0.0", - "debug": "^4.3.1", + "@typescript-eslint/experimental-utils": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" }, @@ -820,15 +1184,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.0.0.tgz", - "integrity": "sha512-Dnp4dFIsZcPawD6CT1p5NibNUQyGSEz80sULJZkyhyna8AEqArmfwMwJPbmKzWVo4PabqNVzHYlzmcdLQWk+pg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", + "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "5.0.0", - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/typescript-estree": "5.0.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/typescript-estree": "5.3.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -844,15 +1208,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.0.0.tgz", - "integrity": "sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", + "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.0.0", - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/typescript-estree": "5.0.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/typescript-estree": "5.3.0", + "debug": "^4.3.2" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -871,13 +1235,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.0.0.tgz", - "integrity": "sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", + "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/visitor-keys": "5.0.0" + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/visitor-keys": "5.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -888,9 +1252,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.0.0.tgz", - "integrity": "sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", + "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -901,16 +1265,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.0.0.tgz", - "integrity": "sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", + "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/visitor-keys": "5.0.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/visitor-keys": "5.3.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" }, @@ -928,12 +1292,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.0.0.tgz", - "integrity": "sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", + "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.0.0", + "@typescript-eslint/types": "5.3.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -969,9 +1333,9 @@ } }, "node_modules/@web/dev-server": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.25.tgz", - "integrity": "sha512-9ZMUDDIP3QzciF7aoY5x8plOwx2zCWbX2OfPrryKxQx/tQmHb+Z+Z6nLvGtNZZ2KAfHIxhXJXOduRBHxTgIkzg==", + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.26.tgz", + "integrity": "sha512-6gQgvbQwpxEUntgCd15w3b4zjy9c5dkrjV2s9uZA+5jAGHaX64PFrTUx61BqOqVNcEMq6d10rCjXw9qnj/J7ag==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.11", @@ -979,7 +1343,7 @@ "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.1.3", "@web/dev-server-core": "^0.3.16", - "@web/dev-server-rollup": "^0.3.11", + "@web/dev-server-rollup": "^0.3.12", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^6.1.1", @@ -1028,32 +1392,32 @@ } }, "node_modules/@web/dev-server-esbuild": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.14.tgz", - "integrity": "sha512-28nGCnVIRNXIlptBrnuhEIRCwimeLhz3RkQpPct2yX9k4rfuUPH+WQYfVcp3rEozj0cG13zrwZONaCw8SuEZRw==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.15.tgz", + "integrity": "sha512-a4UbG+txNtwKJHV/Ty3BVVODi7xzWDEW+YV8VldzO6cbz/TjLPJv4mRiWbxpcQUfvN7HWGjJVMrM3wGRQAxlZQ==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.3.10", "esbuild": "^0.12.21", "parse5": "^6.0.1", - "ua-parser-js": "^0.7.23" + "ua-parser-js": "^1.0.2" }, "engines": { "node": ">=10.0.0" } }, "node_modules/@web/dev-server-rollup": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.11.tgz", - "integrity": "sha512-heDmLrmV5bNap+fkAJdOKDqVG2ZpXu86CfN3dZqaUgjUMNTLsvgWI2CikD9+QV0tSstfXXwYUuTVeNIEvNjTcA==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.12.tgz", + "integrity": "sha512-nPvBAvmk5ybiUekLhaIweI/2SI+uuUL6S7PQimtjG5Ko8Bp1A00WAeVKRGydScqV4iNIxdc+bOjbyaLked96bQ==", "dev": true, "dependencies": { "@web/dev-server-core": "^0.3.16", "nanocolors": "^0.2.1", "parse5": "^6.0.1", "rollup": "^2.58.0", - "whatwg-url": "^9.0.0" + "whatwg-url": "^11.0.0" }, "engines": { "node": ">=10.0.0" @@ -1093,15 +1457,15 @@ } }, "node_modules/@web/test-runner": { - "version": "0.13.20", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.20.tgz", - "integrity": "sha512-f5Q5KLFU+UQ6SnyghGwXGEfB61dyTE7cla3eAc8d3uPOlHs7u+6gHEuCayQPNIV+cqdHL9DWgVEwGWInyBB2kA==", + "version": "0.13.21", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.21.tgz", + "integrity": "sha512-Aj/Z6vvKgWQlLneg/kGoyw9CWWpiziRzJkqG8ZrblYsWdH/eMJ8+B1KVsjqb+sXjiMg3YTkU9E4IGa7c3nHMvg==", "dev": true, "dependencies": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.3", + "@web/test-runner-chrome": "^0.10.4", "@web/test-runner-commands": "^0.5.10", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -1124,15 +1488,15 @@ } }, "node_modules/@web/test-runner-chrome": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.3.tgz", - "integrity": "sha512-tE0dH1K2iWJMFsJql1sXntRpNXIEaJVN2VVB/HW6nLMtIoqyI/TQgEPZuDGiW2+UlNrXEI9nuL3fOyxW/lZ38g==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.4.tgz", + "integrity": "sha512-MqdmhOh/v7KakDYUnXIpypC5/mxAP/0jw475n8k6eqdMxJ4KIVirwIv582iEV4LU64RQAl8NXxSZkzAapzKC7Q==", "dev": true, "dependencies": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", "chrome-launcher": "^0.14.0", - "puppeteer-core": "^10.2.0" + "puppeteer-core": "^11.0.0" }, "engines": { "node": ">=12.0.0" @@ -1438,9 +1802,9 @@ } }, "node_modules/axe-core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", - "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", + "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", "dev": true, "engines": { "node": ">=4" @@ -1498,6 +1862,11 @@ "readable-stream": "^3.4.0" } }, + "node_modules/blocking-elements": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/blocking-elements/-/blocking-elements-0.1.1.tgz", + "integrity": "sha512-/SLWbEzMoVIMZACCyhD/4Ya2M1PWP1qMKuiymowPcI+PdWDARqeARBjhj73kbUBCxEmTZCUu5TAqxtwUO9C1Ig==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1673,9 +2042,9 @@ "dev": true }, "node_modules/chrome-launcher": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.1.tgz", - "integrity": "sha512-iQ4s61NkIyaozsE2VKg1Vu3YGdD3JGw+fBBrt3FYJi7uflO9TvlTLW4MUq0fq3EKGhzB/QHPd5AsLb14+9++JQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.2.tgz", + "integrity": "sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==", "dev": true, "dependencies": { "@types/node": "*", @@ -1806,12 +2175,12 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 12" } }, "node_modules/comment-parser": { @@ -1897,9 +2266,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz", - "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==", "dev": true, "hasInstallScript": true, "funding": { @@ -2232,9 +2601,9 @@ } }, "node_modules/eslint-plugin-lit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.0.tgz", - "integrity": "sha512-869OEsg1MdI7bYJrOjgkdMXAX9qPZkyxJkScKQMY3vVDKnWxRGow/vI+2zEduKWOZA23Zfg/mUDwYZ5OGkd9eg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", + "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", "dev": true, "dependencies": { "parse5": "^6.0.1", @@ -2249,9 +2618,9 @@ } }, "node_modules/eslint-plugin-lit-a11y": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-2.0.0.tgz", - "integrity": "sha512-mf15aF2WL9z4buVCGmLWH6Et5Ghpibnxn8u8XS8i6Ly7KeKGFUinkG+d1SHBgrXsF6u4c/JqIVA/9Gtfuwg9IA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-2.2.0.tgz", + "integrity": "sha512-1Vy9mR7UGigPnOHj5qJMU3uEK+Qul7dQOg9I6YKEYrw3C3HUx1FS/FbICjZI+n/v+2qvvJhw+5Tghuld2QWUJw==", "dev": true, "dependencies": { "aria-query": "^4.2.2", @@ -2259,7 +2628,9 @@ "axobject-query": "^2.2.0", "dom5": "^3.0.1", "emoji-regex": "^9.2.0", + "eslint-plugin-lit": "^1.6.0", "eslint-rule-extender": "0.0.1", + "language-tags": "^1.0.5", "parse5": "^5.1.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", "requireindex": "~1.2.0" @@ -2275,9 +2646,9 @@ "dev": true }, "node_modules/eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2287,9 +2658,9 @@ } }, "node_modules/eslint-plugin-regexp": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.4.1.tgz", - "integrity": "sha512-ONXJNbJGpbZTFAiTfKuP4i13UGx1xylGRybvFPRQA4HCe1hn68FNpXrrb273WsJm+kjWQC92sxYZ9ppyZdc16A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.5.0.tgz", + "integrity": "sha512-OuYlOF6z2VyurEmELUjY58Wqi4TzsWwgF8+XnToItLwSzNHpDuThy/CxWZ6szIcgQ/02plg7/ZAXQ/RPl7uRxQ==", "dev": true, "dependencies": { "comment-parser": "^1.1.2", @@ -2567,9 +2938,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true, "engines": { @@ -2589,9 +2960,9 @@ } }, "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==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -2898,9 +3269,9 @@ } }, "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "peer": true, "dependencies": { @@ -3083,9 +3454,9 @@ ] }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -3431,9 +3802,9 @@ } }, "node_modules/koa": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.3.tgz", - "integrity": "sha512-XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", "dev": true, "dependencies": { "accepts": "^1.3.5", @@ -3528,6 +3899,21 @@ "ms": "^2.1.1" } }, + "node_modules/language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3647,13 +4033,6 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true, - "peer": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3760,9 +4139,9 @@ } }, "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "bin": { "mime": "cli.js" @@ -3831,6 +4210,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3872,14 +4257,39 @@ } }, "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { "node": "4.x || >=6.0.0" } }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/nodemod": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/nodemod/-/nodemod-3.0.0.tgz", @@ -3970,9 +4380,9 @@ "dev": true }, "node_modules/open": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz", - "integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", @@ -4150,13 +4560,28 @@ } }, "node_modules/playwright": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.15.2.tgz", - "integrity": "sha512-+Z+7ckihyxR6rK5q8DWC6eUbKARfXpyxpjNcoJfgwSr64lAOzjhyFQiPC/JkdIqhsLgZjxpWfl1S7fLb+wPkgA==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.16.3.tgz", + "integrity": "sha512-nfJx/OpIb/8OexL3rYGxNN687hGyaM3XNpfuMzoPlrekURItyuiHHsNhC9oQCx3JDmCn5O3EyyyFCnrZjH6MpA==", "dev": true, "hasInstallScript": true, "dependencies": { - "commander": "^6.1.0", + "playwright-core": "=1.16.3" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/playwright-core": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.16.3.tgz", + "integrity": "sha512-16hF27IvQheJee+DbhC941AUZLjbJgfZFWi9YPS4LKEk/lKFhZI+9TiFD0sboYqb9eaEWvul47uR5xxTVbE4iw==", + "dev": true, + "dependencies": { + "commander": "^8.2.0", "debug": "^4.1.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.0", @@ -4167,12 +4592,14 @@ "proper-lockfile": "^4.1.1", "proxy-from-env": "^1.1.0", "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", "stack-utils": "^2.0.3", "ws": "^7.4.6", + "yauzl": "^2.10.0", "yazl": "^2.5.1" }, "bin": { - "playwright": "lib/cli/cli.js" + "playwright": "cli.js" }, "engines": { "node": ">=12" @@ -4278,54 +4705,49 @@ } }, "node_modules/puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", + "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", "dev": true, "dependencies": { - "debug": "4.3.1", + "debug": "4.3.2", "devtools-protocol": "0.0.901419", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.5", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "engines": { "node": ">=10.18.1" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "supports-color": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/puppeteer-core/node_modules/progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -4628,9 +5050,9 @@ } }, "node_modules/rollup": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", - "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -4821,6 +5243,44 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", + "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -4954,14 +5414,13 @@ } }, "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "peer": true, "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -5029,27 +5488,15 @@ "peer": true }, "node_modules/tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "dependencies": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/tar-fs/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "tar-stream": "^2.1.4" } }, "node_modules/tar-stream": { @@ -5103,15 +5550,15 @@ } }, "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "dependencies": { "punycode": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/tslib": { @@ -5220,9 +5667,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", "dev": true, "funding": [ { @@ -5239,9 +5686,9 @@ } }, "node_modules/unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "dependencies": { "buffer": "^5.2.1", @@ -5304,22 +5751,22 @@ } }, "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "engines": { - "node": ">=10.4" + "node": ">=12" } }, "node_modules/whatwg-url": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-9.1.0.tgz", - "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "dependencies": { - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=12" @@ -5341,6 +5788,11 @@ "node": ">= 8" } }, + "node_modules/wicg-inert": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/wicg-inert/-/wicg-inert-3.1.1.tgz", + "integrity": "sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A==" + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -5427,9 +5879,9 @@ "dev": true }, "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==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", "dev": true, "engines": { "node": ">=8.3.0" @@ -5508,39 +5960,39 @@ "dev": true }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", + "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", - "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", + "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", "dev": true, "requires": { - "core-js-pure": "^3.16.0", + "core-js-pure": "^3.19.0", "regenerator-runtime": "^0.13.4" } }, "@commitlint/config-conventional": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-13.2.0.tgz", - "integrity": "sha512-7u7DdOiF+3qSdDlbQGfpvCH8DCQdLFvnI2+VucYmmV7E92iD6t9PBj+UjIoSQCaMAzYp27Vkall78AkcXBh6Xw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", + "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", "dev": true, "requires": { "conventional-changelog-conventionalcommits": "^4.3.1" @@ -5595,9 +6047,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true, "peer": true }, @@ -5607,128 +6059,489 @@ "integrity": "sha512-dJMha+4NFYdpnUJzRrWTFV5Hdp9QHWFuPnaoqonrKl4lGJVnYez9mu8ev9F/5KM47tjAjh22DuRHrdFDHfOijA==" }, "@material/animation": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-r2H1k9iSLw/gR16TFAL8rCcr13unLyLVhI79FV39D2w6FvjXIH4XUqCOwHjUxDkO7NiHuB4TBCC5trgGVmwrXg==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-OjxWJYSRNs4vnPe8NclaNn+TsNc8TR/wHusGtezF5F+wl+5mh+K69BMXAmURtq3idoRg4XaOSC/Ohk1ovD1fMQ==", "requires": { "tslib": "^2.1.0" } }, "@material/base": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-Qg2H+G+QmJ5eXLaMDU5E6r3gHchRFmVxeYcgjPJ9LOGoneYELjahLFFdjMTkktCRF6vhIgP2dZ0YBejtMNpo3w==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-vy5SQt+jcwwdRFfBvtpVdpULUBujecVUKOXcopaQoi2XIzI5EBHuR4gPN0cd1yfmVEucD6p2fvVv2FJ3Ngr61w==", "requires": { "tslib": "^2.1.0" } }, + "@material/button": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-DB0MAvdIGWKuFwlQ57hjv7ZuHIioT2mnG7RWtL7ZoCWoY45nCrsbJirmX5zZFipm9gIOJ3YnIkIrUyMVSrDX+g==", + "requires": { + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/tokens": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/density": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-zOR5wISqPVr8KS/ERNC1jdRV9O832lzclyS9Ea20rDrWfuOiYsQ9bbIk12xWlxpgsn7r9fxQJyd1O2SURoHdRA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/dialog": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-NfQR0fmNS/y2iRAx5YeODLLywBAnSyZI/CL9GUq4NiNj+FeSxe+5bhG1p9NxHeGMjEVrl6fG5L9ql7lqtfQaYQ==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/button": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/icon-button": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/tokens": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, "@material/dom": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-nKETPNDJ3rR8T6KoLzTLiyuBctYBk5YuVSWlfrdA6GQnJR50GplUcaD0BYycpYfoYlIDh0lsfSjuTt2hpoBu8w==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-iUpZG6Bb2l/PfNV2Fb/pXfG1p4Bz4PC9A7ATPlKfcU5HioObcnYVc/+Hrtaw8eu28BNIc+VVROtbfpqG/YgKSQ==", + "requires": { + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/elevation": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-AqN/tsTGGyBzZ7CtoSMBY9bDYvCuUt98EUfiGjZGXcf4HgoHV3Cn/JSLrhru5Cq8Nx6HF6AmHh3dQCfNCQduew==", "requires": { - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "@material/feature-targeting": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-JhFsnWvNwdGfbNGC1F3+QlYKWpAFfRkPhtuOjrs9G1DRZWj2zIy7ZuJTvtefK4VntDY+8vDFVwm8sV+9bn8eow==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-CrVoGNu0ym52OPEKy3kgeNL2oSWOCBYbYxSH3GhERxCq5FwGBN+XmK/ZDLFVQlHYy3v8x4TqVEwXviCeumNTxQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/floating-label": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-Cp0/LngkW6/uZWbEDTe3Ox143V4kYtxl9twiM3XLKd6a67JHCzneQWFzC0qSg90b3r5O+1zOkT3ZMF2Pbu2Vwg==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/icon-button": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-9P6cjRqKtjE6ML+r5yz0ExU/f2KLdNabHQxmO6RpKd/FnjTyP1NcWqqj8dsvo/DZ7mOtT1MIThgkQDdiMqcYLg==", + "requires": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/line-ripple": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-LlyiyxpHNlFt0PZ8Q2tvOPbjNcgm3L7tUebXsM7iGyoKXfj0HwyDI31S0KgtU3Vs5DIK4U4mnRWtoAxtBW6Jfg==", "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/list": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bjHXXk2ZeWxAFs4cJxy5J5A5ClUd3FGjRv/LwCYpsh7Dm7e8kSe8Lw2MWb6FXyF3mDJM6xqN3xXQWOh6UEu5wA==", + "requires": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/menu": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-x59UHoTLvEsPKjFdffrKTgEyc0T4W3m58RsizAmapXr59Uthq8+PTFOkAv9R1PV/ZCzxay7Vx+QcekC4qOr40A==", + "requires": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/list": "14.0.0-canary.261f2db59.0", + "@material/menu-surface": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/menu-surface": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-zv/fv/W3zdSb+c/p6GNcOqA3+wAc/r8MOtV53WJPLlvZZSpGoTwHUp+GPiNeovfbsTSxN95XOXuVQBEfKEb8vA==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/elevation": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "@material/mwc-base": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.25.2.tgz", - "integrity": "sha512-nTJyaC8nCnZUAvxn5l7NH25FyvgOGyp8HoAWZeddXW9k5tg6esQYfebauWQG0p4si/gcfk9LFCzyl0MLutMEUA==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-base/-/mwc-base-0.25.3.tgz", + "integrity": "sha512-4wvxZ9dhPr0O4jjOHPmFyn77pafe+h1gHPlT9sbQ+ly8NY/fSn/TXn7/PbxgL8g4ZHxMvD3o7PJopg+6cbHp8Q==", "requires": { "@lit/reactive-element": "1.0.0-rc.4", - "@material/base": "=14.0.0-canary.353ca7e9f.0", - "@material/dom": "=14.0.0-canary.353ca7e9f.0", + "@material/base": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "@material/mwc-button": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.25.2.tgz", - "integrity": "sha512-1gGvbK9N9LQQhuBJ9JZ2TEzlW2og+okwFlVOcFXBIOFb34LZ69djp70BqZ7oTrz6CLCDXR6m7EKGsQfSNPqAtg==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-button/-/mwc-button-0.25.3.tgz", + "integrity": "sha512-usHEKchj9hqetY7n0yebTz1Pk9Z+9W/sNZheFoSaiWQCv9XhtCdKkHH0MXTv8SpwxWuEKUf/XjtyvikGIcIn7w==", + "requires": { + "@material/mwc-icon": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-checkbox": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-checkbox/-/mwc-checkbox-0.25.3.tgz", + "integrity": "sha512-PSh9IAgQK4XiDzBwgclheejkA4cbZ3K9V1JTTl/YVRDD/OLLM+Bh8tbnAg/1kGVlPWOUfDrYCcZ0gg472ca7gw==", "requires": { - "@material/mwc-icon": "^0.25.2", - "@material/mwc-ripple": "^0.25.2", + "@material/mwc-base": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-dialog": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-dialog/-/mwc-dialog-0.25.3.tgz", + "integrity": "sha512-UpxAYAzKXO1MW4ezpiYfEQgov08p0J8KDVKqKrMwg7lsZRkAtUMk4YJkM6qmWGqGPqd/cN++42PMPHAISJH3yA==", + "requires": { + "@material/dialog": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-button": "^0.25.3", + "blocking-elements": "^0.1.0", + "lit": "^2.0.0", + "tslib": "^2.0.1", + "wicg-inert": "^3.0.0" + } + }, + "@material/mwc-floating-label": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-floating-label/-/mwc-floating-label-0.25.3.tgz", + "integrity": "sha512-3uFMi8Y680P0nzP5zih4YuOZJLl/C6Ux9G810Unwo44zblG/ckgJlFiM+T+oR+OH5KM8LbfNlV0ypo7FT5zYJA==", + "requires": { + "@material/floating-label": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "@material/mwc-icon": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.25.2.tgz", - "integrity": "sha512-W0qJRUE7Q2nFkOwV+8rlDXaRgZtH0FaWr1C2nUykv4IqXLeAGIb9u6XSuDCbBxuvHeqG2hFmEbfQ5zJoWU21kw==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-icon/-/mwc-icon-0.25.3.tgz", + "integrity": "sha512-36076AWZIRSr8qYOLjuDDkxej/HA0XAosrj7TS1ZeLlUBnLUtbDtvc1S7KSa0hqez7ouzOqGaWK24yoNnTa2OA==", "requires": { "lit": "^2.0.0", "tslib": "^2.0.1" } }, "@material/mwc-icon-button": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-icon-button/-/mwc-icon-button-0.25.2.tgz", - "integrity": "sha512-OHbTkux0j4eDdK8Aa7Zi729vRfTWh730/ZjgvN6Q//Lh7x+QiWeapfeUA615hvftCvhFhzI7Zo0a+TBxOqce4A==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-icon-button/-/mwc-icon-button-0.25.3.tgz", + "integrity": "sha512-FexkMpK3ZSHh7NF+PIqvVhvAbBOgFDYPck/lqnxIDC3VGJ0rjD/1MqevDy2fY6IcHGlc8Ai7VuYbdQ6Cvw8WcQ==", + "requires": { + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-line-ripple": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-line-ripple/-/mwc-line-ripple-0.25.3.tgz", + "integrity": "sha512-ANJzSyumb+shBVTIhqF1+YByPU/EpFXxI9CS26qThFqlUDpYXg5xcoZpkMSmZv3Wv/loF1rs2mJfFWOcC6nFnw==", + "requires": { + "@material/line-ripple": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-list": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-list/-/mwc-list-0.25.3.tgz", + "integrity": "sha512-2T297qVaQsKv+QDNP2ag9g04RLKO1tm2F6BwwqvdbXTsY+LKYOJe2/aSe0kX2tQLayX4ydy2RnTevo9Ld+c+4g==", "requires": { - "@material/mwc-ripple": "^0.25.2", + "@material/base": "=14.0.0-canary.261f2db59.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/list": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-checkbox": "^0.25.3", + "@material/mwc-radio": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-menu": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-menu/-/mwc-menu-0.25.3.tgz", + "integrity": "sha512-jr5R61BfqrJC0lsAI63y4BsEM2eY3n6kiCy2ZnwinmxrfFrS709T/zuSUUW/xG9b9inSku4WjjSkDhPzQrmS3g==", + "requires": { + "@material/menu": "=14.0.0-canary.261f2db59.0", + "@material/menu-surface": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-list": "^0.25.3", + "@material/shape": "=14.0.0-canary.261f2db59.0", + "@material/theme": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-notched-outline": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-notched-outline/-/mwc-notched-outline-0.25.3.tgz", + "integrity": "sha512-8jvU8GD0Pke+pfTQ0PdXpZmkU3XIHhMVY6AHM/2IQrXHkVZmAm9kbwL7ne3Ao+6f5n+DeXDGd+SG9U6ZZjD7gw==", + "requires": { + "@material/mwc-base": "^0.25.3", + "@material/notched-outline": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/mwc-radio": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-radio/-/mwc-radio-0.25.3.tgz", + "integrity": "sha512-SXpVDrsQnz7+2w/kfBxcOJ4P+uJ0RxBd9mCLE7wVyN53gDLkNHqA0npdl2PNpRaaMavVrt27L8wWo5QIT+7zWA==", + "requires": { + "@material/mwc-base": "^0.25.3", + "@material/mwc-ripple": "^0.25.3", + "@material/radio": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, "@material/mwc-ripple": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.25.2.tgz", - "integrity": "sha512-z39JamHlKVEG0nRfyJeFUACbGjP6AqP0uUamE7qFtuJFQTlCU/jvdBoFdNo5V3xtKIN3/iH8ca3BXVxRC8u63A==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-ripple/-/mwc-ripple-0.25.3.tgz", + "integrity": "sha512-G/gt/csxgME6/sAku3GiuB0O2LLvoPWsRTLq/9iABpaGLJjqaKHvNg/IVzNDdF3YZT7EORgR9cBWWl7umA4i4Q==", "requires": { - "@material/dom": "=14.0.0-canary.353ca7e9f.0", - "@material/mwc-base": "^0.25.2", - "@material/ripple": "=14.0.0-canary.353ca7e9f.0", + "@material/dom": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/ripple": "=14.0.0-canary.261f2db59.0", "lit": "^2.0.0", "tslib": "^2.0.1" } }, + "@material/mwc-textfield": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@material/mwc-textfield/-/mwc-textfield-0.25.3.tgz", + "integrity": "sha512-stpZ8sEyo2Mb9fG2XCoTc1Kom8oRXZiVI5rU88GtfcBU7nH0em8S4grq9X1mVfUG6Cfi1G/T+avCSIhzbYtr0w==", + "requires": { + "@material/floating-label": "=14.0.0-canary.261f2db59.0", + "@material/line-ripple": "=14.0.0-canary.261f2db59.0", + "@material/mwc-base": "^0.25.3", + "@material/mwc-floating-label": "^0.25.3", + "@material/mwc-line-ripple": "^0.25.3", + "@material/mwc-notched-outline": "^0.25.3", + "@material/textfield": "=14.0.0-canary.261f2db59.0", + "lit": "^2.0.0", + "tslib": "^2.0.1" + } + }, + "@material/notched-outline": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-gtn+IKAiX2rbfbX3a9aDlfUoKCEYrlAPOZifKXUaZ4UJYMNLzZuAqy7l5Ds30emtqUE22mySTEWqhzK6dePKsA==", + "requires": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/floating-label": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/radio": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-AvrsOqhP8UZ5d58RWgaTmQVlWQRULwk2BXhsEhtxz56CmTsyVM49thNbaNnc/TzuY9Ssxv/L2wYVbR2B3BX9Yw==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/touch-target": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, "@material/ripple": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-5/n2bZ2TmVJGDzSn0jjHHaI21h2tgTADxVocSzecXUFj/XuHOHlIVIPQRlNOYhx/ZG1rD2DOdLNi+CemBizZqQ==", - "requires": { - "@material/animation": "14.0.0-canary.353ca7e9f.0", - "@material/base": "14.0.0-canary.353ca7e9f.0", - "@material/dom": "14.0.0-canary.353ca7e9f.0", - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", - "@material/rtl": "14.0.0-canary.353ca7e9f.0", - "@material/theme": "14.0.0-canary.353ca7e9f.0", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-3FLCLj8X7KrFfuYBHJg1b7Odb3V/AW7fxk3m1i1zhDnygKmlQ/abVucH1s2qbX3Y+JIiq+5/C5407h9BFtOf+A==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "@material/rtl": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-3NuIyWGSPyc4ZzxBRjZvMNmGodrOYNmD4ef1CCT0erfVP7/DFyEaFcIkwfqQJo2vL/j+IiKq/mS4f2kekLjPdQ==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bVnXBbUsHs57+EXdeFbcwaKy3lT/itI/qTLmJ88ar0qaGEujO1GmESHm3ioqkeo4kQpTfDhBwQGeEi1aDaTdFg==", "requires": { - "@material/theme": "14.0.0-canary.353ca7e9f.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/shape": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-VjcQltd1uF9ugvLExMy00SMISjy/370o8lsZlb1T+xHyhXHL3UxeuWYLW5Amq6mbx65+c9Df9WmlXXOdebpEkw==", + "requires": { + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/textfield": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-KBPgpvvVFBfLx9nc6+wWOS2hJ40JVwh5KBjMoYbiOEFLf0O7SgCAVREHaFAXrPsC8AeTyUipx6TReONIGfMCPQ==", + "requires": { + "@material/animation": "14.0.0-canary.261f2db59.0", + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/density": "14.0.0-canary.261f2db59.0", + "@material/dom": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/floating-label": "14.0.0-canary.261f2db59.0", + "@material/line-ripple": "14.0.0-canary.261f2db59.0", + "@material/notched-outline": "14.0.0-canary.261f2db59.0", + "@material/ripple": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "@material/shape": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", + "@material/typography": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "@material/theme": { - "version": "14.0.0-canary.353ca7e9f.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0-canary.353ca7e9f.0.tgz", - "integrity": "sha512-1gWWB6ZuKoNDwWpeCbxu2UYWRAhuRW25KWPw4tZIOw2jwN6gqptgyyweC18vLhT/YuSvq15bReiAeo7WyOfg6A==", + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-bUqyFT0QF8Nxx02fekt3CXIfC9DEPOPdo2hjgdtvhrNP+vftbkI2tKZ5/uRUnVA+zqQAOyIl5z6FOMg4fyemCA==", "requires": { - "@material/feature-targeting": "14.0.0-canary.353ca7e9f.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/tokens": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-mgar9gsLv00HTvXIDvNR1vEEXpfKgeWhVTO8a7aWofSNyENNOVc5ImJwBgCAMb5SgLHBi6w8/c1tPzjOewBfCA==", + "requires": { + "@material/elevation": "14.0.0-canary.261f2db59.0" + } + }, + "@material/touch-target": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-xA6TTHN7aOTXg/+c6mQJlogzTD+Sp8WPC5TK8RBXbQxEykGXGW15p+H9pG+rX/gzD5iehnHRBrDUFmAGoskhcQ==", + "requires": { + "@material/base": "14.0.0-canary.261f2db59.0", + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/rtl": "14.0.0-canary.261f2db59.0", + "tslib": "^2.1.0" + } + }, + "@material/typography": { + "version": "14.0.0-canary.261f2db59.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-14.0.0-canary.261f2db59.0.tgz", + "integrity": "sha512-WOCdcNkD5KBRAwICcRqWBRG3cDkyrwK5USTNmG0oxnwnZAN7daOpPTdLppVAhadE7faj8d67ON+V9pH7+T62FQ==", + "requires": { + "@material/feature-targeting": "14.0.0-canary.261f2db59.0", + "@material/theme": "14.0.0-canary.261f2db59.0", "tslib": "^2.1.0" } }, "@mdn/browser-compat-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.6.tgz", - "integrity": "sha512-sjwvUfaKRKHNgOgEOgIEOnYc8iNeRlcFYdUzCFejN5bJUe0ob4C9VNIzNMtQ2Qb/UAOopSjWX/YyupxQFm36/g==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.9.tgz", + "integrity": "sha512-6Viqyrqpb7fVXJ5VoIIu5UdQR9ftk1kvh4X40FQhy5IOFnawQ38CpEZw34ZPOtpVed72W27m3gRSJo+4qAFuqA==", "dev": true }, "@nodelib/fs.scandir": { @@ -5811,9 +6624,9 @@ } }, "@open-wc/testing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.1.tgz", - "integrity": "sha512-8ZVdmNT8e0hcB0tGrdfsvWydpDUr+1oeQ4XRm2T3Ck+nTJIddQO28tO0OvDLrJU/5WtT7LLZDqRpM32SPdcxjA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.2.tgz", + "integrity": "sha512-V0ZPX0ts1qtYKV5rMwTt0WBMdO5XG/1ONbN4mZqYOXOW5QYQcOFvCPe56giEh351u9wTp+0czFviFknk8I3xtw==", "dev": true, "requires": { "@esm-bundle/chai": "^4.3.4", @@ -5843,9 +6656,9 @@ "dev": true }, "@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -6105,15 +6918,15 @@ "dev": true }, "@types/node": { - "version": "16.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.1.tgz", - "integrity": "sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "@types/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.2.tgz", + "integrity": "sha512-+hQX+WyJAOne7Fh3zF5CxPemILIbuhNcqHHodzK9caYOLnC8pD5efmPleRnw0z++LfKUC/sVNMwk0Gap+B0baA==", "dev": true }, "@types/qs": { @@ -6148,9 +6961,9 @@ } }, "@types/sinon": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.4.tgz", - "integrity": "sha512-fOYjrxQv8zJsqOY6V6ecP4eZhQBxtY80X0er1VVnUIAIZo74jHm8e1vguG5Yt4Iv8W2Wr7TgibB8MfRe32k9pA==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.6.tgz", + "integrity": "sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg==", "dev": true, "requires": { "@sinonjs/fake-timers": "^7.1.0" @@ -6191,85 +7004,85 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.0.0.tgz", - "integrity": "sha512-T6V6fCD2U0YesOedvydTnrNtsC8E+c2QzpawIpDdlaObX0OX5dLo7tLU5c64FhTZvA1Xrdim+cXDI7NPsVx8Cg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", + "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.0.0", - "@typescript-eslint/scope-manager": "5.0.0", - "debug": "^4.3.1", + "@typescript-eslint/experimental-utils": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" } }, "@typescript-eslint/experimental-utils": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.0.0.tgz", - "integrity": "sha512-Dnp4dFIsZcPawD6CT1p5NibNUQyGSEz80sULJZkyhyna8AEqArmfwMwJPbmKzWVo4PabqNVzHYlzmcdLQWk+pg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", + "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "5.0.0", - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/typescript-estree": "5.0.0", + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/typescript-estree": "5.3.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.0.0.tgz", - "integrity": "sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", + "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.0.0", - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/typescript-estree": "5.0.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/typescript-estree": "5.3.0", + "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.0.0.tgz", - "integrity": "sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", + "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", "dev": true, "requires": { - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/visitor-keys": "5.0.0" + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/visitor-keys": "5.3.0" } }, "@typescript-eslint/types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.0.0.tgz", - "integrity": "sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", + "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.0.0.tgz", - "integrity": "sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", + "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", "dev": true, "requires": { - "@typescript-eslint/types": "5.0.0", - "@typescript-eslint/visitor-keys": "5.0.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/visitor-keys": "5.3.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.0.0.tgz", - "integrity": "sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", + "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.0.0", + "@typescript-eslint/types": "5.3.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -6292,9 +7105,9 @@ } }, "@web/dev-server": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.25.tgz", - "integrity": "sha512-9ZMUDDIP3QzciF7aoY5x8plOwx2zCWbX2OfPrryKxQx/tQmHb+Z+Z6nLvGtNZZ2KAfHIxhXJXOduRBHxTgIkzg==", + "version": "0.1.26", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.26.tgz", + "integrity": "sha512-6gQgvbQwpxEUntgCd15w3b4zjy9c5dkrjV2s9uZA+5jAGHaX64PFrTUx61BqOqVNcEMq6d10rCjXw9qnj/J7ag==", "dev": true, "requires": { "@babel/code-frame": "^7.12.11", @@ -6302,7 +7115,7 @@ "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.1.3", "@web/dev-server-core": "^0.3.16", - "@web/dev-server-rollup": "^0.3.11", + "@web/dev-server-rollup": "^0.3.12", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^6.1.1", @@ -6357,29 +7170,29 @@ } }, "@web/dev-server-esbuild": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.14.tgz", - "integrity": "sha512-28nGCnVIRNXIlptBrnuhEIRCwimeLhz3RkQpPct2yX9k4rfuUPH+WQYfVcp3rEozj0cG13zrwZONaCw8SuEZRw==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.15.tgz", + "integrity": "sha512-a4UbG+txNtwKJHV/Ty3BVVODi7xzWDEW+YV8VldzO6cbz/TjLPJv4mRiWbxpcQUfvN7HWGjJVMrM3wGRQAxlZQ==", "dev": true, "requires": { "@mdn/browser-compat-data": "^4.0.0", "@web/dev-server-core": "^0.3.10", "esbuild": "^0.12.21", "parse5": "^6.0.1", - "ua-parser-js": "^0.7.23" + "ua-parser-js": "^1.0.2" } }, "@web/dev-server-rollup": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.11.tgz", - "integrity": "sha512-heDmLrmV5bNap+fkAJdOKDqVG2ZpXu86CfN3dZqaUgjUMNTLsvgWI2CikD9+QV0tSstfXXwYUuTVeNIEvNjTcA==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.12.tgz", + "integrity": "sha512-nPvBAvmk5ybiUekLhaIweI/2SI+uuUL6S7PQimtjG5Ko8Bp1A00WAeVKRGydScqV4iNIxdc+bOjbyaLked96bQ==", "dev": true, "requires": { "@web/dev-server-core": "^0.3.16", "nanocolors": "^0.2.1", "parse5": "^6.0.1", "rollup": "^2.58.0", - "whatwg-url": "^9.0.0" + "whatwg-url": "^11.0.0" } }, "@web/parse5-utils": { @@ -6393,15 +7206,15 @@ } }, "@web/test-runner": { - "version": "0.13.20", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.20.tgz", - "integrity": "sha512-f5Q5KLFU+UQ6SnyghGwXGEfB61dyTE7cla3eAc8d3uPOlHs7u+6gHEuCayQPNIV+cqdHL9DWgVEwGWInyBB2kA==", + "version": "0.13.21", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.21.tgz", + "integrity": "sha512-Aj/Z6vvKgWQlLneg/kGoyw9CWWpiziRzJkqG8ZrblYsWdH/eMJ8+B1KVsjqb+sXjiMg3YTkU9E4IGa7c3nHMvg==", "dev": true, "requires": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.3", + "@web/test-runner-chrome": "^0.10.4", "@web/test-runner-commands": "^0.5.10", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -6417,15 +7230,15 @@ } }, "@web/test-runner-chrome": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.3.tgz", - "integrity": "sha512-tE0dH1K2iWJMFsJql1sXntRpNXIEaJVN2VVB/HW6nLMtIoqyI/TQgEPZuDGiW2+UlNrXEI9nuL3fOyxW/lZ38g==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.4.tgz", + "integrity": "sha512-MqdmhOh/v7KakDYUnXIpypC5/mxAP/0jw475n8k6eqdMxJ4KIVirwIv582iEV4LU64RQAl8NXxSZkzAapzKC7Q==", "dev": true, "requires": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", "chrome-launcher": "^0.14.0", - "puppeteer-core": "^10.2.0" + "puppeteer-core": "^11.0.0" } }, "@web/test-runner-commands": { @@ -6661,9 +7474,9 @@ } }, "axe-core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.3.tgz", - "integrity": "sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", + "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", "dev": true }, "axobject-query": { @@ -6701,6 +7514,11 @@ "readable-stream": "^3.4.0" } }, + "blocking-elements": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/blocking-elements/-/blocking-elements-0.1.1.tgz", + "integrity": "sha512-/SLWbEzMoVIMZACCyhD/4Ya2M1PWP1qMKuiymowPcI+PdWDARqeARBjhj73kbUBCxEmTZCUu5TAqxtwUO9C1Ig==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6824,9 +7642,9 @@ "dev": true }, "chrome-launcher": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.1.tgz", - "integrity": "sha512-iQ4s61NkIyaozsE2VKg1Vu3YGdD3JGw+fBBrt3FYJi7uflO9TvlTLW4MUq0fq3EKGhzB/QHPd5AsLb14+9++JQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.2.tgz", + "integrity": "sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==", "dev": true, "requires": { "@types/node": "*", @@ -6930,9 +7748,9 @@ } }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "comment-parser": { @@ -7003,9 +7821,9 @@ } }, "core-js-pure": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz", - "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==", "dev": true }, "cross-spawn": { @@ -7372,9 +8190,9 @@ } }, "eslint-plugin-lit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.0.tgz", - "integrity": "sha512-869OEsg1MdI7bYJrOjgkdMXAX9qPZkyxJkScKQMY3vVDKnWxRGow/vI+2zEduKWOZA23Zfg/mUDwYZ5OGkd9eg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.6.1.tgz", + "integrity": "sha512-BpPoWVhf8dQ/Sz5Pi9NlqbGoH5BcMcVyXhi2XTx2XGMAO9U2lS+GTSsqJjI5hL3OuxCicNiUEWXazAwi9cAGxQ==", "dev": true, "requires": { "parse5": "^6.0.1", @@ -7383,9 +8201,9 @@ } }, "eslint-plugin-lit-a11y": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-2.0.0.tgz", - "integrity": "sha512-mf15aF2WL9z4buVCGmLWH6Et5Ghpibnxn8u8XS8i6Ly7KeKGFUinkG+d1SHBgrXsF6u4c/JqIVA/9Gtfuwg9IA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit-a11y/-/eslint-plugin-lit-a11y-2.2.0.tgz", + "integrity": "sha512-1Vy9mR7UGigPnOHj5qJMU3uEK+Qul7dQOg9I6YKEYrw3C3HUx1FS/FbICjZI+n/v+2qvvJhw+5Tghuld2QWUJw==", "dev": true, "requires": { "aria-query": "^4.2.2", @@ -7393,7 +8211,9 @@ "axobject-query": "^2.2.0", "dom5": "^3.0.1", "emoji-regex": "^9.2.0", + "eslint-plugin-lit": "^1.6.0", "eslint-rule-extender": "0.0.1", + "language-tags": "^1.0.5", "parse5": "^5.1.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", "requireindex": "~1.2.0" @@ -7408,16 +8228,16 @@ } }, "eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "requires": {} }, "eslint-plugin-regexp": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.4.1.tgz", - "integrity": "sha512-ONXJNbJGpbZTFAiTfKuP4i13UGx1xylGRybvFPRQA4HCe1hn68FNpXrrb273WsJm+kjWQC92sxYZ9ppyZdc16A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-1.5.0.tgz", + "integrity": "sha512-OuYlOF6z2VyurEmELUjY58Wqi4TzsWwgF8+XnToItLwSzNHpDuThy/CxWZ6szIcgQ/02plg7/ZAXQ/RPl7uRxQ==", "dev": true, "requires": { "comment-parser": "^1.1.2", @@ -7515,9 +8335,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true } @@ -7533,9 +8353,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -7774,9 +8594,9 @@ } }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "peer": true, "requires": { @@ -7902,9 +8722,9 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "import-fresh": { @@ -8156,9 +8976,9 @@ "dev": true }, "koa": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.3.tgz", - "integrity": "sha512-XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", "dev": true, "requires": { "accepts": "^1.3.5", @@ -8243,6 +9063,21 @@ } } }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8357,13 +9192,6 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true, - "peer": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8445,9 +9273,9 @@ } }, "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, "mime-db": { @@ -8492,6 +9320,12 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -8524,10 +9358,37 @@ "dev": true }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "nodemod": { "version": "3.0.0", @@ -8594,9 +9455,9 @@ "dev": true }, "open": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz", - "integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -8726,12 +9587,21 @@ } }, "playwright": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.15.2.tgz", - "integrity": "sha512-+Z+7ckihyxR6rK5q8DWC6eUbKARfXpyxpjNcoJfgwSr64lAOzjhyFQiPC/JkdIqhsLgZjxpWfl1S7fLb+wPkgA==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.16.3.tgz", + "integrity": "sha512-nfJx/OpIb/8OexL3rYGxNN687hGyaM3XNpfuMzoPlrekURItyuiHHsNhC9oQCx3JDmCn5O3EyyyFCnrZjH6MpA==", + "dev": true, + "requires": { + "playwright-core": "=1.16.3" + } + }, + "playwright-core": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.16.3.tgz", + "integrity": "sha512-16hF27IvQheJee+DbhC941AUZLjbJgfZFWi9YPS4LKEk/lKFhZI+9TiFD0sboYqb9eaEWvul47uR5xxTVbE4iw==", "dev": true, "requires": { - "commander": "^6.1.0", + "commander": "^8.2.0", "debug": "^4.1.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.0", @@ -8742,8 +9612,10 @@ "proper-lockfile": "^4.1.1", "proxy-from-env": "^1.1.0", "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", "stack-utils": "^2.0.3", "ws": "^7.4.6", + "yauzl": "^2.10.0", "yazl": "^2.5.1" } }, @@ -8831,39 +9703,31 @@ "dev": true }, "puppeteer-core": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-10.4.0.tgz", - "integrity": "sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", + "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", "dev": true, "requires": { - "debug": "4.3.1", + "debug": "4.3.2", "devtools-protocol": "0.0.901419", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.5", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true + "requires": {} } } }, @@ -9088,9 +9952,9 @@ } }, "rollup": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", - "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", + "version": "2.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -9232,6 +10096,33 @@ } } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", + "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -9330,14 +10221,13 @@ } }, "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "peer": true, "requires": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -9393,26 +10283,15 @@ } }, "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "requires": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "tar-stream": "^2.1.4" } }, "tar-stream": { @@ -9457,9 +10336,9 @@ "dev": true }, "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "requires": { "punycode": "^2.1.1" @@ -9539,15 +10418,15 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", "dev": true }, "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "requires": { "buffer": "^5.2.1", @@ -9601,19 +10480,19 @@ "dev": true }, "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true }, "whatwg-url": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-9.1.0.tgz", - "integrity": "sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, "requires": { - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } }, "which": { @@ -9626,6 +10505,11 @@ "isexe": "^2.0.0" } }, + "wicg-inert": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/wicg-inert/-/wicg-inert-3.1.1.tgz", + "integrity": "sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A==" + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -9695,9 +10579,9 @@ "dev": true }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index f39055c7b..60654aa49 100644 --- a/package.json +++ b/package.json @@ -72,30 +72,33 @@ ] }, "dependencies": { - "@material/mwc-base": "^0.25.2", - "@material/mwc-button": "^0.25.2", - "@material/mwc-icon-button": "^0.25.2", + "@material/mwc-base": "^0.25.3", + "@material/mwc-button": "^0.25.3", + "@material/mwc-dialog": "^0.25.3", + "@material/mwc-icon-button": "^0.25.3", + "@material/mwc-menu": "^0.25.3", + "@material/mwc-textfield": "^0.25.3", "lit": "^2.0.2", "nodemod": "^3.0.0", "tslib": "^2.3.1" }, "devDependencies": { - "@commitlint/config-conventional": "^13.1.0", - "@open-wc/testing": "^3.0.1", + "@commitlint/config-conventional": "^14.1.0", + "@open-wc/testing": "^3.0.2", "@reallyland/tsconfig": "^3.0.2", - "@rollup/plugin-node-resolve": "^13.0.4", + "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "@web/dev-server-esbuild": "^0.2.14", - "@web/dev-server-rollup": "^0.3.11", - "@web/test-runner": "^0.13.20", + "@typescript-eslint/eslint-plugin": "^5.3.0", + "@typescript-eslint/parser": "^5.3.0", + "@web/dev-server-esbuild": "^0.2.15", + "@web/dev-server-rollup": "^0.3.12", + "@web/test-runner": "^0.13.21", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", - "eslint-plugin-lit": "^1.6.0", - "eslint-plugin-lit-a11y": "^2.0.0", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-regexp": "^1.4.1", + "eslint-plugin-lit": "^1.6.1", + "eslint-plugin-lit-a11y": "^2.2.0", + "eslint-plugin-promise": "^5.1.1", + "eslint-plugin-regexp": "^1.5.0", "eslint-plugin-simple-import-sort": "^7.0.0", "typescript": "^4.4.4" }, From 71eeb1a1cb6072b7fd75c5b32d06db67e3494233 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 12:33:41 +0800 Subject: [PATCH 110/276] feat: implement DatePickerInputSurface --- .../app-date-picker-input-surface.ts | 14 ++++++++++++ src/date-picker-input-surface/constants.ts | 1 + .../date-picker-input-surface.ts | 22 +++++++++++++++++++ src/date-picker-input-surface/stylings.ts | 12 ++++++++++ 4 files changed, 49 insertions(+) create mode 100644 src/date-picker-input-surface/app-date-picker-input-surface.ts create mode 100644 src/date-picker-input-surface/constants.ts create mode 100644 src/date-picker-input-surface/date-picker-input-surface.ts create mode 100644 src/date-picker-input-surface/stylings.ts diff --git a/src/date-picker-input-surface/app-date-picker-input-surface.ts b/src/date-picker-input-surface/app-date-picker-input-surface.ts new file mode 100644 index 000000000..8c1097f07 --- /dev/null +++ b/src/date-picker-input-surface/app-date-picker-input-surface.ts @@ -0,0 +1,14 @@ +import { customElement } from 'lit/decorators.js'; + +import { appDatePickerInputSurfaceName } from './constants.js'; +import { DatePickerInputSurface } from './date-picker-input-surface.js'; + + +@customElement(appDatePickerInputSurfaceName) +export class AppDatePickerInputSurface extends DatePickerInputSurface {} + +declare global { + interface HTMLElementTagNameMap { + [appDatePickerInputSurfaceName]: AppDatePickerInputSurface; + } +} diff --git a/src/date-picker-input-surface/constants.ts b/src/date-picker-input-surface/constants.ts new file mode 100644 index 000000000..c526f11f8 --- /dev/null +++ b/src/date-picker-input-surface/constants.ts @@ -0,0 +1 @@ +export const appDatePickerInputSurfaceName = 'app-date-picker-input-surface'; diff --git a/src/date-picker-input-surface/date-picker-input-surface.ts b/src/date-picker-input-surface/date-picker-input-surface.ts new file mode 100644 index 000000000..5090522ab --- /dev/null +++ b/src/date-picker-input-surface/date-picker-input-surface.ts @@ -0,0 +1,22 @@ +import { MenuSurface } from '@material/mwc-menu/mwc-menu-surface.js'; + +import { appDatePickerName } from '../date-picker/constants.js'; +import { appDatePickerInputName } from '../date-picker-input/constants.js'; +import { DatePickerInputSurfaceStyling } from './stylings.js'; + +export class DatePickerInputSurface extends MenuSurface { + public static override styles = [ + ...MenuSurface.styles, + DatePickerInputSurfaceStyling, + ]; + + protected override onBodyClick(ev: MouseEvent) { + const elements = (ev.composedPath() as HTMLElement[]).filter(({ nodeType }) => nodeType === Node.ELEMENT_NODE); + const shouldClose = + elements.some(n => n.classList.contains('calendar-day')) || + !elements.some(n => n.localName === appDatePickerName) || + !elements.some(n => n.localName === appDatePickerInputName); + + shouldClose && this.close(); + } +} diff --git a/src/date-picker-input-surface/stylings.ts b/src/date-picker-input-surface/stylings.ts new file mode 100644 index 000000000..6c9f5bd9a --- /dev/null +++ b/src/date-picker-input-surface/stylings.ts @@ -0,0 +1,12 @@ +import { css } from 'lit'; + +export const DatePickerInputSurfaceStyling = css` +:host { + display: block; + position: relative; +} + +.mdc-menu-surface.mdc-menu-surface--open { + overflow: initial; +} +`; From cb1f081cab804e6c2dd5802dac1f99eb1b6afe08 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 12:34:58 +0800 Subject: [PATCH 111/276] chore: cleanup --- index.html | 7 ++++++- src/__demo__/demo-app.ts | 29 ++++++++++++++++++++++++++--- src/date-picker/date-picker.ts | 11 +---------- src/date-picker/stylings.ts | 3 +++ src/icons.ts | 1 + 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/index.html b/index.html index 16c39597d..c3c7efb57 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ @@ -19,9 +19,14 @@ html, body { font-family: 'Open Sans', sans-serif; + min-height: 100vh; scrollbar-width: thin; } + body { + background-color: #f5f5f5; + } + /** * NOTE: Webkit-specific scrollbar styling */ diff --git a/src/__demo__/demo-app.ts b/src/__demo__/demo-app.ts index 35e93c3a1..70a8bb2cb 100644 --- a/src/__demo__/demo-app.ts +++ b/src/__demo__/demo-app.ts @@ -1,4 +1,5 @@ import '../date-picker/app-date-picker.js'; +import '../date-picker-input/app-date-picker-input.js'; import { css, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; @@ -7,13 +8,24 @@ import { customElement } from 'lit/decorators.js'; export class DemoApp extends LitElement { public static override styles = [ css` - * { + :host { display: block; + } + :host > * + * { + margin: 16px 0 0; + } + + * { box-sizing: border-box; } - app-date-picker { - background-color: #f5f5f5; + app-date-picker, + app-date-picker-input { + background-color: #fcfcfc; + } + + app-date-picker-input { + --mdc-text-field-fill-color: #fcfcfc; } `, ]; @@ -26,6 +38,17 @@ export class DemoApp extends LitElement { .value=${'2020-02-02' as never} > + + + + diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index b8623eb2f..534ddd6f4 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -41,12 +41,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @state() private _currentDate: Date; - // @state() - // private _hasMax!: boolean; - - // @state() - // private _hasMin!: boolean; - @state() private _max: Date; @@ -55,6 +49,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @state() private _selectedDate: Date; + //#endregion private states //#region private properties #formatters: Formatters; @@ -150,10 +145,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement this._min = newMin.date; this._max = newMax.date; - - // this._hasMin = newMin.isValid; - // this._hasMax = newMax.isValid; - this._currentDate = new Date(valueDate); this._selectedDate = new Date(valueDate); this.valueAsDate = new Date(valueDate); diff --git a/src/date-picker/stylings.ts b/src/date-picker/stylings.ts index b12a2b98d..a93b74fe3 100644 --- a/src/date-picker/stylings.ts +++ b/src/date-picker/stylings.ts @@ -15,6 +15,8 @@ export const datePickerStyling = css` display: flex; flex-direction: column; + + position: relative; min-width: var(--date-picker-width); max-width: var(--date-picker-width); min-height: var(--date-picker-height); @@ -49,6 +51,7 @@ export const datePickerStyling = css` .selected-year-month { margin: 0; + white-space: nowrap; } .year-dropdown { diff --git a/src/icons.ts b/src/icons.ts index 6425b3e82..8a30894fc 100644 --- a/src/icons.ts +++ b/src/icons.ts @@ -4,4 +4,5 @@ import { svg } from 'lit/static-html.js'; export const iconArrowDropdown = svg``; export const iconChevronLeft = svg``; export const iconChevronRight = svg``; +export const iconClose = svg``; // tslint:enable:max-line-length From 0812caeab1705c827653180174a9ec17ae1d3927 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 12:48:49 +0800 Subject: [PATCH 112/276] refactor: minor update --- src/date-picker-input-surface/constants.ts | 2 +- src/date-picker/date-picker.ts | 5 ++--- src/month-calendar/month-calendar.ts | 7 +------ src/year-grid/year-grid.ts | 5 +---- 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/date-picker-input-surface/constants.ts b/src/date-picker-input-surface/constants.ts index c526f11f8..624ae4b04 100644 --- a/src/date-picker-input-surface/constants.ts +++ b/src/date-picker-input-surface/constants.ts @@ -1 +1 @@ -export const appDatePickerInputSurfaceName = 'app-date-picker-input-surface'; +export const appDatePickerInputSurfaceName = 'app-date-picker-input-surface' as const; diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 534ddd6f4..6cd9333a7 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -253,11 +253,10 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement } -
    ${ isStartViewYearGrid ? html` Date: Sat, 6 Nov 2021 12:57:22 +0800 Subject: [PATCH 113/276] style: add overscroll-behavior: contain for year grid view --- src/date-picker/stylings.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/date-picker/stylings.ts b/src/date-picker/stylings.ts index a93b74fe3..20d7e64a2 100644 --- a/src/date-picker/stylings.ts +++ b/src/date-picker/stylings.ts @@ -23,6 +23,7 @@ export const datePickerStyling = css` max-height: var(--date-picker-height); width: 100%; height: 100%; + overscroll-behavior: contain; } :host([startview="calendar"][show-week-number]) { --date-picker-width: var(--date-picker-with-week-number-width); From 970c2b33dc9ddbdff34abff1171273968a48b3fb Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 13:16:03 +0800 Subject: [PATCH 114/276] refactor: improve label --- src/mixins/date-picker-mixin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mixins/date-picker-mixin.ts b/src/mixins/date-picker-mixin.ts index 913197b9d..40ffb2e07 100644 --- a/src/mixins/date-picker-mixin.ts +++ b/src/mixins/date-picker-mixin.ts @@ -63,7 +63,7 @@ export const DatePickerMixin = > public weekNumberType: WeekNumberType = 'first-4-day-week'; @property() - public yearDropdownLabel = 'Choose year and month'; + public yearDropdownLabel = 'Select a year'; } return DatePickerMixinClass as unknown as MixinReturnType< From db8bee8e64dfc324563e8c6187be2439131abf33 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 13:18:35 +0800 Subject: [PATCH 115/276] refactor(husky): improve hook --- .husky/commit-msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/commit-msg b/.husky/commit-msg index 67cf5b18e..d4d0fb8ef 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -npm x -- commitlint --edit "$1" +npm x -y -- commitlint --edit "$1" From 827b063b0c092cc259c565985f2cf7812990ce72 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 21:14:36 +0800 Subject: [PATCH 116/276] refactor(datePicker): refactor for better customization and a11y --- package.json | 2 +- src/date-picker/date-picker.ts | 141 +++++++++++++++++---------------- 2 files changed, 74 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index 60654aa49..74882bdbb 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "lint:build": "npm run lint -- --config .build.eslintrc.json", "prepare": "if [ \"$CI\" != 'true' ]; then npm x -- husky install; fi", "prepublishOnly": "npm run lint && npm run build:prod", - "serve": "npm x --no @web/dev-server@latest -- wds --node-resolve -dw -p 3000 -a index.html", + "serve": "npm x -y @web/dev-server@latest -- wds --node-resolve -dw -p 3000 -a index.html", "test": "npm run test:helpers && npm run test:elements", "test:elements": "npm run wtr -- --config wtr.config.mjs", "test:helpers": "TEST_HELPERS=1 npm run wtr -- --config wtr.config.mjs", diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 6cd9333a7..d278c201d 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -3,8 +3,7 @@ import '../month-calendar/app-month-calendar.js'; import '../year-grid/app-year-grid.js'; import type { TemplateResult } from 'lit'; -import { nothing } from 'lit'; -import { html,LitElement } from 'lit'; +import { html, LitElement, nothing } from 'lit'; import { queryAsync, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { calendar } from 'nodemod/dist/calendar/calendar.js'; @@ -25,8 +24,10 @@ import type { MaybeDate } from '../helpers/typings.js'; import { iconArrowDropdown, iconChevronLeft, iconChevronRight } from '../icons.js'; import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; +import type { AppMonthCalendar } from '../month-calendar/app-month-calendar.js'; import { resetShadowRoot, webkitScrollbarStyling } from '../stylings.js'; import type { CalendarView, DatePickerProperties, Formatters, ValueUpdatedEvent, YearUpdatedEvent } from '../typings.js'; +import type { AppYearGrid } from '../year-grid/app-year-grid.js'; import type { YearGridData } from '../year-grid/typings.js'; import { datePickerStyling } from './stylings.js'; import type { DatePickerChangedProperties } from './typings.js'; @@ -54,9 +55,10 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement //#region private properties #formatters: Formatters; #shouldUpdateFocusInNavigationButtons = false; + #today: Date; - @queryAsync('.year-dropdown') - private readonly _monthDropdown!: Promise; + @queryAsync('app-month-calendar') + private readonly _monthCalendar!: Promise; @queryAsync('[data-navigation="previous"]') private readonly _navigationPrevious!: Promise; @@ -64,7 +66,8 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @queryAsync('[data-navigation="next"]') private readonly _navigationNext!: Promise; - private readonly _TODAY_DATE: Date; + @queryAsync('app-year-grid') + private readonly _yearGrid!: Promise; //#endregion private properties public static override styles = [ @@ -80,7 +83,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement this._min = new Date(todayDate); this._max = new Date(MAX_DATE); - this._TODAY_DATE = todayDate; + this.#today = todayDate; this._selectedDate = new Date(todayDate); this._currentDate = new Date(todayDate); this.#formatters = toFormatters(this.locale); @@ -106,7 +109,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement if ( dateRangeProps.some(n => changedProperties.has(n)) ) { - const todayDate = this._TODAY_DATE; + const todayDate = this.#today; const [ newMax, @@ -179,19 +182,9 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement } - protected override firstUpdated(): void { - const focusableElements: HTMLElement[] = []; - - // TODO: focus element - if (this.startView === 'calendar') { - // TODO: query select elements in calendar - } else { - // TODO: query select elements in year list - } - - // dispatch updated event + protected override async firstUpdated(): Promise { dispatchCustomEvent(this, 'first-updated', { - focusableElements, + focusableElements: await this.#queryAllFocusable(), value: this.value, }); } @@ -200,10 +193,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement changedProperties: DatePickerChangedProperties ): Promise { if (this.startView === 'calendar') { - if (changedProperties.has('startView')) { - await focusElement(this._monthDropdown); - } - if (changedProperties.has('_currentDate') && this.#shouldUpdateFocusInNavigationButtons) { const currentDate = this._currentDate; @@ -215,11 +204,9 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement } } - // FIXME: To not render min and max buttons protected override render(): TemplateResult { const formatters = this.#formatters; const currentDate = this._currentDate; - const selectedDate = this._selectedDate; const max = this._max; const min = this._min; const showWeekNumber = this.showWeekNumber; @@ -257,24 +244,43 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement [`start-view--${isStartViewYearGrid ? 'year-grid' : 'calendar'}`]: true, 'show-week-number': showWeekNumber, })}">${ - isStartViewYearGrid ? - html` - - ` : - this.#renderCalendar() + (isStartViewYearGrid ? this.#renderYearGrid : this.#renderCalendar)() }
    `; } + #navigateMonth(ev: MouseEvent): void { + const currentDate = this._currentDate; + const isPreviousNavigation = ( + ev.currentTarget as HTMLButtonElement + ).getAttribute('data-navigation') === 'previous'; + + const newCurrentDate = toUTCDate( + currentDate.getUTCFullYear(), + currentDate.getUTCMonth() + (isPreviousNavigation ? -1 : 1), + 1 + ); + + this._currentDate = newCurrentDate; + this.#shouldUpdateFocusInNavigationButtons = true; + } + + #queryAllFocusable = async () : Promise => { + const isStartViewCalendar = this.startView === 'calendar'; + const focusable = [ + ...Array.from( + this.shadowRoot?.querySelectorAll('mwc-icon-button') ?? [] + ), + (await (isStartViewCalendar ? this._monthCalendar : this._yearGrid)) + ?.shadowRoot + ?.querySelector(`.${ + isStartViewCalendar ? 'calendar-day' : 'year-grid-button' + }[aria-selected="true"]`), + ].filter(Boolean) as HTMLElement[]; + + return focusable; + }; + #renderCalendar = (): TemplateResult => { const currentDate = this._currentDate; const firstDayOfWeek = this.firstDayOfWeek; @@ -317,7 +323,6 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement return html` `; }; - #renderNavigationButton = ( + #renderNavigationButton ( navigationType: 'previous' | 'next', shouldSkipRender = true - ): TemplateResult => { + ): TemplateResult { const isPreviousNavigationType = navigationType === 'previous'; return shouldSkipRender ? @@ -351,49 +357,48 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @click=${this.#navigateMonth} >${isPreviousNavigationType ? iconChevronLeft : iconChevronRight} `; - }; - - #navigateMonth = (ev: MouseEvent): void => { - const currentDate = this._currentDate; - const isPreviousNavigation = ( - ev.currentTarget as HTMLButtonElement - ).getAttribute('data-navigation') === 'previous'; - - const newCurrentDate = toUTCDate( - currentDate.getUTCFullYear(), - currentDate.getUTCMonth() + (isPreviousNavigation ? -1 : 1), - 1 - ); + } - this._currentDate = newCurrentDate; - this.#shouldUpdateFocusInNavigationButtons = true; + #renderYearGrid = (): TemplateResult => { + return html` + + `; }; - #updateSelectedAndCurrentDate = (maybeDate: Date | number | string): void => { + #updateSelectedAndCurrentDate(maybeDate: Date | number | string): void { const newSelectedDate = new Date(maybeDate); this._selectedDate = newSelectedDate; this._currentDate = new Date(newSelectedDate); - }; + } - #updateSelectedDate = ({ + #updateSelectedDate({ detail: { value }, - }: CustomEvent): void => { + }: CustomEvent): void { this.#updateSelectedAndCurrentDate(value); // TODO: To fire value update event - }; + } - #updateStartView = (): void => { + #updateStartView(): void { const isYearGrid = this.startView === 'yearGrid'; this.startView = isYearGrid ? 'calendar' : 'yearGrid'; - }; + } - #updateYear = ({ + #updateYear({ detail: { year }, - }: CustomEvent): void => { + }: CustomEvent): void { this.#updateSelectedAndCurrentDate(this._selectedDate.setUTCFullYear(year)); this.startView = 'calendar'; - }; + } } From 873cd06385c3789c21f3a9d0327672ca9ed8d7f4 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 21:18:48 +0800 Subject: [PATCH 117/276] refactor: minor rename --- src/__tests__/helpers/dispatch-custom-event.test.ts | 10 +++++----- src/helpers/dispatch-custom-event.ts | 6 +++--- src/typings.ts | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/__tests__/helpers/dispatch-custom-event.test.ts b/src/__tests__/helpers/dispatch-custom-event.test.ts index fae5f9f41..ef82ca536 100644 --- a/src/__tests__/helpers/dispatch-custom-event.test.ts +++ b/src/__tests__/helpers/dispatch-custom-event.test.ts @@ -1,10 +1,10 @@ import { expect } from '@open-wc/testing'; import { dispatchCustomEvent } from '../../helpers/dispatch-custom-event'; -import type { SupportedCustomEvent } from '../../typings'; +import type { SupportedCustomEventDetail } from '../../typings'; import { messageFormatter } from '../test-utils/message-formatter'; -type A = [SupportedCustomEvent['changed'] | undefined, SupportedCustomEvent['changed'] | null]; +type A = [SupportedCustomEventDetail['changed'] | undefined, SupportedCustomEventDetail['changed'] | null]; describe(dispatchCustomEvent.name, () => { const cases: A[] = [ @@ -26,13 +26,13 @@ describe(dispatchCustomEvent.name, () => { messageFormatter('dispatches custom event (detail=%j)', a), async () => { const [testDetail, expected] = a; - const testEventName: keyof SupportedCustomEvent = 'changed'; + const testEventName: keyof SupportedCustomEventDetail = 'changed'; const el = document.createElement('div'); - const done = new Promise((resolve) => { + const done = new Promise((resolve) => { el.addEventListener(testEventName, (ev) => { - resolve((ev as CustomEvent).detail); + resolve((ev as CustomEvent).detail); }, { once: true }); }); diff --git a/src/helpers/dispatch-custom-event.ts b/src/helpers/dispatch-custom-event.ts index 4dcac6191..5e13c5d9a 100644 --- a/src/helpers/dispatch-custom-event.ts +++ b/src/helpers/dispatch-custom-event.ts @@ -1,9 +1,9 @@ -import type { SupportedCustomEvent } from '../typings.js'; +import type { SupportedCustomEventDetail } from '../typings.js'; -export function dispatchCustomEvent( +export function dispatchCustomEvent( target: HTMLElement, eventName: T, - detail?: SupportedCustomEvent[T] + detail?: SupportedCustomEventDetail[T] ): boolean { return target.dispatchEvent(new CustomEvent(eventName, { bubbles: true, diff --git a/src/typings.ts b/src/typings.ts index a5ba470c2..f41e4634f 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -44,7 +44,7 @@ export interface Formatters extends Pick { export type InferredFromSet = SetType extends Set ? T : never; -export interface SupportedCustomEvent { +export interface SupportedCustomEventDetail { ['animation-finished']: null; ['changed']: ChangedEvent; ['date-updated']: DateUpdatedEvent; From c785fb741170d3f27926dbfcc3e975e7addf80b7 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 6 Nov 2021 21:29:07 +0800 Subject: [PATCH 118/276] feat: implement DatePickerInput --- .../app-date-picker-input.ts | 13 ++ src/date-picker-input/constants.ts | 1 + src/date-picker-input/date-picker-input.ts | 210 ++++++++++++++++++ src/date-picker-input/stylings.ts | 15 ++ 4 files changed, 239 insertions(+) create mode 100644 src/date-picker-input/app-date-picker-input.ts create mode 100644 src/date-picker-input/constants.ts create mode 100644 src/date-picker-input/date-picker-input.ts create mode 100644 src/date-picker-input/stylings.ts diff --git a/src/date-picker-input/app-date-picker-input.ts b/src/date-picker-input/app-date-picker-input.ts new file mode 100644 index 000000000..81f512886 --- /dev/null +++ b/src/date-picker-input/app-date-picker-input.ts @@ -0,0 +1,13 @@ +import { customElement } from 'lit/decorators.js'; + +import { appDatePickerInputName } from './constants.js'; +import { DatePickerInput } from './date-picker-input.js'; + +@customElement(appDatePickerInputName) +export class AppDatePickerInput extends DatePickerInput {} + +declare global { + interface HTMLElementTagNameMap { + [appDatePickerInputName]: AppDatePickerInput; + } +} diff --git a/src/date-picker-input/constants.ts b/src/date-picker-input/constants.ts new file mode 100644 index 000000000..889c4d8cc --- /dev/null +++ b/src/date-picker-input/constants.ts @@ -0,0 +1 @@ +export const appDatePickerInputName = 'app-date-picker-input' as const; diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts new file mode 100644 index 000000000..1044dadfd --- /dev/null +++ b/src/date-picker-input/date-picker-input.ts @@ -0,0 +1,210 @@ +import '../date-picker-input-surface/app-date-picker-input-surface.js'; + +import type { TextFieldType } from '@material/mwc-textfield'; +import { TextField } from '@material/mwc-textfield'; +import type { TemplateResult } from 'lit'; +import { html, nothing } from 'lit'; +import { property, queryAsync, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; + +import { DateTimeFormat } from '../constants.js'; +import type { AppDatePicker } from '../date-picker/app-date-picker.js'; +import { toResolvedDate } from '../helpers/to-resolved-date.js'; +import { iconClose } from '../icons.js'; +import { keyEnter, keySpace } from '../key-values.js'; +import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; +import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; +import type { DatePickerMixinProperties } from '../mixins/typings.js'; +import type { ChangedProperties, DatePickerProperties, SupportedCustomEventDetail } from '../typings.js'; +import { datePickerInputStyling } from './stylings.js'; + +export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextField)) implements DatePickerMixinProperties { + public override type = 'date' as TextFieldType; + + @property({ type: String }) public clearLabel = 'Clear'; + @queryAsync('.mdc-text-field__input') private _input!: Promise; + @state() private _open = false; + @state() private _valueText = ''; + + #disconnect: () => void = () => undefined; + #focusElement: HTMLElement | undefined = undefined; + #picker: AppDatePicker | undefined = undefined; + #valueFormatter = this.#toValueFormatter(); + + public static override styles = [ + ...TextField.styles, + datePickerInputStyling, + ]; + + public override async disconnectedCallback(): Promise { + super.disconnectedCallback(); + + this.#disconnect(); + } + + public override async firstUpdated(): Promise { + super.firstUpdated(); + + const input = await this._input; + + if (!input) return; + + const onClick = () => this._open = true; + const onKeyup = (ev: KeyboardEvent) => { + if ([keySpace, keyEnter].some(n => n === ev.key)) { + onClick(); + } + }; + + input.addEventListener('keyup', onKeyup); + input.addEventListener('click', onClick); + + this.#disconnect = () => { + input.removeEventListener('keyup', onKeyup); + input.removeEventListener('click', onClick); + }; + } + + public override willUpdate(changedProperties: ChangedProperties) { + super.willUpdate(changedProperties); + + if (changedProperties.has('locale')) { + const newLocale = ( + this.locale || DateTimeFormat().resolvedOptions().locale + ) as string; + + this.locale = newLocale; + this.#valueFormatter = this.#toValueFormatter(); + + if (this.value) { + this._valueText = this.#valueFormatter.format(toResolvedDate(this.value)); + } + } + + if (changedProperties.has('value') && this.value) { + this._valueText = this.#valueFormatter.format(toResolvedDate(this.value)); + } + } + + public override render(): TemplateResult { + return html` + ${super.render()} + ${ + this._open ? + html` + + + + ` : + nothing + }`; + } + + protected override renderInput(shouldRenderHelperText: boolean): TemplateResult { + /** + * NOTE: All these code are copied from original implementation. + */ + const autocapitalizeOrUndef = this.autocapitalize ? + this.autocapitalize as ( + 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters') : + undefined; + const showValidationMessage = this.validationMessage && !this.isUiValid; + const ariaLabelledbyOrUndef = this.label ? 'label' : undefined; + const ariaControlsOrUndef = + shouldRenderHelperText ? 'helper-text' : undefined; + const ariaDescribedbyOrUndef = + this.focused || this.helperPersistent || showValidationMessage ? + 'helper-text' : + undefined; + + return html` + `; + } + + protected override renderTrailingIcon(): TemplateResult { + return html` + + ${iconClose} + + `; + } + + #onClearClick() { + this.value = this._valueText = ''; + } + + #onClosed() { + this._open = false; + } + + async #onDatePickerFirstUpdated(ev: CustomEvent) { + const [focusableElement] = ev.detail.focusableElements; + + this.#picker = ev.currentTarget as AppDatePicker; + this.#focusElement = focusableElement; + } + + #onDatePickerDateUpdated(ev: CustomEvent) { + this.value = this.#valueFormatter.format(ev.detail.value); + } + + async #onOpened() { + await (this.#picker as AppDatePicker).updateComplete; + await this.updateComplete; + + this.#focusElement?.focus(); + } + + #toValueFormatter() { + return DateTimeFormat(this.locale, { + year: 'numeric', + month: 'short', + day: 'numeric', + }); + } +} diff --git a/src/date-picker-input/stylings.ts b/src/date-picker-input/stylings.ts new file mode 100644 index 000000000..795c8ee7f --- /dev/null +++ b/src/date-picker-input/stylings.ts @@ -0,0 +1,15 @@ +import { css } from 'lit'; + +export const datePickerInputStyling = css` +:host { + position: relative; +} + +.mdc-text-field__icon--trailing { + padding: 0 4px 0 0; +} + +.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing { + pointer-events: auto; +} +`; From d4321bf34784e4061af64fe4b72b4def0c05ae04 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 00:17:36 +0800 Subject: [PATCH 119/276] refactor: improve code --- src/__tests__/year-grid/app-year-grid.test.ts | 6 +- .../date-picker-input-surface.ts | 16 +++- src/helpers/to-next-selected-date.ts | 5 +- src/typings.ts | 21 +++-- src/year-grid/typings.ts | 6 ++ src/year-grid/year-grid.ts | 86 +++++++++++-------- 6 files changed, 87 insertions(+), 53 deletions(-) diff --git a/src/__tests__/year-grid/app-year-grid.test.ts b/src/__tests__/year-grid/app-year-grid.test.ts index b3bf1ffad..a3f40e1fe 100644 --- a/src/__tests__/year-grid/app-year-grid.test.ts +++ b/src/__tests__/year-grid/app-year-grid.test.ts @@ -135,7 +135,11 @@ describe(appYearGridName, () => { n.getAttribute('tabindex') ?? '', n.getAttribute('aria-selected') ?? '', ]); - const expectedYearUpdatedEvent: YearUpdatedEvent = { year: data.max.getUTCFullYear() }; + const expectedYearUpdatedEvent: YearUpdatedEvent = { + year: data.max.getUTCFullYear(), + isKeypress: testEventType.startsWith('key'), + key: testKey, + }; expect(yearGridButtonAttrsList).deep.equal([ ['2019', '2019', '-1', 'false'], diff --git a/src/date-picker-input-surface/date-picker-input-surface.ts b/src/date-picker-input-surface/date-picker-input-surface.ts index 5090522ab..ea0cc479c 100644 --- a/src/date-picker-input-surface/date-picker-input-surface.ts +++ b/src/date-picker-input-surface/date-picker-input-surface.ts @@ -2,8 +2,14 @@ import { MenuSurface } from '@material/mwc-menu/mwc-menu-surface.js'; import { appDatePickerName } from '../date-picker/constants.js'; import { appDatePickerInputName } from '../date-picker-input/constants.js'; +import type { InferredFromSet } from '../typings.js'; import { DatePickerInputSurfaceStyling } from './stylings.js'; +const alwaysOpenElementSet = new Set([ + appDatePickerInputName, + appDatePickerName, +]); + export class DatePickerInputSurface extends MenuSurface { public static override styles = [ ...MenuSurface.styles, @@ -11,11 +17,15 @@ export class DatePickerInputSurface extends MenuSurface { ]; protected override onBodyClick(ev: MouseEvent) { - const elements = (ev.composedPath() as HTMLElement[]).filter(({ nodeType }) => nodeType === Node.ELEMENT_NODE); + const elements = + (ev.composedPath() as HTMLElement[]) + .filter(({ nodeType }) => nodeType === Node.ELEMENT_NODE); const shouldClose = elements.some(n => n.classList.contains('calendar-day')) || - !elements.some(n => n.localName === appDatePickerName) || - !elements.some(n => n.localName === appDatePickerInputName); + !elements.some( + n => + alwaysOpenElementSet.has(n.localName as InferredFromSet) + ); shouldClose && this.close(); } diff --git a/src/helpers/to-next-selected-date.ts b/src/helpers/to-next-selected-date.ts index 72b5e64f4..5f68a8a28 100644 --- a/src/helpers/to-next-selected-date.ts +++ b/src/helpers/to-next-selected-date.ts @@ -104,10 +104,11 @@ export function toNextSelectedDate({ d = 0; break; } - case key === keyHome: - default: { + case key === keyHome: { d = 1; + break; } + default: } /** diff --git a/src/typings.ts b/src/typings.ts index f41e4634f..bccf53954 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -8,8 +8,7 @@ export type CalendarView = CalendarViewTuple[number]; export type CalendarViewTuple = typeof calendarViews; -export interface ChangedEvent { - isKeypress: boolean; +export interface ChangedEvent extends KeyEvent { value: DatePickerMixinProperties['value']; } @@ -21,8 +20,7 @@ export type Constructor = new (...args: any[]) => T; export interface DatePickerProperties extends DatePickerMixinProperties, DatePickerMinMaxProperties {} -export interface DateUpdatedEvent { - isKeypress: boolean; +export interface DateUpdatedEvent extends KeyEvent { value: Date; } @@ -45,11 +43,11 @@ export interface Formatters extends Pick { export type InferredFromSet = SetType extends Set ? T : never; export interface SupportedCustomEventDetail { - ['animation-finished']: null; - ['changed']: ChangedEvent; + // ['animation-finished']: null; + // ['changed']: ChangedEvent; ['date-updated']: DateUpdatedEvent; ['first-updated']: FirstUpdatedEvent; - ['value-updated']: ValueUpdatedEvent; + // ['value-updated']: ValueUpdatedEvent; ['year-updated']: YearUpdatedEvent; } @@ -66,10 +64,15 @@ export type SupportedKey = | typeof keySpace | typeof keyTab; -export interface ValueUpdatedEvent extends Pick { +export interface ValueUpdatedEvent extends KeyEvent { value: string; } -export interface YearUpdatedEvent { +export interface YearUpdatedEvent extends KeyEvent { year: number; } + +interface KeyEvent { + isKeypress: boolean; + key?: SupportedKey; +} diff --git a/src/year-grid/typings.ts b/src/year-grid/typings.ts index 361468288..5b0f3b5ba 100644 --- a/src/year-grid/typings.ts +++ b/src/year-grid/typings.ts @@ -19,3 +19,9 @@ export interface YearGridData { export interface YearGridProperties { data?: YearGridData; } + +export interface YearGridRenderButtonInit extends Pick { + focusingYear: number; + label: string; + year: number; +} diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index 885fef523..07d08d596 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -1,4 +1,4 @@ -import type { nothing, TemplateResult } from 'lit'; +import type { TemplateResult } from 'lit'; import { html, LitElement } from 'lit'; import { property, queryAsync, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; @@ -10,20 +10,19 @@ import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; import { baseStyling, resetButton, resetShadowRoot } from '../stylings.js'; -import type { Formatters, InferredFromSet } from '../typings.js'; +import type { Formatters, InferredFromSet, SupportedKey } from '../typings.js'; import { yearGridStyling } from './stylings.js'; import { toNextSelectedYear } from './to-next-selected-year.js'; -import type { YearGridChangedProperties, YearGridData, YearGridProperties } from './typings.js'; +import type { YearGridChangedProperties, YearGridData, YearGridProperties, YearGridRenderButtonInit } from './typings.js'; export class YearGrid extends LitElement implements YearGridProperties { - @property({ attribute: false }) - public data?: YearGridData; + @property({ attribute: false }) public data?: YearGridData; - @queryAsync('button[data-year][aria-selected="true"]') - public selectedYearGridButton!: Promise; + @queryAsync('button[data-year][aria-selected="true"]') public selectedYearGridButton!: Promise; - @state() - protected $focusingYear: number; + @state() protected $focusingYear: number; + + #todayYear: number; public static override styles = [ baseStyling, @@ -32,9 +31,6 @@ export class YearGrid extends LitElement implements YearGridProperties { yearGridStyling, ]; - #selectedYear: number; - #todayYear: number; - constructor() { super(); @@ -47,9 +43,7 @@ export class YearGrid extends LitElement implements YearGridProperties { min: todayDate, }; - this.$focusingYear = - this.#selectedYear = - this.#todayYear = todayDate.getUTCFullYear(); + this.$focusingYear = this.#todayYear = todayDate.getUTCFullYear(); } protected override shouldUpdate(): boolean { @@ -61,7 +55,7 @@ export class YearGrid extends LitElement implements YearGridProperties { const { date } = this.data; if (date) { - this.$focusingYear = this.#selectedYear = date.getUTCFullYear(); + this.$focusingYear = date.getUTCFullYear(); } } } @@ -70,7 +64,7 @@ export class YearGrid extends LitElement implements YearGridProperties { await focusElement(this.selectedYearGridButton, element => element.scrollIntoView()); } - protected override render(): TemplateResult | typeof nothing { + protected override render(): TemplateResult { const { date, formatters, @@ -89,32 +83,42 @@ export class YearGrid extends LitElement implements YearGridProperties { @keydown=${this.#updateYear} @keyup=${this.#updateYear} >${ - yearList.map((year) => { - const yearLabel = yearFormat(new Date(`${year}-01-01`)); - - return html` - - `; - }) + yearList.map((year) => this.$renderButton({ + date, + focusingYear, + label: yearFormat(new Date(`${year}-01-01`)), + year, + })) } `; } - #updateYear = (ev: MouseEvent | KeyboardEvent): void => { - if (ev.type === 'keydown') { + protected $renderButton({ + date, + focusingYear, + label, + year, + }: YearGridRenderButtonInit): TemplateResult { + return html` + + `; + } + + #updateYear = (event: MouseEvent | KeyboardEvent): void => { + if (event.type === 'keydown') { const key = - (ev as KeyboardEvent).key as InferredFromSet; + (event as KeyboardEvent).key as InferredFromSet; if (!navigationKeySetGrid.has(key)) return; // Stop scrolling with arrow keys - ev.preventDefault(); + event.preventDefault(); // Focus new year with Home, End, and arrow keys const { @@ -135,18 +139,24 @@ export class YearGrid extends LitElement implements YearGridProperties { this.$focusingYear = focusingYear; focusingYearGridButton?.focus(); - } else if (ev.type === 'click') { + } else if (event.type === 'click') { const selectedYearStr = - toClosestTarget(ev, `button[data-year]`) + toClosestTarget(event, `button[data-year]`) ?.getAttribute('data-year'); /** Do nothing when not tapping on the year button */ if (selectedYearStr == null) return; + const key = (event as KeyboardEvent).key as SupportedKey; const year = Number(selectedYearStr); - this.$focusingYear = this.#selectedYear = year; - dispatchCustomEvent(this, 'year-updated', { year }); + this.$focusingYear = year; + + dispatchCustomEvent(this, 'year-updated', { + isKeypress: Boolean(key), + key, + year, + }); } }; } From ff074613b22a01aed2b37f49005fa47bd712e652 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 00:18:43 +0800 Subject: [PATCH 120/276] test: update tests --- .../helpers/dispatch-custom-event.test.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/__tests__/helpers/dispatch-custom-event.test.ts b/src/__tests__/helpers/dispatch-custom-event.test.ts index ef82ca536..1d25bdd55 100644 --- a/src/__tests__/helpers/dispatch-custom-event.test.ts +++ b/src/__tests__/helpers/dispatch-custom-event.test.ts @@ -4,7 +4,7 @@ import { dispatchCustomEvent } from '../../helpers/dispatch-custom-event'; import type { SupportedCustomEventDetail } from '../../typings'; import { messageFormatter } from '../test-utils/message-formatter'; -type A = [SupportedCustomEventDetail['changed'] | undefined, SupportedCustomEventDetail['changed'] | null]; +type A = [SupportedCustomEventDetail['year-updated'] | undefined, SupportedCustomEventDetail['year-updated'] | null]; describe(dispatchCustomEvent.name, () => { const cases: A[] = [ @@ -12,11 +12,13 @@ describe(dispatchCustomEvent.name, () => { [ { isKeypress: true, - value: '1', + key: 'Enter', + year: 2020, }, { isKeypress: true, - value: '1', + key: 'Enter', + year: 2020, }, ], ]; @@ -26,13 +28,13 @@ describe(dispatchCustomEvent.name, () => { messageFormatter('dispatches custom event (detail=%j)', a), async () => { const [testDetail, expected] = a; - const testEventName: keyof SupportedCustomEventDetail = 'changed'; + const testEventName: keyof SupportedCustomEventDetail = 'year-updated'; const el = document.createElement('div'); - const done = new Promise((resolve) => { + const done = new Promise((resolve) => { el.addEventListener(testEventName, (ev) => { - resolve((ev as CustomEvent).detail); + resolve((ev as CustomEvent).detail); }, { once: true }); }); From ed80808998872322b2c4a25b2e41f841d4932288 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 16:11:26 +0800 Subject: [PATCH 121/276] refactor: refactor code around keyboard support and typings --- .../date-picker/app-date-picker.test.ts | 6 +- src/constants.ts | 2 +- src/date-picker/date-picker.ts | 69 ++++++----- src/mixins/date-picker-mixin.ts | 4 +- src/mixins/typings.ts | 4 +- src/month-calendar/month-calendar.ts | 112 +++++++++++------- src/month-calendar/typings.ts | 5 + src/typings.ts | 6 +- 8 files changed, 119 insertions(+), 89 deletions(-) diff --git a/src/__tests__/date-picker/app-date-picker.test.ts b/src/__tests__/date-picker/app-date-picker.test.ts index 34cfd789e..b8e2f8318 100644 --- a/src/__tests__/date-picker/app-date-picker.test.ts +++ b/src/__tests__/date-picker/app-date-picker.test.ts @@ -1,7 +1,7 @@ import '../../date-picker/app-date-picker'; import { expect } from '@open-wc/testing'; -import { elementUpdated,fixture, html, oneEvent } from '@open-wc/testing-helpers'; +import { elementUpdated, fixture, html, oneEvent } from '@open-wc/testing-helpers'; import { MAX_DATE } from '../../constants'; import type { AppDatePicker } from '../../date-picker/app-date-picker'; @@ -10,7 +10,7 @@ import { toFormatters } from '../../helpers/to-formatters'; import { toResolvedDate } from '../../helpers/to-resolved-date'; import type { MaybeDate } from '../../helpers/typings'; import type { AppMonthCalendar } from '../../month-calendar/app-month-calendar'; -import type { CalendarView, DateUpdatedEvent, Formatters } from '../../typings'; +import type { DateUpdatedEvent, Formatters, StartView } from '../../typings'; import type { AppYearGrid } from '../../year-grid/app-year-grid'; import { messageFormatter } from '../test-utils/message-formatter'; @@ -32,7 +32,7 @@ describe(appDatePickerName, () => { const formatters: Formatters = toFormatters('en-US'); const todayDate = toResolvedDate(); - type A = [CalendarView | undefined, (keyof typeof elementSelectors)[], (keyof typeof elementSelectors)[]]; + type A = [StartView | undefined, (keyof typeof elementSelectors)[], (keyof typeof elementSelectors)[]]; const cases: A[] = [ [ undefined, diff --git a/src/constants.ts b/src/constants.ts index 85675bd84..86177f64d 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -9,7 +9,7 @@ export const MAX_DATE = toResolvedDate('2100-12-31'); export const ONE_DAY_IN_SECONDS = 864e5; //#endregion constants -export const calendarViews = [ +export const startViews = [ 'calendar', 'yearGrid', ] as const; diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index d278c201d..62f790bff 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -2,6 +2,7 @@ import '@material/mwc-icon-button'; import '../month-calendar/app-month-calendar.js'; import '../year-grid/app-year-grid.js'; +import type { IconButton } from '@material/mwc-icon-button'; import type { TemplateResult } from 'lit'; import { html, LitElement, nothing } from 'lit'; import { queryAsync, state } from 'lit/decorators.js'; @@ -10,7 +11,7 @@ import { calendar } from 'nodemod/dist/calendar/calendar.js'; import { getWeekdays } from 'nodemod/dist/calendar/helpers/get-weekdays.js'; import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; -import { calendarViews, DateTimeFormat, MAX_DATE } from '../constants.js'; +import { DateTimeFormat, MAX_DATE, startViews } from '../constants.js'; import { clampValue } from '../helpers/clamp-value.js'; import { dateValidator } from '../helpers/date-validator.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; @@ -26,49 +27,37 @@ import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; import type { AppMonthCalendar } from '../month-calendar/app-month-calendar.js'; import { resetShadowRoot, webkitScrollbarStyling } from '../stylings.js'; -import type { CalendarView, DatePickerProperties, Formatters, ValueUpdatedEvent, YearUpdatedEvent } from '../typings.js'; +import type { DatePickerProperties, Formatters, StartView, ValueUpdatedEvent, YearUpdatedEvent } from '../typings.js'; import type { AppYearGrid } from '../year-grid/app-year-grid.js'; import type { YearGridData } from '../year-grid/typings.js'; import { datePickerStyling } from './stylings.js'; import type { DatePickerChangedProperties } from './typings.js'; export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement)) implements DatePickerProperties { - //#region public properties public valueAsDate: Date; public valueAsNumber: number; - //#endregion public properties - //#region private states - @state() - private _currentDate: Date; + @queryAsync('app-month-calendar') private readonly _monthCalendar!: Promise; - @state() - private _max: Date; + @queryAsync('[data-navigation="previous"]') private readonly _navigationPrevious!: Promise; - @state() - private _min: Date; + @queryAsync('[data-navigation="next"]') private readonly _navigationNext!: Promise; - @state() - private _selectedDate: Date; - //#endregion private states + @queryAsync('.year-dropdown') private readonly _yearDropdown!: Promise; - //#region private properties - #formatters: Formatters; - #shouldUpdateFocusInNavigationButtons = false; - #today: Date; + @queryAsync('app-year-grid') private readonly _yearGrid!: Promise; + + @state() private _currentDate: Date; - @queryAsync('app-month-calendar') - private readonly _monthCalendar!: Promise; + @state() private _max: Date; - @queryAsync('[data-navigation="previous"]') - private readonly _navigationPrevious!: Promise; + @state() private _min: Date; - @queryAsync('[data-navigation="next"]') - private readonly _navigationNext!: Promise; + @state() private _selectedDate: Date; - @queryAsync('app-year-grid') - private readonly _yearGrid!: Promise; - //#endregion private properties + #formatters: Formatters; + #shouldUpdateFocusInNavigationButtons = false; + #today: Date; public static override styles = [ resetShadowRoot, @@ -157,12 +146,12 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement if (changedProperties.has('startView')) { const oldStartView = - (changedProperties.get('startView') || this.startView) as CalendarView; + (changedProperties.get('startView') || this.startView) as StartView; /** * NOTE: Reset to old `startView` to ensure a valid value. */ - if (!calendarViews.includes(this.startView)) { + if (!startViews.includes(this.startView)) { this.startView = oldStartView; } @@ -192,16 +181,26 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement protected override async updated( changedProperties: DatePickerChangedProperties ): Promise { - if (this.startView === 'calendar') { - if (changedProperties.has('_currentDate') && this.#shouldUpdateFocusInNavigationButtons) { - const currentDate = this._currentDate; + if (changedProperties.has('startView')) { + if (this.startView === 'calendar') { + if (changedProperties.has('_currentDate') && this.#shouldUpdateFocusInNavigationButtons) { + const currentDate = this._currentDate; + + isInCurrentMonth(this._min, currentDate) && focusElement(this._navigationNext); + isInCurrentMonth(this._max, currentDate) && focusElement(this._navigationPrevious); - isInCurrentMonth(this._min, currentDate) && focusElement(this._navigationNext); - isInCurrentMonth(this._max, currentDate) && focusElement(this._navigationPrevious); + this.#shouldUpdateFocusInNavigationButtons = false; + } + } - this.#shouldUpdateFocusInNavigationButtons = false; + if ( + changedProperties.get('startView') === 'yearGrid' as StartView && + this.startView === 'calendar' + ) { + (await this._yearDropdown)?.focus(); } } + } protected override render(): TemplateResult { diff --git a/src/mixins/date-picker-mixin.ts b/src/mixins/date-picker-mixin.ts index 40ffb2e07..f2b6874bc 100644 --- a/src/mixins/date-picker-mixin.ts +++ b/src/mixins/date-picker-mixin.ts @@ -6,7 +6,7 @@ import { DateTimeFormat } from '../constants.js'; import { nullishAttributeConverter } from '../helpers/nullish-attribute-converter.js'; import { toDateString } from '../helpers/to-date-string.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; -import type { CalendarView, Constructor } from '../typings.js'; +import type { Constructor, StartView } from '../typings.js'; import type { DatePickerMixinProperties, MixinReturnType } from './typings.js'; export const DatePickerMixin = >( @@ -47,7 +47,7 @@ export const DatePickerMixin = > public showWeekNumber = false; @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) - public startView: CalendarView = 'calendar'; + public startView: StartView = 'calendar'; /** * NOTE: `null` or `''` will always reset to the old valid date. In order to reset to diff --git a/src/mixins/typings.ts b/src/mixins/typings.ts index 3c0f665ec..f055f1c98 100644 --- a/src/mixins/typings.ts +++ b/src/mixins/typings.ts @@ -1,7 +1,7 @@ import type { LitElement } from 'lit'; import type { WeekNumberType } from 'nodemod/dist/calendar/typings.js'; -import type { CalendarView, Constructor } from '../typings.js'; +import type { Constructor, StartView } from '../typings.js'; export interface DatePickerMinMaxProperties { max?: string; @@ -20,7 +20,7 @@ export interface DatePickerMixinProperties { previousMonthLabel: string; selectedDateLabel: string; showWeekNumber: boolean; - startView: CalendarView; + startView: StartView; value: string; weekLabel: string; weekNumberType: WeekNumberType; diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index c2c697c79..acbed45ee 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -1,9 +1,8 @@ import type { TemplateResult } from 'lit'; -import { html, LitElement , nothing} from 'lit'; +import { html, LitElement, nothing } from 'lit'; import { property, queryAsync } from 'lit/decorators.js'; -import { classMap } from 'lit/directives/class-map.js'; -import { navigationKeySetGrid } from '../constants.js'; +import { confirmKeySet, navigationKeySetGrid } from '../constants.js'; import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { focusElement } from '../helpers/focus-element.js'; import { isInCurrentMonth } from '../helpers/is-in-current-month.js'; @@ -12,17 +11,15 @@ import { toNextSelectedDate } from '../helpers/to-next-selected-date.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { keyHome } from '../key-values.js'; import { baseStyling, resetShadowRoot } from '../stylings.js'; -import type { Formatters, InferredFromSet } from '../typings.js'; +import type { Formatters, InferredFromSet, SupportedKey } from '../typings.js'; import { monthCalendarStyling } from './stylings.js'; -import type { MonthCalendarData, MonthCalendarProperties } from './typings.js'; +import type { MonthCalendarData, MonthCalendarProperties, MonthCalendarRenderCalendarDayInit } from './typings.js'; export class MonthCalendar extends LitElement implements MonthCalendarProperties { - @property({ attribute: false }) - public data?: MonthCalendarData; - - @queryAsync('.calendar-day[aria-selected="true"]') - public selectedCalendarDay!: Promise; + @property({ attribute: false }) public data?: MonthCalendarData; + @queryAsync('.calendar-day[aria-selected="true"]') public selectedCalendarDay!: Promise; + #selectedDate: Date | undefined = undefined; /** * NOTE(motss): This is required to avoid selected date being focused on each update. * Selected date should ONLY be focused during navigation with keyboard, e.g. @@ -118,13 +115,13 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties calendarContent = html`
    -
    ${ - showCaption && secondMonthSecondCalendarDayFullDate ? - longMonthYearFormat(secondMonthSecondCalendarDayFullDate) : - '' - }
    -
    +
    ${ + secondMonthSecondCalendarDayFullDate ? + longMonthYearFormat(secondMonthSecondCalendarDayFullDate) : + '' + }
    +
    ${ showCaption && secondMonthSecondCalendarDayFullDate ? html` @@ -175,23 +172,17 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties return html``; } const curTime = +new Date(fullDate); - const isSelectedDate = +date === curTime; const shouldTab = tabbableDate.getUTCDate() === Number(value); - return html` - - `; + return this.$renderCalendarDay({ + ariaDisabled: String(disabled), + ariaLabel: label, + ariaSelected: String(+date === curTime), + className: +todayDate === curTime ? 'day--today' : '', + day: value, + fullDate, + tabIndex: shouldTab ? 0 : -1, + } as MonthCalendarRenderCalendarDayInit); }) }`; }) @@ -203,16 +194,43 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties return html`
    ${calendarContent}
    `; } - #updateSelectedDate = (ev: MouseEvent | KeyboardEvent): void => { - let newSelectedDate: Date | undefined = undefined; + protected $renderCalendarDay({ + ariaDisabled, + ariaLabel, + ariaSelected, + className, + day, + fullDate, + tabIndex, + }: MonthCalendarRenderCalendarDayInit): TemplateResult { + return html` + + `; + } - if (ev.type === 'keydown') { - const key = (ev as KeyboardEvent).key as InferredFromSet; + #updateSelectedDate = (event: KeyboardEvent): void => { + const key = event.key as SupportedKey; + const type = event.type as 'click' | 'keydown' | 'keyup'; - if (!navigationKeySetGrid.has(key)) return; + if (type === 'keydown') { + if ( + !navigationKeySetGrid.has(key as InferredFromSet) && + !confirmKeySet.has(key as InferredFromSet) + ) return; - // Stop scrolling with arrow keys - ev.preventDefault(); + // Stop scrolling with arrow keys or Space key + event.preventDefault(); const { currentDate, @@ -223,21 +241,26 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties min, } = this.data as MonthCalendarData; - newSelectedDate = toNextSelectedDate({ + this.#selectedDate = toNextSelectedDate({ currentDate, date, disabledDatesSet, disabledDaysSet, - hasAltKey: ev.altKey, + hasAltKey: event.altKey, key, maxTime: +max, minTime: +min, }); - this.#shouldFocusSelectedDate = true; - } else if (ev.type === 'click') { + } else if ( + type === 'click' || + ( + type === 'keyup' && + confirmKeySet.has(key as InferredFromSet) + ) + ) { const selectedCalendarDay = - toClosestTarget(ev, '.calendar-day'); + toClosestTarget(event, '.calendar-day'); /** NOTE: Required condition check else these will trigger unwanted re-rendering */ if ( @@ -254,13 +277,16 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties return; } - newSelectedDate = selectedCalendarDay.fullDate; + this.#selectedDate = selectedCalendarDay.fullDate; } + const newSelectedDate = this.#selectedDate; + if (newSelectedDate == null) return; dispatchCustomEvent(this, 'date-updated', { - isKeypress: ev.type === 'keydown', + isKeypress: Boolean(key), + key, value: new Date(newSelectedDate), }); }; diff --git a/src/month-calendar/typings.ts b/src/month-calendar/typings.ts index 62b5d7884..848f4c18f 100644 --- a/src/month-calendar/typings.ts +++ b/src/month-calendar/typings.ts @@ -22,3 +22,8 @@ export interface MonthCalendarData { export interface MonthCalendarProperties { data?: MonthCalendarData; } + +export interface MonthCalendarRenderCalendarDayInit extends HTMLElement { + day: string; + fullDate: Date; +} diff --git a/src/typings.ts b/src/typings.ts index bccf53954..ec0888eb2 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -1,12 +1,12 @@ import type { DateTimeFormatter } from 'nodemod/dist/calendar/typings.js'; -import type { calendarViews } from './constants.js'; +import type { startViews } from './constants.js'; import type { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp, keyEnd, keyEnter, keyHome, keyPageDown, keyPageUp, keySpace, keyTab } from './key-values.js'; import type { DatePickerMinMaxProperties, DatePickerMixinProperties } from './mixins/typings.js'; -export type CalendarView = CalendarViewTuple[number]; +export type StartView = StartViewTuple[number]; -export type CalendarViewTuple = typeof calendarViews; +export type StartViewTuple = typeof startViews; export interface ChangedEvent extends KeyEvent { value: DatePickerMixinProperties['value']; From 61c2347d21129d3f3aae0b1c7c183494593508ea Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 16:16:41 +0800 Subject: [PATCH 122/276] test: update tests --- src/__tests__/helpers/to-next-selected-date.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/__tests__/helpers/to-next-selected-date.test.ts b/src/__tests__/helpers/to-next-selected-date.test.ts index 15654a618..1ef4a2bfc 100644 --- a/src/__tests__/helpers/to-next-selected-date.test.ts +++ b/src/__tests__/helpers/to-next-selected-date.test.ts @@ -22,7 +22,7 @@ describe(toNextSelectedDate.name, () => { // all supported keys [ { key: ' ' }, - new Date('2020-02-01'), + defaultInit.date, ], [ { key: 'ArrowDown' }, @@ -46,7 +46,7 @@ describe(toNextSelectedDate.name, () => { ], [ { key: 'Enter' }, - new Date('2020-02-01'), + defaultInit.date, ], [ { key: 'Home' }, @@ -74,7 +74,7 @@ describe(toNextSelectedDate.name, () => { ], [ { key: 'Tab' }, - new Date('2020-02-01'), + defaultInit.date, ], // not in current month From e51136efe269a4cb02437e855430dea2bfb96734 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 16:57:14 +0800 Subject: [PATCH 123/276] refactor: improve keyboard support in DatePickerInput --- src/date-picker-input/date-picker-input.ts | 48 ++++++++++++++-------- src/month-calendar/month-calendar.ts | 10 +++-- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts index 1044dadfd..229330b41 100644 --- a/src/date-picker-input/date-picker-input.ts +++ b/src/date-picker-input/date-picker-input.ts @@ -9,6 +9,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { DateTimeFormat } from '../constants.js'; import type { AppDatePicker } from '../date-picker/app-date-picker.js'; +import type { AppDatePickerInputSurface } from '../date-picker-input-surface/app-date-picker-input-surface.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { iconClose } from '../icons.js'; import { keyEnter, keySpace } from '../key-values.js'; @@ -22,14 +23,15 @@ export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextF public override type = 'date' as TextFieldType; @property({ type: String }) public clearLabel = 'Clear'; - @queryAsync('.mdc-text-field__input') private _input!: Promise; + @queryAsync('.mdc-text-field__input') protected $input!: Promise; + @queryAsync('app-date-picker-input-surface') protected $inputSurface!: Promise; @state() private _open = false; @state() private _valueText = ''; #disconnect: () => void = () => undefined; #focusElement: HTMLElement | undefined = undefined; #picker: AppDatePicker | undefined = undefined; - #valueFormatter = this.#toValueFormatter(); + #valueFormatter = this.$toValueFormatter(); public static override styles = [ ...TextField.styles, @@ -45,7 +47,7 @@ export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextF public override async firstUpdated(): Promise { super.firstUpdated(); - const input = await this._input; + const input = await this.$input; if (!input) return; @@ -74,7 +76,7 @@ export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextF ) as string; this.locale = newLocale; - this.#valueFormatter = this.#toValueFormatter(); + this.#valueFormatter = this.$toValueFormatter(); if (this.value) { this._valueText = this.#valueFormatter.format(toResolvedDate(this.value)); @@ -174,37 +176,47 @@ export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextF `; } - #onClearClick() { + protected $toValueFormatter(): Intl.DateTimeFormat { + return DateTimeFormat(this.locale, { + year: 'numeric', + month: 'short', + day: 'numeric', + }); + } + + #onClearClick(): void { this.value = this._valueText = ''; } - #onClosed() { + #onClosed(): void { this._open = false; } - async #onDatePickerFirstUpdated(ev: CustomEvent) { + #onDatePickerFirstUpdated(ev: CustomEvent): void { const [focusableElement] = ev.detail.focusableElements; this.#picker = ev.currentTarget as AppDatePicker; this.#focusElement = focusableElement; } - #onDatePickerDateUpdated(ev: CustomEvent) { - this.value = this.#valueFormatter.format(ev.detail.value); + async #onDatePickerDateUpdated(ev: CustomEvent): Promise { + const { + isKeypress, + key, + value, + } = ev.detail; + + this.value = this.#valueFormatter.format(value); + + if (isKeypress && (key === 'Enter' || key === ' ')) { + (await this.$inputSurface)?.close(); + } } - async #onOpened() { + async #onOpened(): Promise { await (this.#picker as AppDatePicker).updateComplete; await this.updateComplete; this.#focusElement?.focus(); } - - #toValueFormatter() { - return DateTimeFormat(this.locale, { - year: 'numeric', - month: 'short', - day: 'numeric', - }); - } } diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index acbed45ee..69d0dcad4 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -224,14 +224,19 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties const type = event.type as 'click' | 'keydown' | 'keyup'; if (type === 'keydown') { + const isConfirmKey = confirmKeySet.has(key as InferredFromSet); + if ( !navigationKeySetGrid.has(key as InferredFromSet) && - !confirmKeySet.has(key as InferredFromSet) + !isConfirmKey ) return; - // Stop scrolling with arrow keys or Space key + // Prevent scrolling with arrow keys or Space key event.preventDefault(); + // Bail out for Enter/ Space key as they should go to keyup handler. + if (isConfirmKey) return; + const { currentDate, date, @@ -268,7 +273,6 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties [ 'aria-disabled', 'aria-hidden', - 'aria-selected', ].some( attrName => selectedCalendarDay.getAttribute(attrName) === 'true' From ae387ac7a14ab8bb2645589f186a2e50def34cfa Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 17:49:19 +0800 Subject: [PATCH 124/276] refactor: minor update --- README.md | 2 +- src/__tests__/helpers/dispatch-custom-event.test.ts | 4 ---- src/__tests__/month-calendar/app-month-calendar.test.ts | 4 +++- src/__tests__/year-grid/app-year-grid.test.ts | 2 -- src/date-picker/date-picker.ts | 6 +----- src/month-calendar/month-calendar.ts | 6 ++++-- src/typings.ts | 5 ++++- src/year-grid/year-grid.ts | 9 +++------ 8 files changed, 16 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 9d29cef28..94ddc8325 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ The following snippet shows a simple script used in the demo to load polyfills v if (!window.Intl) { var wa = document.createElement('script'); - /** FIXME: Pin package version due to https://github.com/andyearnshaw/Intl.js/issues/256 */ + /** NOTE: Pin package version due to https://github.com/andyearnshaw/Intl.js/issues/256 */ wa.src = 'https://unpkg.com/intl@1.2.4/dist/Intl.complete.js'; wa.onload = function onLoad() { console.info('🌐 Intl polyfill loaded'); }; wa.onerror = console.error; diff --git a/src/__tests__/helpers/dispatch-custom-event.test.ts b/src/__tests__/helpers/dispatch-custom-event.test.ts index 1d25bdd55..0f4e68f56 100644 --- a/src/__tests__/helpers/dispatch-custom-event.test.ts +++ b/src/__tests__/helpers/dispatch-custom-event.test.ts @@ -11,13 +11,9 @@ describe(dispatchCustomEvent.name, () => { [undefined, null], [ { - isKeypress: true, - key: 'Enter', year: 2020, }, { - isKeypress: true, - key: 'Enter', year: 2020, }, ], diff --git a/src/__tests__/month-calendar/app-month-calendar.test.ts b/src/__tests__/month-calendar/app-month-calendar.test.ts index ce4b5ecf7..1835ff56d 100644 --- a/src/__tests__/month-calendar/app-month-calendar.test.ts +++ b/src/__tests__/month-calendar/app-month-calendar.test.ts @@ -243,9 +243,11 @@ describe(appMonthCalendarName, () => { ); expect(newSelectedDate?.fullDate).deep.equal(calendarInit.date); + const isKeypress = testEventType === 'keydown'; const expectedDateUpdatedEvent: DateUpdatedEvent = { - isKeypress: testEventType === 'keydown', + isKeypress, value: new Date('2020-02-09'), + ...(isKeypress && { key: testKeyPayloads[0].down }), }; expect(dateUpdatedEvent).deep.equal(expectedDateUpdatedEvent); diff --git a/src/__tests__/year-grid/app-year-grid.test.ts b/src/__tests__/year-grid/app-year-grid.test.ts index a3f40e1fe..e912a5782 100644 --- a/src/__tests__/year-grid/app-year-grid.test.ts +++ b/src/__tests__/year-grid/app-year-grid.test.ts @@ -137,8 +137,6 @@ describe(appYearGridName, () => { ]); const expectedYearUpdatedEvent: YearUpdatedEvent = { year: data.max.getUTCFullYear(), - isKeypress: testEventType.startsWith('key'), - key: testKey, }; expect(yearGridButtonAttrsList).deep.equal([ diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 62f790bff..6a9f8a4a5 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -384,14 +384,10 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement detail: { value }, }: CustomEvent): void { this.#updateSelectedAndCurrentDate(value); - - // TODO: To fire value update event } #updateStartView(): void { - const isYearGrid = this.startView === 'yearGrid'; - - this.startView = isYearGrid ? 'calendar' : 'yearGrid'; + this.startView = this.startView === 'yearGrid' ? 'calendar' : 'yearGrid'; } #updateYear({ diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 69d0dcad4..682ca47c9 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -288,10 +288,12 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties if (newSelectedDate == null) return; + const isKeypress = Boolean(key); + dispatchCustomEvent(this, 'date-updated', { - isKeypress: Boolean(key), - key, + isKeypress, value: new Date(newSelectedDate), + ...(isKeypress && { key }), }); }; } diff --git a/src/typings.ts b/src/typings.ts index ec0888eb2..b3513ecfd 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -68,7 +68,10 @@ export interface ValueUpdatedEvent extends KeyEvent { value: string; } -export interface YearUpdatedEvent extends KeyEvent { +/** + * NOTE: No `KeyEvent` is needed as native `button` element will dispatch `click` event on keypress. + */ +export interface YearUpdatedEvent { year: number; } diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index 07d08d596..cf5bcfec1 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -10,7 +10,7 @@ import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; import { baseStyling, resetButton, resetShadowRoot } from '../stylings.js'; -import type { Formatters, InferredFromSet, SupportedKey } from '../typings.js'; +import type { Formatters, InferredFromSet } from '../typings.js'; import { yearGridStyling } from './stylings.js'; import { toNextSelectedYear } from './to-next-selected-year.js'; import type { YearGridChangedProperties, YearGridData, YearGridProperties, YearGridRenderButtonInit } from './typings.js'; @@ -110,10 +110,10 @@ export class YearGrid extends LitElement implements YearGridProperties { `; } - #updateYear = (event: MouseEvent | KeyboardEvent): void => { + #updateYear = (event: KeyboardEvent): void => { if (event.type === 'keydown') { const key = - (event as KeyboardEvent).key as InferredFromSet; + event.key as InferredFromSet; if (!navigationKeySetGrid.has(key)) return; @@ -147,14 +147,11 @@ export class YearGrid extends LitElement implements YearGridProperties { /** Do nothing when not tapping on the year button */ if (selectedYearStr == null) return; - const key = (event as KeyboardEvent).key as SupportedKey; const year = Number(selectedYearStr); this.$focusingYear = year; dispatchCustomEvent(this, 'year-updated', { - isKeypress: Boolean(key), - key, year, }); } From 5b418eb3ef7179f95bd758e5e2ba5e67ef90f11d Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 7 Nov 2021 21:55:13 +0800 Subject: [PATCH 125/276] refactor: minor update and cleanup to improve test coverage --- README.md | 17 ++-- src/__demo__/demo-app.ts | 8 +- .../date-picker/app-date-picker.test.ts | 84 +++++++++---------- .../month-calendar/app-month-calendar.test.ts | 67 +++------------ .../app-year-grid-button.test.ts | 5 +- src/__tests__/year-grid/app-year-grid.test.ts | 18 ++-- .../date-picker-input-surface.ts | 3 +- src/date-picker-input/date-picker-input.ts | 3 +- src/date-picker/date-picker.ts | 55 ++++++------ src/mixins/date-picker-min-max-mixin.ts | 5 +- src/mixins/date-picker-mixin.ts | 53 ++++-------- src/mixins/element-mixin.ts | 27 ++++++ src/mixins/typings.ts | 12 ++- src/month-calendar/month-calendar.ts | 7 +- src/root-element/root-element.ts | 5 ++ src/typings.ts | 11 ++- src/year-grid-button/year-grid-button.ts | 3 +- src/year-grid/year-grid.ts | 12 +-- 18 files changed, 188 insertions(+), 207 deletions(-) create mode 100644 src/mixins/element-mixin.ts create mode 100644 src/root-element/root-element.ts diff --git a/README.md b/README.md index 94ddc8325..13b710744 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

    app-datepicker

    -

    Datepicker element built with lit-element and Material Design 2

    +

    Datepicker element built with lit and Material Design 2


    @@ -11,7 +11,7 @@ [![Follow me][follow-me-badge]][follow-me-url] [![Version][version-badge]][version-url] -[![lit-element][lit-element-version-badge]][lit-element-url] +[![lit][lit-version-badge]][lit-url] [![Node version][node-version-badge]][node-version-url] [![MIT License][mit-license-badge]][mit-license-url] @@ -41,7 +41,7 @@ Today, `app-datepicker` has been completely rewritten to adapt to the best of bo The following are the list of tools used that makes it shine: 1. [TypeScript] - 2. [lit-element][lit-element-url] + 2. [lit] ## Table of contents @@ -58,7 +58,7 @@ The following are the list of tools used that makes it shine: ## Pre-requisite - [ES2019] _(The element is compiled with features targeting ES2019, so it might not work properly without transpilation on older browsers.)_ -- [lit-element][lit-element-url] >= 2.2.1 +- [lit] >= 2.2.1 - [OPTIONAL] [TypeScript] >= 3.8.3 _(TypeScript users only)_ ## Installation @@ -112,9 +112,9 @@ The following snippet shows a simple script used in the demo to load polyfills v ```ts /** * Say you've already installed the element via NPM, simply import the package to your application. - * Here I'm using `lit-element` for developing my application. + * Here I'm using `lit` for developing my application. */ -import { css, customElement, html, LitElement } from 'lit-element'; +import { css, customElement, html, LitElement } from 'lit'; import 'app-datepicker'; @customElement(MyApp.is) @@ -248,7 +248,8 @@ Meantime, feel free to check the older version out at: [Configurable demo powered by Firebase]: https://motss-app.web.app/demo/app-datepicker.html [Intl.DateTimeFormat]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat [jsdelivr-url]: https://www.jsdelivr.com/package/npm/app-datepicker?version=latest&utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker -[lit-element-url]: https://github.com/Polymer/lit-element?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker +[lit]: https://github.com/lit/lit?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker +[lit-url]: https://github.com/lit/lit?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker [material-design-2-url]: https://material.io/design/?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker [polymer-2-url]: https://polymer-library.polymer-project.org/2.0/docs/devguide/feature-overview?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker [polymer-3-url]: https://polymer-library.polymer-project.org/3.0/docs/devguide/feature-overview?utm_source=github.com&utm_medium=referral&utm_content=motss/app-datepicker @@ -282,7 +283,7 @@ Meantime, feel free to check the older version out at: [follow-me-badge]: https://flat.badgen.net/twitter/follow/igarshmyb?icon=twitter [version-badge]: https://flat.badgen.net/npm/v/app-datepicker/latest?icon=npm -[lit-element-version-badge]: https://flat.badgen.net/npm/v/lit-element/latest?icon=npm&label=lit-element +[lit-version-badge]: https://flat.badgen.net/npm/v/lit/latest?icon=npm&label=lit [node-version-badge]: https://flat.badgen.net/npm/node/app-datepicker [mit-license-badge]: https://flat.badgen.net/npm/license/app-datepicker diff --git a/src/__demo__/demo-app.ts b/src/__demo__/demo-app.ts index 70a8bb2cb..859def597 100644 --- a/src/__demo__/demo-app.ts +++ b/src/__demo__/demo-app.ts @@ -1,11 +1,13 @@ -import '../date-picker/app-date-picker.js'; import '../date-picker-input/app-date-picker-input.js'; +import '../date-picker/app-date-picker.js'; -import { css, html, LitElement } from 'lit'; +import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; +import { RootElement } from '../root-element/root-element.js'; + @customElement('demo-app') -export class DemoApp extends LitElement { +export class DemoApp extends RootElement { public static override styles = [ css` :host { diff --git a/src/__tests__/date-picker/app-date-picker.test.ts b/src/__tests__/date-picker/app-date-picker.test.ts index b8e2f8318..66d8915e1 100644 --- a/src/__tests__/date-picker/app-date-picker.test.ts +++ b/src/__tests__/date-picker/app-date-picker.test.ts @@ -55,21 +55,17 @@ describe(appDatePickerName, () => { it( messageFormatter('renders (startView=%s)', a), async () => { - const el = await fixture( + const el = await fixture( html`` ); testElementsShouldRender.forEach((n) => { - const element = el.shadowRoot?.querySelector( - elementSelectors[n] - ); + const element = el.query(elementSelectors[n]); expect(element).exist; }); testElementsShouldNotRender.forEach((n) => { - const element = el.shadowRoot?.querySelector( - elementSelectors[n] - ); + const element = el.query(elementSelectors[n]); expect(element).not.exist; }); @@ -92,7 +88,7 @@ describe(appDatePickerName, () => { html`` ); - const selectedYearMonth = el.shadowRoot?.querySelector( + const selectedYearMonth = el.query( elementSelectors.selectedYearMonth ); @@ -141,7 +137,7 @@ describe(appDatePickerName, () => { a ), async () => { - const el = await fixture( + const el = await fixture( html` { ); testElementsShouldRender.forEach((n) => { - const element = el.shadowRoot?.querySelector( - elementSelectors[n] - ); + const element = el.query(elementSelectors[n]); expect(element).exist; }); testElementsShouldNotRender.forEach((n) => { - const element = el.shadowRoot?.querySelector( - elementSelectors[n] - ); + const element = el.query(elementSelectors[n]); expect(element).not.exist; }); @@ -188,7 +180,7 @@ describe(appDatePickerName, () => { >` ); - const element = el.shadowRoot?.querySelector( + const element = el.query( elementSelectors[testMonthNavigationElementSelector] ); @@ -197,7 +189,7 @@ describe(appDatePickerName, () => { await elementUpdated(el); - const selectedYearMonth = el.shadowRoot?.querySelector( + const selectedYearMonth = el.query( elementSelectors.selectedYearMonth ); @@ -224,7 +216,7 @@ describe(appDatePickerName, () => { >` ); - const yearDropdown = el.shadowRoot?.querySelector( + const yearDropdown = el.query( elementSelectors.yearDropdown ); @@ -233,13 +225,13 @@ describe(appDatePickerName, () => { await elementUpdated(el); - const yearGrid = el.shadowRoot?.querySelector( + const yearGrid = el.query( elementSelectors.yearGrid ); expect(yearGrid).exist; - const newSelectedYear = yearGrid?.shadowRoot?.querySelector( + const newSelectedYear = yearGrid?.query( `${elementSelectors.yearGridButton}[data-year="${newSelectedDate.getUTCFullYear()}"]` ); @@ -250,13 +242,13 @@ describe(appDatePickerName, () => { await elementUpdated(el); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); expect(calendar).exist; - const selectedYearMonth = el.shadowRoot?.querySelector( + const selectedYearMonth = el.query( elementSelectors.selectedYearMonth ); @@ -270,7 +262,7 @@ describe(appDatePickerName, () => { const newSelectedDate2Label = formatters.fullDateFormat(newSelectedDate2); const newSelectedCalendarDay = - calendar?.shadowRoot?.querySelector( + calendar?.query( `${elementSelectors.calendarDay}[aria-label="${newSelectedDate2Label}"]` ); @@ -293,7 +285,7 @@ describe(appDatePickerName, () => { await elementUpdated(el); const selectedCalendarDay = - calendar?.shadowRoot?.querySelector( + calendar?.query( elementSelectors.selectedCalendarDay ); @@ -328,11 +320,11 @@ describe(appDatePickerName, () => { ); const newSelectedDateLabel = formatters.fullDateFormat(newSelectedDate); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); const newSelectedCalendarDay = - calendar?.shadowRoot?.querySelector( + calendar?.query( `${elementSelectors.calendarDay}[aria-label="${newSelectedDateLabel}"]` ); @@ -349,7 +341,7 @@ describe(appDatePickerName, () => { await elementUpdated(calendar as AppMonthCalendar); await elementUpdated(el); - const selectedDate = calendar?.shadowRoot?.querySelector( + const selectedDate = calendar?.query( elementSelectors.selectedCalendarDay ); @@ -376,7 +368,7 @@ describe(appDatePickerName, () => { >` ); - const yearDropdown = el.shadowRoot?.querySelector( + const yearDropdown = el.query( elementSelectors.yearDropdown ); @@ -385,7 +377,7 @@ describe(appDatePickerName, () => { await elementUpdated(el); - const yearGrid = el.shadowRoot?.querySelector( + const yearGrid = el.query( elementSelectors.yearGrid ); @@ -396,10 +388,10 @@ describe(appDatePickerName, () => { await elementUpdated(el); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); - const yearGrid2 = el.shadowRoot?.querySelector( + const yearGrid2 = el.query( elementSelectors.yearGrid ); @@ -434,10 +426,10 @@ describe(appDatePickerName, () => { >` ); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); - const selectedDate = calendar?.shadowRoot?.querySelector( + const selectedDate = calendar?.query( elementSelectors.selectedCalendarDay ); @@ -454,10 +446,10 @@ describe(appDatePickerName, () => { await elementUpdated(calendar as AppMonthCalendar); await elementUpdated(el); - const calendar2 = el.shadowRoot?.querySelector( + const calendar2 = el.query( elementSelectors.calendar ); - const newSelectedDate = calendar2?.shadowRoot?.querySelector( + const newSelectedDate = calendar2?.query( elementSelectors.selectedCalendarDay ); @@ -504,11 +496,11 @@ describe(appDatePickerName, () => { >` ); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); - const minDate = calendar?.shadowRoot?.querySelector( + const minDate = calendar?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedMinDate) }"]` @@ -526,7 +518,7 @@ describe(appDatePickerName, () => { ) ); const oneDayBeforeMinDate = - calendar?.shadowRoot?.querySelector( + calendar?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedOneDayBeforeMinDate) }"]` @@ -543,11 +535,11 @@ describe(appDatePickerName, () => { await elementUpdated(calendar as AppMonthCalendar); await elementUpdated(el); - const calendar2 = el.shadowRoot?.querySelector( + const calendar2 = el.query( elementSelectors.calendar ); - const minDate2 = calendar2?.shadowRoot?.querySelector( + const minDate2 = calendar2?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedNewMinDate) }"]` @@ -560,7 +552,7 @@ describe(appDatePickerName, () => { expect(minDate2?.fullDate).deep.equal(expectedNewMinDate); const previousMonthNavigationButton = - el.shadowRoot?.querySelector( + el.query( elementSelectors.previousMonthNavigationButton ); @@ -574,7 +566,7 @@ describe(appDatePickerName, () => { ) ); const oneDayBeforeMinDate2 = - calendar?.shadowRoot?.querySelector( + calendar?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedOneDayBeforeMinDate2) }"]` @@ -628,11 +620,11 @@ describe(appDatePickerName, () => { >` ); - const calendar = el.shadowRoot?.querySelector( + const calendar = el.query( elementSelectors.calendar ); - const selectedDate = calendar?.shadowRoot?.querySelector( + const selectedDate = calendar?.query( elementSelectors.selectedCalendarDay ); @@ -654,7 +646,7 @@ describe(appDatePickerName, () => { const isSameCalendarMonth = toResolvedDate(date).getUTCMonth() === expectedDate.getUTCMonth(); if (isSameCalendarMonth) { - const maxDate = calendar?.shadowRoot?.querySelector( + const maxDate = calendar?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedDate) }"]` @@ -683,7 +675,7 @@ describe(appDatePickerName, () => { ) ); const oneDayAfterMaxDate = - calendar?.shadowRoot?.querySelector( + calendar?.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(expectedOneDayAfterMaxDate) }"]` diff --git a/src/__tests__/month-calendar/app-month-calendar.test.ts b/src/__tests__/month-calendar/app-month-calendar.test.ts index 1835ff56d..c0598ed11 100644 --- a/src/__tests__/month-calendar/app-month-calendar.test.ts +++ b/src/__tests__/month-calendar/app-month-calendar.test.ts @@ -73,14 +73,14 @@ describe(appMonthCalendarName, () => { const [, testData, testShouldRender] = a; it(messageFormatter('renders %s(data=%j)', a), async () => { - const el = await fixture( + const el = await fixture( html`` ); - const monthCalendar = el.shadowRoot?.querySelector( + const monthCalendar = el.query( elementSelectors.monthCalendar ); - const calendarTable = el.shadowRoot?.querySelector( + const calendarTable = el.query( elementSelectors.calendarTable ); @@ -109,7 +109,7 @@ describe(appMonthCalendarName, () => { ); const expected = new Date('2020-03-01'); - const tabbableCalendarDay = el.shadowRoot?.querySelector( + const tabbableCalendarDay = el.query( `${elementSelectors.tabbableCalendarDay}[aria-label="${formatters.fullDateFormat(expected)}"]` ); @@ -151,7 +151,7 @@ describe(appMonthCalendarName, () => { }}>` ); - const element = el.shadowRoot?.querySelector( + const element = el.query( testElementSelector ); @@ -210,7 +210,7 @@ describe(appMonthCalendarName, () => { }); }); - const selectedDate = el.shadowRoot?.querySelector( + const selectedDate = el.query( `${elementSelectors.calendarDay}[aria-label="${ formatters.fullDateFormat(testSelectedDate) }"]` @@ -233,7 +233,7 @@ describe(appMonthCalendarName, () => { await el.updateComplete; const dateUpdatedEvent = await dateUpdatedEventTask; - const newSelectedDate = el.shadowRoot?.querySelector( + const newSelectedDate = el.query( elementSelectors.selectedCalendarDay ); @@ -251,7 +251,7 @@ describe(appMonthCalendarName, () => { }; expect(dateUpdatedEvent).deep.equal(expectedDateUpdatedEvent); - expect(el.shadowRoot?.activeElement?.isEqualNode(newSelectedDate ?? null)); + expect(el.root.activeElement?.isEqualNode(newSelectedDate ?? null)); } ); }); @@ -297,7 +297,7 @@ describe(appMonthCalendarName, () => { }}>` ); - const newSelectedDate = el.shadowRoot?.querySelector( + const newSelectedDate = el.query( testElementSelector ); @@ -306,7 +306,7 @@ describe(appMonthCalendarName, () => { await el.updateComplete; - const selectedDate = el.shadowRoot?.querySelector( + const selectedDate = el.query( elementSelectors.selectedCalendarDay ); @@ -318,51 +318,4 @@ describe(appMonthCalendarName, () => { ); }); - // type A5 = [string, 'click' | 'keydown']; - // const cases5 = [ - // ['focuses', 'click'], - // ]; - // cases5.forEach(a => { - // const [testPartialData, testElementSelector] = a; - // it( - // messageFormatter('%s new date (eventType=%s)', a), - // async () => { - // const testCalendar = calendar({ - // ...calendarInit, - // ...( - // testPartialData.disabledDatesSet && { - // disabledDates: [...testPartialData.disabledDatesSet].map(n => new Date(n)), - // } - // ), - // }); - // const el = await fixture( - // html`` - // ); - - // const newSelectedDate = el.shadowRoot?.querySelector( - // testElementSelector - // ); - - // newSelectedDate?.focus(); - // newSelectedDate?.click(); - - // await el.updateComplete; - - // const selectedDate = el.shadowRoot?.querySelector( - // elementSelectors.selectedCalendarDay - // ); - - // expect(selectedDate).exist; - // expect(selectedDate?.getAttribute('aria-label')).equal( - // formatters.fullDateFormat(data.date) - // ); - // } - // ); - // }); - }); diff --git a/src/__tests__/year-grid-button/app-year-grid-button.test.ts b/src/__tests__/year-grid-button/app-year-grid-button.test.ts index 9559996fa..65b4858f6 100644 --- a/src/__tests__/year-grid-button/app-year-grid-button.test.ts +++ b/src/__tests__/year-grid-button/app-year-grid-button.test.ts @@ -2,15 +2,16 @@ import '../../year-grid-button/app-year-grid-button'; import { expect, fixture, html } from '@open-wc/testing'; +import type { AppYearGridButton } from '../../year-grid-button/app-year-grid-button'; import { appYearGridName } from '../../year-grid-button/constants'; describe(appYearGridName, () => { it('renders', async () => { - const el = await fixture( + const el = await fixture( html`` ); - expect(el.shadowRoot?.querySelector(`button[aria-label="test"]`)).exist; + expect(el.query(`button[aria-label="test"]`)).exist; }); }); diff --git a/src/__tests__/year-grid/app-year-grid.test.ts b/src/__tests__/year-grid/app-year-grid.test.ts index e912a5782..575ed38a7 100644 --- a/src/__tests__/year-grid/app-year-grid.test.ts +++ b/src/__tests__/year-grid/app-year-grid.test.ts @@ -27,7 +27,7 @@ describe(appYearGridName, () => { const el = await fixture(html``); const yearGridButtonAttrsList = Array.from( - el.shadowRoot?.querySelectorAll(elementSelectors.yearGridButton) ?? [] + el.queryAll(elementSelectors.yearGridButton) ?? [] ).map<[string, string, string, string]>(n => [ n.getAttribute('data-year') ?? '', n.getAttribute('aria-label') ?? '', @@ -35,7 +35,7 @@ describe(appYearGridName, () => { n.getAttribute('aria-selected') ?? '', ]); - expect(el.shadowRoot?.querySelector(elementSelectors.yearGrid)).exist; + expect(el.query(elementSelectors.yearGrid)).exist; expect(yearGridButtonAttrsList).deep.equal([ ['2019', '2019', '-1', 'false'], ['2020', '2020', '0', 'true'], @@ -48,13 +48,13 @@ describe(appYearGridName, () => { html`` ); - expect(el.shadowRoot?.querySelector(elementSelectors.yearGrid)).not.exist; + expect(el.query(elementSelectors.yearGrid)).not.exist; }); it('focuses new year with keyboard', async () => { const el = await fixture(html``); - const newSelectedYear = el.shadowRoot?.querySelector( + const newSelectedYear = el.query( `${elementSelectors.yearGridButton}[data-year="${data.date.getUTCFullYear()}"]` ); @@ -67,7 +67,7 @@ describe(appYearGridName, () => { await el.updateComplete; const yearGridButtonAttrsList = Array.from( - el.shadowRoot?.querySelectorAll(elementSelectors.yearGridButton) ?? [] + el.queryAll(elementSelectors.yearGridButton) ?? [] ).map<[string, string, string, string]>(n => [ n.getAttribute('data-year') ?? '', n.getAttribute('aria-label') ?? '', @@ -105,7 +105,7 @@ describe(appYearGridName, () => { el.addEventListener('year-updated', fn); }); - const newSelectedYear = el.shadowRoot?.querySelector( + const newSelectedYear = el.query( `${elementSelectors.yearGridButton}[data-year="${testNewSelectedYear}"]` ); @@ -128,7 +128,7 @@ describe(appYearGridName, () => { const yearUpdatedEvent = await yearUpdatedEventTask; const yearGridButtonAttrsList = Array.from( - el.shadowRoot?.querySelectorAll(elementSelectors.yearGridButton) ?? [] + el.queryAll(elementSelectors.yearGridButton) ?? [] ).map<[string, string, string, string]>(n => [ n.getAttribute('data-year') ?? '', n.getAttribute('aria-label') ?? '', @@ -152,7 +152,7 @@ describe(appYearGridName, () => { it('does not focus/ select new year when click on irrelevant element', async () => { const el = await fixture(html``); - const newSelectedYear = el.shadowRoot?.querySelector( + const newSelectedYear = el.query( elementSelectors.yearGrid ); @@ -162,7 +162,7 @@ describe(appYearGridName, () => { await el.updateComplete; const yearGridButtonAttrsList = Array.from( - el.shadowRoot?.querySelectorAll(elementSelectors.yearGridButton) ?? [] + el.queryAll(elementSelectors.yearGridButton) ?? [] ).map<[string, string, string, string]>(n => [ n.getAttribute('data-year') ?? '', n.getAttribute('aria-label') ?? '', diff --git a/src/date-picker-input-surface/date-picker-input-surface.ts b/src/date-picker-input-surface/date-picker-input-surface.ts index ea0cc479c..73c890bf2 100644 --- a/src/date-picker-input-surface/date-picker-input-surface.ts +++ b/src/date-picker-input-surface/date-picker-input-surface.ts @@ -2,6 +2,7 @@ import { MenuSurface } from '@material/mwc-menu/mwc-menu-surface.js'; import { appDatePickerName } from '../date-picker/constants.js'; import { appDatePickerInputName } from '../date-picker-input/constants.js'; +import { ElementMixin } from '../mixins/element-mixin.js'; import type { InferredFromSet } from '../typings.js'; import { DatePickerInputSurfaceStyling } from './stylings.js'; @@ -10,7 +11,7 @@ const alwaysOpenElementSet = new Set([ appDatePickerName, ]); -export class DatePickerInputSurface extends MenuSurface { +export class DatePickerInputSurface extends ElementMixin(MenuSurface) { public static override styles = [ ...MenuSurface.styles, DatePickerInputSurfaceStyling, diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts index 229330b41..927fe15fd 100644 --- a/src/date-picker-input/date-picker-input.ts +++ b/src/date-picker-input/date-picker-input.ts @@ -15,11 +15,12 @@ import { iconClose } from '../icons.js'; import { keyEnter, keySpace } from '../key-values.js'; import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; +import { ElementMixin } from '../mixins/element-mixin.js'; import type { DatePickerMixinProperties } from '../mixins/typings.js'; import type { ChangedProperties, DatePickerProperties, SupportedCustomEventDetail } from '../typings.js'; import { datePickerInputStyling } from './stylings.js'; -export class DatePickerInput extends DatePickerMixin(DatePickerMinMaxMixin(TextField)) implements DatePickerMixinProperties { +export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinMaxMixin(TextField))) implements DatePickerMixinProperties { public override type = 'date' as TextFieldType; @property({ type: String }) public clearLabel = 'Clear'; diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 6a9f8a4a5..479f58495 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -4,7 +4,7 @@ import '../year-grid/app-year-grid.js'; import type { IconButton } from '@material/mwc-icon-button'; import type { TemplateResult } from 'lit'; -import { html, LitElement, nothing } from 'lit'; +import { html, nothing } from 'lit'; import { queryAsync, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { calendar } from 'nodemod/dist/calendar/calendar.js'; @@ -26,6 +26,7 @@ import { iconArrowDropdown, iconChevronLeft, iconChevronRight } from '../icons.j import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; import type { AppMonthCalendar } from '../month-calendar/app-month-calendar.js'; +import { RootElement } from '../root-element/root-element.js'; import { resetShadowRoot, webkitScrollbarStyling } from '../stylings.js'; import type { DatePickerProperties, Formatters, StartView, ValueUpdatedEvent, YearUpdatedEvent } from '../typings.js'; import type { AppYearGrid } from '../year-grid/app-year-grid.js'; @@ -33,7 +34,7 @@ import type { YearGridData } from '../year-grid/typings.js'; import { datePickerStyling } from './stylings.js'; import type { DatePickerChangedProperties } from './typings.js'; -export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement)) implements DatePickerProperties { +export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElement)) implements DatePickerProperties { public valueAsDate: Date; public valueAsNumber: number; @@ -56,7 +57,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement @state() private _selectedDate: Date; #formatters: Formatters; - #shouldUpdateFocusInNavigationButtons = false; + #focusNavButtonWithKey = false; #today: Date; public static override styles = [ @@ -181,26 +182,31 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement protected override async updated( changedProperties: DatePickerChangedProperties ): Promise { - if (changedProperties.has('startView')) { - if (this.startView === 'calendar') { - if (changedProperties.has('_currentDate') && this.#shouldUpdateFocusInNavigationButtons) { - const currentDate = this._currentDate; + /** + * NOTE: Focus `.year-dropdown` when switching from year grid to calendar view. + */ + if ( + changedProperties.get('startView') === 'yearGrid' as StartView && + this.startView === 'calendar' + ) { + (await this._yearDropdown)?.focus(); + } - isInCurrentMonth(this._min, currentDate) && focusElement(this._navigationNext); - isInCurrentMonth(this._max, currentDate) && focusElement(this._navigationPrevious); + /** + * NOTE: Focus new navigation button when navigating months with keyboard, e.g. + * next button will not show in Dec 2020 when `max=2020-12-31` so previous button should be + * focused instead. + */ + if (this.startView === 'calendar') { + if (changedProperties.has('_currentDate') && this.#focusNavButtonWithKey) { + const currentDate = this._currentDate; - this.#shouldUpdateFocusInNavigationButtons = false; - } - } + isInCurrentMonth(this._min, currentDate) && focusElement(this._navigationNext); + isInCurrentMonth(this._max, currentDate) && focusElement(this._navigationPrevious); - if ( - changedProperties.get('startView') === 'yearGrid' as StartView && - this.startView === 'calendar' - ) { - (await this._yearDropdown)?.focus(); + this.#focusNavButtonWithKey = false; } } - } protected override render(): TemplateResult { @@ -261,18 +267,19 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(LitElement ); this._currentDate = newCurrentDate; - this.#shouldUpdateFocusInNavigationButtons = true; + + /** + * `.detail=1` means mouse click in `@click` for all browsers except IE11. + */ + this.#focusNavButtonWithKey = ev.detail === 0; } #queryAllFocusable = async () : Promise => { const isStartViewCalendar = this.startView === 'calendar'; const focusable = [ - ...Array.from( - this.shadowRoot?.querySelectorAll('mwc-icon-button') ?? [] - ), + ...this.queryAll('mwc-icon-button'), (await (isStartViewCalendar ? this._monthCalendar : this._yearGrid)) - ?.shadowRoot - ?.querySelector(`.${ + ?.query(`.${ isStartViewCalendar ? 'calendar-day' : 'year-grid-button' }[aria-selected="true"]`), ].filter(Boolean) as HTMLElement[]; diff --git a/src/mixins/date-picker-min-max-mixin.ts b/src/mixins/date-picker-min-max-mixin.ts index 0a9498075..abb925499 100644 --- a/src/mixins/date-picker-min-max-mixin.ts +++ b/src/mixins/date-picker-min-max-mixin.ts @@ -1,11 +1,10 @@ -import type { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; import { nullishAttributeConverter } from '../helpers/nullish-attribute-converter.js'; -import type { Constructor } from '../typings.js'; +import type { LitConstructor } from '../typings.js'; import type { DatePickerMinMaxProperties, MixinReturnType } from './typings.js'; -export const DatePickerMinMaxMixin = >( +export const DatePickerMinMaxMixin = ( SuperClass: BaseConstructor ): MixinReturnType => { class DatePickerMinMaxClass extends SuperClass implements DatePickerMinMaxProperties { diff --git a/src/mixins/date-picker-mixin.ts b/src/mixins/date-picker-mixin.ts index f2b6874bc..79021b688 100644 --- a/src/mixins/date-picker-mixin.ts +++ b/src/mixins/date-picker-mixin.ts @@ -1,4 +1,3 @@ -import type { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; import type { WeekNumberType } from 'nodemod/dist/calendar/typings.js'; @@ -6,64 +5,46 @@ import { DateTimeFormat } from '../constants.js'; import { nullishAttributeConverter } from '../helpers/nullish-attribute-converter.js'; import { toDateString } from '../helpers/to-date-string.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; -import type { Constructor, StartView } from '../typings.js'; +import type { LitConstructor, StartView } from '../typings.js'; import type { DatePickerMixinProperties, MixinReturnType } from './typings.js'; -export const DatePickerMixin = >( +export const DatePickerMixin = ( SuperClass: BaseConstructor ): MixinReturnType => { class DatePickerMixinClass extends SuperClass implements DatePickerMixinProperties { - @property() - public disabledDays = ''; + @property() public disabledDays = ''; - @property() - public disabledDates = ''; + @property() public disabledDates = ''; - @property({ type: Number }) - public dragRatio = .15; + @property({ type: Number, reflect: true }) public firstDayOfWeek = 0; - @property({ type: Number, reflect: true }) - public firstDayOfWeek = 0; + @property({ type: Boolean }) public inline = false; - @property({ type: Boolean }) - public inline = false; + @property({ type: Boolean, reflect: true }) public landscape = false; - @property({ type: Boolean, reflect: true }) - public landscape = false; + @property() public locale: string = DateTimeFormat().resolvedOptions().locale; - @property() - public locale: string = DateTimeFormat().resolvedOptions().locale; + @property() public nextMonthLabel = 'Next month'; - @property() - public nextMonthLabel = 'Next month'; + @property() public previousMonthLabel = 'Previous month'; - @property() - public previousMonthLabel = 'Previous month'; + @property() public selectedDateLabel = 'Selected date'; - @property() - public selectedDateLabel = 'Selected date'; + @property({ type: Boolean, reflect: true }) public showWeekNumber = false; - @property({ type: Boolean, reflect: true }) - public showWeekNumber = false; - - @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) - public startView: StartView = 'calendar'; + @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) public startView: StartView = 'calendar'; /** * NOTE: `null` or `''` will always reset to the old valid date. In order to reset to * today's date, set `value` undefined. */ - @property() - public value: string = toDateString(toResolvedDate()); + @property() public value: string = toDateString(toResolvedDate()); - @property() - public weekLabel = 'Wk'; + @property() public weekLabel = 'Wk'; - @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) - public weekNumberType: WeekNumberType = 'first-4-day-week'; + @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) public weekNumberType: WeekNumberType = 'first-4-day-week'; - @property() - public yearDropdownLabel = 'Select a year'; + @property() public yearDropdownLabel = 'Select a year'; } return DatePickerMixinClass as unknown as MixinReturnType< diff --git a/src/mixins/element-mixin.ts b/src/mixins/element-mixin.ts new file mode 100644 index 000000000..75feae2bb --- /dev/null +++ b/src/mixins/element-mixin.ts @@ -0,0 +1,27 @@ +import type { LitConstructor } from '../typings.js'; +import type { ElementMixinProperties, MixinReturnType } from './typings.js'; + +export const ElementMixin = ( + SuperClass: BaseConstructor +): MixinReturnType => { + class ElementMixinClass extends SuperClass { + public query(selector: string): T | null { + return this.root.querySelector(selector) as T; + } + + public queryAll(selector: string): T[] { + return Array.from( + this.root.querySelectorAll(selector) ?? [] + ); + } + + public get root(): ShadowRoot { + return this.shadowRoot as ShadowRoot; + } + } + + return ElementMixinClass as unknown as MixinReturnType< + BaseConstructor, + ElementMixinProperties + >; +}; diff --git a/src/mixins/typings.ts b/src/mixins/typings.ts index f055f1c98..afd240b08 100644 --- a/src/mixins/typings.ts +++ b/src/mixins/typings.ts @@ -1,7 +1,6 @@ -import type { LitElement } from 'lit'; import type { WeekNumberType } from 'nodemod/dist/calendar/typings.js'; -import type { Constructor, StartView } from '../typings.js'; +import type { Constructor, LitConstructor, StartView } from '../typings.js'; export interface DatePickerMinMaxProperties { max?: string; @@ -11,7 +10,6 @@ export interface DatePickerMinMaxProperties { export interface DatePickerMixinProperties { disabledDates: string; disabledDays: string; - dragRatio: number; firstDayOfWeek: number; inline: boolean; landscape: boolean; @@ -27,7 +25,13 @@ export interface DatePickerMixinProperties { yearDropdownLabel: string; } +export interface ElementMixinProperties { + query(selector: string): T | null; + queryAll(selector: string): T[]; + root: ShadowRoot; +} + export type MixinReturnType< - BaseConstructor extends Constructor, + BaseConstructor extends LitConstructor, Mixin > = BaseConstructor & Constructor; diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 682ca47c9..1694e9ee2 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -1,5 +1,5 @@ import type { TemplateResult } from 'lit'; -import { html, LitElement, nothing } from 'lit'; +import { html, nothing } from 'lit'; import { property, queryAsync } from 'lit/decorators.js'; import { confirmKeySet, navigationKeySetGrid } from '../constants.js'; @@ -10,12 +10,13 @@ import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toNextSelectedDate } from '../helpers/to-next-selected-date.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { keyHome } from '../key-values.js'; +import { RootElement } from '../root-element/root-element.js'; import { baseStyling, resetShadowRoot } from '../stylings.js'; import type { Formatters, InferredFromSet, SupportedKey } from '../typings.js'; import { monthCalendarStyling } from './stylings.js'; import type { MonthCalendarData, MonthCalendarProperties, MonthCalendarRenderCalendarDayInit } from './typings.js'; -export class MonthCalendar extends LitElement implements MonthCalendarProperties { +export class MonthCalendar extends RootElement implements MonthCalendarProperties { @property({ attribute: false }) public data?: MonthCalendarData; @queryAsync('.calendar-day[aria-selected="true"]') public selectedCalendarDay!: Promise; @@ -28,7 +29,7 @@ export class MonthCalendar extends LitElement implements MonthCalendarProperties #shouldFocusSelectedDate = false; public static override shadowRootOptions = { - ...LitElement.shadowRootOptions, + ...RootElement.shadowRootOptions, delegatesFocus: true, }; diff --git a/src/root-element/root-element.ts b/src/root-element/root-element.ts new file mode 100644 index 000000000..d00061f20 --- /dev/null +++ b/src/root-element/root-element.ts @@ -0,0 +1,5 @@ +import { LitElement } from 'lit'; + +import { ElementMixin } from '../mixins/element-mixin.js'; + +export class RootElement extends ElementMixin(LitElement) {} diff --git a/src/typings.ts b/src/typings.ts index b3513ecfd..3869da0b9 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -1,8 +1,9 @@ +import type { LitElement } from 'lit'; import type { DateTimeFormatter } from 'nodemod/dist/calendar/typings.js'; import type { startViews } from './constants.js'; import type { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp, keyEnd, keyEnter, keyHome, keyPageDown, keyPageUp, keySpace, keyTab } from './key-values.js'; -import type { DatePickerMinMaxProperties, DatePickerMixinProperties } from './mixins/typings.js'; +import type { DatePickerMinMaxProperties, DatePickerMixinProperties, ElementMixinProperties } from './mixins/typings.js'; export type StartView = StartViewTuple[number]; @@ -17,8 +18,10 @@ export type ChangedProperties> = Map = new (...args: any[]) => T; -export interface DatePickerProperties extends DatePickerMixinProperties, -DatePickerMinMaxProperties {} +export interface DatePickerProperties extends + DatePickerMinMaxProperties, + DatePickerMixinProperties, + ElementMixinProperties {} export interface DateUpdatedEvent extends KeyEvent { value: Date; @@ -42,6 +45,8 @@ export interface Formatters extends Pick { export type InferredFromSet = SetType extends Set ? T : never; +export type LitConstructor = Constructor; + export interface SupportedCustomEventDetail { // ['animation-finished']: null; // ['changed']: ChangedEvent; diff --git a/src/year-grid-button/year-grid-button.ts b/src/year-grid-button/year-grid-button.ts index 749f51e1d..e6c3f47f2 100644 --- a/src/year-grid-button/year-grid-button.ts +++ b/src/year-grid-button/year-grid-button.ts @@ -1,9 +1,10 @@ import { ButtonBase } from '@material/mwc-button/mwc-button-base.js'; import { styles } from '@material/mwc-button/styles.css'; +import { ElementMixin } from '../mixins/element-mixin.js'; import { yearGridButtonStyling } from './stylings.js'; -export class YearGridButton extends ButtonBase { +export class YearGridButton extends ElementMixin(ButtonBase) { static override styles = [ styles, // FIXME(motss): Remove this hack once @material updates to use latest lit diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index cf5bcfec1..a6d838227 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -1,5 +1,5 @@ import type { TemplateResult } from 'lit'; -import { html, LitElement } from 'lit'; +import { html } from 'lit'; import { property, queryAsync, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; @@ -9,13 +9,14 @@ import { focusElement } from '../helpers/focus-element.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; +import { RootElement } from '../root-element/root-element.js'; import { baseStyling, resetButton, resetShadowRoot } from '../stylings.js'; import type { Formatters, InferredFromSet } from '../typings.js'; import { yearGridStyling } from './stylings.js'; import { toNextSelectedYear } from './to-next-selected-year.js'; import type { YearGridChangedProperties, YearGridData, YearGridProperties, YearGridRenderButtonInit } from './typings.js'; -export class YearGrid extends LitElement implements YearGridProperties { +export class YearGrid extends RootElement implements YearGridProperties { @property({ attribute: false }) public data?: YearGridData; @queryAsync('button[data-year][aria-selected="true"]') public selectedYearGridButton!: Promise; @@ -132,10 +133,9 @@ export class YearGrid extends LitElement implements YearGridProperties { year: this.$focusingYear, }); - const focusingYearGridButton = - this.shadowRoot?.querySelector( - `button[data-year="${focusingYear}"]` - ); + const focusingYearGridButton = this.query( + `button[data-year="${focusingYear}"]` + ); this.$focusingYear = focusingYear; focusingYearGridButton?.focus(); From 6fc3476aeee90199074ce8852ce6ae591b43d723 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Tue, 9 Nov 2021 23:33:00 +0800 Subject: [PATCH 126/276] chore: update dependencies --- package-lock.json | 348 +++++++++++++++++++++++----------------------- package.json | 10 +- 2 files changed, 179 insertions(+), 179 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a3f93b4a..b238bdbc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,14 +22,14 @@ }, "devDependencies": { "@commitlint/config-conventional": "^14.1.0", - "@open-wc/testing": "^3.0.2", + "@open-wc/testing": "^3.0.3", "@reallyland/tsconfig": "^3.0.2", "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", - "@web/dev-server-esbuild": "^0.2.15", - "@web/dev-server-rollup": "^0.3.12", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "@web/dev-server-esbuild": "^0.2.16", + "@web/dev-server-rollup": "^0.3.13", "@web/test-runner": "^0.13.21", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", @@ -752,15 +752,15 @@ } }, "node_modules/@open-wc/testing": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.2.tgz", - "integrity": "sha512-V0ZPX0ts1qtYKV5rMwTt0WBMdO5XG/1ONbN4mZqYOXOW5QYQcOFvCPe56giEh351u9wTp+0czFviFknk8I3xtw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.3.tgz", + "integrity": "sha512-xJYckO8X9yfWc+ltPlDZjHGTh4ldNmnYsnxNriuUUEEhV5ASdsc+5WEsIS2+9m4lQELj89rNQ7YvhYhawDorhg==", "dev": true, "dependencies": { "@esm-bundle/chai": "^4.3.4", "@open-wc/chai-dom-equals": "^0.12.36", "@open-wc/semantic-dom-diff": "^0.19.5", - "@open-wc/testing-helpers": "^2.0.1", + "@open-wc/testing-helpers": "^2.0.2", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -768,9 +768,9 @@ } }, "node_modules/@open-wc/testing-helpers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.1.tgz", - "integrity": "sha512-kBg3TJeqVCvVhBLPGRnlgkkghl854Ohp8xt8vuyDwWJUSpM7eimaXbn/YbRVVT5PScodjvMO9HDl2U8LX63CIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.2.tgz", + "integrity": "sha512-wJlvDmWo+fIbgykRP21YSP9I9Pf/fo2+dZGaWG77Hw0sIuyB+7sNUDJDkL6kMkyyRecPV6dVRmbLt6HuOwvZ1w==", "dev": true, "dependencies": { "@open-wc/scoped-elements": "^2.0.1", @@ -970,9 +970,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", + "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -1066,9 +1066,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", "dev": true }, "node_modules/@types/parse5": { @@ -1152,13 +1152,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", + "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/experimental-utils": "5.3.1", + "@typescript-eslint/scope-manager": "5.3.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1184,15 +1184,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", + "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1208,14 +1208,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", - "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", + "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "debug": "^4.3.2" }, "engines": { @@ -1235,13 +1235,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", + "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1252,9 +1252,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", + "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1265,13 +1265,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", + "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1292,12 +1292,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", + "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/types": "5.3.1", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1333,17 +1333,16 @@ } }, "node_modules/@web/dev-server": { - "version": "0.1.26", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.26.tgz", - "integrity": "sha512-6gQgvbQwpxEUntgCd15w3b4zjy9c5dkrjV2s9uZA+5jAGHaX64PFrTUx61BqOqVNcEMq6d10rCjXw9qnj/J7ag==", + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.28.tgz", + "integrity": "sha512-964NqgatvFWX7LM8QGlB1XpcJoUQRXZPiEn3XKgDIUSNS6JNCjGfQQ+TfxBlT5KBHYJakDYbTk+sdEeRi2gaLw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.11", - "@rollup/plugin-node-resolve": "^11.0.1", "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.1.3", - "@web/dev-server-core": "^0.3.16", - "@web/dev-server-rollup": "^0.3.12", + "@web/dev-server-core": "^0.3.17", + "@web/dev-server-rollup": "^0.3.13", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^6.1.1", @@ -1363,9 +1362,9 @@ } }, "node_modules/@web/dev-server-core": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.16.tgz", - "integrity": "sha512-nj6liCErIGtpuZYPf6QaxGQ9nlaHd8Cf/NBcRhogskvjOVFkF3FS9xpjRw3WidkmOQnk+D0ZGCeXjtTibgy5CA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.17.tgz", + "integrity": "sha512-vN1dwQ8yDHGiAvCeUo9xFfjo+pFl8TW+pON7k9kfhbegrrB8CKhJDUxmHbZsyQUmjf/iX57/LhuWj1xGhRL8AA==", "dev": true, "dependencies": { "@types/koa": "^2.11.6", @@ -1392,13 +1391,13 @@ } }, "node_modules/@web/dev-server-esbuild": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.15.tgz", - "integrity": "sha512-a4UbG+txNtwKJHV/Ty3BVVODi7xzWDEW+YV8VldzO6cbz/TjLPJv4mRiWbxpcQUfvN7HWGjJVMrM3wGRQAxlZQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.16.tgz", + "integrity": "sha512-a82uKy9vQ4HvfWtjd7hJ3GtaqkL2ofxpEu3a1wIZyXB2dFWPvhRSmLNe/4IPPHe4vj6PVdRpLSFPEA3lXUW5Pw==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^4.0.0", - "@web/dev-server-core": "^0.3.10", + "@web/dev-server-core": "^0.3.17", "esbuild": "^0.12.21", "parse5": "^6.0.1", "ua-parser-js": "^1.0.2" @@ -1408,11 +1407,12 @@ } }, "node_modules/@web/dev-server-rollup": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.12.tgz", - "integrity": "sha512-nPvBAvmk5ybiUekLhaIweI/2SI+uuUL6S7PQimtjG5Ko8Bp1A00WAeVKRGydScqV4iNIxdc+bOjbyaLked96bQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.13.tgz", + "integrity": "sha512-QaxEtsdL6+fktIa1ZL8VEtq4U7WB7ikKEnxkbhUpFknB+WSvwx6DUrvyBDuPckunpczCnljXBFPugu+2W6N8Fg==", "dev": true, "dependencies": { + "@rollup/plugin-node-resolve": "^11.0.1", "@web/dev-server-core": "^0.3.16", "nanocolors": "^0.2.1", "parse5": "^6.0.1", @@ -1423,7 +1423,7 @@ "node": ">=10.0.0" } }, - "node_modules/@web/dev-server/node_modules/@rollup/plugin-node-resolve": { + "node_modules/@web/dev-server-rollup/node_modules/@rollup/plugin-node-resolve": { "version": "11.2.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", @@ -2742,9 +2742,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", - "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4151,21 +4151,21 @@ } }, "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "dependencies": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" }, "engines": { "node": ">= 0.6" @@ -5464,9 +5464,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", + "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", "dev": true, "peer": true, "dependencies": { @@ -6624,15 +6624,15 @@ } }, "@open-wc/testing": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.2.tgz", - "integrity": "sha512-V0ZPX0ts1qtYKV5rMwTt0WBMdO5XG/1ONbN4mZqYOXOW5QYQcOFvCPe56giEh351u9wTp+0czFviFknk8I3xtw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@open-wc/testing/-/testing-3.0.3.tgz", + "integrity": "sha512-xJYckO8X9yfWc+ltPlDZjHGTh4ldNmnYsnxNriuUUEEhV5ASdsc+5WEsIS2+9m4lQELj89rNQ7YvhYhawDorhg==", "dev": true, "requires": { "@esm-bundle/chai": "^4.3.4", "@open-wc/chai-dom-equals": "^0.12.36", "@open-wc/semantic-dom-diff": "^0.19.5", - "@open-wc/testing-helpers": "^2.0.1", + "@open-wc/testing-helpers": "^2.0.2", "@types/chai": "^4.2.11", "@types/chai-dom": "^0.0.9", "@types/sinon-chai": "^3.2.3", @@ -6640,9 +6640,9 @@ } }, "@open-wc/testing-helpers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.1.tgz", - "integrity": "sha512-kBg3TJeqVCvVhBLPGRnlgkkghl854Ohp8xt8vuyDwWJUSpM7eimaXbn/YbRVVT5PScodjvMO9HDl2U8LX63CIw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@open-wc/testing-helpers/-/testing-helpers-2.0.2.tgz", + "integrity": "sha512-wJlvDmWo+fIbgykRP21YSP9I9Pf/fo2+dZGaWG77Hw0sIuyB+7sNUDJDkL6kMkyyRecPV6dVRmbLt6HuOwvZ1w==", "dev": true, "requires": { "@open-wc/scoped-elements": "^2.0.1", @@ -6822,9 +6822,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", + "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", "dev": true, "requires": { "@types/node": "*", @@ -6918,9 +6918,9 @@ "dev": true }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", "dev": true }, "@types/parse5": { @@ -7004,13 +7004,13 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.0.tgz", - "integrity": "sha512-ARUEJHJrq85aaiCqez7SANeahDsJTD3AEua34EoQN9pHS6S5Bq9emcIaGGySt/4X2zSi+vF5hAH52sEen7IO7g==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", + "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.3.0", - "@typescript-eslint/scope-manager": "5.3.0", + "@typescript-eslint/experimental-utils": "5.3.1", + "@typescript-eslint/scope-manager": "5.3.1", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -7020,55 +7020,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.0.tgz", - "integrity": "sha512-NFVxYTjKj69qB0FM+piah1x3G/63WB8vCBMnlnEHUsiLzXSTWb9FmFn36FD9Zb4APKBLY3xRArOGSMQkuzTF1w==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", + "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.0.tgz", - "integrity": "sha512-rKu/yAReip7ovx8UwOAszJVO5MgBquo8WjIQcp1gx4pYQCwYzag+I5nVNHO4MqyMkAo0gWt2gWUi+36gWAVKcw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", + "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.3.0", - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/typescript-estree": "5.3.0", + "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/typescript-estree": "5.3.1", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.0.tgz", - "integrity": "sha512-22Uic9oRlTsPppy5Tcwfj+QET5RWEnZ5414Prby465XxQrQFZ6nnm5KnXgnsAJefG4hEgMnaxTB3kNEyjdjj6A==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", + "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0" + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1" } }, "@typescript-eslint/types": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.0.tgz", - "integrity": "sha512-fce5pG41/w8O6ahQEhXmMV+xuh4+GayzqEogN24EK+vECA3I6pUwKuLi5QbXO721EMitpQne5VKXofPonYlAQg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", + "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.0.tgz", - "integrity": "sha512-FJ0nqcaUOpn/6Z4Jwbtf+o0valjBLkqc3MWkMvrhA2TvzFXtcclIM8F4MBEmYa2kgcI8EZeSAzwoSrIC8JYkug==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", + "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.0", - "@typescript-eslint/visitor-keys": "5.3.0", + "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/visitor-keys": "5.3.1", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -7077,12 +7077,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.0.tgz", - "integrity": "sha512-oVIAfIQuq0x2TFDNLVavUn548WL+7hdhxYn+9j3YdJJXB7mH9dAmZNJsPDa7Jc+B9WGqoiex7GUDbyMxV0a/aw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", + "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.0", + "@typescript-eslint/types": "5.3.1", "eslint-visitor-keys": "^3.0.0" } }, @@ -7105,17 +7105,16 @@ } }, "@web/dev-server": { - "version": "0.1.26", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.26.tgz", - "integrity": "sha512-6gQgvbQwpxEUntgCd15w3b4zjy9c5dkrjV2s9uZA+5jAGHaX64PFrTUx61BqOqVNcEMq6d10rCjXw9qnj/J7ag==", + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.28.tgz", + "integrity": "sha512-964NqgatvFWX7LM8QGlB1XpcJoUQRXZPiEn3XKgDIUSNS6JNCjGfQQ+TfxBlT5KBHYJakDYbTk+sdEeRi2gaLw==", "dev": true, "requires": { "@babel/code-frame": "^7.12.11", - "@rollup/plugin-node-resolve": "^11.0.1", "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.1.3", - "@web/dev-server-core": "^0.3.16", - "@web/dev-server-rollup": "^0.3.12", + "@web/dev-server-core": "^0.3.17", + "@web/dev-server-rollup": "^0.3.13", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^6.1.1", @@ -7125,28 +7124,12 @@ "nanocolors": "^0.2.1", "open": "^8.0.2", "portfinder": "^1.0.28" - }, - "dependencies": { - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - } } }, "@web/dev-server-core": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.16.tgz", - "integrity": "sha512-nj6liCErIGtpuZYPf6QaxGQ9nlaHd8Cf/NBcRhogskvjOVFkF3FS9xpjRw3WidkmOQnk+D0ZGCeXjtTibgy5CA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.17.tgz", + "integrity": "sha512-vN1dwQ8yDHGiAvCeUo9xFfjo+pFl8TW+pON7k9kfhbegrrB8CKhJDUxmHbZsyQUmjf/iX57/LhuWj1xGhRL8AA==", "dev": true, "requires": { "@types/koa": "^2.11.6", @@ -7170,29 +7153,46 @@ } }, "@web/dev-server-esbuild": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.15.tgz", - "integrity": "sha512-a4UbG+txNtwKJHV/Ty3BVVODi7xzWDEW+YV8VldzO6cbz/TjLPJv4mRiWbxpcQUfvN7HWGjJVMrM3wGRQAxlZQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.16.tgz", + "integrity": "sha512-a82uKy9vQ4HvfWtjd7hJ3GtaqkL2ofxpEu3a1wIZyXB2dFWPvhRSmLNe/4IPPHe4vj6PVdRpLSFPEA3lXUW5Pw==", "dev": true, "requires": { "@mdn/browser-compat-data": "^4.0.0", - "@web/dev-server-core": "^0.3.10", + "@web/dev-server-core": "^0.3.17", "esbuild": "^0.12.21", "parse5": "^6.0.1", "ua-parser-js": "^1.0.2" } }, "@web/dev-server-rollup": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.12.tgz", - "integrity": "sha512-nPvBAvmk5ybiUekLhaIweI/2SI+uuUL6S7PQimtjG5Ko8Bp1A00WAeVKRGydScqV4iNIxdc+bOjbyaLked96bQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.13.tgz", + "integrity": "sha512-QaxEtsdL6+fktIa1ZL8VEtq4U7WB7ikKEnxkbhUpFknB+WSvwx6DUrvyBDuPckunpczCnljXBFPugu+2W6N8Fg==", "dev": true, "requires": { + "@rollup/plugin-node-resolve": "^11.0.1", "@web/dev-server-core": "^0.3.16", "nanocolors": "^0.2.1", "parse5": "^6.0.1", "rollup": "^2.58.0", "whatwg-url": "^11.0.0" + }, + "dependencies": { + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + } } }, "@web/parse5-utils": { @@ -8291,9 +8291,9 @@ } }, "eslint-visitor-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", - "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true }, "espree": { @@ -9279,18 +9279,18 @@ "dev": true }, "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true }, "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "requires": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -10235,9 +10235,9 @@ }, "dependencies": { "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", + "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", "dev": true, "peer": true, "requires": { diff --git a/package.json b/package.json index 74882bdbb..e41b6471c 100644 --- a/package.json +++ b/package.json @@ -84,14 +84,14 @@ }, "devDependencies": { "@commitlint/config-conventional": "^14.1.0", - "@open-wc/testing": "^3.0.2", + "@open-wc/testing": "^3.0.3", "@reallyland/tsconfig": "^3.0.2", "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", - "@web/dev-server-esbuild": "^0.2.15", - "@web/dev-server-rollup": "^0.3.12", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "@web/dev-server-esbuild": "^0.2.16", + "@web/dev-server-rollup": "^0.3.13", "@web/test-runner": "^0.13.21", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", From cca8df7b492597b984d25c874565566f1e9dfd58 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Thu, 11 Nov 2021 22:21:24 +0800 Subject: [PATCH 127/276] chore: update dependencies --- package-lock.json | 85 ++++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index b238bdbc8..0c6f0f50a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "@typescript-eslint/parser": "^5.3.1", "@web/dev-server-esbuild": "^0.2.16", "@web/dev-server-rollup": "^0.3.13", - "@web/test-runner": "^0.13.21", + "@web/test-runner": "^0.13.22", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", "eslint-plugin-lit": "^1.6.1", @@ -736,9 +736,9 @@ } }, "node_modules/@open-wc/scoped-elements/node_modules/@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==", "dev": true }, "node_modules/@open-wc/semantic-dom-diff": { @@ -1457,15 +1457,15 @@ } }, "node_modules/@web/test-runner": { - "version": "0.13.21", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.21.tgz", - "integrity": "sha512-Aj/Z6vvKgWQlLneg/kGoyw9CWWpiziRzJkqG8ZrblYsWdH/eMJ8+B1KVsjqb+sXjiMg3YTkU9E4IGa7c3nHMvg==", + "version": "0.13.22", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.22.tgz", + "integrity": "sha512-s4P3X4z8RlxqbQgO4K7aPVZTlum9juuQ9ZIxvZlua+KMTG5J5Utr7Drey/tGcx+BwVFUAtQLr20IEWA+38d+fA==", "dev": true, "dependencies": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.4", + "@web/test-runner-chrome": "^0.10.5", "@web/test-runner-commands": "^0.5.10", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -1488,14 +1488,14 @@ } }, "node_modules/@web/test-runner-chrome": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.4.tgz", - "integrity": "sha512-MqdmhOh/v7KakDYUnXIpypC5/mxAP/0jw475n8k6eqdMxJ4KIVirwIv582iEV4LU64RQAl8NXxSZkzAapzKC7Q==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.5.tgz", + "integrity": "sha512-1dF7bEMe6Jb42z5VFreis4rafe0DLBq4PUjqkYbXlHCFbwnc3zWJFgU73ns8lIt9HCo/ADIWUFuPXrqmWoFBFQ==", "dev": true, "dependencies": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", - "chrome-launcher": "^0.14.0", + "chrome-launcher": "^0.15.0", "puppeteer-core": "^11.0.0" }, "engines": { @@ -2042,9 +2042,9 @@ "dev": true }, "node_modules/chrome-launcher": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.2.tgz", - "integrity": "sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", + "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", "dev": true, "dependencies": { "@types/node": "*", @@ -2052,6 +2052,9 @@ "is-wsl": "^2.2.0", "lighthouse-logger": "^1.0.0" }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, "engines": { "node": ">=12.13.0" } @@ -3973,9 +3976,9 @@ } }, "node_modules/lit-element/node_modules/@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==" }, "node_modules/lit-html": { "version": "2.0.1", @@ -4000,9 +4003,9 @@ } }, "node_modules/lit/node_modules/@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==" }, "node_modules/locate-path": { "version": "5.0.0", @@ -6606,9 +6609,9 @@ }, "dependencies": { "@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==", "dev": true } } @@ -7206,15 +7209,15 @@ } }, "@web/test-runner": { - "version": "0.13.21", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.21.tgz", - "integrity": "sha512-Aj/Z6vvKgWQlLneg/kGoyw9CWWpiziRzJkqG8ZrblYsWdH/eMJ8+B1KVsjqb+sXjiMg3YTkU9E4IGa7c3nHMvg==", + "version": "0.13.22", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.13.22.tgz", + "integrity": "sha512-s4P3X4z8RlxqbQgO4K7aPVZTlum9juuQ9ZIxvZlua+KMTG5J5Utr7Drey/tGcx+BwVFUAtQLr20IEWA+38d+fA==", "dev": true, "requires": { "@web/browser-logs": "^0.2.2", "@web/config-loader": "^0.1.3", "@web/dev-server": "^0.1.24", - "@web/test-runner-chrome": "^0.10.4", + "@web/test-runner-chrome": "^0.10.5", "@web/test-runner-commands": "^0.5.10", "@web/test-runner-core": "^0.10.22", "@web/test-runner-mocha": "^0.7.5", @@ -7230,14 +7233,14 @@ } }, "@web/test-runner-chrome": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.4.tgz", - "integrity": "sha512-MqdmhOh/v7KakDYUnXIpypC5/mxAP/0jw475n8k6eqdMxJ4KIVirwIv582iEV4LU64RQAl8NXxSZkzAapzKC7Q==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.10.5.tgz", + "integrity": "sha512-1dF7bEMe6Jb42z5VFreis4rafe0DLBq4PUjqkYbXlHCFbwnc3zWJFgU73ns8lIt9HCo/ADIWUFuPXrqmWoFBFQ==", "dev": true, "requires": { "@web/test-runner-core": "^0.10.20", "@web/test-runner-coverage-v8": "^0.4.8", - "chrome-launcher": "^0.14.0", + "chrome-launcher": "^0.15.0", "puppeteer-core": "^11.0.0" } }, @@ -7642,9 +7645,9 @@ "dev": true }, "chrome-launcher": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.14.2.tgz", - "integrity": "sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", + "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", "dev": true, "requires": { "@types/node": "*", @@ -9127,9 +9130,9 @@ }, "dependencies": { "@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==" } } }, @@ -9143,9 +9146,9 @@ }, "dependencies": { "@lit/reactive-element": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.1.tgz", - "integrity": "sha512-nSD5AA2AZkKuXuvGs8IK7K5ZczLAogfDd26zT9l6S7WzvqALdVWcW5vMUiTnZyj5SPcNwNNANj0koeV1ieqTFQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.0.2.tgz", + "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==" } } }, diff --git a/package.json b/package.json index e41b6471c..794ca579a 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@typescript-eslint/parser": "^5.3.1", "@web/dev-server-esbuild": "^0.2.16", "@web/dev-server-rollup": "^0.3.13", - "@web/test-runner": "^0.13.21", + "@web/test-runner": "^0.13.22", "@web/test-runner-commands": "^0.5.12", "@web/test-runner-playwright": "^0.8.8", "eslint-plugin-lit": "^1.6.1", From 95e9d55ce3e0d08a314c3b0007e7fe5688f7fe99 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Thu, 11 Nov 2021 22:40:10 +0800 Subject: [PATCH 128/276] 6.0.0-rc.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c6f0f50a..05bcd4533 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "app-datepicker", - "version": "5.0.0-rc.0", + "version": "6.0.0-rc.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "app-datepicker", - "version": "5.0.0-rc.0", + "version": "6.0.0-rc.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 794ca579a..79dc3fbdf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app-datepicker", - "version": "5.0.0-rc.0", + "version": "6.0.0-rc.0", "description": "Google Material Design based date picker built with lit", "keywords": [ "buildwithlit", From b0aa13fc2fc2b3d32ff5464ac45aee7b2d94b122 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Thu, 11 Nov 2021 22:56:25 +0800 Subject: [PATCH 129/276] refactor: update config --- .github/workflows/publish.yml | 2 +- package.json | 45 +++++++++++++++++++++++++++++++---- tsconfig.json | 13 ++++------ tsconfig.prod.json | 8 ++----- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8c5517ba8..4f8e7796c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - target: [14.x] + target: [16.x] steps: - name: Checkout diff --git a/package.json b/package.json index 79dc3fbdf..fc606bcfe 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,14 @@ "type": "module", "exports": { ".": "./dist/date-picker/app-date-picker.js", - "./dist/*": "./dist/*", + "./date-picker-input-surface/*": "./dist/date-picker-input-surface/*", + "./date-picker-input/*": "./dist/date-picker-input/*", "./date-picker/*": "./dist/date-picker/*", - "./app-date-picker": "./dist/date-picker/app-date-picker.js" + "./dist/*": "./dist/*", + "./month-calendar/*": "./dist/month-calendar/*", + "./root-element/*": "./dist/root-element/*", + "./year-grid-button/*": "./dist/year-grid-button/*", + "./year-grid/*": "./dist/year-grid/*" }, "main": "./dist/date-picker/app-date-picker.js", "module": "./dist/date-picker/app-date-picker.js", @@ -44,10 +49,42 @@ "dist/*.*js", "dist/*.d.ts.map", "dist/*.d.ts", + "dist/date-picker-input-surface/.*js.map", + "dist/date-picker-input-surface/*.*js", + "dist/date-picker-input-surface/*.d.ts.map", + "dist/date-picker-input-surface/*.d.ts", + "dist/date-picker-input/.*js.map", + "dist/date-picker-input/*.*js", + "dist/date-picker-input/*.d.ts.map", + "dist/date-picker-input/*.d.ts", + "dist/date-picker/.*js.map", + "dist/date-picker/*.*js", + "dist/date-picker/*.d.ts.map", + "dist/date-picker/*.d.ts", "dist/helpers/.*js.map", "dist/helpers/*.*js", "dist/helpers/*.d.ts.map", - "dist/helpers/*.d.ts" + "dist/helpers/*.d.ts", + "dist/mixins/.*js.map", + "dist/mixins/*.*js", + "dist/mixins/*.d.ts.map", + "dist/mixins/*.d.ts", + "dist/month-calendar/.*js.map", + "dist/month-calendar/*.*js", + "dist/month-calendar/*.d.ts.map", + "dist/month-calendar/*.d.ts", + "dist/root-element/.*js.map", + "dist/root-element/*.*js", + "dist/root-element/*.d.ts.map", + "dist/root-element/*.d.ts", + "dist/year-grid-button/.*js.map", + "dist/year-grid-button/*.*js", + "dist/year-grid-button/*.d.ts.map", + "dist/year-grid-button/*.d.ts", + "dist/year-grid/.*js.map", + "dist/year-grid/*.*js", + "dist/year-grid/*.d.ts.map", + "dist/year-grid/*.d.ts" ], "scripts": { "build": "tsc -p tsconfig.prod.json", @@ -57,7 +94,7 @@ "lint": "eslint src --ext .js,.ts", "lint:build": "npm run lint -- --config .build.eslintrc.json", "prepare": "if [ \"$CI\" != 'true' ]; then npm x -- husky install; fi", - "prepublishOnly": "npm run lint && npm run build:prod", + "prepublishOnly": "npm run lint:build && npm run build", "serve": "npm x -y @web/dev-server@latest -- wds --node-resolve -dw -p 3000 -a index.html", "test": "npm run test:helpers && npm run test:elements", "test:elements": "npm run wtr -- --config wtr.config.mjs", diff --git a/tsconfig.json b/tsconfig.json index 3e40ee7e8..f28f8033d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,15 @@ { "extends": "@reallyland/tsconfig/browser/tsconfig.json", "compilerOptions": { - "rootDir": "src", - "outDir": "dist", "declarationDir": "dist", - "target": "ES2019", - "sourceMap": false, "inlineSources": false, - "noUnusedLocals": false, - "noUnusedParameters": false, - "allowUnusedLabels": true + "outDir": "dist", + "rootDir": "src", + "sourceMap": false, + "target": "ES2019" }, "include": [ "src/**/*.ts" ], - "exclude": ["node_modules", "dist"] + "exclude": ["dist", "node_modules"] } diff --git a/tsconfig.prod.json b/tsconfig.prod.json index 099c655cd..b807973a4 100644 --- a/tsconfig.prod.json +++ b/tsconfig.prod.json @@ -1,10 +1,6 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "allowUnusedLabels": true, - "importHelpers": true, - "noUnusedLocals": false, - "noUnusedParameters": false - }, - "include": ["src/*.ts"] + "importHelpers": true + } } From 4907681ab85bb7677646fae7410c8f1bfd6606d5 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Thu, 11 Nov 2021 23:01:10 +0800 Subject: [PATCH 130/276] 6.0.0-rc.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05bcd4533..fc134b05c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "app-datepicker", - "version": "6.0.0-rc.0", + "version": "6.0.0-rc.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "app-datepicker", - "version": "6.0.0-rc.0", + "version": "6.0.0-rc.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index fc606bcfe..c61ab780a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app-datepicker", - "version": "6.0.0-rc.0", + "version": "6.0.0-rc.1", "description": "Google Material Design based date picker built with lit", "keywords": [ "buildwithlit", From 0c2a7bacf3d6f473dae22fb23cf07fd4f5d13cb4 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 13 Nov 2021 14:19:19 +0800 Subject: [PATCH 131/276] chore: update dependencies --- package-lock.json | 84 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc134b05c..c6a1b4a03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,9 +78,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", - "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -90,9 +90,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", - "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz", + "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==", "dev": true, "dependencies": { "core-js-pure": "^3.19.0", @@ -662,9 +662,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.9.tgz", - "integrity": "sha512-6Viqyrqpb7fVXJ5VoIIu5UdQR9ftk1kvh4X40FQhy5IOFnawQ38CpEZw34ZPOtpVed72W27m3gRSJo+4qAFuqA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.10.tgz", + "integrity": "sha512-vLJbqPv8bZxJax7dRaGP8O9Xe3X7vdbF1IYzRajP5wGoAkgIl8WBvouRhrOMz1n5nVFjrQ8KWRWtykmHk+iGtg==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -3160,9 +3160,9 @@ } }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true, "peer": true }, @@ -3967,9 +3967,9 @@ } }, "node_modules/lit-element": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.1.tgz", - "integrity": "sha512-vs9uybH9ORyK49CFjoNGN85HM9h5bmisU4TQ63phe/+GYlwvY/3SIFYKdjV6xNvzz8v2MnVC+9+QOkPqh+Q3Ew==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.2.tgz", + "integrity": "sha512-9vTJ47D2DSE4Jwhle7aMzEwO2ZcOPRikqfT3CVG7Qol2c9/I4KZwinZNW5Xv8hNm+G/enSSfIwqQhIXi6ioAUg==", "dependencies": { "@lit/reactive-element": "^1.0.0", "lit-html": "^2.0.0" @@ -3981,9 +3981,9 @@ "integrity": "sha512-oz3d3MKjQ2tXynQgyaQaMpGTDNyNDeBdo6dXf1AbjTwhA1IRINHmA7kSaVYv9ttKweNkEoNqp9DqteDdgWzPEg==" }, "node_modules/lit-html": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.1.tgz", - "integrity": "sha512-KF5znvFdXbxTYM/GjpdOOnMsjgRcFGusTnB54ixnCTya5zUR0XqrDRj29ybuLS+jLXv1jji6Y8+g4W7WP8uL4w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.2.tgz", + "integrity": "sha512-dON7Zg8btb14/fWohQLQBdSgkoiQA4mIUy87evmyJHtxRq7zS6LlC32bT5EPWiof5PUQaDpF45v2OlrxHA5Clg==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -5053,9 +5053,9 @@ } }, "node_modules/rollup": { - "version": "2.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", - "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -5974,18 +5974,18 @@ } }, "@babel/runtime": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.0.tgz", - "integrity": "sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", - "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz", + "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==", "dev": true, "requires": { "core-js-pure": "^3.19.0", @@ -6542,9 +6542,9 @@ } }, "@mdn/browser-compat-data": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.9.tgz", - "integrity": "sha512-6Viqyrqpb7fVXJ5VoIIu5UdQR9ftk1kvh4X40FQhy5IOFnawQ38CpEZw34ZPOtpVed72W27m3gRSJo+4qAFuqA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.0.10.tgz", + "integrity": "sha512-vLJbqPv8bZxJax7dRaGP8O9Xe3X7vdbF1IYzRajP5wGoAkgIl8WBvouRhrOMz1n5nVFjrQ8KWRWtykmHk+iGtg==", "dev": true }, "@nodelib/fs.scandir": { @@ -8513,9 +8513,9 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true, "peer": true }, @@ -9137,9 +9137,9 @@ } }, "lit-element": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.1.tgz", - "integrity": "sha512-vs9uybH9ORyK49CFjoNGN85HM9h5bmisU4TQ63phe/+GYlwvY/3SIFYKdjV6xNvzz8v2MnVC+9+QOkPqh+Q3Ew==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.0.2.tgz", + "integrity": "sha512-9vTJ47D2DSE4Jwhle7aMzEwO2ZcOPRikqfT3CVG7Qol2c9/I4KZwinZNW5Xv8hNm+G/enSSfIwqQhIXi6ioAUg==", "requires": { "@lit/reactive-element": "^1.0.0", "lit-html": "^2.0.0" @@ -9153,9 +9153,9 @@ } }, "lit-html": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.1.tgz", - "integrity": "sha512-KF5znvFdXbxTYM/GjpdOOnMsjgRcFGusTnB54ixnCTya5zUR0XqrDRj29ybuLS+jLXv1jji6Y8+g4W7WP8uL4w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.0.2.tgz", + "integrity": "sha512-dON7Zg8btb14/fWohQLQBdSgkoiQA4mIUy87evmyJHtxRq7zS6LlC32bT5EPWiof5PUQaDpF45v2OlrxHA5Clg==", "requires": { "@types/trusted-types": "^2.0.2" } @@ -9955,9 +9955,9 @@ } }, "rollup": { - "version": "2.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz", - "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==", + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", "dev": true, "requires": { "fsevents": "~2.3.2" From b4c6b79e9df1cf6c46345842bc72e4169c128ae9 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 14 Nov 2021 16:06:46 +0800 Subject: [PATCH 132/276] chore: update package.json --- package-lock.json | 16 ++++++++-------- package.json | 9 ++------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6a1b4a03..118119cc6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,8 +41,8 @@ "typescript": "^4.4.4" }, "engines": { - "node": ">= 14.x", - "npm": ">= 6.x" + "node": ">= 16.x", + "npm": ">= 8.x" } }, "node_modules/@babel/code-frame": { @@ -5467,9 +5467,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", - "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", + "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", "dev": true, "peer": true, "dependencies": { @@ -10238,9 +10238,9 @@ }, "dependencies": { "ajv": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.7.1.tgz", - "integrity": "sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", + "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", "dev": true, "peer": true, "requires": { diff --git a/package.json b/package.json index c61ab780a..242e20d09 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "./dist/*": "./dist/*", "./month-calendar/*": "./dist/month-calendar/*", "./root-element/*": "./dist/root-element/*", - "./year-grid-button/*": "./dist/year-grid-button/*", "./year-grid/*": "./dist/year-grid/*" }, "main": "./dist/date-picker/app-date-picker.js", @@ -77,10 +76,6 @@ "dist/root-element/*.*js", "dist/root-element/*.d.ts.map", "dist/root-element/*.d.ts", - "dist/year-grid-button/.*js.map", - "dist/year-grid-button/*.*js", - "dist/year-grid-button/*.d.ts.map", - "dist/year-grid-button/*.d.ts", "dist/year-grid/.*js.map", "dist/year-grid/*.*js", "dist/year-grid/*.d.ts.map", @@ -140,8 +135,8 @@ "typescript": "^4.4.4" }, "engines": { - "node": ">= 14.x", - "npm": ">= 6.x" + "node": ">= 16.x", + "npm": ">= 8.x" }, "publishConfig": { "access": "public" From 52d5b7a9618e96584cc5713306b057cf1067dd14 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 14 Nov 2021 16:08:59 +0800 Subject: [PATCH 133/276] 6.0.0-rc.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 118119cc6..5e9912ce0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "app-datepicker", - "version": "6.0.0-rc.1", + "version": "6.0.0-rc.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "app-datepicker", - "version": "6.0.0-rc.1", + "version": "6.0.0-rc.2", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 242e20d09..4c3f1b8f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app-datepicker", - "version": "6.0.0-rc.1", + "version": "6.0.0-rc.2", "description": "Google Material Design based date picker built with lit", "keywords": [ "buildwithlit", From c411e132266f1d380af8ae29737f1e63d09df2f5 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 14 Nov 2021 23:17:19 +0800 Subject: [PATCH 134/276] refactor: implement .fire() to replace dispatchCustomEvent helper --- .../date-picker/app-date-picker.test.ts | 15 +++-- .../helpers/dispatch-custom-event.test.ts | 46 --------------- .../month-calendar/app-month-calendar.test.ts | 12 ++-- src/__tests__/year-grid/app-year-grid.test.ts | 6 +- .../app-date-picker-dialog-base.ts | 13 ++++ src/date-picker-dialog/constants.ts | 2 + .../date-picker-dialog-base.ts | 10 ++++ src/date-picker-dialog/stylings.ts | 19 ++++++ src/date-picker-dialog/typings.ts | 16 +++++ src/date-picker-input/date-picker-input.ts | 19 +++--- src/date-picker/date-picker.ts | 59 +++++++++++++++---- src/helpers/dispatch-custom-event.ts | 13 ---- src/mixins/date-picker-mixin.ts | 2 +- src/mixins/element-mixin.ts | 13 +++- src/mixins/typings.ts | 5 +- src/month-calendar/month-calendar.ts | 29 ++++++--- src/typings.ts | 52 ++++++++-------- src/year-grid/year-grid.ts | 10 ++-- 18 files changed, 205 insertions(+), 136 deletions(-) delete mode 100644 src/__tests__/helpers/dispatch-custom-event.test.ts create mode 100644 src/date-picker-dialog/app-date-picker-dialog-base.ts create mode 100644 src/date-picker-dialog/constants.ts create mode 100644 src/date-picker-dialog/date-picker-dialog-base.ts create mode 100644 src/date-picker-dialog/stylings.ts create mode 100644 src/date-picker-dialog/typings.ts delete mode 100644 src/helpers/dispatch-custom-event.ts diff --git a/src/__tests__/date-picker/app-date-picker.test.ts b/src/__tests__/date-picker/app-date-picker.test.ts index 66d8915e1..a29bbe8b0 100644 --- a/src/__tests__/date-picker/app-date-picker.test.ts +++ b/src/__tests__/date-picker/app-date-picker.test.ts @@ -6,11 +6,12 @@ import { elementUpdated, fixture, html, oneEvent } from '@open-wc/testing-helper import { MAX_DATE } from '../../constants'; import type { AppDatePicker } from '../../date-picker/app-date-picker'; import { appDatePickerName } from '../../date-picker/constants'; +import { toDateString } from '../../helpers/to-date-string'; import { toFormatters } from '../../helpers/to-formatters'; import { toResolvedDate } from '../../helpers/to-resolved-date'; import type { MaybeDate } from '../../helpers/typings'; import type { AppMonthCalendar } from '../../month-calendar/app-month-calendar'; -import type { DateUpdatedEvent, Formatters, StartView } from '../../typings'; +import type { CustomEventDetail, Formatters, StartView } from '../../typings'; import type { AppYearGrid } from '../../year-grid/app-year-grid'; import { messageFormatter } from '../test-utils/message-formatter'; @@ -297,9 +298,11 @@ describe(appDatePickerName, () => { newSelectedDate2 ); - const expectedDateUpdatedEvent: DateUpdatedEvent = { + const expectedDateUpdatedEvent: CustomEventDetail['date-updated']['detail'] = { isKeypress: false, - value: newSelectedDate2, + value: toDateString(newSelectedDate2), + valueAsDate: newSelectedDate2, + valueAsNumber: +newSelectedDate2, }; expect(dateUpdatedEvent.detail).deep.equal(expectedDateUpdatedEvent); @@ -351,9 +354,11 @@ describe(appDatePickerName, () => { ); expect(selectedDate?.fullDate).deep.equal(newSelectedDate); - const expectedDateUpdatedEvent: DateUpdatedEvent = { + const expectedDateUpdatedEvent: CustomEventDetail['date-updated']['detail'] = { isKeypress: false, - value: newSelectedDate, + value: toDateString(newSelectedDate), + valueAsDate: newSelectedDate, + valueAsNumber: +newSelectedDate, }; expect(dateUpdatedEvent.detail).deep.equal(expectedDateUpdatedEvent); diff --git a/src/__tests__/helpers/dispatch-custom-event.test.ts b/src/__tests__/helpers/dispatch-custom-event.test.ts deleted file mode 100644 index 0f4e68f56..000000000 --- a/src/__tests__/helpers/dispatch-custom-event.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { expect } from '@open-wc/testing'; - -import { dispatchCustomEvent } from '../../helpers/dispatch-custom-event'; -import type { SupportedCustomEventDetail } from '../../typings'; -import { messageFormatter } from '../test-utils/message-formatter'; - -type A = [SupportedCustomEventDetail['year-updated'] | undefined, SupportedCustomEventDetail['year-updated'] | null]; - -describe(dispatchCustomEvent.name, () => { - const cases: A[] = [ - [undefined, null], - [ - { - year: 2020, - }, - { - year: 2020, - }, - ], - ]; - - cases.forEach((a) => { - it( - messageFormatter('dispatches custom event (detail=%j)', a), - async () => { - const [testDetail, expected] = a; - const testEventName: keyof SupportedCustomEventDetail = 'year-updated'; - - const el = document.createElement('div'); - - const done = new Promise((resolve) => { - el.addEventListener(testEventName, (ev) => { - resolve((ev as CustomEvent).detail); - }, { once: true }); - }); - - dispatchCustomEvent(el, testEventName, testDetail); - - const result = await done; - - expect(result).deep.equal(expected); - } - ); - }); - -}); diff --git a/src/__tests__/month-calendar/app-month-calendar.test.ts b/src/__tests__/month-calendar/app-month-calendar.test.ts index c0598ed11..02b91d4e6 100644 --- a/src/__tests__/month-calendar/app-month-calendar.test.ts +++ b/src/__tests__/month-calendar/app-month-calendar.test.ts @@ -9,11 +9,12 @@ import { getWeekdays } from 'nodemod/dist/calendar/helpers/get-weekdays.js'; import type { CalendarInit } from 'nodemod/dist/calendar/typings'; import type { confirmKeySet, navigationKeySetGrid } from '../../constants'; +import { toDateString } from '../../helpers/to-date-string'; import { toFormatters } from '../../helpers/to-formatters'; import type { AppMonthCalendar } from '../../month-calendar/app-month-calendar'; import { appMonthCalendarName } from '../../month-calendar/constants'; import type { MonthCalendarData } from '../../month-calendar/typings'; -import type { DateUpdatedEvent, InferredFromSet } from '../../typings'; +import type { CustomEventDetail, InferredFromSet } from '../../typings'; import { messageFormatter } from '../test-utils/message-formatter'; describe(appMonthCalendarName, () => { @@ -204,7 +205,7 @@ describe(appMonthCalendarName, () => { const dateUpdatedEventTask = new Promise((resolve) => { el.addEventListener('date-updated', function fn(ev) { - resolve((ev as CustomEvent).detail); + resolve((ev as CustomEvent).detail); el.removeEventListener('date-updated', fn); }); @@ -244,9 +245,12 @@ describe(appMonthCalendarName, () => { expect(newSelectedDate?.fullDate).deep.equal(calendarInit.date); const isKeypress = testEventType === 'keydown'; - const expectedDateUpdatedEvent: DateUpdatedEvent = { + const expectedDate = new Date('2020-02-09'); + const expectedDateUpdatedEvent: CustomEventDetail['date-updated']['detail'] = { isKeypress, - value: new Date('2020-02-09'), + value: toDateString(expectedDate), + valueAsDate: expectedDate, + valueAsNumber: +expectedDate, ...(isKeypress && { key: testKeyPayloads[0].down }), }; diff --git a/src/__tests__/year-grid/app-year-grid.test.ts b/src/__tests__/year-grid/app-year-grid.test.ts index 575ed38a7..ce60c28ed 100644 --- a/src/__tests__/year-grid/app-year-grid.test.ts +++ b/src/__tests__/year-grid/app-year-grid.test.ts @@ -5,7 +5,7 @@ import { sendKeys } from '@web/test-runner-commands'; import type { confirmKeySet } from '../../constants'; import { toFormatters } from '../../helpers/to-formatters'; -import type { InferredFromSet, YearUpdatedEvent } from '../../typings'; +import type { CustomEventDetail, InferredFromSet } from '../../typings'; import type { AppYearGrid } from '../../year-grid/app-year-grid'; import { appYearGridName } from '../../year-grid/constants'; import type { YearGridData } from '../../year-grid/typings'; @@ -98,7 +98,7 @@ describe(appYearGridName, () => { const yearUpdatedEventTask = new Promise((resolve) => { function fn(ev: Event) { - resolve((ev as CustomEvent).detail); + resolve((ev as CustomEvent).detail); el.removeEventListener('year-updated', fn); } @@ -135,7 +135,7 @@ describe(appYearGridName, () => { n.getAttribute('tabindex') ?? '', n.getAttribute('aria-selected') ?? '', ]); - const expectedYearUpdatedEvent: YearUpdatedEvent = { + const expectedYearUpdatedEvent: CustomEventDetail['year-updated']['detail'] = { year: data.max.getUTCFullYear(), }; diff --git a/src/date-picker-dialog/app-date-picker-dialog-base.ts b/src/date-picker-dialog/app-date-picker-dialog-base.ts new file mode 100644 index 000000000..c683e96d6 --- /dev/null +++ b/src/date-picker-dialog/app-date-picker-dialog-base.ts @@ -0,0 +1,13 @@ +import { customElement } from 'lit/decorators.js'; + +import { appDatePickerDialogBaseName } from './constants.js'; +import { DatePickerDialogBase } from './date-picker-dialog-base.js'; + +@customElement(appDatePickerDialogBaseName) +export class AppDatePickerDialogBase extends DatePickerDialogBase {} + +declare global { + interface HTMLElementTagNameMap { + [appDatePickerDialogBaseName]: AppDatePickerDialogBase; + } +} diff --git a/src/date-picker-dialog/constants.ts b/src/date-picker-dialog/constants.ts new file mode 100644 index 000000000..d0d50222a --- /dev/null +++ b/src/date-picker-dialog/constants.ts @@ -0,0 +1,2 @@ +export const appDatePickerDialogBaseName = 'app-date-picker-dialog-base' as const; +export const appDatePickerDialogName = 'app-date-picker-dialog' as const; diff --git a/src/date-picker-dialog/date-picker-dialog-base.ts b/src/date-picker-dialog/date-picker-dialog-base.ts new file mode 100644 index 000000000..504c0afec --- /dev/null +++ b/src/date-picker-dialog/date-picker-dialog-base.ts @@ -0,0 +1,10 @@ +import { Dialog } from '@material/mwc-dialog'; + +import { datePickerDialogBaseStyling } from './stylings.js'; + +export class DatePickerDialogBase extends Dialog { + public static override styles = [ + ...Dialog.styles, + datePickerDialogBaseStyling, + ]; +} diff --git a/src/date-picker-dialog/stylings.ts b/src/date-picker-dialog/stylings.ts new file mode 100644 index 000000000..e487e59f8 --- /dev/null +++ b/src/date-picker-dialog/stylings.ts @@ -0,0 +1,19 @@ +import { css, unsafeCSS } from 'lit'; + +import { appDatePickerDialogName } from './constants.js'; + +export const datePickerDialogBaseStyling = css` +:host { + display: block; +} + +.mdc-dialog__content { + padding: 0; +} +`; + +export const datePickerDialogStyling = css` +${unsafeCSS(appDatePickerDialogName)} { + display: block; +} +`; diff --git a/src/date-picker-dialog/typings.ts b/src/date-picker-dialog/typings.ts new file mode 100644 index 000000000..ae0bd1194 --- /dev/null +++ b/src/date-picker-dialog/typings.ts @@ -0,0 +1,16 @@ +import type { Dialog } from '@material/mwc-dialog'; + +export interface DatePickerDialogProperties extends DialogProperties { + confirmLabel: string; + dismissLabel: string; + resetLabel: string; + show(): void; +} + +export interface DialogClosingEventDetail { + action: DialogClosingEventDetailAction; +} + +export type DialogClosingEventDetailAction = 'cancel' | 'reset' | 'set'; + +type DialogProperties = Pick; diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts index 927fe15fd..ec44ec1b3 100644 --- a/src/date-picker-input/date-picker-input.ts +++ b/src/date-picker-input/date-picker-input.ts @@ -17,7 +17,7 @@ import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; import { ElementMixin } from '../mixins/element-mixin.js'; import type { DatePickerMixinProperties } from '../mixins/typings.js'; -import type { ChangedProperties, DatePickerProperties, SupportedCustomEventDetail } from '../typings.js'; +import type { ChangedProperties, CustomEventDetail, DatePickerProperties } from '../typings.js'; import { datePickerInputStyling } from './stylings.js'; export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinMaxMixin(TextField))) implements DatePickerMixinProperties { @@ -193,21 +193,24 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM this._open = false; } - #onDatePickerFirstUpdated(ev: CustomEvent): void { - const [focusableElement] = ev.detail.focusableElements; - - this.#picker = ev.currentTarget as AppDatePicker; + #onDatePickerFirstUpdated({ + currentTarget, + detail: { + focusableElements: [focusableElement], + }, + }: CustomEvent): void { + this.#picker = currentTarget as AppDatePicker; this.#focusElement = focusableElement; } - async #onDatePickerDateUpdated(ev: CustomEvent): Promise { + async #onDatePickerDateUpdated(ev: CustomEvent): Promise { const { isKeypress, key, - value, + valueAsDate, } = ev.detail; - this.value = this.#valueFormatter.format(value); + this.value = this.#valueFormatter.format(valueAsDate); if (isKeypress && (key === 'Enter' || key === ' ')) { (await this.$inputSurface)?.close(); diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 479f58495..8716e6533 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -14,7 +14,6 @@ import { toUTCDate } from 'nodemod/dist/calendar/helpers/to-utc-date.js'; import { DateTimeFormat, MAX_DATE, startViews } from '../constants.js'; import { clampValue } from '../helpers/clamp-value.js'; import { dateValidator } from '../helpers/date-validator.js'; -import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { focusElement } from '../helpers/focus-element.js'; import { isInCurrentMonth } from '../helpers/is-in-current-month.js'; import { splitString } from '../helpers/split-string.js'; @@ -28,15 +27,20 @@ import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; import type { AppMonthCalendar } from '../month-calendar/app-month-calendar.js'; import { RootElement } from '../root-element/root-element.js'; import { resetShadowRoot, webkitScrollbarStyling } from '../stylings.js'; -import type { DatePickerProperties, Formatters, StartView, ValueUpdatedEvent, YearUpdatedEvent } from '../typings.js'; +import type { CustomEventDetail, DatePickerProperties, Formatters, StartView, ValueUpdatedEvent } from '../typings.js'; import type { AppYearGrid } from '../year-grid/app-year-grid.js'; import type { YearGridData } from '../year-grid/typings.js'; import { datePickerStyling } from './stylings.js'; import type { DatePickerChangedProperties } from './typings.js'; export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElement)) implements DatePickerProperties { - public valueAsDate: Date; - public valueAsNumber: number; + public get valueAsDate(): Date { + return this.#valueAsDate; + } + + public get valueAsNumber(): number { + return +this.#valueAsDate; + } @queryAsync('app-month-calendar') private readonly _monthCalendar!: Promise; @@ -59,6 +63,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen #formatters: Formatters; #focusNavButtonWithKey = false; #today: Date; + #valueAsDate: Date; public static override styles = [ resetShadowRoot, @@ -77,8 +82,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen this._selectedDate = new Date(todayDate); this._currentDate = new Date(todayDate); this.#formatters = toFormatters(this.locale); - this.valueAsDate = new Date(todayDate); - this.valueAsNumber = +todayDate; + this.#valueAsDate = new Date(todayDate); } public override willUpdate(changedProperties: DatePickerChangedProperties): void { @@ -140,9 +144,26 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen this._max = newMax.date; this._currentDate = new Date(valueDate); this._selectedDate = new Date(valueDate); - this.valueAsDate = new Date(valueDate); - this.valueAsNumber = +valueDate; - this.value = toDateString(valueDate); + this.#valueAsDate = new Date(valueDate); + + /** + * Always override `value` when its value is nullish and dispatch `date-updated` event. + */ + if (this.value === null) { + const valueStr = toDateString(valueDate); + + this.value = valueStr; + + this.fire({ + detail: { + isKeypress: false, + value: valueStr, + valueAsDate: new Date(valueDate), + valueAsNumber: +valueDate, + }, + type: 'date-updated', + }); + } } if (changedProperties.has('startView')) { @@ -173,9 +194,16 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen } protected override async firstUpdated(): Promise { - dispatchCustomEvent(this, 'first-updated', { - focusableElements: await this.#queryAllFocusable(), - value: this.value, + const valueAsDate = this.#valueAsDate; + + this.fire({ + detail: { + focusableElements: await this.#queryAllFocusable(), + value: toDateString(valueAsDate), + valueAsDate: new Date(valueAsDate), + valueAsNumber: +valueAsDate, + }, + type: 'first-updated', }); } @@ -385,6 +413,11 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen this._selectedDate = newSelectedDate; this._currentDate = new Date(newSelectedDate); + + /** + * Always update `value` just like other native element such as `input`. + */ + this.value = toDateString(newSelectedDate); } #updateSelectedDate({ @@ -399,7 +432,7 @@ export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElemen #updateYear({ detail: { year }, - }: CustomEvent): void { + }: CustomEvent): void { this.#updateSelectedAndCurrentDate(this._selectedDate.setUTCFullYear(year)); this.startView = 'calendar'; } diff --git a/src/helpers/dispatch-custom-event.ts b/src/helpers/dispatch-custom-event.ts deleted file mode 100644 index 5e13c5d9a..000000000 --- a/src/helpers/dispatch-custom-event.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { SupportedCustomEventDetail } from '../typings.js'; - -export function dispatchCustomEvent( - target: HTMLElement, - eventName: T, - detail?: SupportedCustomEventDetail[T] -): boolean { - return target.dispatchEvent(new CustomEvent(eventName, { - bubbles: true, - composed: true, - detail, - })); -} diff --git a/src/mixins/date-picker-mixin.ts b/src/mixins/date-picker-mixin.ts index 79021b688..e6090c5cf 100644 --- a/src/mixins/date-picker-mixin.ts +++ b/src/mixins/date-picker-mixin.ts @@ -38,7 +38,7 @@ export const DatePickerMixin = ( * NOTE: `null` or `''` will always reset to the old valid date. In order to reset to * today's date, set `value` undefined. */ - @property() public value: string = toDateString(toResolvedDate()); + @property() public value = toDateString(toResolvedDate()); @property() public weekLabel = 'Wk'; diff --git a/src/mixins/element-mixin.ts b/src/mixins/element-mixin.ts index 75feae2bb..8c6153d56 100644 --- a/src/mixins/element-mixin.ts +++ b/src/mixins/element-mixin.ts @@ -1,10 +1,21 @@ -import type { LitConstructor } from '../typings.js'; +import type { CustomEventAction, LitConstructor } from '../typings.js'; import type { ElementMixinProperties, MixinReturnType } from './typings.js'; export const ElementMixin = ( SuperClass: BaseConstructor ): MixinReturnType => { class ElementMixinClass extends SuperClass { + public fire>({ + detail, + type, + }: T): void { + this.dispatchEvent(new CustomEvent(type, { + bubbles: true, + composed: true, + detail, + })); + } + public query(selector: string): T | null { return this.root.querySelector(selector) as T; } diff --git a/src/mixins/typings.ts b/src/mixins/typings.ts index afd240b08..0d2778332 100644 --- a/src/mixins/typings.ts +++ b/src/mixins/typings.ts @@ -1,6 +1,6 @@ import type { WeekNumberType } from 'nodemod/dist/calendar/typings.js'; -import type { Constructor, LitConstructor, StartView } from '../typings.js'; +import type { Constructor, CustomEventAction, LitConstructor, StartView } from '../typings.js'; export interface DatePickerMinMaxProperties { max?: string; @@ -19,13 +19,14 @@ export interface DatePickerMixinProperties { selectedDateLabel: string; showWeekNumber: boolean; startView: StartView; - value: string; + value?: string; weekLabel: string; weekNumberType: WeekNumberType; yearDropdownLabel: string; } export interface ElementMixinProperties { + fire>(action: T): void; query(selector: string): T | null; queryAll(selector: string): T[]; root: ShadowRoot; diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 1694e9ee2..6791202c9 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -3,16 +3,16 @@ import { html, nothing } from 'lit'; import { property, queryAsync } from 'lit/decorators.js'; import { confirmKeySet, navigationKeySetGrid } from '../constants.js'; -import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { focusElement } from '../helpers/focus-element.js'; import { isInCurrentMonth } from '../helpers/is-in-current-month.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; +import { toDateString } from '../helpers/to-date-string.js'; import { toNextSelectedDate } from '../helpers/to-next-selected-date.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { keyHome } from '../key-values.js'; import { RootElement } from '../root-element/root-element.js'; import { baseStyling, resetShadowRoot } from '../stylings.js'; -import type { Formatters, InferredFromSet, SupportedKey } from '../typings.js'; +import type { CustomEventDetail, Formatters, InferredFromSet, SupportedKey } from '../typings.js'; import { monthCalendarStyling } from './stylings.js'; import type { MonthCalendarData, MonthCalendarProperties, MonthCalendarRenderCalendarDayInit } from './typings.js'; @@ -285,17 +285,28 @@ export class MonthCalendar extends RootElement implements MonthCalendarPropertie this.#selectedDate = selectedCalendarDay.fullDate; } - const newSelectedDate = this.#selectedDate; + const selectedDate = this.#selectedDate; - if (newSelectedDate == null) return; + if (selectedDate == null) return; const isKeypress = Boolean(key); - - dispatchCustomEvent(this, 'date-updated', { - isKeypress, - value: new Date(newSelectedDate), - ...(isKeypress && { key }), + const newSelectedDate = new Date(selectedDate); + + this.fire({ + detail: { + isKeypress, + value: toDateString(newSelectedDate), + valueAsDate: newSelectedDate, + valueAsNumber: +newSelectedDate, + ...(isKeypress && { key }), + }, + type: 'date-updated', }); + + /** + * Reset `#selectedDate` after click or keyup event + */ + this.#selectedDate = undefined; }; } diff --git a/src/typings.ts b/src/typings.ts index 3869da0b9..c989ad988 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -2,6 +2,7 @@ import type { LitElement } from 'lit'; import type { DateTimeFormatter } from 'nodemod/dist/calendar/typings.js'; import type { startViews } from './constants.js'; +import type { DatePicker } from './date-picker/date-picker.js'; import type { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp, keyEnd, keyEnter, keyHome, keyPageDown, keyPageUp, keySpace, keyTab } from './key-values.js'; import type { DatePickerMinMaxProperties, DatePickerMixinProperties, ElementMixinProperties } from './mixins/typings.js'; @@ -9,30 +10,24 @@ export type StartView = StartViewTuple[number]; export type StartViewTuple = typeof startViews; -export interface ChangedEvent extends KeyEvent { - value: DatePickerMixinProperties['value']; -} - export type ChangedProperties> = Map; // eslint-disable-next-line @typescript-eslint/no-explicit-any export type Constructor = new (...args: any[]) => T; +export interface CustomEventAction { + detail: CustomEventDetail; + type: T; +} + export interface DatePickerProperties extends DatePickerMinMaxProperties, DatePickerMixinProperties, ElementMixinProperties {} -export interface DateUpdatedEvent extends KeyEvent { - value: Date; -} - -export interface FirstUpdatedEvent { - focusableElements: HTMLElement[]; - value: DatePickerMixinProperties['value']; -} +type DatePickerValues = Required>; -export interface Formatters extends Pick { +export interface Formatters extends Pick { dayFormat: DateTimeFormatter; fullDateFormat: DateTimeFormatter; longWeekdayFormat: DateTimeFormatter; @@ -47,13 +42,23 @@ export type InferredFromSet = SetType extends Set ? T : never; export type LitConstructor = Constructor; -export interface SupportedCustomEventDetail { - // ['animation-finished']: null; - // ['changed']: ChangedEvent; - ['date-updated']: DateUpdatedEvent; - ['first-updated']: FirstUpdatedEvent; - // ['value-updated']: ValueUpdatedEvent; - ['year-updated']: YearUpdatedEvent; +export interface CustomEventDetail { + ['date-updated']: CustomEventAction<'date-updated', CustomEventDetailDateUpdated>; + ['first-updated']: CustomEventAction<'first-updated', CustomEventDetailFirstUpdated>; + ['year-updated']: CustomEventAction<'year-updated', CustomEventDetailYearUpdated>; +} + +interface CustomEventDetailDateUpdated extends KeyEvent, DatePickerValues {} + +interface CustomEventDetailFirstUpdated extends DatePickerValues { + focusableElements: HTMLElement[]; +} + +/** + * NOTE: No `KeyEvent` is needed as native `button` element will dispatch `click` event on keypress. + */ +interface CustomEventDetailYearUpdated { + year: number; } export type SupportedKey = @@ -73,13 +78,6 @@ export interface ValueUpdatedEvent extends KeyEvent { value: string; } -/** - * NOTE: No `KeyEvent` is needed as native `button` element will dispatch `click` event on keypress. - */ -export interface YearUpdatedEvent { - year: number; -} - interface KeyEvent { isKeypress: boolean; key?: SupportedKey; diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index a6d838227..cb446c03c 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -4,14 +4,13 @@ import { property, queryAsync, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { MAX_DATE, navigationKeySetGrid } from '../constants.js'; -import { dispatchCustomEvent } from '../helpers/dispatch-custom-event.js'; import { focusElement } from '../helpers/focus-element.js'; import { toClosestTarget } from '../helpers/to-closest-target.js'; import { toResolvedDate } from '../helpers/to-resolved-date.js'; import { toYearList } from '../helpers/to-year-list.js'; import { RootElement } from '../root-element/root-element.js'; import { baseStyling, resetButton, resetShadowRoot } from '../stylings.js'; -import type { Formatters, InferredFromSet } from '../typings.js'; +import type { CustomEventDetail, Formatters, InferredFromSet } from '../typings.js'; import { yearGridStyling } from './stylings.js'; import { toNextSelectedYear } from './to-next-selected-year.js'; import type { YearGridChangedProperties, YearGridData, YearGridProperties, YearGridRenderButtonInit } from './typings.js'; @@ -151,8 +150,11 @@ export class YearGrid extends RootElement implements YearGridProperties { this.$focusingYear = year; - dispatchCustomEvent(this, 'year-updated', { - year, + this.fire({ + detail: { + year, + }, + type: 'year-updated', }); } }; From 4d41bbaf5dd90f68be97520458c528c979bf9d8e Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Mon, 15 Nov 2021 00:29:50 +0800 Subject: [PATCH 135/276] feat: implement AppDatePickerDialog --- src/__demo__/demo-app.ts | 34 +++- .../app-date-picker-dialog.ts | 13 ++ src/date-picker-dialog/date-picker-dialog.ts | 154 ++++++++++++++++++ src/date-picker-dialog/stylings.ts | 21 ++- 4 files changed, 220 insertions(+), 2 deletions(-) create mode 100644 src/date-picker-dialog/app-date-picker-dialog.ts create mode 100644 src/date-picker-dialog/date-picker-dialog.ts diff --git a/src/__demo__/demo-app.ts b/src/__demo__/demo-app.ts index 859def597..9d5252915 100644 --- a/src/__demo__/demo-app.ts +++ b/src/__demo__/demo-app.ts @@ -1,13 +1,20 @@ +import '../date-picker-dialog/app-date-picker-dialog.js'; import '../date-picker-input/app-date-picker-input.js'; import '../date-picker/app-date-picker.js'; import { css, html } from 'lit'; -import { customElement } from 'lit/decorators.js'; +import { customElement, queryAsync } from 'lit/decorators.js'; +import type { AppDatePicker } from '../date-picker/app-date-picker.js'; +import type { AppDatePickerDialog } from '../date-picker-dialog/app-date-picker-dialog.js'; +import { appDatePickerDialogName } from '../date-picker-dialog/constants.js'; import { RootElement } from '../root-element/root-element.js'; +import type { CustomEventDetail } from '../typings.js'; @customElement('demo-app') export class DemoApp extends RootElement { + @queryAsync(appDatePickerDialogName) dialog!: Promise; + public static override styles = [ css` :host { @@ -35,13 +42,17 @@ export class DemoApp extends RootElement { protected override render() { return html` + + + `; } + + async #showDialog() { + const dialog = await this.dialog; + + dialog?.show(); + } + + #dateUpdated({ + detail, + currentTarget, + }: CustomEvent): void { + const { id } = currentTarget as AppDatePicker; + + console.debug({ + id, + detail, + }); + } } diff --git a/src/date-picker-dialog/app-date-picker-dialog.ts b/src/date-picker-dialog/app-date-picker-dialog.ts new file mode 100644 index 000000000..1b9f33704 --- /dev/null +++ b/src/date-picker-dialog/app-date-picker-dialog.ts @@ -0,0 +1,13 @@ +import { customElement } from 'lit/decorators.js'; + +import { appDatePickerDialogName } from './constants.js'; +import { DatePickerDialog } from './date-picker-dialog.js'; + +@customElement(appDatePickerDialogName) +export class AppDatePickerDialog extends DatePickerDialog {} + +declare global { + interface HTMLElementTagNameMap { + [appDatePickerDialogName]: AppDatePickerDialog; + } +} diff --git a/src/date-picker-dialog/date-picker-dialog.ts b/src/date-picker-dialog/date-picker-dialog.ts new file mode 100644 index 000000000..eb1e7a5f7 --- /dev/null +++ b/src/date-picker-dialog/date-picker-dialog.ts @@ -0,0 +1,154 @@ +import '@material/mwc-button'; +import '@material/mwc-dialog'; +import '../date-picker/app-date-picker.js'; +import './app-date-picker-dialog-base.js'; + +import type { ReactiveElement, TemplateResult } from 'lit'; +import { adoptStyles, html } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { toDateString } from '../helpers/to-date-string.js'; +import { toResolvedDate } from '../helpers/to-resolved-date.js'; +import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; +import { DatePickerMixin } from '../mixins/date-picker-mixin.js'; +import { RootElement } from '../root-element/root-element.js'; +import type { CustomEventDetail } from '../typings.js'; +import { datePickerDialogStyling } from './stylings.js'; +import type { DatePickerDialogProperties, DialogClosingEventDetail } from './typings.js'; + +export class DatePickerDialog extends DatePickerMixin(DatePickerMinMaxMixin(RootElement)) implements DatePickerDialogProperties { + @property({ type: String }) public confirmLabel = 'set'; + @property({ type: String }) public dismissLabel = 'cancel'; + @property({ type: String }) public resetLabel = 'reset'; + @property({ type: Boolean }) public open = false; + + #disconnect: () => void = () => void 0; + #valueAsDate: Date = toResolvedDate(); + + public static override styles = [ + datePickerDialogStyling, + ]; + + public constructor() { + super(); + + const closing = (ev: CustomEvent) => { + this.#onClosing(ev); + }; + + this.addEventListener('closing' as never, closing); + + this.#disconnect = () => { + this.removeEventListener('closing' as never, closing); + }; + } + + public override disconnectedCallback() { + super.disconnectedCallback(); + + this.#disconnect(); + } + + protected override createRenderRoot(): Element | ShadowRoot { + const renderRoot = this as unknown as ShadowRoot; + + adoptStyles( + renderRoot, + (this.constructor as typeof ReactiveElement).elementStyles + ); + + return renderRoot; + } + + protected override render(): TemplateResult<1> { + return html` + + + +
    + ${this.resetLabel} + ${this.dismissLabel} +
    + + ${this.confirmLabel} +
    + `; + } + + public hide(): void { + this.open = false; + } + + public show(): void { + this.open = true; + } + + #onClosed = () => { + this.hide(); + }; + + #onClosing = ({ + detail: { + action, + ...rest + }, + }: CustomEvent): void => { + console.debug({ action, rest }); + + if (action === 'set') { + this.value = toDateString(this.#valueAsDate); + } + }; + + #onDatePickerDateUpdated({ + detail: { + valueAsDate, + }, + }: CustomEvent) { + this.#valueAsDate = valueAsDate; + } + + #onDatePickerFirstUpdated({ + detail: { + valueAsDate, + }, + }: CustomEvent) { + this.#valueAsDate = valueAsDate; + } + + #onResetClick() { + this.value = undefined; + } +} + +// FIXME: Do not close dialog when enter/ space or select new year diff --git a/src/date-picker-dialog/stylings.ts b/src/date-picker-dialog/stylings.ts index e487e59f8..ba903a89b 100644 --- a/src/date-picker-dialog/stylings.ts +++ b/src/date-picker-dialog/stylings.ts @@ -5,9 +5,20 @@ import { appDatePickerDialogName } from './constants.js'; export const datePickerDialogBaseStyling = css` :host { display: block; + + --date-picker-dialog-base-color: #000; + + --mdc-dialog-min-width: 256px; + --mdc-dialog-content-ink-color: var(--date-picker-dialog-color, var(--date-picker-dialog-base-color)); + --mdc-theme-primary: var(--date-picker-dialog-color, var(--date-picker-dialog-base-color)); +} +.mdc-dialog .mdc-dialog__surface, +.mdc-dialog .mdc-dialog__content { + overflow: initial; } -.mdc-dialog__content { +.mdc-dialog .mdc-dialog__content { + background-color: inherit; padding: 0; } `; @@ -16,4 +27,12 @@ export const datePickerDialogStyling = css` ${unsafeCSS(appDatePickerDialogName)} { display: block; } + +${unsafeCSS(appDatePickerDialogName)} app-date-picker { + background-color: var(--mdc-theme-surface); +} + +${unsafeCSS(appDatePickerDialogName)} .secondary-actions mwc-button + mwc-button { + margin: 0 0 0 8px; +} `; From a0b49b941a7969cb5be0075c88f4f462242909e5 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 20 Nov 2021 16:00:50 +0800 Subject: [PATCH 136/276] chore: update dependencies --- package-lock.json | 211 +++++++++++++++++++++++++--------------------- package.json | 8 +- 2 files changed, 117 insertions(+), 102 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e9912ce0..ba0c033f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,13 +21,13 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@commitlint/config-conventional": "^14.1.0", + "@commitlint/config-conventional": "^15.0.0", "@open-wc/testing": "^3.0.3", "@reallyland/tsconfig": "^3.0.2", "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", "@web/dev-server-esbuild": "^0.2.16", "@web/dev-server-rollup": "^0.3.13", "@web/test-runner": "^0.13.22", @@ -38,7 +38,7 @@ "eslint-plugin-promise": "^5.1.1", "eslint-plugin-regexp": "^1.5.0", "eslint-plugin-simple-import-sort": "^7.0.0", - "typescript": "^4.4.4" + "typescript": "^4.5.2" }, "engines": { "node": ">= 16.x", @@ -103,9 +103,9 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", - "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz", + "integrity": "sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ==", "dev": true, "dependencies": { "conventional-changelog-conventionalcommits": "^4.3.1" @@ -1152,13 +1152,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", - "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", + "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "5.3.1", - "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/experimental-utils": "5.4.0", + "@typescript-eslint/scope-manager": "5.4.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1184,15 +1184,15 @@ } }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", - "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", + "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.1", - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/typescript-estree": "5.3.1", + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1208,14 +1208,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", - "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", + "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.3.1", - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/typescript-estree": "5.3.1", + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", "debug": "^4.3.2" }, "engines": { @@ -1235,13 +1235,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", - "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", + "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/visitor-keys": "5.3.1" + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1252,9 +1252,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", - "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", + "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1265,13 +1265,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", - "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", + "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/visitor-keys": "5.3.1", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1292,12 +1292,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", - "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", + "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/types": "5.4.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -3387,16 +3387,16 @@ } }, "node_modules/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" @@ -3411,6 +3411,15 @@ "node": ">= 0.6" } }, + "node_modules/http-errors/node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -5467,9 +5476,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", - "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.1.tgz", + "integrity": "sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg==", "dev": true, "peer": true, "dependencies": { @@ -5648,9 +5657,9 @@ } }, "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5993,9 +6002,9 @@ } }, "@commitlint/config-conventional": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", - "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz", + "integrity": "sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ==", "dev": true, "requires": { "conventional-changelog-conventionalcommits": "^4.3.1" @@ -7007,13 +7016,13 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz", - "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz", + "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "5.3.1", - "@typescript-eslint/scope-manager": "5.3.1", + "@typescript-eslint/experimental-utils": "5.4.0", + "@typescript-eslint/scope-manager": "5.4.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -7023,55 +7032,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz", - "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz", + "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.3.1", - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/typescript-estree": "5.3.1", + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/parser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz", - "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz", + "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.3.1", - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/typescript-estree": "5.3.1", + "@typescript-eslint/scope-manager": "5.4.0", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/typescript-estree": "5.4.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz", - "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz", + "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/visitor-keys": "5.3.1" + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0" } }, "@typescript-eslint/types": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz", - "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz", + "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz", - "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz", + "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.1", - "@typescript-eslint/visitor-keys": "5.3.1", + "@typescript-eslint/types": "5.4.0", + "@typescript-eslint/visitor-keys": "5.4.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -7080,12 +7089,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz", - "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz", + "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.3.1", + "@typescript-eslint/types": "5.4.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -8679,16 +8688,16 @@ } }, "http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "toidentifier": "1.0.1" }, "dependencies": { "depd": { @@ -8696,6 +8705,12 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true } } }, @@ -10238,9 +10253,9 @@ }, "dependencies": { "ajv": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", - "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.1.tgz", + "integrity": "sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg==", "dev": true, "peer": true, "requires": { @@ -10409,9 +10424,9 @@ } }, "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", "dev": true }, "typical": { diff --git a/package.json b/package.json index 4c3f1b8f2..b9d0baecb 100644 --- a/package.json +++ b/package.json @@ -115,13 +115,13 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@commitlint/config-conventional": "^14.1.0", + "@commitlint/config-conventional": "^15.0.0", "@open-wc/testing": "^3.0.3", "@reallyland/tsconfig": "^3.0.2", "@rollup/plugin-node-resolve": "^13.0.6", "@skypack/package-check": "^0.2.2", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", "@web/dev-server-esbuild": "^0.2.16", "@web/dev-server-rollup": "^0.3.13", "@web/test-runner": "^0.13.22", @@ -132,7 +132,7 @@ "eslint-plugin-promise": "^5.1.1", "eslint-plugin-regexp": "^1.5.0", "eslint-plugin-simple-import-sort": "^7.0.0", - "typescript": "^4.4.4" + "typescript": "^4.5.2" }, "engines": { "node": ">= 16.x", From 3951f8623f2655829ac66212b9b4cc16624e11a7 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 20 Nov 2021 16:32:23 +0800 Subject: [PATCH 137/276] fix: fix @material/mwc-dialog closes unexpectedly for all Enter keys --- src/date-picker-dialog/date-picker-dialog.ts | 2 -- src/month-calendar/month-calendar.ts | 7 +++++++ src/year-grid/year-grid.ts | 9 ++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/date-picker-dialog/date-picker-dialog.ts b/src/date-picker-dialog/date-picker-dialog.ts index eb1e7a5f7..700904c3b 100644 --- a/src/date-picker-dialog/date-picker-dialog.ts +++ b/src/date-picker-dialog/date-picker-dialog.ts @@ -150,5 +150,3 @@ export class DatePickerDialog extends DatePickerMixin(DatePickerMinMaxMixin(Root this.value = undefined; } } - -// FIXME: Do not close dialog when enter/ space or select new year diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 6791202c9..64044b504 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -225,6 +225,13 @@ export class MonthCalendar extends RootElement implements MonthCalendarPropertie const type = event.type as 'click' | 'keydown' | 'keyup'; if (type === 'keydown') { + /** + * NOTE: `@material/mwc-dialog` captures Enter keyboard event then closes the dialog. + * This is not what `month-calendar` expects so here stops all event propagation immediately for + * all key events. + */ + event.stopImmediatePropagation(); + const isConfirmKey = confirmKeySet.has(key as InferredFromSet); if ( diff --git a/src/year-grid/year-grid.ts b/src/year-grid/year-grid.ts index cb446c03c..4a7a030e5 100644 --- a/src/year-grid/year-grid.ts +++ b/src/year-grid/year-grid.ts @@ -112,8 +112,15 @@ export class YearGrid extends RootElement implements YearGridProperties { #updateYear = (event: KeyboardEvent): void => { if (event.type === 'keydown') { + /** + * NOTE: `@material/mwc-dialog` captures Enter keyboard event then closes the dialog. + * This is not what `year-grid` expects so here stops all event propagation immediately for + * all key events. + */ + event.stopImmediatePropagation(); + const key = - event.key as InferredFromSet; + event.key as InferredFromSet; if (!navigationKeySetGrid.has(key)) return; From d5eed5dac1c79a4eb863fd1ca5cf3c53b4857794 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 20 Nov 2021 18:03:35 +0800 Subject: [PATCH 138/276] test: improve tests --- .../date-picker/app-date-picker.test.ts | 19 ++++--- .../month-calendar/app-month-calendar.test.ts | 49 ++++++++++++++++--- .../test-utils/query-deep-active-element.ts | 14 ++++++ src/month-calendar/month-calendar.ts | 3 +- 4 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 src/__tests__/test-utils/query-deep-active-element.ts diff --git a/src/__tests__/date-picker/app-date-picker.test.ts b/src/__tests__/date-picker/app-date-picker.test.ts index a29bbe8b0..5fa5e284f 100644 --- a/src/__tests__/date-picker/app-date-picker.test.ts +++ b/src/__tests__/date-picker/app-date-picker.test.ts @@ -310,6 +310,7 @@ describe(appDatePickerName, () => { it('selects new date', async () => { const testValue = '2020-02-02'; + const testValueDate = new Date(testValue); const el = await fixture( html` { >` ); + expect(el.valueAsDate).deep.equal(testValueDate); + expect(el.valueAsNumber).equal(+testValueDate); + const newSelectedDate = new Date( new Date(testValue).setUTCDate(15) ); @@ -347,13 +351,6 @@ describe(appDatePickerName, () => { const selectedDate = calendar?.query( elementSelectors.selectedCalendarDay ); - - expect(selectedDate).exist; - expect(selectedDate?.getAttribute('aria-label')).equal( - newSelectedDateLabel - ); - expect(selectedDate?.fullDate).deep.equal(newSelectedDate); - const expectedDateUpdatedEvent: CustomEventDetail['date-updated']['detail'] = { isKeypress: false, value: toDateString(newSelectedDate), @@ -361,6 +358,14 @@ describe(appDatePickerName, () => { valueAsNumber: +newSelectedDate, }; + expect(el.valueAsDate).deep.equal(newSelectedDate); + expect(el.valueAsNumber).equal(+newSelectedDate); + + expect(selectedDate).exist; + expect(selectedDate?.getAttribute('aria-label')).equal( + newSelectedDateLabel + ); + expect(selectedDate?.fullDate).deep.equal(newSelectedDate); expect(dateUpdatedEvent.detail).deep.equal(expectedDateUpdatedEvent); }); diff --git a/src/__tests__/month-calendar/app-month-calendar.test.ts b/src/__tests__/month-calendar/app-month-calendar.test.ts index 02b91d4e6..0b629697d 100644 --- a/src/__tests__/month-calendar/app-month-calendar.test.ts +++ b/src/__tests__/month-calendar/app-month-calendar.test.ts @@ -16,6 +16,7 @@ import { appMonthCalendarName } from '../../month-calendar/constants'; import type { MonthCalendarData } from '../../month-calendar/typings'; import type { CustomEventDetail, InferredFromSet } from '../../typings'; import { messageFormatter } from '../test-utils/message-formatter'; +import { queryDeepActiveElement } from '../test-utils/query-deep-active-element'; describe(appMonthCalendarName, () => { const locale = 'en-US'; @@ -55,14 +56,14 @@ describe(appMonthCalendarName, () => { }; const elementSelectors = { calendarCaption: '.calendar-caption', - calendarTable: '.calendar-table', - monthCalendar: '.month-calendar', calendarDay: 'td.calendar-day', - tabbableCalendarDay: 'td.calendar-day[tabindex="0"]', - selectedCalendarDay: 'td.calendar-day[aria-selected="true"]', - disabledCalendarDay: 'td.calendar-day[aria-disabled="true"]', calendarDayWeekNumber: 'th.calendar-day.week-number', + calendarTable: '.calendar-table', + disabledCalendarDay: 'td.calendar-day[aria-disabled="true"]', hiddenCalendarDay: 'td.calendar-day[aria-hidden="true"]', + monthCalendar: '.month-calendar', + selectedCalendarDay: 'td.calendar-day[aria-selected="true"]', + tabbableCalendarDay: 'td.calendar-day[tabindex="0"]', } as const; type A = [string, MonthCalendarData | undefined, boolean]; @@ -163,7 +164,7 @@ describe(appMonthCalendarName, () => { type A3 = [ 'click' | 'keydown', (Partial | InferredFromSet >>)[], Date @@ -174,6 +175,7 @@ describe(appMonthCalendarName, () => { 'keydown', [ { down: 'ArrowDown' }, + { up: 'ArrowDown' }, ], data.date, ], @@ -181,6 +183,7 @@ describe(appMonthCalendarName, () => { 'keydown', [ { down: 'ArrowDown' }, + { up: 'ArrowDown' }, { press: ' ' }, ], data.date, @@ -189,6 +192,7 @@ describe(appMonthCalendarName, () => { 'keydown', [ { down: 'ArrowDown' }, + { up: 'ArrowDown' }, { press: 'Enter' }, ], data.date, @@ -260,6 +264,39 @@ describe(appMonthCalendarName, () => { ); }); + it( + 'tabs new element', + async () => { + const el = await fixture( + html`` + ); + + const calendarTable = el.query(elementSelectors.calendarTable); + + expect(calendarTable).exist; + + calendarTable?.focus(); + + let activeElement = queryDeepActiveElement(); + + expect(activeElement?.isEqualNode(calendarTable)).true; + + await sendKeys({ down: 'Tab' } as SendKeysPayload); + await sendKeys({ up: 'Tab' } as SendKeysPayload); + + activeElement = queryDeepActiveElement(); + + const selectedDate = el.query( + `${elementSelectors.calendarDay}[aria-label="${ + formatters.fullDateFormat(calendarInit.date) + }"]` + ); + + expect(activeElement).exist; + expect(activeElement?.isEqualNode(selectedDate)).true; + } + ); + type A4 = [Partial, string]; const cases4: A4[] = [ [{}, elementSelectors.calendarTable], diff --git a/src/__tests__/test-utils/query-deep-active-element.ts b/src/__tests__/test-utils/query-deep-active-element.ts new file mode 100644 index 000000000..43449e729 --- /dev/null +++ b/src/__tests__/test-utils/query-deep-active-element.ts @@ -0,0 +1,14 @@ +export function queryDeepActiveElement( +): HTMLElement | null { + let element = document.activeElement as HTMLElement | null; + + while (element?.shadowRoot) { + const shadowElement = element.shadowRoot.activeElement as HTMLElement | null; + + if (shadowElement) { + element = shadowElement; + } + } + + return element; +} diff --git a/src/month-calendar/month-calendar.ts b/src/month-calendar/month-calendar.ts index 64044b504..d2d0b9390 100644 --- a/src/month-calendar/month-calendar.ts +++ b/src/month-calendar/month-calendar.ts @@ -123,6 +123,7 @@ export class MonthCalendar extends RootElement implements MonthCalendarPropertie class=calendar-table part=table role=grid + tabindex=-1 > ${ showCaption && secondMonthSecondCalendarDayFullDate ? html` @@ -192,7 +193,7 @@ export class MonthCalendar extends RootElement implements MonthCalendarPropertie `; } - return html`
    ${calendarContent}
    `; + return html`
    ${calendarContent}
    `; } protected $renderCalendarDay({ From 8f11e495ef79b43ba2f9618e707c19b7cb5ec1bb Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 21 Nov 2021 16:58:46 +0800 Subject: [PATCH 139/276] test: add tests for AppDatePickerInputSurface --- src/__tests__/constants.ts | 1 + .../app-date-picker-input-surface.test.ts | 59 +++++++++++++++++++ src/date-picker-input/date-picker-input.ts | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/__tests__/constants.ts create mode 100644 src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts diff --git a/src/__tests__/constants.ts b/src/__tests__/constants.ts new file mode 100644 index 000000000..4798ecb14 --- /dev/null +++ b/src/__tests__/constants.ts @@ -0,0 +1 @@ +export const promiseTimeout = 3e3 as const; diff --git a/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts b/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts new file mode 100644 index 000000000..fd00fb170 --- /dev/null +++ b/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts @@ -0,0 +1,59 @@ +import '../../date-picker-input-surface/app-date-picker-input-surface'; + +import { expect, fixture, html } from '@open-wc/testing'; + +import { appDatePickerInputSurfaceName } from '../../date-picker-input-surface/constants'; +import type { DatePickerInputSurface } from '../../date-picker-input-surface/date-picker-input-surface'; +import { promiseTimeout } from '../constants'; + +describe(appDatePickerInputSurfaceName, () => { + const elementSelectors = { + mdcMenuSurface: '.mdc-menu-surface', + } as const; + + it('renders', async () => { + + + const el = await new Promise(async (resolve) => { + const element = await fixture( + html` resolve(element)}> +

    Test

    +
    ` + ); + }); + + const mdcMenuSurface = el.query(elementSelectors.mdcMenuSurface); + + expect(mdcMenuSurface).exist; + }); + + it('closes when clicking outside of surface', async () => { + const el = await new Promise(async (resolve) => { + const element = await fixture( + html` resolve(element)}> +

    Test

    +
    ` + ); + }); + + const mdcMenuSurface = el.query(elementSelectors.mdcMenuSurface); + + expect(mdcMenuSurface).exist; + + const closedTask = new Promise((resolve) => { + el.addEventListener('closed', () => { + resolve(true); + + globalThis.setTimeout(() => resolve(false), promiseTimeout); + }, { once: true }); + }); + + document.body.click(); + + const closed = await closedTask; + + expect(closed).true; + expect(el.open).false; + expect(mdcMenuSurface).exist; + }); +}); diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts index ec44ec1b3..324f522ff 100644 --- a/src/date-picker-input/date-picker-input.ts +++ b/src/date-picker-input/date-picker-input.ts @@ -98,7 +98,7 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM From a6d940ef1b59f0bf09afe0da489c0967eb5f8a30 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sun, 21 Nov 2021 23:34:26 +0800 Subject: [PATCH 140/276] test: add tests for AppDatePickerInput --- .../app-date-picker-input-surface.test.ts | 27 +- .../app-date-picker-input.test.ts | 389 ++++++++++++++++++ .../date-picker/app-date-picker.test.ts | 19 +- src/__tests__/test-utils/event-once.ts | 49 +++ src/date-picker-dialog/date-picker-dialog.ts | 3 - src/date-picker-dialog/typings.ts | 2 + src/date-picker-input/constants.ts | 4 + src/date-picker-input/date-picker-input.ts | 75 ++-- 8 files changed, 513 insertions(+), 55 deletions(-) create mode 100644 src/__tests__/date-picker-input/app-date-picker-input.test.ts create mode 100644 src/__tests__/test-utils/event-once.ts diff --git a/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts b/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts index fd00fb170..b958b846c 100644 --- a/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts +++ b/src/__tests__/date-picker-input-surface/app-date-picker-input-surface.test.ts @@ -2,9 +2,10 @@ import '../../date-picker-input-surface/app-date-picker-input-surface'; import { expect, fixture, html } from '@open-wc/testing'; +import type { DialogClosedEventDetail } from '../../date-picker-dialog/typings'; +import type { AppDatePickerInputSurface } from '../../date-picker-input-surface/app-date-picker-input-surface'; import { appDatePickerInputSurfaceName } from '../../date-picker-input-surface/constants'; -import type { DatePickerInputSurface } from '../../date-picker-input-surface/date-picker-input-surface'; -import { promiseTimeout } from '../constants'; +import { eventOnce } from '../test-utils/event-once'; describe(appDatePickerInputSurfaceName, () => { const elementSelectors = { @@ -14,8 +15,8 @@ describe(appDatePickerInputSurfaceName, () => { it('renders', async () => { - const el = await new Promise(async (resolve) => { - const element = await fixture( + const el = await new Promise(async (resolve) => { + const element = await fixture( html` resolve(element)}>

    Test

    ` @@ -28,8 +29,8 @@ describe(appDatePickerInputSurfaceName, () => { }); it('closes when clicking outside of surface', async () => { - const el = await new Promise(async (resolve) => { - const element = await fixture( + const el = await new Promise(async (resolve) => { + const element = await fixture( html` resolve(element)}>

    Test

    ` @@ -40,19 +41,17 @@ describe(appDatePickerInputSurfaceName, () => { expect(mdcMenuSurface).exist; - const closedTask = new Promise((resolve) => { - el.addEventListener('closed', () => { - resolve(true); - - globalThis.setTimeout(() => resolve(false), promiseTimeout); - }, { once: true }); - }); + const closedTask = eventOnce< + typeof el, + 'closed', + CustomEvent + >(el, 'closed'); document.body.click(); const closed = await closedTask; - expect(closed).true; + expect(closed?.detail).not.undefined; expect(el.open).false; expect(mdcMenuSurface).exist; }); diff --git a/src/__tests__/date-picker-input/app-date-picker-input.test.ts b/src/__tests__/date-picker-input/app-date-picker-input.test.ts new file mode 100644 index 000000000..6a392a3c0 --- /dev/null +++ b/src/__tests__/date-picker-input/app-date-picker-input.test.ts @@ -0,0 +1,389 @@ +import '../../date-picker-input/app-date-picker-input'; + +import type { Button } from '@material/mwc-button'; +import { expect, fixture, html } from '@open-wc/testing'; +import { sendKeys } from '@web/test-runner-commands'; + +import { DateTimeFormat } from '../../constants'; +import type { AppDatePicker } from '../../date-picker/app-date-picker'; +import { appDatePickerName } from '../../date-picker/constants'; +import type { DialogClosedEventDetail } from '../../date-picker-dialog/typings'; +import type { AppDatePickerInput } from '../../date-picker-input/app-date-picker-input'; +import { appDatePickerInputName, appDatePickerInputType } from '../../date-picker-input/constants'; +import type { AppDatePickerInputSurface } from '../../date-picker-input-surface/app-date-picker-input-surface'; +import { appDatePickerInputSurfaceName } from '../../date-picker-input-surface/constants'; +import { iconClose } from '../../icons'; +import { keyEnter, keySpace } from '../../key-values'; +import type { AppMonthCalendar } from '../../month-calendar/app-month-calendar'; +import { appMonthCalendarName } from '../../month-calendar/constants'; +import { eventOnce } from '../test-utils/event-once'; +import { messageFormatter } from '../test-utils/message-formatter'; +import { queryDeepActiveElement } from '../test-utils/query-deep-active-element'; + +describe(appDatePickerInputName, () => { + const elementSelectors = { + calendarDay: (label: string) => `td.calendar-day[aria-label="${label}"]`, + datePicker: appDatePickerName, + datePickerInputSurface: appDatePickerInputSurfaceName, + mdcFloatingLabel: '.mdc-floating-label', + mdcTextField: '.mdc-text-field', + mdcTextFieldIconTrailing: '.mdc-text-field__icon--trailing', + mdcTextFieldInput: '.mdc-text-field__input', + monthCalendar: appMonthCalendarName, + yearDropdown: '.year-dropdown', + } as const; + const formatter = DateTimeFormat('en-US', { + year: 'numeric', + month: 'short', + day: 'numeric', + }); + const label = 'DOB'; + const max = '2100-12-31'; + const min = '1970-01-01'; + const placeholder = 'Select your date of birth'; + const value = '2020-02-02'; + + it('renders', async () => { + const el = await fixture( + html`` + ); + + const mdcTextField = el.query(elementSelectors.mdcTextField); + const mdcFloatingLabel = el.query(elementSelectors.mdcFloatingLabel); + const mdcTextFieldInput = el.query(elementSelectors.mdcTextFieldInput); + const mdcTextFieldIconTrailing = el.query(elementSelectors.mdcTextFieldIconTrailing); + + expect(mdcTextField).exist; + expect(mdcFloatingLabel).exist; + expect(mdcTextFieldInput).exist; + expect(mdcTextFieldIconTrailing).exist; + + expect(el.type).equal(appDatePickerInputType); + expect(mdcFloatingLabel).text(label); + expect(mdcTextFieldInput?.getAttribute('aria-labelledby')).equal('label'); + expect(mdcTextFieldInput?.placeholder).equal(placeholder); + expect(mdcTextFieldIconTrailing).lightDom.equal(iconClose.strings.toString()); + }); + + type A1 = [string | undefined | null, string]; + const cases1: A1[] = [ + ['zh-TW', 'zh-TW'], + [null, 'en-US'], + [undefined, 'en-US'], + ]; + cases1.forEach(a => { + const [testLocale, expectedLocale] = a; + it( + messageFormatter('renders with optional locale (%s)', testLocale), + async () => { + const el = await fixture( + html`` + ); + + expect(el.locale).equal(expectedLocale); + } + ); + }); + + it('renders with optional properties', async () => { + const testAutocapitalize = 'words'; + const testName = 'dob'; + const testValidationMessage = 'test validation message'; + + const el = await fixture( + html`` + ); + + const openedTask = eventOnce< + typeof el, + 'opened', + CustomEvent>(el, 'opened'); + + el.showPicker(); + await openedTask; + await el.updateComplete; + + const mdcTextFieldInput = el.query(elementSelectors.mdcTextFieldInput); + + expect(mdcTextFieldInput).exist; + expect(mdcTextFieldInput?.autocapitalize).equal(testAutocapitalize); + expect(mdcTextFieldInput?.getAttribute('aria-labelledby')).null; + expect(mdcTextFieldInput?.name).equal(testName); + }); + + it('opens date picker with .showPicker() and closes with .closePicker()', async () => { + const el = await fixture( + html`` + ); + + const openedTask = eventOnce< + typeof el, + 'opened', + CustomEvent>(el, 'opened'); + + el.showPicker(); + const opened = await openedTask; + await el.updateComplete; + + let datePickerInputSurface = el.query(elementSelectors.datePickerInputSurface); + let datePicker = el.query(elementSelectors.datePicker); + const activeElement = queryDeepActiveElement(); + const yearDropdown = datePicker?.query - + diff --git a/src/__tests__/date-picker-input/app-date-picker-input.test.ts b/src/__tests__/date-picker-input/app-date-picker-input.test.ts index c21cd1d40..ea833f14b 100644 --- a/src/__tests__/date-picker-input/app-date-picker-input.test.ts +++ b/src/__tests__/date-picker-input/app-date-picker-input.test.ts @@ -43,32 +43,50 @@ describe(appDatePickerInputName, () => { const placeholder = 'Select your date of birth'; const value = '2020-02-02'; - it('renders', async () => { - const el = await fixture( - html`` - ); - - const mdcTextField = el.query(elementSelectors.mdcTextField); - const mdcFloatingLabel = el.query(elementSelectors.mdcFloatingLabel); - const mdcTextFieldInput = el.query(elementSelectors.mdcTextFieldInput); - const mdcTextFieldIconTrailing = el.query(elementSelectors.mdcTextFieldIconTrailing); + type CaseRenders = [string | undefined | null, string, Date | null, number]; + const casesRenders: CaseRenders[] = [ + ['', '', null, NaN], + [undefined, '', null, NaN], + [null, '', null, NaN], + [value, value, new Date(value), +new Date(value)], + ]; + casesRenders.forEach((a) => { + const [testValue, expectedValue, expectedValueAsDate, expectedValueAsNumber] = a; - expect(mdcTextField).exist; - expect(mdcFloatingLabel).exist; - expect(mdcTextFieldInput).exist; - expect(mdcTextFieldIconTrailing).exist; + it( + messageFormatter('renders (value=%s)', a), + async () => { + const el = await fixture( + html`` + ); - expect(el.type).equal(appDatePickerInputType); - expect(mdcFloatingLabel).text(label); - expect(mdcTextFieldInput?.getAttribute('aria-labelledby')).equal('label'); - expect(mdcTextFieldInput?.placeholder).equal(placeholder); - expect(mdcTextFieldIconTrailing).lightDom.equal(iconClose.strings.toString()); + const mdcTextField = el.query(elementSelectors.mdcTextField); + const mdcFloatingLabel = el.query(elementSelectors.mdcFloatingLabel); + const mdcTextFieldInput = el.query(elementSelectors.mdcTextFieldInput); + const mdcTextFieldIconTrailing = el.query(elementSelectors.mdcTextFieldIconTrailing); + + expect(mdcTextField).exist; + expect(mdcFloatingLabel).exist; + expect(mdcTextFieldInput).exist; + expect(mdcTextFieldIconTrailing).exist; + + expect(el.type).equal(appDatePickerInputType); + expect(el.value).equal(expectedValue); + expect(el.valueAsDate).deep.equal(expectedValueAsDate); + expect(el.valueAsNumber).deep.equal(expectedValueAsNumber); + + expect(mdcFloatingLabel).text(label); + expect(mdcTextFieldInput?.getAttribute('aria-labelledby')).equal('label'); + expect(mdcTextFieldInput?.placeholder).equal(placeholder); + expect(mdcTextFieldIconTrailing).lightDom.equal(iconClose.strings.toString()); + } + ); }); type A1 = [string | undefined | null, string]; @@ -317,7 +335,9 @@ describe(appDatePickerInputName, () => { mdcTextFieldInput = el.query(elementSelectors.mdcTextFieldInput); expect(mdcTextFieldInput).value(''); - expect(el).value(''); + expect(el.value).equal(''); + expect(el.valueAsDate).equal(null); + expect(el.valueAsNumber).deep.equal(NaN); }); type A3 = typeof keyEnter | typeof keySpace; diff --git a/src/date-picker-dialog/date-picker-dialog.ts b/src/date-picker-dialog/date-picker-dialog.ts index 3e666eb1d..a164606c8 100644 --- a/src/date-picker-dialog/date-picker-dialog.ts +++ b/src/date-picker-dialog/date-picker-dialog.ts @@ -17,11 +17,11 @@ import { datePickerDialogStyling } from './stylings.js'; import type { DatePickerDialogProperties, DialogClosingEventDetail } from './typings.js'; export class DatePickerDialog extends DatePickerMixin(DatePickerMinMaxMixin(RootElement)) implements DatePickerDialogProperties { - public override get valueAsDate(): Date { + public get valueAsDate(): Date { return this.#valueAsDate; } - public override get valueAsNumber(): number { + public get valueAsNumber(): number { return +this.#valueAsDate; } diff --git a/src/date-picker-input/date-picker-input.ts b/src/date-picker-input/date-picker-input.ts index 5dd443b26..16bf27190 100644 --- a/src/date-picker-input/date-picker-input.ts +++ b/src/date-picker-input/date-picker-input.ts @@ -11,7 +11,7 @@ import { DateTimeFormat } from '../constants.js'; import type { AppDatePicker } from '../date-picker/app-date-picker.js'; import type { AppDatePickerInputSurface } from '../date-picker-input-surface/app-date-picker-input-surface.js'; import { appDatePickerInputSurfaceName } from '../date-picker-input-surface/constants.js'; -import { toResolvedDate } from '../helpers/to-resolved-date.js'; +import { toDateString } from '../helpers/to-date-string.js'; import { iconClose } from '../icons.js'; import { keyEnter, keyEscape, keySpace } from '../key-values.js'; import { DatePickerMinMaxMixin } from '../mixins/date-picker-min-max-mixin.js'; @@ -25,6 +25,15 @@ import { datePickerInputStyling } from './stylings.js'; export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinMaxMixin(TextField))) implements DatePickerMixinProperties { public override type = appDatePickerInputType; + public get valueAsDate(): Date | null { + return this.#valueAsDate || null; + } + + public get valueAsNumber(): number { + return Number(this.#valueAsDate || NaN); + } + + @property({ type: String }) public clearLabel = appDatePickerInputClearLabel; @queryAsync('.mdc-text-field__input') protected $input!: Promise; @queryAsync(appDatePickerInputSurfaceName) protected $inputSurface!: Promise; @@ -36,7 +45,8 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM #focusElement: HTMLElement | undefined = undefined; #isClearAction = false; #picker: AppDatePicker | undefined = undefined; - #selectedDate!: Date; + #selectedDate: Date | undefined; + #valueAsDate: Date | undefined; #valueFormatter = this.$toValueFormatter(); public static override styles = [ @@ -86,15 +96,13 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM ) as string; this.locale = newLocale; - this.#valueFormatter = this.$toValueFormatter(); - if (this.value) { - this._valueText = this.#valueFormatter.format(toResolvedDate(this.value)); - } + this.#valueFormatter = this.$toValueFormatter(); + this.#updateValues(this.value); } - if (changedProperties.has('value') && this.value) { - this._valueText = this.#valueFormatter.format(toResolvedDate(this.value)); + if (changedProperties.has('value')) { + this.#updateValues(this.value); } if (!this._rendered && this._open) { @@ -141,11 +149,15 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM }`; } - public closePicker() { + public closePicker(): void { this._open = false; } - public showPicker() { + public reset(): void { + this.#onResetClick(); + } + + public showPicker(): void { this._open = true; } @@ -189,7 +201,7 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM protected override renderTrailingIcon(): TemplateResult { return html` @@ -206,8 +218,9 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM }); } - #onClearClick() { + #onResetClick() { this.#isClearAction = true; + this.#selectedDate = this.#valueAsDate = undefined; this.value = this._valueText = ''; } @@ -238,8 +251,7 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM this.#selectedDate = valueAsDate; if (!isKeypress || (key === keyEnter || key === keySpace)) { - this.value = this.#valueFormatter.format(this.#selectedDate); - + this.value = toDateString(this.#selectedDate); isKeypress && (await this.$inputSurface)?.close(); } } else { @@ -265,7 +277,17 @@ export class DatePickerInput extends ElementMixin(DatePickerMixin(DatePickerMinM this.#focusElement?.focus(); } + + #updateValues(value: string): void { + if (value) { + const valueDate = new Date(value); + + this.#selectedDate = this.#valueAsDate = valueDate; + this._valueText = this.#valueFormatter.format(valueDate); + } else { + this.#onResetClick(); + } + } } // FIXME: No focus trap in input surface or close input surface when focus is outside -// FIXME: Support valueAsDate:null and valueAsNumber:NaN just like native input[type=date] diff --git a/src/date-picker/date-picker.ts b/src/date-picker/date-picker.ts index 65c0576a1..2a733abeb 100644 --- a/src/date-picker/date-picker.ts +++ b/src/date-picker/date-picker.ts @@ -34,11 +34,11 @@ import { datePickerStyling } from './stylings.js'; import type { DatePickerChangedProperties } from './typings.js'; export class DatePicker extends DatePickerMixin(DatePickerMinMaxMixin(RootElement)) implements DatePickerProperties { - public override get valueAsDate(): Date { + public get valueAsDate(): Date { return this.#valueAsDate; } - public override get valueAsNumber(): number { + public get valueAsNumber(): number { return +this.#valueAsDate; } diff --git a/src/mixins/date-picker-mixin.ts b/src/mixins/date-picker-mixin.ts index b46068123..e6090c5cf 100644 --- a/src/mixins/date-picker-mixin.ts +++ b/src/mixins/date-picker-mixin.ts @@ -40,10 +40,6 @@ export const DatePickerMixin = ( */ @property() public value = toDateString(toResolvedDate()); - public valueAsDate!: Date; - - public valueAsNumber!: number; - @property() public weekLabel = 'Wk'; @property({ reflect: true, converter: { toAttribute: nullishAttributeConverter } }) public weekNumberType: WeekNumberType = 'first-4-day-week'; diff --git a/src/mixins/typings.ts b/src/mixins/typings.ts index 3eb7448e8..6d006a5f4 100644 --- a/src/mixins/typings.ts +++ b/src/mixins/typings.ts @@ -20,8 +20,6 @@ export interface DatePickerMixinProperties { showWeekNumber: boolean; startView: StartView; value?: string | null; - valueAsDate: Date; - valueAsNumber: number; weekLabel: string; weekNumberType: WeekNumberType; yearDropdownLabel: string; diff --git a/src/typings.ts b/src/typings.ts index c989ad988..7c6890cff 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -6,10 +6,6 @@ import type { DatePicker } from './date-picker/date-picker.js'; import type { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp, keyEnd, keyEnter, keyHome, keyPageDown, keyPageUp, keySpace, keyTab } from './key-values.js'; import type { DatePickerMinMaxProperties, DatePickerMixinProperties, ElementMixinProperties } from './mixins/typings.js'; -export type StartView = StartViewTuple[number]; - -export type StartViewTuple = typeof startViews; - export type ChangedProperties> = Map; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -20,6 +16,25 @@ export interface CustomEventAction { type: T; } +export interface CustomEventDetail { + ['date-updated']: CustomEventAction<'date-updated', CustomEventDetailDateUpdated>; + ['first-updated']: CustomEventAction<'first-updated', CustomEventDetailFirstUpdated>; + ['year-updated']: CustomEventAction<'year-updated', CustomEventDetailYearUpdated>; +} + +interface CustomEventDetailDateUpdated extends KeyEvent, DatePickerValues {} + +interface CustomEventDetailFirstUpdated extends DatePickerValues { + focusableElements: HTMLElement[]; +} + +/** + * NOTE: No `KeyEvent` is needed as native `button` element will dispatch `click` event on keypress. + */ +interface CustomEventDetailYearUpdated { + year: number; +} + export interface DatePickerProperties extends DatePickerMinMaxProperties, DatePickerMixinProperties, @@ -40,26 +55,18 @@ export interface Formatters extends Pick { export type InferredFromSet = SetType extends Set ? T : never; -export type LitConstructor = Constructor; - -export interface CustomEventDetail { - ['date-updated']: CustomEventAction<'date-updated', CustomEventDetailDateUpdated>; - ['first-updated']: CustomEventAction<'first-updated', CustomEventDetailFirstUpdated>; - ['year-updated']: CustomEventAction<'year-updated', CustomEventDetailYearUpdated>; +interface KeyEvent { + isKeypress: boolean; + key?: SupportedKey; } -interface CustomEventDetailDateUpdated extends KeyEvent, DatePickerValues {} +export type LitConstructor = Constructor; -interface CustomEventDetailFirstUpdated extends DatePickerValues { - focusableElements: HTMLElement[]; -} +export type OmitKey = Omit; -/** - * NOTE: No `KeyEvent` is needed as native `button` element will dispatch `click` event on keypress. - */ -interface CustomEventDetailYearUpdated { - year: number; -} +export type StartView = StartViewTuple[number]; + +export type StartViewTuple = typeof startViews; export type SupportedKey = | typeof keyArrowDown @@ -77,8 +84,3 @@ export type SupportedKey = export interface ValueUpdatedEvent extends KeyEvent { value: string; } - -interface KeyEvent { - isKeypress: boolean; - key?: SupportedKey; -} From 3239293f77dc931476966bf49cbbddc9abc3f826 Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 27 Nov 2021 23:02:59 +0800 Subject: [PATCH 148/276] chore: add nano-staged to fix all linting issues in staged changed --- .husky/pre-commit | 2 +- package-lock.json | 37 +++++++++++++++++++++++++++++++++++++ package.json | 5 +++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 3760c9709..5c3e2c931 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -2,5 +2,5 @@ . "$(dirname "$0")/_/husky.sh" npm run check && \ -npm run lint && \ +npm run nano-staged && \ npm run ts -- --noEmit diff --git a/package-lock.json b/package-lock.json index dbac57145..bdc4445d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,7 @@ "eslint-plugin-promise": "^5.1.1", "eslint-plugin-regexp": "^1.5.1", "eslint-plugin-simple-import-sort": "^7.0.0", + "nano-staged": "^0.3.1", "typescript": "^4.5.2" }, "engines": { @@ -4225,6 +4226,21 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nano-staged": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/nano-staged/-/nano-staged-0.3.1.tgz", + "integrity": "sha512-TpuVy6me3O5/rR1+NdBAoxpxbA+6lu47KVUDR03Xbt2U5YR0rkSm62VxegF49lE3bIEbMtyuDt6mIyGslPZ3Sw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0" + }, + "bin": { + "nano-staged": "bin/index.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/nanocolors": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", @@ -4538,6 +4554,12 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -9304,6 +9326,15 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "nano-staged": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/nano-staged/-/nano-staged-0.3.1.tgz", + "integrity": "sha512-TpuVy6me3O5/rR1+NdBAoxpxbA+6lu47KVUDR03Xbt2U5YR0rkSm62VxegF49lE3bIEbMtyuDt6mIyGslPZ3Sw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0" + } + }, "nanocolors": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", @@ -9543,6 +9574,12 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", diff --git a/package.json b/package.json index fbf129dda..e2c6a5f83 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,7 @@ "postinstall": "if [ \"$CI\" != 'true' ]; then npm dedupe; fi", "lint": "eslint src --ext .js,.ts", "lint:build": "npm run lint -- --config .build.eslintrc.json", + "nano-staged": "nano-staged", "prepare": "if [ \"$CI\" != 'true' ]; then npm x -- husky install; fi", "prepublishOnly": "npm run lint:build && npm run build", "serve": "npm x -y @web/dev-server@latest -- wds --node-resolve -dw -p 3000 -a index.html", @@ -132,6 +133,7 @@ "eslint-plugin-promise": "^5.1.1", "eslint-plugin-regexp": "^1.5.1", "eslint-plugin-simple-import-sort": "^7.0.0", + "nano-staged": "^0.3.1", "typescript": "^4.5.2" }, "engines": { @@ -140,5 +142,8 @@ }, "publishConfig": { "access": "public" + }, + "nano-staged": { + "*.ts": "npm run lint:build -- --fix" } } From 5a106236302eb29bde2067d0b82b4e128b58404b Mon Sep 17 00:00:00 2001 From: "Rong Sen Ng (motss)" Date: Sat, 27 Nov 2021 23:53:13 +0800 Subject: [PATCH 149/276] feat: close picker when focus is outside of DatePickerInput --- .../app-date-picker-input.test.ts | 105 ++++++++++++------ src/date-picker-input/date-picker-input.ts | 20 +++- src/date-picker-input/stylings.ts | 2 +- src/icons.ts | 2 +- 4 files changed, 85 insertions(+), 44 deletions(-) diff --git a/src/__tests__/date-picker-input/app-date-picker-input.test.ts b/src/__tests__/date-picker-input/app-date-picker-input.test.ts index ea833f14b..220bd5b9f 100644 --- a/src/__tests__/date-picker-input/app-date-picker-input.test.ts +++ b/src/__tests__/date-picker-input/app-date-picker-input.test.ts @@ -12,8 +12,8 @@ import type { AppDatePickerInput } from '../../date-picker-input/app-date-picker import { appDatePickerInputName, appDatePickerInputType } from '../../date-picker-input/constants'; import type { AppDatePickerInputSurface } from '../../date-picker-input-surface/app-date-picker-input-surface'; import { appDatePickerInputSurfaceName } from '../../date-picker-input-surface/constants'; -import { iconClose } from '../../icons'; -import { keyEnter, keyEscape, keySpace } from '../../key-values'; +import { iconClear } from '../../icons'; +import { keyEnter, keyEscape, keySpace, keyTab } from '../../key-values'; import type { AppMonthCalendar } from '../../month-calendar/app-month-calendar'; import { appMonthCalendarName } from '../../month-calendar/constants'; import { eventOnce } from '../test-utils/event-once'; @@ -84,7 +84,7 @@ describe(appDatePickerInputName, () => { expect(mdcFloatingLabel).text(label); expect(mdcTextFieldInput?.getAttribute('aria-labelledby')).equal('label'); expect(mdcTextFieldInput?.placeholder).equal(placeholder); - expect(mdcTextFieldIconTrailing).lightDom.equal(iconClose.strings.toString()); + expect(mdcTextFieldIconTrailing).lightDom.equal(iconClear.strings.toString()); } ); }); @@ -203,10 +203,11 @@ describe(appDatePickerInputName, () => { expect(datePicker).exist; }); - type CaseCloseDatePickerBy = [string, 'click' | 'keyup']; + type CaseCloseDatePickerBy = [string, 'click' | 'escape' | 'tab']; const casesCloseDatePicker: CaseCloseDatePickerBy[] = [ - ['clicking outside of input surface', 'click'], - ['pressing Escape key', 'keyup'], + ['clicking outside of date picker input', 'click'], + ['pressing Escape key', 'escape'], + ['tabbing outside of date picker input', 'tab'], ]; casesCloseDatePicker.forEach((a) => { const [, testTriggerType] = a; @@ -245,11 +246,26 @@ describe(appDatePickerInputName, () => { 'closed', CustomEvent>(el, 'closed'); - if (testTriggerType === 'click') { - document.body.click(); - } else { - await sendKeys({ down: keyEscape }); - await sendKeys({ up: keyEscape }); + switch (testTriggerType) { + case 'click': { + document.body.click(); + break; + } + case 'escape': { + await sendKeys({ down: keyEscape }); + await sendKeys({ up: keyEscape }); + break; + } + case 'tab': { + const yearDropdown = datePicker?.query(elementSelectors.yearDropdown); + + expect(yearDropdown).exist; + + yearDropdown?.focus(); + for (const _ of Array(4)) await sendKeys({ press: keyTab }); + break; + } + default: } await closedTask; @@ -306,38 +322,55 @@ describe(appDatePickerInputName, () => { ); }); - it('clears value', async () => { - const el = await fixture( - html`` - ); + type CaseResetsValue = [string, 'reset' | 'click']; + const casesResetsValue: CaseResetsValue[] = [ + ['calls .reset()', 'reset'], + ['clicks clear icon button', 'click'], + ]; + casesResetsValue.forEach((a) => { + const [_, testTriggerType] = a; - let mdcTextFieldInput = - el.query(elementSelectors.mdcTextFieldInput); - const mdcTextFieldIconTrailing = - el.query + + +
    Test
    +
    + @@ -95,6 +103,12 @@ export class DemoApp extends RootElement { dialog?.show(); } + async #showDialogBase() { + const dialog = await this.dialogBase; + + dialog?.show(); + } + #dateUpdated({ detail, currentTarget, diff --git a/src/__tests__/date-picker-dialog/app-date-picker-dialog.test.ts b/src/__tests__/date-picker-dialog/app-date-picker-dialog.test.ts index 29abb941a..f1f49313f 100644 --- a/src/__tests__/date-picker-dialog/app-date-picker-dialog.test.ts +++ b/src/__tests__/date-picker-dialog/app-date-picker-dialog.test.ts @@ -54,8 +54,8 @@ describe(appDatePickerDialogName, () => { }); const datePickerDialogDialog = - el.querySelector(elementSelectors.datePickerDialogDialog); - const datePicker = el.querySelector(elementSelectors.datePicker); + el.query(elementSelectors.datePickerDialogDialog); + const datePicker = el.query(elementSelectors.datePicker); await datePicker?.updateComplete; await datePickerDialogDialog?.updateComplete; @@ -66,9 +66,9 @@ describe(appDatePickerDialogName, () => { expect(el.valueAsDate).deep.equal(new Date(value)); expect(el.valueAsNumber).equal(+new Date(value)); - const dialogActionReset = el.querySelector(elementSelectors.dialogActionReset); - const dialogActionCancel = el.querySelector(elementSelectors.dialogActionCancel); - const dialogActionSet = el.querySelector(elementSelectors.dialogActionSet); + const dialogActionReset = el.query(elementSelectors.dialogActionReset); + const dialogActionCancel = el.query(elementSelectors.dialogActionCancel); + const dialogActionSet = el.query(elementSelectors.dialogActionSet); expect(dialogActionReset).exist; expect(dialogActionCancel).exist; @@ -87,21 +87,22 @@ describe(appDatePickerDialogName, () => { >(el, 'opened'); const datePickerDialogDialog = - el.querySelector(elementSelectors.datePickerDialogDialog); - let datePicker = el.querySelector(elementSelectors.datePicker); + el.query(elementSelectors.datePickerDialogDialog); + let datePicker = datePickerDialogDialog?.query(elementSelectors.datePicker); expect(datePickerDialogDialog).exist; - expect(datePicker).exist; + expect(datePicker).not.exist; expect(datePickerDialogDialog?.hasAttribute('open')).false; el.show(); const opened = await openedTask; + await datePicker?.updateComplete; + await datePickerDialogDialog?.updateComplete; await el.updateComplete; - expect(opened).not.undefined; - - datePicker = el.querySelector(elementSelectors.datePicker); + datePicker = el.query(elementSelectors.datePicker); + expect(opened).not.undefined; expect(datePickerDialogDialog?.hasAttribute('open')).true; const closedTask = eventOnce< @@ -112,12 +113,13 @@ describe(appDatePickerDialogName, () => { el.hide(); const closed = await closedTask; + await datePicker?.updateComplete; + await datePickerDialogDialog?.updateComplete; await el.updateComplete; - expect(closed).not.undefined; - - datePicker = el.querySelector(elementSelectors.datePicker); + datePicker = el.query(elementSelectors.datePicker); + expect(closed).not.undefined; expect(datePickerDialogDialog?.hasAttribute('open')).false; }); @@ -154,26 +156,39 @@ describe(appDatePickerDialogName, () => { CustomEvent >(el, 'opened'); - const datePickerDialogDialog = - el.querySelector(elementSelectors.datePickerDialogDialog); - const datePicker = - el.querySelector(elementSelectors.datePicker); - const monthCalendar = + let datePickerDialogDialog = + el.query(elementSelectors.datePickerDialogDialog); + let datePicker = + datePickerDialogDialog?.query(elementSelectors.datePicker); + let monthCalendar = datePicker?.query(elementSelectors.monthCalendar); - const dialogActionReset = - el.querySelector
    -
    +
  • m%!%d}*W2lpEBp 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 ASO5S3 diff --git a/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-chrome.png b/src/tests/snapshots/app-datepicker-dialog/initial-render-calendar-view-chrome.png deleted file mode 100644 index ff4c185cbf9c695b407c22acb9d9c37b655eaafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26106 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 YKbLdPf7O$dFaQ7m07*qoM6N<$f-d&L)&Kwi diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-0-MicrosoftEdge.png b/src/tests/snapshots/app-datepicker-dialog/properties-0-MicrosoftEdge.png deleted file mode 100644 index dd534cb393cd2550d2c6fbadb80f87470a2c9f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19471 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 diff --git a/src/tests/snapshots/app-datepicker-dialog/properties-0-Safari.png b/src/tests/snapshots/app-datepicker-dialog/properties-0-Safari.png deleted file mode 100644 index 0e4416eb3864a2c3429d1ac1557547a8ab7c2f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47621 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