From 88bea0ae7d761d588ca00795ba40d6d0807abf55 Mon Sep 17 00:00:00 2001 From: Dermot Duffy Date: Sun, 3 Mar 2024 15:40:20 -0800 Subject: [PATCH] Allow camera engines to signal events to the card. --- .vscode/extensions.json | 2 +- .vscode/settings.json | 4 +- README.md | 162 +- images/{scan-mode.gif => triggered.gif} | Bin package.json | 18 +- src/camera-manager/browse-media/camera.ts | 30 + .../browse-media/engine-browse-media.ts | 42 +- src/camera-manager/camera.ts | 71 +- src/camera-manager/engine-factory.ts | 8 +- src/camera-manager/engine.ts | 14 +- src/camera-manager/frigate/camera.ts | 308 + src/camera-manager/frigate/engine-frigate.ts | 243 +- src/camera-manager/frigate/types.ts | 33 + src/camera-manager/generic/engine-generic.ts | 42 +- src/camera-manager/manager.ts | 143 +- .../motioneye/engine-motioneye.ts | 26 +- src/camera-manager/store.ts | 5 +- src/camera-manager/types.ts | 16 + src/camera-manager/utils.ts | 2 +- src/card-controller/card-element-manager.ts | 11 + src/card-controller/conditions-manager.ts | 4 + src/card-controller/hass-manager.ts | 21 +- src/card-controller/triggers-manager.ts | 166 +- src/card-controller/types.ts | 52 +- src/card-controller/view-manager.ts | 1 - src/card.ts | 9 +- src/components-lib/timeline-source.ts | 4 + src/components/live/go2rtc/video-rtc.d.ts | 2 +- src/components/live/live-go2rtc.ts | 6 +- src/components/surround.ts | 2 +- src/components/viewer.ts | 4 +- src/config-mgmt.ts | 55 +- src/config/types.ts | 56 +- src/const.ts | 34 +- src/editor.ts | 209 +- src/localize/languages/en.json | 17 +- src/localize/languages/it.json | 13 +- src/localize/languages/pt-BR.json | 13 +- src/localize/languages/pt-PT.json | 13 +- src/utils/ha/index.ts | 70 +- src/utils/ha/types.ts | 21 + src/utils/initializer/initializer.ts | 2 +- src/utils/media-to-view.ts | 11 +- .../browse-media/camera.test.ts | 37 + tests/camera-manager/camera.test.ts | 169 +- tests/camera-manager/frigate/camera.test.ts | 965 +++ .../generic/engine-generic.test.ts | 2 +- tests/camera-manager/manager.test.ts | 1229 ++++ tests/camera-manager/store.test.ts | 31 +- tests/camera-manager/utils.test.ts | 13 + .../card-element-manager.test.ts | 4 + .../conditions-manager.test.ts | 8 + tests/card-controller/hass-manager.test.ts | 43 - .../card-controller/triggers-manager.test.ts | 429 +- tests/config-mgmt.test.ts | 140 +- tests/config/types.test.ts | 14 +- tests/test-utils.ts | 46 +- tests/utils/ha/index.test.ts | 106 +- tests/utils/media-to-view.test.ts | 70 + vite.config.ts | 15 +- yarn.lock | 6407 +++++++++-------- 61 files changed, 7480 insertions(+), 4213 deletions(-) rename images/{scan-mode.gif => triggered.gif} (100%) create mode 100644 src/camera-manager/browse-media/camera.ts create mode 100644 src/camera-manager/frigate/camera.ts create mode 100644 src/utils/ha/types.ts create mode 100644 tests/camera-manager/browse-media/camera.test.ts create mode 100644 tests/camera-manager/frigate/camera.test.ts create mode 100644 tests/camera-manager/manager.test.ts diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 317f0be3..89715101 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -9,6 +9,6 @@ "davidanson.vscode-markdownlint", "redhat.vscode-yaml", "lokalise.i18n-ally", - "zixuanchen.vitest-explorer" + "vitest.explorer" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 1814a117..a4a10938 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,5 @@ "i18n-ally.sortKeys": true, "i18n-ally.keepFulfilled": true, "i18n-ally.editor.preferEditor": true, - "i18n-ally.translate.saveAsCandidates": true, - "vitest.commandLine": "npx vitest --root .", - "diffEditor.experimental.useVersion2": true + "i18n-ally.translate.saveAsCandidates": true } diff --git a/README.md b/README.md index 3400d854..bb8359d3 100644 --- a/README.md +++ b/README.md @@ -167,11 +167,11 @@ See the [fully expanded cameras configuration example](#config-expanded-cameras) ##### Engine Capabilities -|Engine|Live|Supports clips|Supports Snapshots|Supports Recordings|Supports Timeline|Supports PTZ out of the box|Supports manually configured PTZ|Favorite events|Favorite recordings| -| - | - | - | - | - | - | - | - | - | - | -|`frigate`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | -|`generic`| :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | -|`motioneye`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | +|Engine|Live|Supports clips|Supports Snapshots|Supports Recordings|Supports Timeline|Supports PTZ out of the box|Supports manually configured PTZ|Favorite events|Favorite recordings|Detect new events|Detect new snapshots|Detect new clips| +| - | - | - | - | - | - | - | - | - | - | - | - | - | +|`frigate`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +|`generic`| :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | +|`motioneye`| :white_check_mark: | :white_check_mark: | :white_check_mark: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :white_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | ##### Live providers supported per Engine @@ -320,7 +320,7 @@ cameras: #### Camera Trigger Configuration -The `triggers` block configures what triggers a camera. Triggering can be used to either reset to the default view / update the card, or active the camera in [scan mode](#scan-mode). +The `triggers` block configures what triggers a camera. Triggering can be used to activate an action (e.g. view a camera in live, reset the card to the default view). See [`view.triggers`](#view.triggers) to control what happens when a camera is triggered. ```yaml cameras: @@ -329,8 +329,9 @@ cameras: | Option | Default | Overridable | Description | | - | - | - | - | +| `events` | `[events, clips, snapshots]` | :white_check_mark: | Whether to trigger the camera when `events` occur (whether or not media is available) or whenever updated `clips` or `snapshots` are detected. Detection support varies by camera engine, see [engine capabilities](#engines). | | `motion` | `false` | :white_check_mark: | Whether to not to trigger the camera by automatically detecting and using the motion `binary_sensor` for this camera. This autodetection only works for Frigate cameras, and only when the motion `binary_sensor` entity has been enabled in Home Assistant.| -| `occupancy` | `true` | :white_check_mark: | Whether to not to trigger the camera by automatically detecting and using the occupancy `binary_sensor` for this camera and its configured zones and labels. This autodetection only works for Frigate cameras, and only when the occupancy `binary_sensor` entity has been enabled in Home Assistant. If this camera has configured zones, only occupancy sensors for those zones are used -- if the overall _camera_ occupancy sensor is also required, it can be manually added to `entities`. If this camera has configured labels, only occupancy sensors for those labels are used.| +| `occupancy` | `false` | :white_check_mark: | Whether to not to trigger the camera by automatically detecting and using the occupancy `binary_sensor` for this camera and its configured zones and labels. This autodetection only works for Frigate cameras, and only when the occupancy `binary_sensor` entity has been enabled in Home Assistant. If this camera has configured zones, only occupancy sensors for those zones are used -- if the overall _camera_ occupancy sensor is also required, it can be manually added to `entities`. If this camera has configured labels, only occupancy sensors for those labels are used. | | `entities` | | :white_check_mark: | Whether to not to trigger the camera when the state of any Home Assistant entity becomes active (i.e. state becomes `on` or `open`). This works for Frigate or non-Frigate cameras.| #### Camera Cast Configuration @@ -403,46 +404,49 @@ See the [fully expanded view configuration example](#config-expanded-view) for h | `dark_mode` | `off` | :white_check_mark: | Whether or not to turn dark mode `on`, `off` or `auto` to automatically turn on if the card `interaction_seconds` has expired (i.e. card has been left unattended for that period of time) or if dark mode is enabled in the HA profile theme setting. Dark mode dims the brightness by `25%`.| | `interaction_seconds` | `300` | :white_check_mark: | After a mouse/touch interaction with the Frigate card, it will be considered "interacted with" until this number of seconds elapses without further interaction. May be used in conditions with the `interaction` parameter of a [Frigate card condition](#frigate-card-condition) or with `reset_after_interaction` (below). `0` means no interactions are reported / acted upon. | | `reset_after_interaction` | `true` | :white_check_mark: | If `true` the card will reset to the default configured view (i.e. 'screensaver' functionality) after `interaction_seconds` has elapsed after user interaction. | -| `update_seconds` | `0` | :white_check_mark: | A number of seconds after which to automatically update/refresh the default view. See [card updates](#card-updates) below for behavior and usecases. If the default view occurs sooner (e.g. manually) the timer will start over. `0` disables this functionality.| -| `update_force` | `false` | :white_check_mark: | Whether automated card updates/refreshes should ignore user interaction. See [card updates](#card-updates) below for behavior and usecases.| -| `update_entities` | | :white_check_mark: | **YAML only**: A card-wide list of entities that should cause the view to reset to the default (if the entity only pertains to a particular camera use `triggers` for the selected camera instead, see [Trigger Configuration](#camera-triggers-configuration)). See [card updates](#card-updates) below for behavior and usecases.| +| `update_seconds` | `0` | :white_check_mark: | A number of seconds after which to automatically update/refresh the default view. If the default view occurs sooner (e.g. manually) the timer will start over. `0` disables this functionality.| +| `update_force` | `false` | :white_check_mark: | Whether automated card updates should ignore user interaction. | +| `update_entities` | | :white_check_mark: | **YAML only**: A card-wide list of entities that should cause the view to reset to the default (if the entity only pertains to a particular camera use `triggers` for the selected camera instead, see [Trigger Configuration](#camera-triggers-configuration)). | | `update_cycle_camera` | `false` | :white_check_mark: | When set to `true` the selected camera is cycled on each default view change. | | `render_entities` | | :white_check_mark: | **YAML only**: A list of entity ids that should cause the card to re-render 'in-place'. The view/camera is not changed. `update_*` flags do not pertain/relate to the behavior of this flag. This should **very** rarely be needed, but could be useful if the card is both setting and changing HA state of the same object as could be the case for some complex `card_mod` scenarios ([example](https://github.com/dermotduffy/frigate-hass-card/issues/343)). | -| `scan` | | :white_check_mark: | Configuration for [scan mode](#scan-mode). | +| `triggers` | | :white_check_mark: | How to react when a camera is [triggered](#view.triggers). | | `actions` | | :white_check_mark: | Actions to use for all views, individual actions may be overriden by view-specific actions. See [actions](#actions) below.| - + -#### View: Scan Mode configuration +#### View: Triggers configuration All configuration is under: ```yaml view: - scan: + triggers: ``` -Scan mode allows the card to automatically "follow the action". In this mode the card will automatically execute an action (defined by `trigger_action`) when a camera is 'triggered', by default selecting that camera in the `live` view . The trigger entities considered are defined by your camera configuration (see `triggers` parameters). An untrigger is defined as the state for all the configured entities returning to inactive (i.e. not `on` or `open`), with an optional number of seconds to wait prior to the untriggering (see `untrigger_seconds`). +The `view.triggers` block controls how the card reacts when a camera is triggered (note that _what_ triggers the camera is controlled by the `triggers` block within the config for a given camera). This can be used for a variety of purposes, such as allowing the card to automatically "follow the action" (i.e. change to `live` for a camera that triggers). -When the camera untriggers, a different action (defined by `untrigger_action`) is automatically executed, by default returning the card to the default view and camera. +When a camera untriggers (e.g. an entity state returning to something other than `on` or `open`), an action can also be taken, with an optional number of seconds to wait prior to the acting (see `untrigger_seconds`). -By default, triggering is only allowed when there is no ongoing human interaction with the card. This behavior can be controlled by the `interaction_mode` parameter. +By default, triggering is only allowed when there is no ongoing human +interaction with the card. This behavior can be controlled by the +`interaction_mode` parameter. -Scan mode tracks Home Assistant state *changes* -- when the card is first started, it takes an active change in state to trigger (i.e. an already occupied room will not trigger it, but a newly occupied room will). +Triggers based on Home Assistant entities require state *changes* -- when the card is first started, it takes an active change in state to trigger (i.e. an already occupied room will not trigger, but a newly occupied room will). | Option | Default | Overridable | Description | | - | - | - | - | -| `enabled` | `false` | :white_check_mark: | Whether to enable scan mode. | | `filter_selected_camera` | `false` | :white_check_mark: | If set to `true` will only trigger on the currently selected camera.| -| `show_trigger_status` | `true` | :white_check_mark: | Whether or not the `live` view should show a visual indication that it is triggered (a pulsing border around the camera edge). | -| `untrigger_seconds` | `0` | :white_check_mark: | The number of seconds to wait after all entities are inactive before untriggering. | -| `actions` | | :white_check_mark: | The actions to take when scan mode triggers (see below). | +| `show_trigger_status` | `false` | :white_check_mark: | Whether or not the `live` view should show a visual indication that it is triggered (a pulsing border around the camera edge). | +| `untrigger_seconds` | `0` | :white_check_mark: | The number of seconds to wait after a camera untriggers before considering the card untriggered and taking the `untrigger` action. | +| `actions` | | :white_check_mark: | The actions to take when a camera is triggered (see below). | -#### View: Scan Mode Actions configuration +#### View: Triggers Action configuration -| `trigger` | `live` | :white_check_mark | When `live` the trigger will select the triggered camera in `live` view, when `none` will take no action. | -| `untrigger` | `default` | :white_check_mark | When `default` the untrigger will return to the default view and camera, when `none` will take no action. | -| `interaction_mode` | `inactive` | :white_check_mark: | Whether actions should be taken when the card is being interacted with. If `all`, actions will always be taken regardless. If `inactive` actions will only be taken if the card has *not* had human interaction recently (as defined by `view.interaction_seconds`). If `active` actions will only be taken if the card *has* had human interaction recently. This does not stop triggering itself (i.e. border will still pulse if `show_trigger_status` is true) but rather just prevents the actions being performed.| +| Option | Default | Overridable | Description | +| - | - | - | - | +| `trigger` | `default` | :white_check_mark | If set to `default` the default view of the card will be reloaded. If set to `live` the triggered camera will be selected in `live` view. If set to `media` the appropriate media view (e.g. `clip` or `snapshot`) will be chosen to match a newly available media item (please note that only some camera engines support new media detection, e.g. `frigate`, see [engines](#engines)). If set to `none` no action is taken. | +| `untrigger` | `none` | :white_check_mark | If set to `default` the the default view of the card will be reloaded. If set to `none` no action will be taken. | +| `interaction_mode` | `inactive` | :white_check_mark: | Whether actions should be taken when the card is being interacted with. If `all`, actions will always left be taken regardless. If `inactive` actions will only be taken if the card has *not* had human interaction recently (as defined by `view.interaction_seconds`). If `active` actions will only be taken if the card *has* had human interaction recently. This does not stop triggering itself (i.e. border will still pulse if `show_trigger_status` is true) but rather just prevents the actions being performed. | ### Menu Options @@ -1293,7 +1297,7 @@ All variables listed are under a `conditions:` section. | `media_loaded` | If `true` the condition is satisfied if there is media load**ED** (not load**ING**) in the card (e.g. a clip, snapshot or live view). This may be used to hide controls during media loading or when a message (not media) is being displayed. Note that if `true` this condition will never be satisfied for views that do not themselves load media directly (e.g. gallery).| | `media_query` | Any valid [media query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries) string. Media queries must start and end with parentheses. This may be used to alter card configuration based on device/media properties (e.g. viewport width, orientation). Please note that `width` and `height` refer to the entire viewport not just the card. See the [media query example](#media-query-example).| | `interacted` | If `true` the condition is satisfied if the card has had human interaction within `view.interaction_seconds` elapsed seconds. If `false` the condition is satisfied if the card has **NOT** had human interaction in that time. | -| `triggered` | A list of camera IDs which, if triggered in [scan mode](#scan-mode), satisfy the condition.| +| `triggered` | A list of camera IDs which, if [triggered](#camera-triggers-configuration), satisfy the condition.| | `microphone` | A object to include microphone state as part of the condition evaluation. See below.| See the [example below](#frigate-card-conditional-example) for a real-world example of how these conditions can be used. @@ -1619,11 +1623,11 @@ Cast media from the card to a local player. Cast media -### Scan Mode +### Triggered! Automatically choose the camera with the action! -Cast media +Triggered! ### Thumbnail Drawers @@ -1935,15 +1939,14 @@ view: render_entities: - switch.render_card dark_mode: 'off' - scan: - enabled: false - show_trigger_status: true - filter_selected_camera: false + triggers: + show_trigger_status: false + filter_selected_camera: true untrigger_seconds: 0 actions: - interaction_mode: 'inactive' as const, - trigger: 'live' as const, - untrigger: 'default' as const, + interaction_mode: inactive + trigger: default + untrigger: none actions: entity: light.office_main_lights tap_action: @@ -3580,8 +3583,6 @@ cameras: ``` - - ### Using `card-mod` to style the card This card allows the use of @@ -3670,28 +3671,33 @@ cameras: ``` -### Using Scan Mode +### Taking action when a camera is triggered! -Have your card follow the action with Scan Mode. +Have your card follow the action when a camera is triggered.
- Expand: Using scan mode + Expand: Changing to `live` when a camera is triggered ```yaml type: custom:frigate-card cameras: + # This is a Frigate camera which will automatically be triggered when events occur. - camera_entity: camera.back_yard - # This camera will automatically trigger by occupancy. + # This is a Frigate camera which will only be triggered by motion entity changes or a door being opened. - camera_entity: camera.front_door triggers: occupancy: false motion: true entities: - binary_sensor.door_opened + events: [] view: - scan: - enabled: true - trigger_show_border: true + triggers: + show_trigger_status: true + filter_selected_camera: false + actions: + trigger: live + untrigger: default ```
@@ -3720,9 +3726,6 @@ elements: conditions: triggered: - camera.office -view: - scan: - enabled: true ``` @@ -4146,72 +4149,9 @@ automations: frigate_card_action: live_substream_off conditions: interaction: true -view: - scan: - enabled: true ``` - - -## Card Refreshes - -Four sets of flags govern when the card will automatically refresh in the -absence of user interaction. - -The following table describes the behavior these flags have. - -### Card Update Truth Table - -Note that no (other) automated updates are permitted when [scan mode](#scan-mode) is being triggered. - -In the below "Trigger Entities" refers to the combination of `view.update_entities` and the `triggers.entities` for the currently selected camera (which in turn will also include the occupancy and motion sensor entities for Frigate cameras if `triggers.occupancy` and `triggers.motion` options are enabled, see [Trigger Configuration](#camera-triggers-configuration)). - -| `view . update_seconds` | `view . interaction_seconds` | `view . update_force` | Trigger Entities | Behavior | -| :-: | :-: | :-: | :-: | - | -| `0` | `0` | *(Any value)* | Unset | Card will not automatically refresh. | -| `0` | `0` | *(Any value)* | *(Any entity)* | Card will reload default view & camera when entity state changes. | -| `0` | `X` seconds | *(Any value)* | Unset | Card will reload default view & camera `X` seconds after user interaction stops. | -| `0` | `X` seconds | `false` | *(Any entity)* | Card will reload default view & camera `X` seconds after user interaction stops, or when entity state changes (as long as user interaction has not occurred in the last `X` seconds). | -| `0` | `X` seconds | `true` | *(Any entity)* | Card will reload default view & camera `X` seconds after user interaction stops or when entity state changes. | -| `Y` seconds | `0` | *(Any value)* | Unset | Card will reload default view & camera every `Y` seconds. | -| `Y` seconds | `0` | *(Any value)* | *(Any entity)* | Card will reload default view & camera every `Y` seconds, or whenever entity state changes. | -| `Y` seconds | `X` seconds | `false` | Unset | Card will reload default view & camera `X` seconds after user interaction stops, and every `Y` seconds (as long as there hasn't been user interaction in the last `X` seconds). | -| `Y` seconds | `X` seconds | `false` | *(Any entity)* | Card will reload default view & camera `X` seconds after user interaction stops, and every `Y` seconds or whenever entity state changes (in both cases -- as long as there hasn't been user interaction in the last `X` seconds). | -| `Y` seconds | `X` seconds | `true` | Unset | Card will reload default view & camera `X` seconds after user interaction stops, and every `Y` seconds. | -| `Y` seconds | `X` seconds | `true` | *(Any entity)* | Card will reload default view & camera `X` seconds after user interaction stops, and every `Y` seconds or whenever entity state changes. | - -### Usecases For Automated Refreshes - - * Refreshing the `live` thumbnails every 30 seconds. -```yaml -view: - default: live - update_seconds: 30 -``` - * Using `clip` or `snapshot` as the default view (for the most recent clip or - snapshot respectively) and having the card automatically refresh (to fetch a - newer clip/snapshot) on motion. -```yaml -cameras: - - entity: camera.office - triggers: - motion: true -``` - * Cycle the live view of the camera every 60 seconds -```yaml -view: - update_cycle_camera: true - update_seconds: 60 -``` - * Return to the most recent clip of the default camera 30 seconds after user - interaction with the card stops. -```yaml -view: - default: clip - interaction_seconds: 30 -``` - ### Passing the card actions from the URL diff --git a/images/scan-mode.gif b/images/triggered.gif similarity index 100% rename from images/scan-mode.gif rename to images/triggered.gif diff --git a/package.json b/package.json index 016203f5..cb7ddbf8 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@dermotduffy/panzoom": "^4.5.1", "@egjs/hammerjs": "^2.0.17", "@graphiteds/core": "^1.9.11", - "@lit-labs/scoped-registry-mixin": "^1.0.1", + "@lit-labs/scoped-registry-mixin": "^1.0.3", "@lit-labs/task": "^1.1.3", "@types/bluebird": "^3.5.36", "component-emitter": "^1.3.0", @@ -31,7 +31,7 @@ "embla-carousel-wheel-gestures": "8.0.0-rc04", "home-assistant-js-websocket": "^8.0.0", "keycharm": "^0.4.0", - "lit": "^2.3.1", + "lit": "^3.1.2", "lodash-es": "^4.17.21", "masonry-layout": "^4.2.2", "moment": "^2.29.4", @@ -40,8 +40,8 @@ "screenfull": "^6.0.2", "side-drawer": "^3.1.0", "uuid": "^8.3.2", - "vis-data": "^7.1.4", - "vis-timeline": "^7.7.0", + "vis-data": "^7.1.9", + "vis-timeline": "^7.7.3", "vis-util": "^5.0.2", "web-dialog": "^0.0.11", "xss": "^1.0.14", @@ -61,7 +61,7 @@ "@types/masonry-layout": "^4.2.5", "@typescript-eslint/eslint-plugin": "^5.36.2", "@typescript-eslint/parser": "^5.36.2", - "@vitest/coverage-istanbul": "^0.34.3", + "@vitest/coverage-istanbul": "^1.3.1", "eslint": "^8.23.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.5.0", @@ -79,8 +79,8 @@ "sass": "^1.54.9", "ts-prune": "^0.10.3", "typescript": "^4.9.5", - "vitest": "^0.34.3", - "vitest-mock-extended": "^1.2.1" + "vitest": "^1.3.1", + "vitest-mock-extended": "^1.3.1" }, "scripts": { "start": "rollup -c --watch", @@ -92,7 +92,7 @@ "coverage": "vitest run --coverage" }, "volta": { - "node": "18.14.0", - "yarn": "3.4.1" + "node": "18.17.1", + "yarn": "4.1.0" } } diff --git a/src/camera-manager/browse-media/camera.ts b/src/camera-manager/browse-media/camera.ts new file mode 100644 index 00000000..030707d4 --- /dev/null +++ b/src/camera-manager/browse-media/camera.ts @@ -0,0 +1,30 @@ +import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; +import { localize } from '../../localize/localize'; +import { EntityRegistryManager } from '../../utils/ha/entity-registry'; +import { Entity } from '../../utils/ha/entity-registry/types'; +import { Camera } from '../camera'; +import { CameraInitializationError } from '../error'; + +export class BrowseMediaCamera extends Camera { + protected _entity: Entity | null = null; + + public async initialize( + hass: HomeAssistant, + entityRegistryManager: EntityRegistryManager, + ): Promise { + const config = this.getConfig(); + const entity = config.camera_entity + ? await entityRegistryManager.getEntity(hass, config.camera_entity) + : null; + + if (!entity || !config.camera_entity) { + throw new CameraInitializationError(localize('error.no_camera_entity'), config); + } + this._entity = entity; + return this; + } + + public getEntity(): Entity | null { + return this._entity; + } +} diff --git a/src/camera-manager/browse-media/engine-browse-media.ts b/src/camera-manager/browse-media/engine-browse-media.ts index 22c41b9b..74a4d9e1 100644 --- a/src/camera-manager/browse-media/engine-browse-media.ts +++ b/src/camera-manager/browse-media/engine-browse-media.ts @@ -1,6 +1,5 @@ import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; import { CameraConfig } from '../../config/types'; -import { localize } from '../../localize/localize'; import { ExtendedHomeAssistant } from '../../types'; import { canonicalizeHAURL } from '../../utils/ha'; import { BrowseMediaManager } from '../../utils/ha/browse-media/browse-media-manager'; @@ -11,24 +10,24 @@ import { RichBrowseMedia, } from '../../utils/ha/browse-media/types'; import { EntityRegistryManager } from '../../utils/ha/entity-registry'; -import { Entity } from '../../utils/ha/entity-registry/types'; import { ResolvedMediaCache, resolveMedia } from '../../utils/ha/resolved-media'; import { ViewMedia } from '../../view/media'; import { RequestCache } from '../cache'; import { Camera } from '../camera'; import { CameraManagerEngine } from '../engine'; -import { CameraInitializationError } from '../error'; import { GenericCameraManagerEngine } from '../generic/engine-generic'; import { rangesOverlap } from '../range'; import { CameraManagerReadOnlyConfigStore } from '../store'; import { CameraEndpoint, + CameraEventCallback, CameraManagerMediaCapabilities, DataQuery, EventQuery, PartialEventQuery, QueryType, } from '../types'; +import { BrowseMediaCamera } from './camera'; import { BrowseMediaViewMediaFactory } from './media'; import { BrowseMediaMetadata } from './types'; @@ -121,7 +120,6 @@ export class BrowseMediaCameraManagerEngine extends GenericCameraManagerEngine implements CameraManagerEngine { - protected _cameraEntities: Map = new Map(); protected _browseMediaManager: BrowseMediaManager; protected _resolvedMediaCache: ResolvedMediaCache; protected _requestCache: RequestCache; @@ -130,38 +128,32 @@ export class BrowseMediaCameraManagerEngine browseMediaManager: BrowseMediaManager, resolvedMediaCache: ResolvedMediaCache, requestCache: RequestCache, + eventCallback?: CameraEventCallback, ) { - super(); + super(eventCallback); this._browseMediaManager = browseMediaManager; this._resolvedMediaCache = resolvedMediaCache; this._requestCache = requestCache; } - public async initializeCamera( + public async createCamera( hass: HomeAssistant, entityRegistryManager: EntityRegistryManager, cameraConfig: CameraConfig, ): Promise { - const entity = cameraConfig.camera_entity - ? await entityRegistryManager.getEntity(hass, cameraConfig.camera_entity) - : null; - if (!entity || !cameraConfig.camera_entity) { - throw new CameraInitializationError( - localize('error.no_camera_entity'), - cameraConfig, - ); - } - this._cameraEntities.set(cameraConfig.camera_entity, entity); - - return new Camera(cameraConfig, this, { - canFavoriteEvents: false, - canFavoriteRecordings: false, - canSeek: false, - supportsClips: true, - supportsRecordings: false, - supportsSnapshots: true, - supportsTimeline: true, + const camera = new BrowseMediaCamera(cameraConfig, this, { + capabilities: { + canFavoriteEvents: false, + canFavoriteRecordings: false, + canSeek: false, + supportsClips: true, + supportsRecordings: false, + supportsSnapshots: true, + supportsTimeline: true, + }, + eventCallback: this._eventCallback, }); + return await camera.initialize(hass, entityRegistryManager); } public generateDefaultEventQuery( diff --git a/src/camera-manager/camera.ts b/src/camera-manager/camera.ts index dd6990ee..fd59026d 100644 --- a/src/camera-manager/camera.ts +++ b/src/camera-manager/camera.ts @@ -1,22 +1,81 @@ +import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; import { CameraConfig } from '../config/types'; import { localize } from '../localize/localize'; +import { allPromises } from '../utils/basic'; +import { + isTriggeredState, + parseStateChangeTrigger, + subscribeToTrigger, +} from '../utils/ha'; +import { EntityRegistryManager } from '../utils/ha/entity-registry'; import { CameraManagerEngine } from './engine'; import { CameraNoIDError } from './error'; -import { CameraManagerCameraCapabilities } from './types'; +import { CameraEventCallback, CameraManagerCameraCapabilities } from './types'; + +type DestroyCallback = () => Promise; export class Camera { protected _config: CameraConfig; protected _engine: CameraManagerEngine; - protected _capabilities: CameraManagerCameraCapabilities; + protected _capabilities?: CameraManagerCameraCapabilities; + protected _eventCallback?: CameraEventCallback; + protected _destroyCallbacks: DestroyCallback[] = []; constructor( config: CameraConfig, engine: CameraManagerEngine, - capabilities: CameraManagerCameraCapabilities, + options?: { + capabilities?: CameraManagerCameraCapabilities; + eventCallback?: CameraEventCallback; + }, ) { this._config = config; this._engine = engine; - this._capabilities = capabilities; + this._capabilities = options?.capabilities; + this._eventCallback = options?.eventCallback; + } + + protected async _convertStateChangeToCameraEvent(data: unknown): Promise { + const stateChange = parseStateChangeTrigger(data); + if (!stateChange) { + return; + } + + this._eventCallback?.({ + cameraID: this.getID(), + type: isTriggeredState(stateChange.to_state.state) ? 'new' : 'end', + }); + } + + protected async _subscribeToTriggerEntities(hass: HomeAssistant): Promise { + if (!this._config.triggers.entities.length) { + return; + } + + this._destroyCallbacks.push( + await subscribeToTrigger( + hass, + (data) => this._convertStateChangeToCameraEvent(data), + { + entityID: this._config.triggers.entities, + platform: 'state', + stateOnly: true, + }, + ), + ); + } + + async initialize( + hass: HomeAssistant, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _entityRegistryManager: EntityRegistryManager, + ): Promise { + await this._subscribeToTriggerEntities(hass); + return this; + } + + async destroy(): Promise { + await allPromises(this._destroyCallbacks, (cb) => cb()); } public getConfig(): CameraConfig { @@ -38,7 +97,7 @@ export class Camera { return this._engine; } - public getCapabilities(): CameraManagerCameraCapabilities { - return this._capabilities; + public getCapabilities(): CameraManagerCameraCapabilities | null { + return this._capabilities ?? null; } } diff --git a/src/camera-manager/engine-factory.ts b/src/camera-manager/engine-factory.ts index 38a694ca..397f390f 100644 --- a/src/camera-manager/engine-factory.ts +++ b/src/camera-manager/engine-factory.ts @@ -9,7 +9,7 @@ import { ResolvedMediaCache } from '../utils/ha/resolved-media'; import { MemoryRequestCache, RecordingSegmentsCache, RequestCache } from './cache'; import { CameraManagerEngine } from './engine'; import { CameraInitializationError } from './error'; -import { Engine } from './types'; +import { CameraEventCallback, Engine } from './types'; import { getCameraEntityFromConfig } from './utils'; export class CameraManagerEngineFactory { @@ -24,18 +24,19 @@ export class CameraManagerEngineFactory { this._resolvedMediaCache = resolvedMediaCache; } - public async createEngine(engine: Engine): Promise { + public async createEngine(engine: Engine, eventCallback?: CameraEventCallback): Promise { let cameraManagerEngine: CameraManagerEngine; switch (engine) { case Engine.Generic: const { GenericCameraManagerEngine } = await import('./generic/engine-generic'); - cameraManagerEngine = new GenericCameraManagerEngine(); + cameraManagerEngine = new GenericCameraManagerEngine(eventCallback); break; case Engine.Frigate: const { FrigateCameraManagerEngine } = await import('./frigate/engine-frigate'); cameraManagerEngine = new FrigateCameraManagerEngine( new RecordingSegmentsCache(), new RequestCache(), + eventCallback, ); break; case Engine.MotionEye: @@ -46,6 +47,7 @@ export class CameraManagerEngineFactory { new BrowseMediaManager(new MemoryRequestCache()), this._resolvedMediaCache, new RequestCache(), + eventCallback, ); } return cameraManagerEngine; diff --git a/src/camera-manager/engine.ts b/src/camera-manager/engine.ts index 8f013cbc..d9d09971 100644 --- a/src/camera-manager/engine.ts +++ b/src/camera-manager/engine.ts @@ -1,9 +1,5 @@ import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; -import { - CameraConfig, - PTZAction, - PTZPhase, -} from '../config/types'; +import { CameraConfig, PTZAction, PTZPhase } from '../config/types'; import { ExtendedHomeAssistant } from '../types'; import { EntityRegistryManager } from '../utils/ha/entity-registry'; import { ViewMedia } from '../view/media'; @@ -37,7 +33,7 @@ export const CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT = 10000; export interface CameraManagerEngine { getEngineType(): Engine; - initializeCamera( + createCamera( hass: HomeAssistant, entityRegistryManager: EntityRegistryManager, cameraConfig: CameraConfig, @@ -143,8 +139,8 @@ export interface CameraManagerEngine { cameraConfig: CameraConfig, action: PTZAction, options?: { - phase?: PTZPhase, - preset?: string, - } + phase?: PTZPhase; + preset?: string; + }, ): Promise; } diff --git a/src/camera-manager/frigate/camera.ts b/src/camera-manager/frigate/camera.ts new file mode 100644 index 00000000..35eb4a29 --- /dev/null +++ b/src/camera-manager/frigate/camera.ts @@ -0,0 +1,308 @@ +import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; +import uniq from 'lodash-es/uniq'; +import { CameraConfig } from '../../config/types'; +import { localize } from '../../localize/localize'; +import { errorToConsole } from '../../utils/basic'; +import { subscribeToTrigger } from '../../utils/ha'; +import { EntityRegistryManager } from '../../utils/ha/entity-registry'; +import { Entity } from '../../utils/ha/entity-registry/types'; +import { Camera } from '../camera'; +import { CameraInitializationError } from '../error'; +import { PTZCapabilities, PTZMovementType } from '../types'; +import { getCameraEntityFromConfig } from '../utils.js'; +import { getPTZInfo } from './requests'; +import { PTZInfo, frigateEventChangeTriggerResponseSchema } from './types'; + +const CAMERA_BIRDSEYE = 'birdseye' as const; + +export const isBirdseye = (cameraConfig: CameraConfig): boolean => { + return cameraConfig.frigate.camera_name === CAMERA_BIRDSEYE; +}; + +export class FrigateCamera extends Camera { + public async initialize( + hass: HomeAssistant, + entityRegistryManager: EntityRegistryManager, + ): Promise { + await this._initializeConfig(hass, entityRegistryManager); + await this._initializeCapabilities(hass); + await this._subscribeToEvents(hass); + return await super.initialize(hass, entityRegistryManager); + } + + protected async _initializeConfig( + hass: HomeAssistant, + entityRegistryManager: EntityRegistryManager, + ): Promise { + const config = this.getConfig(); + const hasCameraName = !!config.frigate?.camera_name; + const hasAutoTriggers = config.triggers.motion || config.triggers.occupancy; + + let entity: Entity | null = null; + const cameraEntity = getCameraEntityFromConfig(config); + + // Entity information is required if the Frigate camera name is missing, or + // if the entity requires automatic resolution of motion/occupancy sensors. + if (cameraEntity && (!hasCameraName || hasAutoTriggers)) { + try { + entity = await entityRegistryManager.getEntity(hass, cameraEntity); + } catch (e) { + throw new CameraInitializationError(localize('error.no_camera_entity'), config); + } + } + + if (entity && !hasCameraName) { + const resolvedName = this._getFrigateCameraNameFromEntity(entity); + if (resolvedName) { + this._config.frigate.camera_name = resolvedName; + } + } + + if (hasAutoTriggers) { + // Try to find the correct entities for the motion & occupancy sensors. + // We know they are binary_sensors, and that they'll have the same + // config entry ID as the camera. Searching via unique_id ensures this + // search still works if the user renames the entity_id. + const binarySensorEntities = await entityRegistryManager.getMatchingEntities( + hass, + (ent) => + ent.config_entry_id === entity?.config_entry_id && + !ent.disabled_by && + ent.entity_id.startsWith('binary_sensor.'), + ); + + if (config.triggers.motion) { + const motionEntity = this._getMotionSensor(config, [ + ...binarySensorEntities.values(), + ]); + if (motionEntity) { + config.triggers.entities.push(motionEntity); + } + } + + if (config.triggers.occupancy) { + const occupancyEntities = this._getOccupancySensor(config, [ + ...binarySensorEntities.values(), + ]); + if (occupancyEntities) { + config.triggers.entities.push(...occupancyEntities); + } + } + + // De-duplicate triggering entities. + config.triggers.entities = uniq(config.triggers.entities); + } + } + + protected async _initializeCapabilities(hass: HomeAssistant): Promise { + const config = this.getConfig(); + const ptz = await this._getPTZCapabilities(hass, config); + const birdseye = isBirdseye(config); + this._capabilities = { + canFavoriteEvents: !birdseye, + canFavoriteRecordings: !birdseye, + canSeek: true, + supportsClips: !birdseye, + supportsSnapshots: !birdseye, + supportsRecordings: !birdseye, + supportsTimeline: !birdseye, + ...(ptz && { ptz: ptz }), + }; + } + + protected _getFrigateCameraNameFromEntity(entity: Entity): string | null { + if ( + entity.platform === 'frigate' && + entity.unique_id && + typeof entity.unique_id === 'string' + ) { + const match = entity.unique_id.match(/:camera:(?[^:]+)$/); + if (match && match.groups) { + return match.groups['camera']; + } + } + return null; + } + + protected async _getPTZCapabilities( + hass: HomeAssistant, + cameraConfig: CameraConfig, + ): Promise { + if (!cameraConfig.frigate.camera_name) { + return null; + } + + let ptzInfo: PTZInfo | null = null; + try { + ptzInfo = await getPTZInfo( + hass, + cameraConfig.frigate.client_id, + cameraConfig.frigate.camera_name, + ); + } catch (e) { + errorToConsole(e as Error); + return null; + } + + const panTilt: PTZMovementType[] = [ + ...(ptzInfo.features?.includes('pt') ? ['continuous' as const] : []), + ...(ptzInfo.features?.includes('pt-r') ? ['relative' as const] : []), + ]; + const zoom: PTZMovementType[] = [ + ...(ptzInfo.features?.includes('zoom') ? ['continuous' as const] : []), + ...(ptzInfo.features?.includes('zoom-r') ? ['relative' as const] : []), + ]; + const presets = ptzInfo.presets; + + if (panTilt.length || zoom.length || presets?.length) { + return { + ...(panTilt && { panTilt: panTilt }), + ...(zoom && { zoom: zoom }), + ...(presets && { presets: presets }), + }; + } + return null; + } + + /** + * Get the motion sensor entity for a given camera. + * @param cache The EntityCache of entity registry information. + * @param cameraConfig The camera config in question. + * @returns The entity id of the motion sensor or null. + */ + protected _getMotionSensor( + cameraConfig: CameraConfig, + entities: Entity[], + ): string | null { + if (cameraConfig.frigate.camera_name) { + return ( + entities.find( + (entity) => + typeof entity.unique_id === 'string' && + !!entity.unique_id?.match( + new RegExp(`:motion_sensor:${cameraConfig.frigate.camera_name}`), + ), + )?.entity_id ?? null + ); + } + return null; + } + + /** + * Get the occupancy sensor entity for a given camera. + * @param cache The EntityCache of entity registry information. + * @param cameraConfig The camera config in question. + * @returns The entity id of the occupancy sensor or null. + */ + protected _getOccupancySensor( + cameraConfig: CameraConfig, + entities: Entity[], + ): string[] | null { + const entityIDs: string[] = []; + const addEntityIDIfFound = (cameraOrZone: string, label: string): void => { + const entityID = + entities.find( + (entity) => + typeof entity.unique_id === 'string' && + !!entity.unique_id?.match( + new RegExp(`:occupancy_sensor:${cameraOrZone}_${label}`), + ), + )?.entity_id ?? null; + if (entityID) { + entityIDs.push(entityID); + } + }; + + if (cameraConfig.frigate.camera_name) { + // If zone(s) are specified, the master occupancy sensor for the overall + // camera is not used by default (but could be manually added by the + // user). + const camerasAndZones = cameraConfig.frigate.zones?.length + ? cameraConfig.frigate.zones + : [cameraConfig.frigate.camera_name]; + + const labels = cameraConfig.frigate.labels?.length + ? cameraConfig.frigate.labels + : ['all']; + for (const cameraOrZone of camerasAndZones) { + for (const label of labels) { + addEntityIDIfFound(cameraOrZone, label); + } + } + + if (entityIDs.length) { + return entityIDs; + } + } + return null; + } + + protected async _subscribeToEvents(hass: HomeAssistant): Promise { + const config = this.getConfig(); + if (!config.triggers.events.length || !config.frigate.camera_name) { + return; + } + + this._destroyCallbacks.push( + await subscribeToTrigger(hass, (ev) => this._handleEventChange(ev), { + platform: 'mqtt', + topic: `${config.frigate.client_id}/events`, + + // Only trigger for events pertaining to this camera. + payload: config.frigate.camera_name, + valueTemplate: '{{ value_json.after.camera }}', + }), + ); + } + + protected _handleEventChange(ev: unknown): void { + const parseResult = frigateEventChangeTriggerResponseSchema.safeParse(ev); + if (!parseResult.success) { + console.warn('Ignoring unparseable Frigate event', ev); + return; + } + + const change = parseResult.data.variables.trigger.payload_json; + const snapshotChange = + (!change.before.has_snapshot && change.after.has_snapshot) || + change.before.snapshot?.frame_time !== change.after.snapshot?.frame_time; + const clipChange = !change.before.has_clip && change.after.has_clip; + + const config = this.getConfig(); + if (config.frigate.camera_name !== change.after.camera) { + return; + } + + if ( + (config.frigate.zones?.length && + !config.frigate.zones.some((zone) => + change.after.current_zones.includes(zone), + )) || + (config.frigate.labels?.length && + !config.frigate.labels.includes(change.after.label)) + ) { + return; + } + + const eventsToTriggerOn = config.triggers.events; + if ( + !( + eventsToTriggerOn.includes('events') || + (eventsToTriggerOn.includes('snapshots') && snapshotChange) || + (eventsToTriggerOn.includes('clips') && clipChange) + ) + ) { + return; + } + + this._eventCallback?.({ + fidelity: 'high', + cameraID: this.getID(), + type: change.type, + // In cases where there are both clip and snapshot media, ensure to only + // trigger on the media type that is allowed by the configuration. + clip: clipChange && eventsToTriggerOn.includes('clips'), + snapshot: snapshotChange && eventsToTriggerOn.includes('snapshots'), + }); + } +} diff --git a/src/camera-manager/frigate/engine-frigate.ts b/src/camera-manager/frigate/engine-frigate.ts index f7936f3d..ea44df50 100644 --- a/src/camera-manager/frigate/engine-frigate.ts +++ b/src/camera-manager/frigate/engine-frigate.ts @@ -7,30 +7,25 @@ import startOfHour from 'date-fns/startOfHour'; import isEqual from 'lodash-es/isEqual'; import orderBy from 'lodash-es/orderBy'; import throttle from 'lodash-es/throttle'; -import uniq from 'lodash-es/uniq'; import uniqWith from 'lodash-es/uniqWith'; import { CameraConfig, PTZAction, PTZPhase } from '../../config/types'; -import { localize } from '../../localize/localize'; import { ExtendedHomeAssistant } from '../../types'; import { allPromises, - errorToConsole, formatDate, prettifyTitle, runWhenIdleIfSupported, } from '../../utils/basic'; import { getEntityTitle } from '../../utils/ha'; import { EntityRegistryManager } from '../../utils/ha/entity-registry'; -import { Entity } from '../../utils/ha/entity-registry/types'; import { ViewMedia } from '../../view/media'; import { ViewMediaClassifier } from '../../view/media-classifier'; import { RecordingSegmentsCache, RequestCache } from '../cache'; import { Camera } from '../camera'; import { - CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT, CameraManagerEngine, + CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT, } from '../engine'; -import { CameraInitializationError } from '../error'; import { GenericCameraManagerEngine } from '../generic/engine-generic'; import { DateRange } from '../range'; import { CameraManagerReadOnlyConfigStore } from '../store'; @@ -38,6 +33,7 @@ import { CameraEndpoint, CameraEndpoints, CameraEndpointsContext, + CameraEventCallback, CameraManagerCameraMetadata, CameraManagerMediaCapabilities, DataQuery, @@ -52,8 +48,6 @@ import { PartialEventQuery, PartialRecordingQuery, PartialRecordingSegmentsQuery, - PTZCapabilities, - PTZMovementType, QueryResults, QueryResultsType, QueryReturnType, @@ -65,34 +59,31 @@ import { RecordingSegmentsQuery, RecordingSegmentsQueryResultsMap, } from '../types'; -import { getCameraEntityFromConfig, getDefaultGo2RTCEndpoint } from '../utils.js'; +import { getDefaultGo2RTCEndpoint } from '../utils.js'; import frigateLogo from './assets/frigate-logo-dark.svg'; +import { FrigateCamera, isBirdseye } from './camera'; import { FrigateViewMediaFactory } from './media'; import { FrigateViewMediaClassifier } from './media-classifier'; import { - NativeFrigateEventQuery, - NativeFrigateRecordingSegmentsQuery, - getEventSummary, getEvents, + getEventSummary, getRecordingSegments, getRecordingsSummary, + NativeFrigateEventQuery, + NativeFrigateRecordingSegmentsQuery, retainEvent, - getPTZInfo, } from './requests'; import { FrigateEventQueryResults, FrigateRecording, FrigateRecordingQueryResults, FrigateRecordingSegmentsQueryResults, - PTZInfo, } from './types'; const EVENT_REQUEST_CACHE_MAX_AGE_SECONDS = 60; const RECORDING_SUMMARY_REQUEST_CACHE_MAX_AGE_SECONDS = 60; const MEDIA_METADATA_REQUEST_CACHE_AGE_SECONDS = 60; -const CAMERA_BIRDSEYE = 'birdseye' as const; - class FrigateQueryResultsClassifier { public static isFrigateEventQueryResults( results: QueryResults, @@ -135,8 +126,9 @@ export class FrigateCameraManagerEngine constructor( recordingSegmentsCache: RecordingSegmentsCache, requestCache: RequestCache, + eventCallback?: CameraEventCallback, ) { - super(); + super(eventCallback); this._recordingSegmentsCache = recordingSegmentsCache; this._requestCache = requestCache; } @@ -145,222 +137,15 @@ export class FrigateCameraManagerEngine return Engine.Frigate; } - public async initializeCamera( + public async createCamera( hass: HomeAssistant, entityRegistryManager: EntityRegistryManager, cameraConfig: CameraConfig, ): Promise { - const hasCameraName = !!cameraConfig.frigate?.camera_name; - const hasAutoTriggers = - cameraConfig.triggers.motion || cameraConfig.triggers.occupancy; - - let entity: Entity | null = null; - const cameraEntity = getCameraEntityFromConfig(cameraConfig); - - // Entity information is required if the Frigate camera name is missing, or - // if the entity requires automatic resolution of motion/occupancy sensors. - if (cameraEntity && (!hasCameraName || hasAutoTriggers)) { - try { - entity = await entityRegistryManager.getEntity(hass, cameraEntity); - } catch (e) { - throw new CameraInitializationError( - localize('error.no_camera_entity'), - cameraConfig, - ); - } - } - - if (entity && !hasCameraName) { - const resolvedName = this._getFrigateCameraNameFromEntity(entity); - if (resolvedName) { - cameraConfig.frigate.camera_name = resolvedName; - } - } - - if (hasAutoTriggers) { - // Try to find the correct entities for the motion & occupancy sensors. - // We know they are binary_sensors, and that they'll have the same - // config entry ID as the camera. Searching via unique_id ensures this - // search still works if the user renames the entity_id. - const binarySensorEntities = await entityRegistryManager.getMatchingEntities( - hass, - (ent) => - ent.config_entry_id === entity?.config_entry_id && - !ent.disabled_by && - ent.entity_id.startsWith('binary_sensor.'), - ); - - if (cameraConfig.triggers.motion) { - const motionEntity = this._getMotionSensor(cameraConfig, [ - ...binarySensorEntities.values(), - ]); - if (motionEntity) { - cameraConfig.triggers.entities.push(motionEntity); - } - } - - if (cameraConfig.triggers.occupancy) { - const occupancyEntities = this._getOccupancySensor(cameraConfig, [ - ...binarySensorEntities.values(), - ]); - if (occupancyEntities) { - cameraConfig.triggers.entities.push(...occupancyEntities); - } - } - - // De-duplicate triggering entities. - cameraConfig.triggers.entities = uniq(cameraConfig.triggers.entities); - } - - const ptz = await this._getPTZCapabilities(hass, cameraConfig); - - const isBirdseye = this._isBirdseye(cameraConfig); - return new Camera(cameraConfig, this, { - canFavoriteEvents: !isBirdseye, - canFavoriteRecordings: !isBirdseye, - canSeek: true, - supportsClips: !isBirdseye, - supportsSnapshots: !isBirdseye, - supportsRecordings: !isBirdseye, - supportsTimeline: !isBirdseye, - - ...(ptz && { ptz: ptz }), + const camera = new FrigateCamera(cameraConfig, this, { + eventCallback: this._eventCallback, }); - } - - protected async _getPTZCapabilities( - hass: HomeAssistant, - cameraConfig: CameraConfig, - ): Promise { - if (!cameraConfig.frigate.camera_name) { - return null; - } - - let ptzInfo: PTZInfo | null = null; - try { - ptzInfo = await getPTZInfo( - hass, - cameraConfig.frigate.client_id, - cameraConfig.frigate.camera_name, - ); - } catch (e) { - errorToConsole(e as Error); - return null; - } - - const panTilt: PTZMovementType[] = [ - ...(ptzInfo.features?.includes('pt') ? ['continuous' as const] : []), - ...(ptzInfo.features?.includes('pt-r') ? ['relative' as const] : []), - ]; - const zoom: PTZMovementType[] = [ - ...(ptzInfo.features?.includes('zoom') ? ['continuous' as const] : []), - ...(ptzInfo.features?.includes('zoom-r') ? ['relative' as const] : []), - ]; - const presets = ptzInfo.presets; - - if (panTilt.length || zoom.length || presets?.length) { - return { - ...(panTilt && { panTilt: panTilt }), - ...(zoom && { zoom: zoom }), - ...(presets && { presets: presets }), - }; - } - return null; - } - - protected _isBirdseye(cameraConfig: CameraConfig): boolean { - return cameraConfig.frigate.camera_name === CAMERA_BIRDSEYE; - } - - /** - * Get the Frigate camera name from an entity. - * @returns The Frigate camera name or null if unavailable. - */ - protected _getFrigateCameraNameFromEntity(entity: Entity): string | null { - if ( - entity.platform === 'frigate' && - entity.unique_id && - typeof entity.unique_id === 'string' - ) { - const match = entity.unique_id.match(/:camera:(?[^:]+)$/); - if (match && match.groups) { - return match.groups['camera']; - } - } - return null; - } - - /** - * Get the motion sensor entity for a given camera. - * @param cache The EntityCache of entity registry information. - * @param cameraConfig The camera config in question. - * @returns The entity id of the motion sensor or null. - */ - protected _getMotionSensor( - cameraConfig: CameraConfig, - entities: Entity[], - ): string | null { - if (cameraConfig.frigate.camera_name) { - return ( - entities.find( - (entity) => - typeof entity.unique_id === 'string' && - !!entity.unique_id?.match( - new RegExp(`:motion_sensor:${cameraConfig.frigate.camera_name}`), - ), - )?.entity_id ?? null - ); - } - return null; - } - - /** - * Get the occupancy sensor entity for a given camera. - * @param cache The EntityCache of entity registry information. - * @param cameraConfig The camera config in question. - * @returns The entity id of the occupancy sensor or null. - */ - protected _getOccupancySensor( - cameraConfig: CameraConfig, - entities: Entity[], - ): string[] | null { - const entityIDs: string[] = []; - const addEntityIDIfFound = (cameraOrZone: string, label: string): void => { - const entityID = - entities.find( - (entity) => - typeof entity.unique_id === 'string' && - !!entity.unique_id?.match( - new RegExp(`:occupancy_sensor:${cameraOrZone}_${label}`), - ), - )?.entity_id ?? null; - if (entityID) { - entityIDs.push(entityID); - } - }; - - if (cameraConfig.frigate.camera_name) { - // If zone(s) are specified, the master occupancy sensor for the overall - // camera is not used by default (but could be manually added by the - // user). - const camerasAndZones = cameraConfig.frigate.zones?.length - ? cameraConfig.frigate.zones - : [cameraConfig.frigate.camera_name]; - - const labels = cameraConfig.frigate.labels?.length - ? cameraConfig.frigate.labels - : ['all']; - for (const cameraOrZone of camerasAndZones) { - for (const label of labels) { - addEntityIDIfFound(cameraOrZone, label); - } - } - - if (entityIDs.length) { - return entityIDs; - } - } - return null; + return await camera.initialize(hass, entityRegistryManager); } public async getMediaDownloadPath( @@ -904,7 +689,7 @@ export class FrigateCameraManagerEngine cameraID: string, ): CameraConfig | null { const cameraConfig = store.getCameraConfig(cameraID); - if (!cameraConfig || this._isBirdseye(cameraConfig)) { + if (!cameraConfig || isBirdseye(cameraConfig)) { return null; } return cameraConfig; diff --git a/src/camera-manager/frigate/types.ts b/src/camera-manager/frigate/types.ts index 1d3bf95d..7cc7559b 100644 --- a/src/camera-manager/frigate/types.ts +++ b/src/camera-manager/frigate/types.ts @@ -83,6 +83,39 @@ export const ptzInfoSchema = z.object({ }); export type PTZInfo = z.infer; +// Frigate events as stored in MQTT updates. +const frigateEventChangeSchema = z.object({ + camera: z.string(), + snapshot: z + .object({ + frame_time: z.number(), + }) + .nullable(), + has_clip: z.boolean(), + has_snapshot: z.boolean(), + label: z.string(), + current_zones: z.string().array(), +}); +export type FrigateEventChange = z.infer; + +const frigateEventChangeType = z.enum(['new', 'update', 'end']); +export type FrigateEventChangeType = z.infer; + +export const frigateEventChangeTriggerResponseSchema = z.object({ + variables: z.object({ + trigger: z.object({ + payload_json: z.object({ + before: frigateEventChangeSchema, + after: frigateEventChangeSchema, + type: frigateEventChangeType, + }), + }), + }), +}); +export type FrigateEventChangeTriggerResponse = z.infer< + typeof frigateEventChangeTriggerResponseSchema +>; + // ============================== // Frigate concrete query results // ============================== diff --git a/src/camera-manager/generic/engine-generic.ts b/src/camera-manager/generic/engine-generic.ts index ed8986a4..195ebedf 100644 --- a/src/camera-manager/generic/engine-generic.ts +++ b/src/camera-manager/generic/engine-generic.ts @@ -1,11 +1,7 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; -import { - CameraConfig, - PTZAction, - PTZPhase -} from '../../config/types'; +import { CameraConfig, PTZAction, PTZPhase } from '../../config/types'; import { ExtendedHomeAssistant } from '../../types'; import { getEntityIcon, getEntityTitle } from '../../utils/ha'; import { EntityRegistryManager } from '../../utils/ha/entity-registry'; @@ -17,6 +13,7 @@ import { CameraEndpoint, CameraEndpoints, CameraEndpointsContext, + CameraEventCallback, CameraManagerCameraMetadata, CameraManagerMediaCapabilities, DataQuery, @@ -33,29 +30,38 @@ import { RecordingQuery, RecordingQueryResultsMap, RecordingSegmentsQuery, - RecordingSegmentsQueryResultsMap + RecordingSegmentsQueryResultsMap, } from '../types'; import { getCameraEntityFromConfig, getDefaultGo2RTCEndpoint } from '../utils.js'; export class GenericCameraManagerEngine implements CameraManagerEngine { + protected _eventCallback?: CameraEventCallback; + + constructor(eventCallback?: CameraEventCallback) { + this._eventCallback = eventCallback; + } + public getEngineType(): Engine { return Engine.Generic; } - public async initializeCamera( - _hass: HomeAssistant, - _entityRegistryManager: EntityRegistryManager, + public async createCamera( + hass: HomeAssistant, + entityRegistryManager: EntityRegistryManager, cameraConfig: CameraConfig, ): Promise { - return new Camera(cameraConfig, this, { - canFavoriteEvents: false, - canFavoriteRecordings: false, - canSeek: false, - supportsClips: false, - supportsRecordings: false, - supportsSnapshots: false, - supportsTimeline: false, - }); + return await new Camera(cameraConfig, this, { + capabilities: { + canFavoriteEvents: false, + canFavoriteRecordings: false, + canSeek: false, + supportsClips: false, + supportsRecordings: false, + supportsSnapshots: false, + supportsTimeline: false, + }, + eventCallback: this._eventCallback, + }).initialize(hass, entityRegistryManager); } public generateDefaultEventQuery( diff --git a/src/camera-manager/manager.ts b/src/camera-manager/manager.ts index efcefd4f..18bf305b 100644 --- a/src/camera-manager/manager.ts +++ b/src/camera-manager/manager.ts @@ -47,11 +47,11 @@ import { RecordingSegmentsQuery, RecordingSegmentsQueryResults, RecordingSegmentsQueryResultsMap, - ResultsMap + ResultsMap, } from './types.js'; import { sortMedia } from './utils.js'; -class QueryClassifier { +export class QueryClassifier { public static isEventQuery(query: DataQuery | PartialDataQuery): query is EventQuery { return query.type === QueryType.Event; } @@ -72,23 +72,23 @@ class QueryClassifier { } } -class QueryResultClassifier { +export class QueryResultClassifier { public static isEventQueryResult( queryResults: QueryResults, ): queryResults is EventQueryResults { return queryResults.type === QueryResultsType.Event; } - public static isRecordingQuery( + public static isRecordingQueryResult( queryResults: QueryResults, ): queryResults is RecordingQueryResults { return queryResults.type === QueryResultsType.Recording; } - public static isRecordingSegmentsQuery( + public static isRecordingSegmentsQueryResult( queryResults: QueryResults, ): queryResults is RecordingSegmentsQueryResults { return queryResults.type === QueryResultsType.RecordingSegments; } - public static isMediaMetadataQuery( + public static isMediaMetadataQueryResult( queryResults: QueryResults, ): queryResults is MediaMetadataQueryResults { return queryResults.type === QueryResultsType.MediaMetadata; @@ -105,13 +105,25 @@ export class CameraManager { protected _engineFactory: CameraManagerEngineFactory; protected _store: CameraManagerStore; - constructor(api: CardCameraAPI, store?: CameraManagerStore) { + constructor( + api: CardCameraAPI, + options?: { + store?: CameraManagerStore; + factory?: CameraManagerEngineFactory; + }, + ) { this._api = api; - this._engineFactory = new CameraManagerEngineFactory( - this._api.getEntityRegistryManager(), - this._api.getResolvedMediaCache(), - ); - this._store = store ?? new CameraManagerStore(); + this._engineFactory = + options?.factory ?? + new CameraManagerEngineFactory( + this._api.getEntityRegistryManager(), + this._api.getResolvedMediaCache(), + ); + this._store = options?.store ?? new CameraManagerStore(); + } + + public async reset(): Promise { + await this._store.reset(); } public async initializeCamerasFromConfig(): Promise { @@ -122,7 +134,7 @@ export class CameraManager { return false; } - this._store.reset(); + await this.reset(); // For each camera merge the config (which has no defaults) into the camera // global config (which does have defaults). The merging must happen in this @@ -148,6 +160,7 @@ export class CameraManager { const engines: Map = new Map(); const hass = this._api.getHASSManager().getHASS(); + /* istanbul ignore if: the if path cannot be reached -- @preserve */ if (!hass) { return output; } @@ -162,7 +175,10 @@ export class CameraManager { for (const [index, cameraConfig] of camerasConfig.entries()) { const engineType = engineTypes[index]; const engine = engineType - ? engines.get(engineType) ?? (await this._engineFactory.createEngine(engineType)) + ? engines.get(engineType) ?? + (await this._engineFactory.createEngine(engineType, (ev) => + this._api.getTriggersManager().handleCameraEvent(ev), + )) : null; if (!engine || !engineType) { throw new CameraInitializationError( @@ -182,6 +198,7 @@ export class CameraManager { const initializationStartTime = new Date(); const hass = this._api.getHASSManager().getHASS(); + /* istanbul ignore if: the if path cannot be reached -- @preserve */ if (!hass) { return; } @@ -208,7 +225,7 @@ export class CameraManager { const cameras = await allPromises( engineByConfig.entries(), async ([cameraConfig, engine]) => - await engine.initializeCamera( + await engine.createCamera( hass, this._api.getEntityRegistryManager(), cameraConfig, @@ -292,45 +309,6 @@ export class CameraManager { }); } - public async getMediaMetadata(): Promise { - const tags: Set = new Set(); - const what: Set = new Set(); - const where: Set = new Set(); - const days: Set = new Set(); - - const query: MediaMetadataQuery = { - type: QueryType.MediaMetadata, - cameraIDs: this._store.getCameraIDs(), - }; - - const results = await this._handleQuery(query); - - for (const result of results?.values() ?? []) { - if (result.metadata.tags) { - result.metadata.tags.forEach(tags.add, tags); - } - if (result.metadata.what) { - result.metadata.what.forEach(what.add, what); - } - if (result.metadata.where) { - result.metadata.where.forEach(where.add, where); - } - if (result.metadata.days) { - result.metadata.days.forEach(days.add, days); - } - } - - if (!what.size && !where.size && !days.size) { - return null; - } - return { - ...(tags.size && { tags: tags }), - ...(what.size && { what: what }), - ...(where.size && { where: where }), - ...(days.size && { days: days }), - }; - } - protected _generateDefaultQueries( cameraIDs: string | Set, partialQuery: PQT, @@ -338,13 +316,13 @@ export class CameraManager { const concreteQueries: PartialQueryConcreteType[] = []; const _cameraIDs = setify(cameraIDs); const engines = this._store.getEnginesForCameraIDs(_cameraIDs); - if (!engines) { return null; } for (const [engine, cameraIDs] of engines) { let queries: DataQuery[] | null = null; + /* istanbul ignore else: the else path cannot be reached -- @preserve */ if (QueryClassifier.isEventQuery(partialQuery)) { queries = engine.generateDefaultEventQuery(this._store, cameraIDs, partialQuery); } else if (QueryClassifier.isRecordingQuery(partialQuery)) { @@ -368,6 +346,45 @@ export class CameraManager { return concreteQueries.length ? concreteQueries : null; } + public async getMediaMetadata(): Promise { + const tags: Set = new Set(); + const what: Set = new Set(); + const where: Set = new Set(); + const days: Set = new Set(); + + const query: MediaMetadataQuery = { + type: QueryType.MediaMetadata, + cameraIDs: this._store.getCameraIDs(), + }; + + const results = await this._handleQuery(query); + + for (const result of results.values()) { + if (result.metadata.tags) { + result.metadata.tags.forEach(tags.add, tags); + } + if (result.metadata.what) { + result.metadata.what.forEach(what.add, what); + } + if (result.metadata.where) { + result.metadata.where.forEach(where.add, where); + } + if (result.metadata.days) { + result.metadata.days.forEach(days.add, days); + } + } + + if (!what.size && !where.size && !days.size && !tags.size) { + return null; + } + return { + ...(tags.size && { tags: tags }), + ...(what.size && { what: what }), + ...(where.size && { where: where }), + ...(days.size && { days: days }), + }; + } + public async getEvents( query: EventQuery | EventQuery[], engineOptions?: EngineOptions, @@ -438,15 +455,18 @@ export class CameraManager { for (const query of queries) { const newChunkQuery = { ...query }; + /* istanbul ignore else: the else path cannot be reached -- @preserve */ if (direction === 'later') { const latestResult = getTimeFromResults('latest'); if (latestResult) { newChunkQuery.start = latestResult; + delete(newChunkQuery.end); } } else if (direction === 'earlier') { const earliestResult = getTimeFromResults('earliest'); if (earliestResult) { newChunkQuery.end = earliestResult; + delete(newChunkQuery.start); } } newChunkQuery.limit = chunkSize; @@ -550,13 +570,11 @@ export class CameraManager { public async getMediaSeekTime(media: ViewMedia, target: Date): Promise { const startTime = media.getStartTime(); const endTime = media.getEndTime(); - const cameraConfig = this._store.getCameraConfigForMedia(media); const engine = this._store.getEngineForMedia(media); const hass = this._api.getHASSManager().getHASS(); if ( !hass || - !cameraConfig || !engine || !startTime || !endTime || @@ -584,13 +602,11 @@ export class CameraManager { const processEngineQuery = async ( engine: CameraManagerEngine, - query?: QT, + query: QT, ): Promise => { - if (!query) { - return; - } - let engineResult: Map> | null = null; + + /* istanbul ignore else: the else path cannot be reached -- @preserve */ if (QueryClassifier.isEventQuery(query)) { engineResult = (await engine.getEvents( hass, @@ -676,6 +692,7 @@ export class CameraManager { if (engine) { let media: ViewMedia[] | null = null; + /* istanbul ignore else: the else path cannot be reached -- @preserve */ if ( QueryClassifier.isEventQuery(query) && QueryResultClassifier.isEventQueryResult(result) @@ -683,7 +700,7 @@ export class CameraManager { media = engine.generateMediaFromEvents(hass, this._store, query, result); } else if ( QueryClassifier.isRecordingQuery(query) && - QueryResultClassifier.isRecordingQuery(result) + QueryResultClassifier.isRecordingQueryResult(result) ) { media = engine.generateMediaFromRecordings(hass, this._store, query, result); } diff --git a/src/camera-manager/motioneye/engine-motioneye.ts b/src/camera-manager/motioneye/engine-motioneye.ts index f326b08f..41540ddc 100644 --- a/src/camera-manager/motioneye/engine-motioneye.ts +++ b/src/camera-manager/motioneye/engine-motioneye.ts @@ -8,18 +8,21 @@ import { CameraConfig } from '../../config/types'; import { allPromises, formatDate, isValidDate } from '../../utils/basic'; import { BrowseMediaStep, - BrowseMediaTarget + BrowseMediaTarget, } from '../../utils/ha/browse-media/browse-media-manager'; import { - BrowseMedia, BROWSE_MEDIA_CACHE_SECONDS, MEDIA_CLASS_IMAGE, + BrowseMedia, + BROWSE_MEDIA_CACHE_SECONDS, + MEDIA_CLASS_IMAGE, MEDIA_CLASS_VIDEO, - RichBrowseMedia + RichBrowseMedia, } from '../../utils/ha/browse-media/types'; import { ViewMedia } from '../../view/media'; +import { BrowseMediaCamera } from '../browse-media/camera'; import { BrowseMediaCameraManagerEngine, getViewMediaFromBrowseMediaArray, - isMediaWithinDates + isMediaWithinDates, } from '../browse-media/engine-browse-media'; import { BrowseMediaMetadata } from '../browse-media/types'; import { CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT } from '../engine'; @@ -39,7 +42,7 @@ import { MediaMetadataQueryResultsMap, QueryResults, QueryResultsType, - QueryReturnType + QueryReturnType, } from '../types'; import motioneyeLogo from './assets/motioneye-logo.svg'; import { MotionEyeEventQueryResults } from './types'; @@ -134,13 +137,18 @@ export class MotionEyeCameraManagerEngine extends BrowseMediaCameraManagerEngine } | null, engineOptions?: EngineOptions, ): Promise[] | null> { - const cameraConfig = store.getCameraConfig(cameraID); - const cameraEntityID = cameraConfig?.camera_entity; - const entity = cameraEntityID ? this._cameraEntities.get(cameraEntityID) : null; + const camera = store.getCamera(cameraID); + const cameraConfig = camera?.getConfig(); + + if (!(camera instanceof BrowseMediaCamera) || !cameraConfig) { + return null; + } + + const entity = camera.getEntity(); const configID = entity?.config_entry_id; const deviceID = entity?.device_id; - if (!configID || !deviceID || !cameraConfig) { + if (!configID || !deviceID) { return null; } diff --git a/src/camera-manager/store.ts b/src/camera-manager/store.ts index 752a6aaf..c27e3ebe 100644 --- a/src/camera-manager/store.ts +++ b/src/camera-manager/store.ts @@ -1,4 +1,5 @@ import { CameraConfig } from '../config/types'; +import { allPromises } from '../utils/basic'; import { ViewMedia } from '../view/media'; import { Camera } from './camera'; import { CameraManagerEngine } from './engine'; @@ -35,7 +36,9 @@ export class CameraManagerStore implements CameraManagerReadOnlyConfigStore { this._cameras.set(camera.getID(), camera); this._enginesByType.set(camera.getEngine().getEngineType(), camera.getEngine()); } - public reset(): void { + + public async reset(): Promise { + await allPromises(this._cameras.values(), (camera) => camera.destroy()); this._cameras.clear(); this._enginesByType.clear(); } diff --git a/src/camera-manager/types.ts b/src/camera-manager/types.ts index 9f4353bd..76d0f7bc 100644 --- a/src/camera-manager/types.ts +++ b/src/camera-manager/types.ts @@ -150,6 +150,22 @@ export interface EngineOptions { useCache?: boolean; } +export interface CameraEvent { + cameraID: string; + + type: 'new' | 'update' | 'end'; + + // When fidelity is `high`, the engine is assumed to provide exact details of + // what new media is available. Otherwise all media types are assumed to be + // possibly newly available. + fidelity?: 'high' | 'low'; + + // Whether a new clip/snapshot/recording may be available. + clip?: boolean; + snapshot?: boolean; +} +export type CameraEventCallback = (ev: CameraEvent) => void; + // =========== // Event Query // =========== diff --git a/src/camera-manager/utils.ts b/src/camera-manager/utils.ts index dfa33d8b..89c9b2e7 100644 --- a/src/camera-manager/utils.ts +++ b/src/camera-manager/utils.ts @@ -51,7 +51,7 @@ export const sortMedia = (mediaArray: ViewMedia[]): ViewMedia[] => { // Sort all items leading oldest -> youngest (so media is loaded in this // order in the viewer which matches the left-to-right timeline order). - (media) => media.getStartTime(), + (media) => media.getStartTime() ?? media.getID(), 'asc', ); }; diff --git a/src/card-controller/card-element-manager.ts b/src/card-controller/card-element-manager.ts index cbbc6107..38599fd2 100644 --- a/src/card-controller/card-element-manager.ts +++ b/src/card-controller/card-element-manager.ts @@ -2,6 +2,7 @@ import { LitElement, ReactiveControllerHost } from 'lit'; import { ActionEventTarget } from '../action-handler-directive'; import { setOrRemoveAttribute } from '../utils/basic'; import { isCardInPanel } from '../utils/ha'; +import { InitializationAspect } from './initialization-manager'; import { CardElementAPI } from './types'; export type ScrollCallback = () => void; @@ -103,6 +104,16 @@ export class CardElementManager { this._api.getMediaLoadedInfoManager().clear(); this._api.getFullscreenManager().disconnect(); + // Reset and uninitialize cameras to cause them to reinitialize on + // reconnection, to ensure the state subscription/unsubscription works + // correctly for triggers. + this._api + .getCameraManager() + .reset() + .then(() => + this._api.getInitializationManager().uninitialize(InitializationAspect.CAMERAS), + ); + this._element.removeEventListener( 'mousemove', this._api.getInteractionManager().reportInteraction, diff --git a/src/card-controller/conditions-manager.ts b/src/card-controller/conditions-manager.ts index 7072323b..848d2a1e 100644 --- a/src/card-controller/conditions-manager.ts +++ b/src/card-controller/conditions-manager.ts @@ -192,6 +192,10 @@ export class ConditionsManager { }; this._triggerChange(); } + + public getState(): ConditionState { + return this._state; + } public hasHAStateConditions(): boolean { return this._hasHAStateConditions; diff --git a/src/card-controller/hass-manager.ts b/src/card-controller/hass-manager.ts index 4c697165..db50c7c9 100644 --- a/src/card-controller/hass-manager.ts +++ b/src/card-controller/hass-manager.ts @@ -1,4 +1,3 @@ -import { CameraConfig } from '../config/types'; import { localize } from '../localize/localize'; import { ExtendedHomeAssistant } from '../types'; import { hasHAConnectionStateChanged, isHassDifferent } from '../utils/ha'; @@ -17,15 +16,6 @@ export class HASSManager { } public setHASS(hass?: ExtendedHomeAssistant | null): void { - const getSelectedCameraConfig = (): CameraConfig | null => { - const view = this._api.getViewManager().getView(); - const cameraManager = this._api.getCameraManager(); - - return view && cameraManager - ? cameraManager?.getStore().getCameraConfig(view.camera) ?? null - : null; - }; - if (hasHAConnectionStateChanged(this._hass, hass)) { if (!hass?.connected) { this._api.getMessageManager().setMessageIfHigherPriority({ @@ -54,10 +44,11 @@ export class HASSManager { // Assistant update if there's been recent interaction (e.g. clicks on the // card) or if there is media active playing. this._isAutomatedViewUpdateAllowed() && - isHassDifferent(this._hass, oldHass, [ - ...(this._api.getConfigManager().getConfig()?.view.update_entities ?? []), - ...(getSelectedCameraConfig()?.triggers.entities ?? []), - ]) + isHassDifferent( + this._hass, + oldHass, + this._api.getConfigManager().getConfig()?.view.update_entities ?? [], + ) ) { // If entities being monitored have changed then reset the view to the // default. @@ -74,8 +65,6 @@ export class HASSManager { this._api.getCardElementManager().update(); } - this._api.getTriggersManager().updateTriggerHAState(oldHass); - if (this._api.getConditionsManager().hasHAStateConditions()) { this._api.getConditionsManager().setState({ state: this._hass.states }); } diff --git a/src/card-controller/triggers-manager.ts b/src/card-controller/triggers-manager.ts index ff4362ff..46de4752 100644 --- a/src/card-controller/triggers-manager.ts +++ b/src/card-controller/triggers-manager.ts @@ -1,8 +1,8 @@ -import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; +import isEqual from 'lodash-es/isEqual'; import orderBy from 'lodash-es/orderBy'; -import { getHassDifferences, isTriggeredState } from '../utils/ha'; +import throttle from 'lodash-es/throttle'; +import { CameraEvent } from '../camera-manager/types'; import { Timer } from '../utils/timer'; -import { View } from '../view/view'; import { CardTriggersAPI } from './types'; export class TriggersManager { @@ -10,7 +10,10 @@ export class TriggersManager { protected _triggeredCameras: Map = new Map(); protected _triggeredCameraTimers: Map = new Map(); - protected _triggeredState: Set = new Set(); + + protected _throttledTriggerAction = throttle(this._triggerAction.bind(this), 1000, { + trailing: true, + }); constructor(api: CardTriggersAPI) { this._api = api; @@ -33,125 +36,112 @@ export class TriggersManager { return sorted.length ? sorted[0][0] : null; } - public updateTriggerHAState(oldHass?: HomeAssistant | null): void { - const scanConfig = this._api.getConfigManager().getConfig()?.view.scan; - if (!scanConfig || !scanConfig.enabled) { + public handleCameraEvent(ev: CameraEvent): void { + const triggersConfig = this._api.getConfigManager().getConfig()?.view.triggers; + const selectedCameraID = this._api.getViewManager().getView()?.camera; + + if (!triggersConfig || !selectedCameraID) { return; } - const hass = this._api.getHASSManager().getHASS(); - let triggerChanges = false; - - const visibleCameraIDs = this._api + const dependentCameraIDs = this._api .getCameraManager() .getStore() - .getVisibleCameraIDs(); - for (const [cameraID, config] of this._api - .getCameraManager() - .getStore() - .getCameraConfigEntries(visibleCameraIDs)) { - const triggerEntities = config.triggers.entities; - const diffs = getHassDifferences(hass, oldHass, triggerEntities, { - stateOnly: true, - }); - const shouldTrigger = diffs.some((diff) => isTriggeredState(diff.newState)); - const shouldUntrigger = triggerEntities.every( - (entity) => !isTriggeredState(hass?.states[entity]), - ); - if (shouldTrigger) { - this._triggeredState.add(cameraID); - triggerChanges = true; - } else if (shouldUntrigger && this._triggeredState.has(cameraID)) { - this._triggeredState.delete(cameraID); - triggerChanges = true; - } - } + .getAllDependentCameras(selectedCameraID); - if (triggerChanges) { - this._evaluateTriggers(); - } - } - - public updateView(oldView?: View | null): void { - if (oldView?.camera !== this._api.getViewManager().getView()?.camera) { - // If the view changes, a new camera may have been selected, which may - // mean a trigger is required (in the case that `filter_selected_camera` - // is true). - this._evaluateTriggers(); - } - } - - protected _evaluateTriggers(): void { - const scanConfig = this._api.getConfigManager().getConfig()?.view.scan; - if (!scanConfig) { + if (triggersConfig.filter_selected_camera && !dependentCameraIDs.has(ev.cameraID)) { return; } - const now = new Date(); - for (const cameraID of this._triggeredState.keys()) { - if ( - !this._triggeredCameras.has(cameraID) && - (!scanConfig.filter_selected_camera || - cameraID === this._api.getViewManager().getView()?.camera) - ) { - this._triggeredCameras.set(cameraID, now); - this._setConditionState(); - this._triggerAction(cameraID); - } + if (ev.type === 'end') { + this._startUntriggerTimer(ev.cameraID); + return; } - for (const cameraID of this._triggeredCameras.keys()) { - if (!this._triggeredState.has(cameraID)) { - this._startUntriggerTimer(cameraID); - } - } + this._triggeredCameras.set(ev.cameraID, new Date()); + this._setConditionStateIfNecessary(); + this._throttledTriggerAction(ev); } protected _hasAllowableInteractionStateForAction(): boolean { - const scanConfig = this._api.getConfigManager().getConfig()?.view.scan; + const triggersConfig = this._api.getConfigManager().getConfig()?.view.triggers; const hasInteraction = this._api.getInteractionManager().hasInteraction(); return ( - !!scanConfig && - (scanConfig.actions.interaction_mode === 'all' || - (scanConfig.actions.interaction_mode === 'active' && hasInteraction) || - (scanConfig.actions.interaction_mode === 'inactive' && !hasInteraction)) + !!triggersConfig && + (triggersConfig.actions.interaction_mode === 'all' || + (triggersConfig.actions.interaction_mode === 'active' && hasInteraction) || + (triggersConfig.actions.interaction_mode === 'inactive' && !hasInteraction)) ); } - protected _triggerAction(cameraID: string): void { - const action = this._api.getConfigManager().getConfig()?.view.scan.actions.trigger; + protected _triggerAction(ev: CameraEvent): void { + const triggerAction = this._api.getConfigManager().getConfig()?.view.triggers + .actions.trigger; + const defaultView = this._api.getConfigManager().getConfig()?.view.default; - if (action === 'live' && this._hasAllowableInteractionStateForAction()) { - this._api.getViewManager().setViewByParameters({ - viewName: 'live', - cameraID: cameraID, - }); + // If this is a high-fidelity event where we are certain about new media, + // don't take action unless it's to change to live (Frigate engine may pump + // out events where there's no new media to show). + if ( + ev.fidelity === 'high' && + !ev.snapshot && + !ev.clip && + !( + triggerAction === 'live' || + (triggerAction === 'default' && defaultView === 'live') + ) + ) { + return; } - // Must update master element to add border pulsing. + if (this._hasAllowableInteractionStateForAction()) { + if (triggerAction === 'live') { + this._api.getViewManager().setViewByParameters({ + viewName: 'live', + cameraID: ev.cameraID, + }); + } else if (triggerAction === 'default') { + this._api.getViewManager().setViewDefault({ + cameraID: ev.cameraID, + }); + } else if (ev.fidelity === 'high' && triggerAction === 'media') { + this._api.getViewManager().setViewByParameters({ + viewName: ev.clip ? 'clip' : 'snapshot', + cameraID: ev.cameraID, + }); + } + } + + // Must update master element to add border pulsing to live view. this._api.getCardElementManager().update(); } - protected _setConditionState(): void { - this._api.getConditionsManager().setState({ - triggered: this._triggeredCameras.size - ? new Set(this._triggeredCameras.keys()) - : undefined, - }); + protected _setConditionStateIfNecessary(): void { + const triggeredCameraIDs = new Set(this._triggeredCameras.keys()); + const triggeredState = triggeredCameraIDs.size ? triggeredCameraIDs : undefined; + + if ( + !isEqual(triggeredState, this._api.getConditionsManager().getState().triggered) + ) { + this._api.getConditionsManager().setState({ + triggered: triggeredState, + }); + } } protected _untriggerAction(cameraID: string): void { - const action = this._api.getConfigManager().getConfig()?.view.scan.actions.untrigger; + const action = this._api.getConfigManager().getConfig()?.view.triggers + .actions.untrigger; if (action === 'default' && this._hasAllowableInteractionStateForAction()) { this._api.getViewManager().setViewDefault(); } this._triggeredCameras.delete(cameraID); this._deleteTimer(cameraID); - this._setConditionState(); + this._setConditionStateIfNecessary(); - // Must update master element to remove border pulsing. + // Must update master element to remove border pulsing from live view. this._api.getCardElementManager().update(); } @@ -164,7 +154,7 @@ export class TriggersManager { /* istanbul ignore next: the case of config being null here cannot be reached, as there's no way to have the untrigger call happen without a config. -- @preserve */ - this._api.getConfigManager().getConfig()?.view.scan.untrigger_seconds ?? 0, + this._api.getConfigManager().getConfig()?.view.triggers.untrigger_seconds ?? 0, () => { this._untriggerAction(cameraID); }, diff --git a/src/card-controller/types.ts b/src/card-controller/types.ts index 89122b00..33c4df07 100644 --- a/src/card-controller/types.ts +++ b/src/card-controller/types.ts @@ -1,27 +1,27 @@ -import { CameraManager } from '../camera-manager/manager'; -import { ConditionsManager } from './conditions-manager'; -import { EntityRegistryManager } from '../utils/ha/entity-registry'; -import { ResolvedMediaCache } from '../utils/ha/resolved-media'; -import { ActionsManager } from './actions-manager'; -import { AutoUpdateManager } from './auto-update-manager'; -import { AutomationsManager } from './automations-manager'; -import { CameraURLManager } from './camera-url-manager'; -import { CardElementManager } from './card-element-manager'; -import { ConfigManager } from './config-manager'; -import { DownloadManager } from './download-manager'; -import { ExpandManager } from './expand-manager'; -import { FullscreenManager } from './fullscreen-manager'; -import { HASSManager } from './hass-manager'; -import { InitializationManager } from './initialization-manager'; -import { InteractionManager } from './interaction-manager'; -import { MediaLoadedInfoManager } from './media-info-manager'; -import { MediaPlayerManager } from './media-player-manager'; -import { MessageManager } from './message-manager'; -import { MicrophoneManager } from './microphone-manager'; -import { StyleManager } from './style-manager'; -import { TriggersManager } from './triggers-manager'; -import { ViewManager } from './view-manager'; -import { QueryStringManager } from './query-string-manager'; +import type { CameraManager } from '../camera-manager/manager'; +import type { ConditionsManager } from './conditions-manager'; +import type { EntityRegistryManager } from '../utils/ha/entity-registry'; +import type { ResolvedMediaCache } from '../utils/ha/resolved-media'; +import type { ActionsManager } from './actions-manager'; +import type { AutoUpdateManager } from './auto-update-manager'; +import type { AutomationsManager } from './automations-manager'; +import type { CameraURLManager } from './camera-url-manager'; +import type { CardElementManager } from './card-element-manager'; +import type { ConfigManager } from './config-manager'; +import type { DownloadManager } from './download-manager'; +import type { ExpandManager } from './expand-manager'; +import type { FullscreenManager } from './fullscreen-manager'; +import type { HASSManager } from './hass-manager'; +import type { InitializationManager } from './initialization-manager'; +import type { InteractionManager } from './interaction-manager'; +import type { MediaLoadedInfoManager } from './media-info-manager'; +import type { MediaPlayerManager } from './media-player-manager'; +import type { MessageManager } from './message-manager'; +import type { MicrophoneManager } from './microphone-manager'; +import type { StyleManager } from './style-manager'; +import type { TriggersManager } from './triggers-manager'; +import type { ViewManager } from './view-manager'; +import type { QueryStringManager } from './query-string-manager'; /** * This defines a series of limited APIs that various manager helpers use to @@ -67,6 +67,7 @@ export interface CardCameraAPI { getHASSManager(): HASSManager; getMessageManager(): MessageManager; getResolvedMediaCache(): ResolvedMediaCache; + getTriggersManager(): TriggersManager; } export interface CardCameraURLAPI { @@ -100,8 +101,10 @@ export interface CardDownloadAPI { export interface CardElementAPI { getActionsManager(): ActionsManager; + getCameraManager(): CameraManager; getExpandManager(): ExpandManager; getFullscreenManager(): FullscreenManager; + getInitializationManager(): InitializationManager; getInteractionManager(): InteractionManager; getMediaLoadedInfoManager(): MediaLoadedInfoManager; getMicrophoneManager(): MicrophoneManager; @@ -205,7 +208,6 @@ export interface CardTriggersAPI { getConditionsManager(): ConditionsManager; getCardElementManager(): CardElementManager; getConfigManager(): ConfigManager; - getHASSManager(): HASSManager; getInteractionManager(): InteractionManager; getViewManager(): ViewManager; } diff --git a/src/card-controller/view-manager.ts b/src/card-controller/view-manager.ts index 71940719..fe5c9657 100644 --- a/src/card-controller/view-manager.ts +++ b/src/card-controller/view-manager.ts @@ -245,7 +245,6 @@ export class ViewManager { displayMode: view.displayMode ?? undefined, }); - this._api.getTriggersManager().updateView(oldView); this._api.getCardElementManager().update(); } diff --git a/src/card.ts b/src/card.ts index 57633f66..9370f2b1 100644 --- a/src/card.ts +++ b/src/card.ts @@ -163,6 +163,13 @@ class FrigateCard extends LitElement { } protected shouldUpdate(): boolean { + // Do not allow a disconnected element to update, as it may cause cameras to + // reinitialize/subscribe for an element that is no longer part of the + // document. + if (!this.isConnected) { + return false; + } + // Always allow messages to render, as a message may be generated during // initialization. if (this._controller.getMessageManager().hasMessage()) { @@ -307,7 +314,7 @@ class FrigateCard extends LitElement { ?.getEpoch()} .hide=${!!this._controller.getMessageManager().hasMessage()} .microphoneManager=${this._controller.getMicrophoneManager()} - .triggeredCameraIDs=${this._config?.view.scan.show_trigger_status + .triggeredCameraIDs=${this._config?.view.triggers.show_trigger_status ? this._controller.getTriggersManager().getTriggeredCameraIDs() : undefined} >`} diff --git a/src/components-lib/timeline-source.ts b/src/components-lib/timeline-source.ts index ad9eb210..823cce5c 100644 --- a/src/components-lib/timeline-source.ts +++ b/src/components-lib/timeline-source.ts @@ -29,6 +29,10 @@ export interface FrigateCardTimelineItem extends TimelineItem { // high-quantity recording segments). start: number; end?: number; + + // DataSet requires string (not HTMLElement) content. + content: string; + media?: ViewMedia; } diff --git a/src/components/live/go2rtc/video-rtc.d.ts b/src/components/live/go2rtc/video-rtc.d.ts index 8261c7fb..3da8d890 100644 --- a/src/components/live/go2rtc/video-rtc.d.ts +++ b/src/components/live/go2rtc/video-rtc.d.ts @@ -9,7 +9,7 @@ export class VideoRTC extends HTMLElement { pcConfig: RTCConfiguration; wsState: number; pcState: number; - video: HTMLVideoElement; + video: HTMLVideoElement | null; ws: WebSocket | null; wsURL: string; pc: RTCPeerConnection | null; diff --git a/src/components/live/live-go2rtc.ts b/src/components/live/live-go2rtc.ts index be722aba..102e6f3d 100644 --- a/src/components/live/live-go2rtc.ts +++ b/src/components/live/live-go2rtc.ts @@ -71,7 +71,7 @@ export class FrigateCardGo2RTC extends LitElement implements FrigateCardMediaPla } public isMuted(): boolean { - return this._player?.video.muted ?? true; + return this._player?.video?.muted ?? true; } public async seek(seconds: number): Promise { @@ -87,11 +87,11 @@ export class FrigateCardGo2RTC extends LitElement implements FrigateCardMediaPla } public isPaused(): boolean { - return this._player?.video.paused ?? true; + return this._player?.video?.paused ?? true; } public async getScreenshotURL(): Promise { - return this._player ? screenshotMedia(this._player.video) : null; + return this._player?.video ? screenshotMedia(this._player.video) : null; } disconnectedCallback(): void { diff --git a/src/components/surround.ts b/src/components/surround.ts index ad89f4ec..c7cc0d5b 100644 --- a/src/components/surround.ts +++ b/src/components/surround.ts @@ -133,7 +133,7 @@ export class FrigateCardSurround extends LitElement { */ protected willUpdate(changedProperties: PropertyValues): void { if (this.timelineConfig?.mode && this.timelineConfig.mode !== 'none') { - import('./timeline.js'); + import('./timeline-core.js'); } // Only reset the timeline cameraIDs when the media or display mode diff --git a/src/components/viewer.ts b/src/components/viewer.ts index 7310853d..1b1791ab 100644 --- a/src/components/viewer.ts +++ b/src/components/viewer.ts @@ -139,7 +139,7 @@ export class FrigateCardViewer extends LitElement { const mediaType = this.view.getDefaultMediaType(); if (!mediaType) { // Directly render an error message (instead of dispatching it upwards) - // to preserve the mini-timeline if the user scans into an area with no + // to preserve the mini-timeline if the user pans into an area with no // media. return renderMessage({ type: 'info', @@ -157,6 +157,7 @@ export class FrigateCardViewer extends LitElement { { allCameras: this.view.isGrid(), targetView: 'recording', + useCache: false, }, ); } else { @@ -169,6 +170,7 @@ export class FrigateCardViewer extends LitElement { allCameras: this.view.isGrid(), targetView: 'media', eventsMediaType: mediaType, + useCache: false, }, ); } diff --git a/src/config-mgmt.ts b/src/config-mgmt.ts index fd0e0e20..dd13f89f 100644 --- a/src/config-mgmt.ts +++ b/src/config-mgmt.ts @@ -18,7 +18,10 @@ import { CONF_OVERRIDES, CONF_TIMELINE_EVENTS_MEDIA_TYPE, CONF_VIEW_INTERACTION_SECONDS, - CONF_VIEW_SCAN_ACTIONS_UNTRIGGER, + CONF_VIEW_TRIGGERS, + CONF_VIEW_TRIGGERS_ACTIONS_TRIGGER, + CONF_VIEW_TRIGGERS_ACTIONS_UNTRIGGER, + CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA, } from './const'; import { arrayify } from './utils/basic'; @@ -213,6 +216,18 @@ export const upgradeWithOverrides = function ( return upgradeMoveToWithOverrides(path, path, { transform: transform }); }; +/** + * Delete a property in place with overrides. + * @param path The property path. + * @returns A function that returns `true` if the configuration was modified. + */ +export const deleteWithOverrides = function ( + path: string, +): (obj: RawFrigateCardConfig) => boolean { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + return upgradeMoveToWithOverrides(path, path, { transform: (_) => null }); +}; + /** * Given a path to an array, apply an upgrade to each object in the array. * @param arrayPath The path to the array to upgrade. @@ -480,14 +495,6 @@ const UPGRADES = [ ); }, upgradePTZElementsToLive(), - upgradeMoveToWithOverrides( - 'view.scan.untrigger_reset', - CONF_VIEW_SCAN_ACTIONS_UNTRIGGER, - { - // Delete the value if it's set to the default. - transform: (val) => (val ? 'default' : null), - }, - ), upgradeMoveToWithOverrides('view.timeout_seconds', CONF_VIEW_INTERACTION_SECONDS), upgradeWithOverrides('live.lazy_unload', (data) => data === 'all' ? ['unselected', 'hidden'] : data === 'never' ? null : arrayify(data), @@ -524,10 +531,7 @@ const UPGRADES = [ 'live.controls.thumbnails.media', CONF_LIVE_CONTROLS_THUMBNAILS_EVENTS_MEDIA_TYPE, ), - upgradeMoveToWithOverrides( - 'timeline.media', - CONF_TIMELINE_EVENTS_MEDIA_TYPE, - ), + upgradeMoveToWithOverrides('timeline.media', CONF_TIMELINE_EVENTS_MEDIA_TYPE), upgradeMoveToWithOverrides( 'live.controls.timeline.media', CONF_LIVE_CONTROLS_TIMELINE_EVENTS_MEDIA_TYPE, @@ -536,4 +540,29 @@ const UPGRADES = [ 'media_viewer.controls.timeline.media', CONF_MEDIA_VIEWER_CONTROLS_TIMELINE_EVENTS_MEDIA_TYPE, ), + upgradeMoveToWithOverrides('view.scan', CONF_VIEW_TRIGGERS), + upgradeMoveToWithOverrides( + 'view.triggers.enabled', + CONF_VIEW_TRIGGERS_ACTIONS_TRIGGER, + { + transform: (data) => (data === true ? 'live' : null), + // Keep it around, for the following transform. + keepOriginal: true, + }, + ), + upgradeMoveToWithOverrides( + 'view.triggers.enabled', + CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA, + { + transform: (data) => (data === true ? false : null), + }, + ), + upgradeMoveToWithOverrides( + 'view.triggers.untrigger_reset', + CONF_VIEW_TRIGGERS_ACTIONS_UNTRIGGER, + { + // Delete the value if it's set to the default. + transform: (val) => (val ? 'default' : null), + }, + ), ]; diff --git a/src/config/types.ts b/src/config/types.ts index 1ab1941f..39d745cc 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -77,6 +77,16 @@ export type PTZAction = (typeof PTZ_ACTIONS)[number]; const PTZ_PHASES = ['start', 'stop'] as const; export type PTZPhase = (typeof PTZ_PHASES)[number]; +const CAMERA_TRIGGER_EVENT_TYPES = [ + // An event whether or not it has any media yet associated with it. + 'events', + + // Specific media availability. + 'clips', + 'snapshots', +] as const; +export type CameraTriggerEventType = (typeof CAMERA_TRIGGER_EVENT_TYPES)[number]; + // ************************************************************************* // View Display Mode // ************************************************************************* @@ -326,7 +336,7 @@ const actionsSchema = z.object({ }); const elementsBaseSchema = actionsBaseSchema.extend({ - style: z.record(z.string().nullable().or(z.undefined())).optional(), + style: z.record(z.string().nullable().or(z.undefined()).or(z.number())).optional(), title: z.string().nullable().optional(), }); @@ -1038,7 +1048,8 @@ const cameraConfigDefault = { }, triggers: { motion: false, - occupancy: true, + occupancy: false, + events: [...CAMERA_TRIGGER_EVENT_TYPES], entities: [], }, }; @@ -1071,6 +1082,10 @@ export const cameraConfigSchema = z motion: z.boolean().default(cameraConfigDefault.triggers.motion), occupancy: z.boolean().default(cameraConfigDefault.triggers.occupancy), entities: z.string().array().default(cameraConfigDefault.triggers.entities), + events: z + .enum(CAMERA_TRIGGER_EVENT_TYPES) + .array() + .default(cameraConfigDefault.triggers.events), }) .default(cameraConfigDefault.triggers), @@ -1145,41 +1160,42 @@ const viewConfigDefault = { update_force: false, update_cycle_camera: false, dark_mode: 'off' as const, - scan: { - enabled: false, - show_trigger_status: true, - filter_selected_camera: false, + triggers: { + show_trigger_status: false, + filter_selected_camera: true, actions: { interaction_mode: 'inactive' as const, - trigger: 'live' as const, - untrigger: 'default' as const, + trigger: 'default' as const, + untrigger: 'none' as const, }, untrigger_seconds: 0, }, }; -export const scanSchema = z.object({ - enabled: z.boolean().default(viewConfigDefault.scan.enabled), - +export const triggersSchema = z.object({ filter_selected_camera: z .boolean() - .default(viewConfigDefault.scan.filter_selected_camera), - show_trigger_status: z.boolean().default(viewConfigDefault.scan.show_trigger_status), + .default(viewConfigDefault.triggers.filter_selected_camera), + show_trigger_status: z + .boolean() + .default(viewConfigDefault.triggers.show_trigger_status), actions: z .object({ interaction_mode: z .enum(['all', 'inactive', 'active']) - .default(viewConfigDefault.scan.actions.interaction_mode), - trigger: z.enum(['live', 'none']).default(viewConfigDefault.scan.actions.trigger), + .default(viewConfigDefault.triggers.actions.interaction_mode), + trigger: z + .enum(['live', 'default', 'media', 'none']) + .default(viewConfigDefault.triggers.actions.trigger), untrigger: z .enum(['default', 'none']) - .default(viewConfigDefault.scan.actions.untrigger), + .default(viewConfigDefault.triggers.actions.untrigger), }) - .default(viewConfigDefault.scan.actions), - untrigger_seconds: z.number().default(viewConfigDefault.scan.untrigger_seconds), + .default(viewConfigDefault.triggers.actions), + untrigger_seconds: z.number().default(viewConfigDefault.triggers.untrigger_seconds), }); -export type ScanOptions = z.infer; +export type TriggersOptions = z.infer; const viewConfigSchema = z .object({ @@ -1199,7 +1215,7 @@ const viewConfigSchema = z update_entities: z.string().array().optional(), render_entities: z.string().array().optional(), dark_mode: z.enum(['on', 'off', 'auto']).optional(), - scan: scanSchema.default(viewConfigDefault.scan), + triggers: triggersSchema.default(viewConfigDefault.triggers), }) .merge(actionsSchema) .default(viewConfigDefault); diff --git a/src/const.ts b/src/const.ts index f3f3298b..5addcfae 100644 --- a/src/const.ts +++ b/src/const.ts @@ -54,6 +54,8 @@ export const CONF_CAMERAS_ARRAY_TRIGGERS_OCCUPANCY = `${CONF_CAMERAS}.#.triggers.occupancy` as const; export const CONF_CAMERAS_ARRAY_TRIGGERS_ENTITIES = `${CONF_CAMERAS}.#.triggers.entities` as const; +export const CONF_CAMERAS_ARRAY_TRIGGERS_EVENTS = + `${CONF_CAMERAS}.#.triggers.events` as const; const CONF_CAMERAS_GLOBAL = 'cameras_global' as const; export const CONF_CAMERAS_GLOBAL_IMAGE = `${CONF_CAMERAS_GLOBAL}.image` as const; @@ -77,21 +79,20 @@ export const CONF_VIEW_UPDATE_FORCE = `${CONF_VIEW}.update_force` as const; export const CONF_VIEW_UPDATE_SECONDS = `${CONF_VIEW}.update_seconds` as const; export const CONF_VIEW_RESET_AFTER_INTERACTION = `${CONF_VIEW}.reset_after_interaction` as const; -export const CONF_VIEW_SCAN = `${CONF_VIEW}.scan` as const; -export const CONF_VIEW_SCAN_ENABLED = `${CONF_VIEW_SCAN}.enabled` as const; -export const CONF_VIEW_SCAN_SHOW_TRIGGER_STATUS = - `${CONF_VIEW_SCAN}.show_trigger_status` as const; -export const CONF_VIEW_SCAN_FILTER_SELECTED_CAMERA = - `${CONF_VIEW_SCAN}.filter_selected_camera` as const; -export const CONF_VIEW_SCAN_UNTRIGGER_SECONDS = - `${CONF_VIEW_SCAN}.untrigger_seconds` as const; -export const CONF_VIEW_SCAN_ACTIONS = `${CONF_VIEW_SCAN}.actions` as const; -export const CONF_VIEW_SCAN_ACTIONS_TRIGGER = - `${CONF_VIEW_SCAN_ACTIONS}.trigger` as const; -export const CONF_VIEW_SCAN_ACTIONS_UNTRIGGER = - `${CONF_VIEW_SCAN_ACTIONS}.untrigger` as const; -export const CONF_VIEW_SCAN_ACTIONS_INTERACTION_MODE = - `${CONF_VIEW_SCAN_ACTIONS}.interaction_mode` as const; +export const CONF_VIEW_TRIGGERS = `${CONF_VIEW}.triggers` as const; +export const CONF_VIEW_TRIGGERS_SHOW_TRIGGER_STATUS = + `${CONF_VIEW_TRIGGERS}.show_trigger_status` as const; +export const CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA = + `${CONF_VIEW_TRIGGERS}.filter_selected_camera` as const; +export const CONF_VIEW_TRIGGERS_UNTRIGGER_SECONDS = + `${CONF_VIEW_TRIGGERS}.untrigger_seconds` as const; +export const CONF_VIEW_TRIGGERS_ACTIONS = `${CONF_VIEW_TRIGGERS}.actions` as const; +export const CONF_VIEW_TRIGGERS_ACTIONS_TRIGGER = + `${CONF_VIEW_TRIGGERS_ACTIONS}.trigger` as const; +export const CONF_VIEW_TRIGGERS_ACTIONS_UNTRIGGER = + `${CONF_VIEW_TRIGGERS_ACTIONS}.untrigger` as const; +export const CONF_VIEW_TRIGGERS_ACTIONS_INTERACTION_MODE = + `${CONF_VIEW_TRIGGERS_ACTIONS}.interaction_mode` as const; export const CONF_MEDIA_GALLERY = 'media_gallery' as const; export const CONF_MEDIA_GALLERY_CONTROLS_FILTER_MODE = @@ -258,7 +259,8 @@ const CONF_TIMELINE = 'timeline' as const; export const CONF_TIMELINE_WINDOW_SECONDS = `${CONF_TIMELINE}.window_seconds` as const; export const CONF_TIMELINE_CLUSTERING_THRESHOLD = `${CONF_TIMELINE}.clustering_threshold` as const; -export const CONF_TIMELINE_EVENTS_MEDIA_TYPE = `${CONF_TIMELINE}.events_media_type` as const; +export const CONF_TIMELINE_EVENTS_MEDIA_TYPE = + `${CONF_TIMELINE}.events_media_type` as const; export const CONF_TIMELINE_SHOW_RECORDINGS = `${CONF_TIMELINE}.show_recordings` as const; export const CONF_TIMELINE_STYLE = `${CONF_TIMELINE}.style` as const; export const CONF_TIMELINE_CONTROLS_THUMBNAILS_MODE = diff --git a/src/editor.ts b/src/editor.ts index fbd589a8..250467b9 100644 --- a/src/editor.ts +++ b/src/editor.ts @@ -22,9 +22,9 @@ import { } from './config-mgmt.js'; import { BUTTON_SIZE_MIN, + FRIGATE_MENU_PRIORITY_MAX, FrigateCardConfig, frigateCardConfigDefaults, - FRIGATE_MENU_PRIORITY_MAX, RawFrigateCardConfig, RawFrigateCardConfigArray, THUMBNAIL_WIDTH_MAX, @@ -58,6 +58,7 @@ import { CONF_CAMERAS_ARRAY_MOTIONEYE_URL, CONF_CAMERAS_ARRAY_TITLE, CONF_CAMERAS_ARRAY_TRIGGERS_ENTITIES, + CONF_CAMERAS_ARRAY_TRIGGERS_EVENTS, CONF_CAMERAS_ARRAY_TRIGGERS_MOTION, CONF_CAMERAS_ARRAY_TRIGGERS_OCCUPANCY, CONF_CAMERAS_ARRAY_WEBRTC_CARD_ENTITY, @@ -159,8 +160,8 @@ import { CONF_MEDIA_VIEWER_TRANSITION_EFFECT, CONF_MEDIA_VIEWER_ZOOMABLE, CONF_MENU_ALIGNMENT, - CONF_MENU_BUTTONS, CONF_MENU_BUTTON_SIZE, + CONF_MENU_BUTTONS, CONF_MENU_POSITION, CONF_MENU_STYLE, CONF_PERFORMANCE_FEATURES_ANIMATED_PROGRESS_INDICATOR, @@ -184,15 +185,14 @@ import { CONF_VIEW_DEFAULT, CONF_VIEW_INTERACTION_SECONDS, CONF_VIEW_RESET_AFTER_INTERACTION, - CONF_VIEW_SCAN, - CONF_VIEW_SCAN_ACTIONS, - CONF_VIEW_SCAN_ACTIONS_INTERACTION_MODE, - CONF_VIEW_SCAN_ACTIONS_TRIGGER, - CONF_VIEW_SCAN_ACTIONS_UNTRIGGER, - CONF_VIEW_SCAN_ENABLED, - CONF_VIEW_SCAN_FILTER_SELECTED_CAMERA, - CONF_VIEW_SCAN_SHOW_TRIGGER_STATUS, - CONF_VIEW_SCAN_UNTRIGGER_SECONDS, + CONF_VIEW_TRIGGERS, + CONF_VIEW_TRIGGERS_ACTIONS, + CONF_VIEW_TRIGGERS_ACTIONS_INTERACTION_MODE, + CONF_VIEW_TRIGGERS_ACTIONS_TRIGGER, + CONF_VIEW_TRIGGERS_ACTIONS_UNTRIGGER, + CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA, + CONF_VIEW_TRIGGERS_SHOW_TRIGGER_STATUS, + CONF_VIEW_TRIGGERS_UNTRIGGER_SECONDS, CONF_VIEW_UPDATE_CYCLE_CAMERA, CONF_VIEW_UPDATE_FORCE, CONF_VIEW_UPDATE_SECONDS, @@ -244,8 +244,8 @@ const MENU_OPTIONS = 'options'; const MENU_PERFORMANCE_FEATURES = 'performance.features'; const MENU_PERFORMANCE_STYLE = 'performance.style'; const MENU_TIMELINE_CONTROLS_THUMBNAILS = 'timeline.controls.thumbnails'; -const MENU_VIEW_SCAN = 'scan'; -const MENU_VIEW_SCAN_ACTIONS = 'scan.actions'; +const MENU_VIEW_TRIGGERS = 'view.triggers'; +const MENU_VIEW_TRIGGERS_ACTIONS = 'view.triggers.actions'; interface EditorOptionsSet { icon: string; @@ -514,8 +514,14 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor protected _timelineEventsMediaTypes: EditorSelectOption[] = [ { value: '', label: '' }, { value: 'all', label: localize('config.common.timeline.events_media_types.all') }, - { value: 'clips', label: localize('config.common.timeline.events_media_types.clips') }, - { value: 'snapshots', label: localize('config.common.timeline.events_media_types.snapshots') }, + { + value: 'clips', + label: localize('config.common.timeline.events_media_types.clips'), + }, + { + value: 'snapshots', + label: localize('config.common.timeline.events_media_types.snapshots'), + }, ]; protected _timelineStyleTypes: EditorSelectOption[] = [ @@ -653,43 +659,67 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor }, ]; - protected _scanActionsInteractionModes: EditorSelectOption[] = [ + protected _triggersActionsInteractionModes: EditorSelectOption[] = [ { value: '', label: '' }, { value: 'all', - label: localize('config.view.scan.actions.interaction_modes.all'), + label: localize('config.view.triggers.actions.interaction_modes.all'), }, { value: 'inactive', - label: localize('config.view.scan.actions.interaction_modes.inactive'), + label: localize('config.view.triggers.actions.interaction_modes.inactive'), }, { value: 'active', - label: localize('config.view.scan.actions.interaction_modes.active'), + label: localize('config.view.triggers.actions.interaction_modes.active'), }, ]; - protected _scanActionsTrigger: EditorSelectOption[] = [ - { value: '', label: '' }, - { - value: 'live', - label: localize('config.view.scan.actions.triggers.live'), - }, - { - value: 'none', - label: localize('config.view.scan.actions.triggers.none'), - }, - ]; - - protected _scanActionsUntrigger: EditorSelectOption[] = [ + protected _triggersActionsTrigger: EditorSelectOption[] = [ { value: '', label: '' }, { value: 'default', - label: localize('config.view.scan.actions.untriggers.default'), + label: localize('config.view.triggers.actions.triggers.default'), + }, + { + value: 'live', + label: localize('config.view.triggers.actions.triggers.live'), + }, + { + value: 'media', + label: localize('config.view.triggers.actions.triggers.media'), }, { value: 'none', - label: localize('config.view.scan.actions.untriggers.none'), + label: localize('config.view.triggers.actions.triggers.none'), + }, + ]; + + protected _triggersActionsUntrigger: EditorSelectOption[] = [ + { value: '', label: '' }, + { + value: 'default', + label: localize('config.view.triggers.actions.untriggers.default'), + }, + { + value: 'none', + label: localize('config.view.triggers.actions.untriggers.none'), + }, + ]; + + protected _triggersEvents: EditorSelectOption[] = [ + { value: '', label: '' }, + { + value: 'events', + label: localize('config.cameras.triggers.events.events'), + }, + { + value: 'clips', + label: localize('config.cameras.triggers.events.clips'), + }, + { + value: 'snapshots', + label: localize('config.cameras.triggers.events.snapshots'), }, ]; @@ -948,57 +978,54 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor ); } - protected _renderViewScanMenu(): TemplateResult { + protected _renderViewTriggersMenu(): TemplateResult { return this._putInSubmenu( - MENU_VIEW_SCAN, + MENU_VIEW_TRIGGERS, true, - `config.${CONF_VIEW_SCAN}.editor_label`, + `config.${CONF_VIEW_TRIGGERS}.editor_label`, { name: 'mdi:target-account' }, html` - ${this._renderSwitch(CONF_VIEW_SCAN_ENABLED, this._defaults.view.scan.enabled, { - label: localize(`config.${CONF_VIEW_SCAN_ENABLED}`), - })} ${this._renderSwitch( - CONF_VIEW_SCAN_FILTER_SELECTED_CAMERA, - this._defaults.view.scan.filter_selected_camera, + CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA, + this._defaults.view.triggers.filter_selected_camera, { - label: localize(`config.${CONF_VIEW_SCAN_FILTER_SELECTED_CAMERA}`), + label: localize(`config.${CONF_VIEW_TRIGGERS_FILTER_SELECTED_CAMERA}`), }, )} ${this._renderSwitch( - CONF_VIEW_SCAN_SHOW_TRIGGER_STATUS, - this._defaults.view.scan.show_trigger_status, + CONF_VIEW_TRIGGERS_SHOW_TRIGGER_STATUS, + this._defaults.view.triggers.show_trigger_status, { - label: localize(`config.${CONF_VIEW_SCAN_SHOW_TRIGGER_STATUS}`), + label: localize(`config.${CONF_VIEW_TRIGGERS_SHOW_TRIGGER_STATUS}`), }, )} - ${this._renderNumberInput(CONF_VIEW_SCAN_UNTRIGGER_SECONDS, { - default: this._defaults.view.scan.untrigger_seconds, + ${this._renderNumberInput(CONF_VIEW_TRIGGERS_UNTRIGGER_SECONDS, { + default: this._defaults.view.triggers.untrigger_seconds, })} ${this._putInSubmenu( - MENU_VIEW_SCAN_ACTIONS, + MENU_VIEW_TRIGGERS_ACTIONS, true, - `config.${CONF_VIEW_SCAN_ACTIONS}.editor_label`, + `config.${CONF_VIEW_TRIGGERS_ACTIONS}.editor_label`, { name: 'mdi:cogs' }, html` ${this._renderOptionSelector( - CONF_VIEW_SCAN_ACTIONS_TRIGGER, - this._scanActionsTrigger, + CONF_VIEW_TRIGGERS_ACTIONS_TRIGGER, + this._triggersActionsTrigger, { - label: localize('config.view.scan.actions.trigger'), + label: localize('config.view.triggers.actions.trigger'), }, )} ${this._renderOptionSelector( - CONF_VIEW_SCAN_ACTIONS_UNTRIGGER, - this._scanActionsUntrigger, + CONF_VIEW_TRIGGERS_ACTIONS_UNTRIGGER, + this._triggersActionsUntrigger, { - label: localize('config.view.scan.actions.untrigger'), + label: localize('config.view.triggers.actions.untrigger'), }, )} ${this._renderOptionSelector( - CONF_VIEW_SCAN_ACTIONS_INTERACTION_MODE, - this._scanActionsInteractionModes, + CONF_VIEW_TRIGGERS_ACTIONS_INTERACTION_MODE, + this._triggersActionsInteractionModes, { - label: localize('config.view.scan.actions.interaction_mode'), + label: localize('config.view.triggers.actions.interaction_mode'), }, )}`, )} @@ -1188,9 +1215,13 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor ${this._renderNumberInput(configPathClusteringThreshold, { label: localize(`config.common.${CONF_TIMELINE_CLUSTERING_THRESHOLD}`), })} - ${this._renderOptionSelector(configPathTimelineEventsMediaType, this._timelineEventsMediaTypes, { - label: localize(`config.common.${CONF_TIMELINE_EVENTS_MEDIA_TYPE}`), - })} + ${this._renderOptionSelector( + configPathTimelineEventsMediaType, + this._timelineEventsMediaTypes, + { + label: localize(`config.common.${CONF_TIMELINE_EVENTS_MEDIA_TYPE}`), + }, + )} ${this._renderSwitch(configPathShowRecordings, defaultShowRecordings, { label: localize(`config.common.${CONF_TIMELINE_SHOW_RECORDINGS}`), })}`; @@ -1801,21 +1832,40 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor cameraIndex, 'config.cameras.triggers.editor_label', { name: 'mdi:magnify-scan' }, - html` ${this._renderSwitch( - getArrayConfigPath(CONF_CAMERAS_ARRAY_TRIGGERS_OCCUPANCY, cameraIndex), - this._defaults.cameras.triggers.occupancy, - )} - ${this._renderSwitch( - getArrayConfigPath(CONF_CAMERAS_ARRAY_TRIGGERS_MOTION, cameraIndex), - this._defaults.cameras.triggers.motion, - )} - ${this._renderOptionSelector( - getArrayConfigPath(CONF_CAMERAS_ARRAY_TRIGGERS_ENTITIES, cameraIndex), - entities, - { - multiple: true, - }, - )}`, + html` + ${this._renderSwitch( + getArrayConfigPath( + CONF_CAMERAS_ARRAY_TRIGGERS_OCCUPANCY, + cameraIndex, + ), + this._defaults.cameras.triggers.occupancy, + )} + ${this._renderSwitch( + getArrayConfigPath(CONF_CAMERAS_ARRAY_TRIGGERS_MOTION, cameraIndex), + this._defaults.cameras.triggers.motion, + )} + ${this._renderOptionSelector( + getArrayConfigPath( + CONF_CAMERAS_ARRAY_TRIGGERS_ENTITIES, + cameraIndex, + ), + entities, + { + multiple: true, + }, + )} + ${this._renderOptionSelector( + getArrayConfigPath( + CONF_CAMERAS_ARRAY_TRIGGERS_EVENTS, + cameraIndex, + ), + this._triggersEvents, + { + multiple: true, + label: localize('config.cameras.triggers.events.editor_label'), + }, + )} + `, )} ${this._putInSubmenu( MENU_CAMERAS_CAST, @@ -1992,7 +2042,7 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor CONF_VIEW_UPDATE_CYCLE_CAMERA, this._defaults.view.update_cycle_camera, )} - ${this._renderViewScanMenu()} + ${this._renderViewTriggersMenu()} ` : ''} @@ -2125,7 +2175,8 @@ export class FrigateCardEditor extends LitElement implements LovelaceCardEditor this._defaults.live.controls.thumbnails, { configPathMediaType: CONF_LIVE_CONTROLS_THUMBNAILS_MEDIA_TYPE, - configPathEventsMediaType: CONF_LIVE_CONTROLS_THUMBNAILS_EVENTS_MEDIA_TYPE, + configPathEventsMediaType: + CONF_LIVE_CONTROLS_THUMBNAILS_EVENTS_MEDIA_TYPE, configPathMode: CONF_LIVE_CONTROLS_THUMBNAILS_MODE, }, )} diff --git a/src/localize/languages/en.json b/src/localize/languages/en.json index eed8911a..c329ce44 100644 --- a/src/localize/languages/en.json +++ b/src/localize/languages/en.json @@ -85,6 +85,12 @@ "triggers": { "editor_label": "Trigger Options", "entities": "Trigger from other entities", + "events": { + "clips": "Events with new clips", + "editor_label": "Trigger Events", + "events": "All events", + "snapshots": "Events with new snapshots" + }, "motion": "Trigger by auto-detecting the motion sensor", "occupancy": "Trigger by auto-detecting the occupancy sensor" }, @@ -394,9 +400,9 @@ "default": "Default view", "interaction_seconds": "Seconds after user action to remain interacted with (0=never)", "reset_after_interaction": "Reset to the default view after user interaction", - "scan": { + "triggers": { "actions": { - "editor_label": "Scan mode actions", + "editor_label": "Trigger actions", "interaction_mode": "How to handle actions when the card has human interaction", "interaction_modes": { "active": "Only trigger actions when card has human interaction", @@ -405,7 +411,9 @@ }, "trigger": "Trigger action", "triggers": { - "live": "Change to live", + "default": "Change to or update default view", + "live": "Change to or update live view", + "media": "Change to the relevant media view for new media", "none": "No action" }, "untrigger": "Untrigger action", @@ -414,8 +422,7 @@ "none": "No action" } }, - "editor_label": "Scan mode", - "enabled": "Scan mode enabled", + "editor_label": "Behavior when a camera is triggered", "filter_selected_camera": "Only trigger on selected camera", "show_trigger_status": "Show pulsing border when triggered", "untrigger_seconds": "Seconds after inactive state change to untrigger" diff --git a/src/localize/languages/it.json b/src/localize/languages/it.json index c2296b40..ef8c0706 100644 --- a/src/localize/languages/it.json +++ b/src/localize/languages/it.json @@ -85,6 +85,12 @@ "triggers": { "editor_label": "Trigger Opzioni", "entities": "Trigger da altre entità", + "events": { + "clips": "", + "editor_label": "", + "events": "", + "snapshots": "" + }, "motion": "Trigger rilevando automaticamente dal sensore di movimento", "occupancy": "Attivare rilevando automatico tramite il sensore di presenza" }, @@ -390,7 +396,7 @@ "default": "Visualizzazione predefinita", "interaction_seconds": "", "reset_after_interaction": "", - "scan": { + "triggers": { "actions": { "editor_label": "", "interaction_mode": "", @@ -401,7 +407,9 @@ }, "trigger": "", "triggers": { + "default": "", "live": "", + "media": "", "none": "" }, "untrigger": "", @@ -410,8 +418,7 @@ "none": "" } }, - "editor_label": "Modalità di scansione", - "enabled": "Modalità di scansione abilitata", + "editor_label": "", "filter_selected_camera": "", "show_trigger_status": "Mostra bordo pulsante quando attivato", "untrigger_seconds": "Reimposta la vista ai valori predefiniti dopo aver annullato l'attivazione" diff --git a/src/localize/languages/pt-BR.json b/src/localize/languages/pt-BR.json index 99b8ebc0..87dcb442 100644 --- a/src/localize/languages/pt-BR.json +++ b/src/localize/languages/pt-BR.json @@ -85,6 +85,12 @@ "triggers": { "editor_label": "Opções de acionamento", "entities": "Acionar a partir de outras entidades", + "events": { + "clips": "", + "editor_label": "", + "events": "", + "snapshots": "" + }, "motion": "Acionar detectando automaticamente o sensor de movimento", "occupancy": "Acionar detectando automaticamente o sensor de ocupação" }, @@ -393,7 +399,7 @@ "default": "Visualização padrão", "interaction_seconds": "", "reset_after_interaction": "", - "scan": { + "triggers": { "actions": { "editor_label": "", "interaction_mode": "", @@ -404,7 +410,9 @@ }, "trigger": "", "triggers": { + "default": "", "live": "", + "media": "", "none": "" }, "untrigger": "", @@ -413,8 +421,7 @@ "none": "" } }, - "editor_label": "Modo scan", - "enabled": "Modo scan ativado", + "editor_label": "", "filter_selected_camera": "", "show_trigger_status": "Pulsar borda quando acionado", "untrigger_seconds": "Segundos após a mudar para o estado inativo para desacionar" diff --git a/src/localize/languages/pt-PT.json b/src/localize/languages/pt-PT.json index 10686bba..0ef522bc 100644 --- a/src/localize/languages/pt-PT.json +++ b/src/localize/languages/pt-PT.json @@ -85,6 +85,12 @@ "triggers": { "editor_label": "Opções de activação", "entities": "Activar a partir de outras entidades", + "events": { + "editor_label": "", + "events": "", + "clips": "", + "snapshots": "" + }, "motion": "Activar detectando automaticamente o sensor de movimento", "occupancy": "Activar detectando automaticamente o sensor de ocupação" }, @@ -383,7 +389,7 @@ "default": "Visualização padrão", "interaction_seconds": "", "reset_after_interaction": "", - "scan": { + "triggers": { "actions": { "editor_label": "", "interaction_mode": "", @@ -394,7 +400,9 @@ }, "trigger": "", "triggers": { + "default": "", "live": "", + "media": "", "none": "" }, "untrigger": "", @@ -403,8 +411,7 @@ "none": "" } }, - "editor_label": "Modo scan", - "enabled": "Modo scan ativado", + "editor_label": "", "filter_selected_camera": "", "show_trigger_status": "Exibir estado do gatilho", "untrigger_seconds": "Segundos após a mudar para o estado inativo para desacionar" diff --git a/src/utils/ha/index.ts b/src/utils/ha/index.ts index b8d46426..3b6e18b2 100644 --- a/src/utils/ha/index.ts +++ b/src/utils/ha/index.ts @@ -1,4 +1,8 @@ -import { computeDomain, computeStateDomain, HomeAssistant } from '@dermotduffy/custom-card-helpers'; +import { + computeDomain, + computeStateDomain, + HomeAssistant, +} from '@dermotduffy/custom-card-helpers'; import { HassEntity, MessageBase } from 'home-assistant-js-websocket'; import { StyleInfo } from 'lit/directives/style-map.js'; import { ZodSchema } from 'zod'; @@ -13,6 +17,12 @@ import { } from '../../types.js'; import { domainIcon } from '../icons/domain-icon.js'; import { getParseErrorKeys } from '../zod.js'; +import { + HAStateChangeFromTo, + haStateChangeTriggerResponseSchema, + SubscriptionCallback, + SubscriptionUnsubscribe, +} from './types.js'; /** * Make a HomeAssistant websocket request. May throw. @@ -103,7 +113,7 @@ interface HassStateDifference { * strings only, firstOnly: whether or not to get the first difference only. * @returns An array of HassStateDifference objects. */ -export function getHassDifferences( +function getHassDifferences( newHass: HomeAssistant | undefined | null, oldHass: HomeAssistant | undefined | null, entities: string[] | null, @@ -326,11 +336,11 @@ export const sideLoadHomeAssistantElements = async (): Promise => { /** * Determine if a given state qualifies as 'triggered'. - * @param state The HASSEntity. + * @param state The HA entity state string. * @returns `true` if triggered, `false` otherwise. */ -export const isTriggeredState = (state?: HassEntity): boolean => { - return !!state && ['on', 'open'].includes(state.state); +export const isTriggeredState = (state?: string): boolean => { + return !!state && ['on', 'open'].includes(state); }; /** @@ -390,3 +400,53 @@ export const hasHAConnectionStateChanged = ( ): boolean => { return oldHass?.connected !== newHass?.connected; }; + +/** + * Subscribe to a HA trigger + * @param hass The HA object. + * @param callback The callback to call with the data. + * @param options Parameters to the trigger, see: + * https://www.home-assistant.io/docs/automation/trigger/#state-trigger + * @returns A callback to unsubscribe. + */ +export const subscribeToTrigger = async ( + hass: HomeAssistant, + callback: SubscriptionCallback, + options?: { + entityID?: string | string[]; + platform?: string; + topic?: string; + payload?: string; + valueTemplate?: string; + stateOnly?: boolean; + }, +): Promise => { + return await hass.connection.subscribeMessage(callback, { + type: 'subscribe_trigger', + trigger: { + ...(options?.platform && { platform: options.platform }), + ...(options?.entityID && { entity_id: options.entityID }), + ...(options?.topic && { topic: options.topic }), + ...(options?.payload && { payload: options.payload }), + ...(options?.valueTemplate && { value_template: options.valueTemplate }), + ...(options?.stateOnly && { + from: null, + to: null, + }), + }, + }); +}; + +/** + * Parse a state change trigger response. + * @param data The raw data. + * @returns A HAStateChangeFromTo object. + */ +export const parseStateChangeTrigger = (data: unknown): HAStateChangeFromTo | null => { + const parseResult = haStateChangeTriggerResponseSchema.safeParse(data); + if (!parseResult.success) { + console.warn('Ignoring unparseable HA state change', data); + return null; + } + return parseResult.data.variables.trigger; +}; diff --git a/src/utils/ha/types.ts b/src/utils/ha/types.ts new file mode 100644 index 00000000..d1c54943 --- /dev/null +++ b/src/utils/ha/types.ts @@ -0,0 +1,21 @@ +import { z } from 'zod'; + +export type SubscriptionUnsubscribe = () => Promise; +export type SubscriptionCallback = (data: unknown) => void; + +const haStateChangeSchema = z.object({ + entity_id: z.string(), + state: z.string(), +}); + +const haStateChangeFromToSchema = z.object({ + from_state: haStateChangeSchema, + to_state: haStateChangeSchema, +}); +export type HAStateChangeFromTo = z.infer; + +export const haStateChangeTriggerResponseSchema = z.object({ + variables: z.object({ + trigger: haStateChangeFromToSchema, + }), +}); diff --git a/src/utils/initializer/initializer.ts b/src/utils/initializer/initializer.ts index ef3ea8b7..3ab033a9 100644 --- a/src/utils/initializer/initializer.ts +++ b/src/utils/initializer/initializer.ts @@ -22,7 +22,7 @@ export class Initializer { ): Promise { const results = await allPromises( Object.entries(aspects), - async ([aspect, options]) => this.initializeIfNecessary(aspect, options), + async ([aspect, options]) => await this.initializeIfNecessary(aspect, options), ); return results.every(Boolean); } diff --git a/src/utils/media-to-view.ts b/src/utils/media-to-view.ts index 4383b29c..e940c7c4 100644 --- a/src/utils/media-to-view.ts +++ b/src/utils/media-to-view.ts @@ -27,6 +27,7 @@ export const changeViewToRecentEventsForCameraAndDependents = async ( eventsMediaType?: ClipsOrSnapshotsOrAll; targetView?: FrigateCardView; select?: ResultSelectType; + useCache?: boolean; }, ): Promise => { const cameraIDs = options?.allCameras @@ -52,6 +53,7 @@ export const changeViewToRecentEventsForCameraAndDependents = async ( { targetView: options?.targetView, select: options?.select, + useCache: options?.useCache, }, ) )?.dispatchChangeEvent(element); @@ -93,6 +95,7 @@ export const changeViewToRecentRecordingForCameraAndDependents = async ( allCameras?: boolean; targetView?: FrigateCardView; select?: ResultSelectType; + useCache?: boolean; }, ): Promise => { const cameraIDs = options?.allCameras @@ -120,6 +123,7 @@ export const changeViewToRecentRecordingForCameraAndDependents = async ( { targetView: options?.targetView, select: options?.select, + useCache: options?.useCache, }, ) )?.dispatchChangeEvent(element); @@ -147,6 +151,7 @@ export const executeMediaQueryForView = async ( targetView?: FrigateCardView; targetTime?: Date; select?: ResultSelectType; + useCache?: boolean; }, ): Promise => { const queries = query.getQueries(); @@ -154,7 +159,9 @@ export const executeMediaQueryForView = async ( return null; } - const mediaArray = await cameraManager.executeMediaQueries(queries); + const mediaArray = await cameraManager.executeMediaQueries(queries, { + useCache: options?.useCache, + }); if (!mediaArray) { return null; } @@ -194,6 +201,7 @@ export const executeMediaQueryForViewWithErrorDispatching = async ( targetView?: FrigateCardView; targetTime?: Date; select?: ResultSelectType; + useCache?: boolean; }, ): Promise => { try { @@ -202,6 +210,7 @@ export const executeMediaQueryForViewWithErrorDispatching = async ( targetView: options?.targetView, targetTime: options?.targetTime, select: options?.select, + useCache: options?.useCache, }); } catch (e: unknown) { errorToConsole(e as Error); diff --git a/tests/camera-manager/browse-media/camera.test.ts b/tests/camera-manager/browse-media/camera.test.ts new file mode 100644 index 00000000..c7905f24 --- /dev/null +++ b/tests/camera-manager/browse-media/camera.test.ts @@ -0,0 +1,37 @@ +import { describe, expect, it } from 'vitest'; +import { mock } from 'vitest-mock-extended'; +import { BrowseMediaCamera } from '../../../src/camera-manager/browse-media/camera'; +import { CameraManagerEngine } from '../../../src/camera-manager/engine'; +import { EntityRegistryManager } from '../../../src/utils/ha/entity-registry'; +import { Entity } from '../../../src/utils/ha/entity-registry/types'; +import { createCameraConfig, createHASS } from '../../test-utils'; + +describe('BrowseMediaCamera', () => { + describe('should initialize', () => { + it('without a camera_entity', async () => { + const camera = new BrowseMediaCamera( + createCameraConfig(), + mock(), + ); + + expect( + async () => await camera.initialize(createHASS(), mock()), + ).rejects.toThrowError(/Could not find camera entity/); + }); + + it('with a camera_entity', async () => { + const camera = new BrowseMediaCamera( + createCameraConfig({ + camera_entity: 'camera.foo', + }), + mock(), + ); + const entityRegistryManager = mock(); + const entity = mock(); + entityRegistryManager.getEntity.mockResolvedValue(entity); + + expect(await camera.initialize(createHASS(), entityRegistryManager)).toBe(camera); + expect(camera.getEntity()).toBe(entity); + }); + }); +}); diff --git a/tests/camera-manager/camera.test.ts b/tests/camera-manager/camera.test.ts index 358203d8..fc14557d 100644 --- a/tests/camera-manager/camera.test.ts +++ b/tests/camera-manager/camera.test.ts @@ -1,57 +1,170 @@ -import { describe, expect, it } from 'vitest'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { mock } from 'vitest-mock-extended'; import { Camera } from '../../src/camera-manager/camera.js'; import { GenericCameraManagerEngine } from '../../src/camera-manager/generic/engine-generic.js'; -import { createCameraCapabilities, createCameraConfig } from '../test-utils.js'; +import { EntityRegistryManager } from '../../src/utils/ha/entity-registry/index.js'; +import { + callHASubscribeMessageHandler, + createCameraCapabilities, + createCameraConfig, + createHASS, +} from '../test-utils.js'; describe('Camera', () => { it('should get config', async () => { const config = createCameraConfig(); - const camera = new Camera( - config, - new GenericCameraManagerEngine(), - createCameraCapabilities(), - ); + const camera = new Camera(config, new GenericCameraManagerEngine()); expect(camera.getConfig()).toBe(config); }); - it('should get capabilities', async () => { - const capabilities = createCameraCapabilities(); - const camera = new Camera( - createCameraConfig(), - new GenericCameraManagerEngine(), - capabilities, - ); - expect(camera.getCapabilities()).toBe(capabilities); + describe('should get capabilities', async () => { + it('when populated', async () => { + const capabilities = createCameraCapabilities(); + const camera = new Camera(createCameraConfig(), new GenericCameraManagerEngine(), { + capabilities: capabilities, + }); + expect(camera.getCapabilities()).toBe(capabilities); + }); + + it('when unpopulated', async () => { + const camera = new Camera(createCameraConfig(), new GenericCameraManagerEngine()); + expect(camera.getCapabilities()).toBeNull(); + }); }); it('should get engine', async () => { const engine = new GenericCameraManagerEngine(); - const camera = new Camera(createCameraConfig(), engine, createCameraCapabilities()); + const camera = new Camera(createCameraConfig(), engine); expect(camera.getEngine()).toBe(engine); }); it('should set and get id', async () => { - const config = createCameraConfig(); - const camera = new Camera( - config, - new GenericCameraManagerEngine(), - createCameraCapabilities(), - ); + const camera = new Camera(createCameraConfig(), new GenericCameraManagerEngine()); camera.setID('foo'); expect(camera.getID()).toBe('foo'); expect(camera.getConfig().id).toBe('foo'); }); it('should throw without id', async () => { - const config = createCameraConfig(); - const camera = new Camera( - config, - new GenericCameraManagerEngine(), - createCameraCapabilities(), - ); + const camera = new Camera(createCameraConfig(), new GenericCameraManagerEngine()); expect(() => camera.getID()).toThrowError( 'Could not determine camera id for the following ' + "camera, may need to set 'id' parameter manually", ); }); + + it('should initialize and destroy', async () => { + const camera = new Camera( + createCameraConfig({ + triggers: { + entities: ['camera.foo'], + }, + }), + new GenericCameraManagerEngine(), + ); + const hass = createHASS(); + const unsubcribeCallback = vi.fn(); + + vi.mocked(hass.connection.subscribeMessage).mockResolvedValue(unsubcribeCallback); + + await camera.initialize(hass, mock()); + + expect(hass.connection.subscribeMessage).toBeCalledWith( + expect.anything(), + expect.objectContaining({ + type: 'subscribe_trigger', + trigger: { + entity_id: ['camera.foo'], + platform: 'state', + from: null, + to: null, + }, + }), + ); + expect(unsubcribeCallback).not.toBeCalled(); + + await camera.destroy(); + expect(unsubcribeCallback).toBeCalled(); + }); + + it('should not subscribe without trigger entities', async () => { + const camera = new Camera(createCameraConfig(), new GenericCameraManagerEngine()); + const hass = createHASS(); + + await camera.initialize(hass, mock()); + expect(hass.connection.subscribeMessage).not.toBeCalled(); + }); + + describe('should handle trigger state changes', () => { + beforeEach(() => { + vi.restoreAllMocks(); + }); + + it('when malformed', async () => { + vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const eventCallback = vi.fn(); + const camera = new Camera( + createCameraConfig({ + triggers: { + entities: ['camera.foo'], + }, + }), + new GenericCameraManagerEngine(), + { eventCallback: eventCallback }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler(hass, 'MALFORMED_DATA'); + + expect(eventCallback).not.toBeCalled(); + }); + + it.each([ + ['off' as const, 'on' as const, 'new' as const], + ['on' as const, 'off' as const, 'end' as const], + ])( + 'from %s to %s', + async (stateFrom: string, stateTo: string, eventType: 'new' | 'end') => { + vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const eventCallback = vi.fn(); + const camera = new Camera( + createCameraConfig({ + id: 'camera_1', + triggers: { + entities: ['binary_sensor.foo'], + }, + }), + new GenericCameraManagerEngine(), + { eventCallback: eventCallback }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler(hass, { + variables: { + trigger: { + from_state: { + entity_id: 'binary_sensor.foo', + state: stateFrom, + }, + to_state: { + entity_id: 'binary_sensor.foo', + state: stateTo, + }, + }, + }, + }); + + expect(eventCallback).toBeCalledWith({ + cameraID: 'camera_1', + type: eventType, + }); + }, + ); + }); }); diff --git a/tests/camera-manager/frigate/camera.test.ts b/tests/camera-manager/frigate/camera.test.ts new file mode 100644 index 00000000..f9698fcf --- /dev/null +++ b/tests/camera-manager/frigate/camera.test.ts @@ -0,0 +1,965 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { mock } from 'vitest-mock-extended'; +import { CameraManagerEngine } from '../../../src/camera-manager/engine'; +import { FrigateCamera } from '../../../src/camera-manager/frigate/camera'; +import { getPTZInfo } from '../../../src/camera-manager/frigate/requests'; +import { + FrigateEventChange, + FrigateEventChangeTriggerResponse, + FrigateEventChangeType, +} from '../../../src/camera-manager/frigate/types'; +import { CameraTriggerEventType } from '../../../src/config/types'; +import { EntityRegistryManager } from '../../../src/utils/ha/entity-registry'; +import { Entity } from '../../../src/utils/ha/entity-registry/types'; +import { + callHASubscribeMessageHandler, + createCameraConfig, + createHASS, + createRegistryEntity, +} from '../../test-utils'; + +vi.mock('../../../src/camera-manager/frigate/requests'); + +const createFrigateEventChangeTrigger = ( + type: FrigateEventChangeType, + before: FrigateEventChange, + after: FrigateEventChange, +): FrigateEventChangeTriggerResponse => { + return { + variables: { + trigger: { + payload_json: { + before: before, + after: after, + type: type, + }, + }, + }, + }; +}; + +describe('FrigateCamera', () => { + beforeEach(() => { + vi.clearAllMocks(); + vi.mocked(getPTZInfo).mockResolvedValue({}); + }); + + describe('should initialize config', () => { + describe('should detect camera name', () => { + it('without a camera_entity', async () => { + const config = createCameraConfig(); + const camera = new FrigateCamera(config, mock()); + const beforeConfig = { ...config }; + + await camera.initialize(createHASS(), mock()); + + expect(beforeConfig).toEqual(camera.getConfig()); + }); + + it('with a missing camera_entity', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.not_here', + }), + mock(), + ); + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockRejectedValue(null); + + expect( + async () => await camera.initialize(createHASS(), entityRegistryManager), + ).rejects.toThrowError(/Could not find camera entity/); + }); + + it('with a valid camera_entity', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.front_door', + }), + mock(), + ); + const entityRegistryManager = mock(); + const entity = createRegistryEntity({ + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:camera:fnt_dr', + platform: 'frigate', + }); + entityRegistryManager.getEntity.mockResolvedValue(entity); + + await camera.initialize(createHASS(), entityRegistryManager); + + expect(camera.getConfig().frigate.camera_name).toBe('fnt_dr'); + }); + + it('with a camera_entity without camera_name match', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.front_door', + }), + mock(), + ); + const entityRegistryManager = mock(); + const entity = createRegistryEntity({ + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:WRONG:fnt_dr', + platform: 'frigate', + }); + entityRegistryManager.getEntity.mockResolvedValue(entity); + + await camera.initialize(createHASS(), entityRegistryManager); + + expect(camera.getConfig().frigate.camera_name).toBeUndefined(); + }); + + it('with a camera_entity without platform match', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.front_door', + }), + mock(), + ); + const entityRegistryManager = mock(); + const entity = createRegistryEntity({ + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:camera:fnt_dr', + platform: 'something_else', + }); + entityRegistryManager.getEntity.mockResolvedValue(entity); + + await camera.initialize(createHASS(), entityRegistryManager); + + expect(camera.getConfig().frigate.camera_name).toBeUndefined(); + }); + }); + }); + + describe('should detect capabilities', () => { + const nonBirdseyeBaseCapabilities = { + canFavoriteEvents: true, + canFavoriteRecordings: true, + canSeek: true, + supportsClips: true, + supportsSnapshots: true, + supportsRecordings: true, + supportsTimeline: true, + }; + + it('basic non-birdseye', async () => { + const camera = new FrigateCamera( + createCameraConfig(), + mock(), + ); + + await camera.initialize(createHASS(), mock()); + + expect(camera.getCapabilities()).toEqual(nonBirdseyeBaseCapabilities); + }); + + it('basic birdseye', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'birdseye', + }, + }), + mock(), + ); + + await camera.initialize(createHASS(), mock()); + + expect(camera.getCapabilities()).toEqual({ + ...nonBirdseyeBaseCapabilities, + canFavoriteEvents: false, + canFavoriteRecordings: false, + supportsClips: false, + supportsSnapshots: false, + supportsRecordings: false, + supportsTimeline: false, + }); + }); + + describe('with ptz', () => { + it('when getPTZInfo call fails', async () => { + const consoleSpy = vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + }), + mock(), + ); + vi.mocked(getPTZInfo).mockRejectedValue(new Error()); + await camera.initialize(createHASS(), mock()); + + expect(camera.getCapabilities()).toEqual({ + ...nonBirdseyeBaseCapabilities, + }); + expect(consoleSpy).toBeCalled(); + }); + + it('when getPTZInfo call succeeds with continuous motion', async () => { + vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + }), + mock(), + ); + vi.mocked(getPTZInfo).mockResolvedValue({ + features: ['pt', 'zoom'], + name: 'front_door', + presets: ['preset01'], + }); + await camera.initialize(createHASS(), mock()); + + expect(camera.getCapabilities()).toEqual({ + ...nonBirdseyeBaseCapabilities, + ptz: { + panTilt: ['continuous'], + zoom: ['continuous'], + presets: ['preset01'], + }, + }); + }); + + it('when getPTZInfo call succeeds with relative motion', async () => { + vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + }), + mock(), + ); + vi.mocked(getPTZInfo).mockResolvedValue({ + features: ['pt-r', 'zoom-r'], + name: 'front_door', + presets: ['preset01'], + }); + await camera.initialize(createHASS(), mock()); + + expect(camera.getCapabilities()).toEqual({ + ...nonBirdseyeBaseCapabilities, + ptz: { + panTilt: ['relative'], + zoom: ['relative'], + presets: ['preset01'], + }, + }); + }); + }); + }); + + describe('should handle events', () => { + it('should subscribe', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + client_id: 'CLIENT_ID', + camera_name: 'CAMERA', + }, + }), + mock(), + ); + const hass = createHASS(); + + await camera.initialize(hass, mock()); + + expect(hass.connection.subscribeMessage).toBeCalledWith(expect.anything(), { + type: 'subscribe_trigger', + trigger: { + platform: 'mqtt', + topic: `CLIENT_ID/events`, + payload: 'CAMERA', + value_template: '{{ value_json.after.camera }}', + }, + }); + }); + + it('should not subscribe with no trigger events', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + client_id: 'CLIENT_ID', + camera_name: 'CAMERA', + }, + triggers: { + events: [], + }, + }), + mock(), + ); + const hass = createHASS(); + + await camera.initialize(hass, mock()); + + expect(hass.connection.subscribeMessage).not.toBeCalled(); + }); + + it('should not subscribe with no camera name', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + client_id: 'CLIENT_ID', + }, + }), + mock(), + ); + const hass = createHASS(); + + await camera.initialize(hass, mock()); + + expect(hass.connection.subscribeMessage).not.toBeCalled(); + }); + + it('should unsubscribe on destroy', async () => { + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { camera_name: 'front_door' }, + }), + mock(), + ); + const hass = createHASS(); + const unsubscribeCallback = vi.fn(); + vi.mocked(hass.connection.subscribeMessage).mockResolvedValue(unsubscribeCallback); + + await camera.initialize(hass, mock()); + expect(unsubscribeCallback).not.toBeCalled(); + + await camera.destroy(); + expect(unsubscribeCallback).toBeCalled(); + }); + + describe('should call handler correctly', () => { + it('with malformed Frigate event', async () => { + const consoleSpy = vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { camera_name: 'front_door' }, + }), + mock(), + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler(hass, 'GARBAGE'); + + expect(consoleSpy).toBeCalledWith( + 'Ignoring unparseable Frigate event', + 'GARBAGE', + ); + }); + + it('with wrong camera', async () => { + const eventCallback = vi.fn(); + const camera = new FrigateCamera( + createCameraConfig({ + id: 'CAMERA_1', + frigate: { + camera_name: 'camera.front_door', + }, + }), + mock(), + { + eventCallback: eventCallback, + }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler( + hass, + createFrigateEventChangeTrigger( + 'new', + { + camera: 'camera.back_door', + snapshot: null, + has_clip: false, + has_snapshot: false, + label: 'person', + current_zones: [], + }, + { + camera: 'camera.back_door', + snapshot: null, + has_clip: false, + has_snapshot: true, + label: 'person', + current_zones: [], + }, + ), + ); + + expect(eventCallback).not.toBeCalled(); + }); + + describe('should handle event type correctly', () => { + it.each([ + [ + ['events' as const, 'snapshots' as const, 'clips' as const], + false, + false, + true, + ], + [ + ['events' as const, 'snapshots' as const, 'clips' as const], + false, + true, + true, + ], + [ + ['events' as const, 'snapshots' as const, 'clips' as const], + true, + false, + true, + ], + [ + ['events' as const, 'snapshots' as const, 'clips' as const], + true, + true, + true, + ], + + [['events' as const, 'snapshots' as const], false, false, true], + [['events' as const, 'snapshots' as const], false, true, true], + [['events' as const, 'snapshots' as const], true, false, true], + [['events' as const, 'snapshots' as const], true, true, true], + + [['events' as const, 'clips' as const], false, false, true], + [['events' as const, 'clips' as const], false, true, true], + [['events' as const, 'clips' as const], true, false, true], + [['events' as const, 'clips' as const], true, true, true], + + [['events' as const], false, false, true], + [['events' as const], false, true, true], + [['events' as const], true, false, true], + [['events' as const], true, true, true], + + [['snapshots' as const, 'clips' as const], false, false, false], + [['snapshots' as const, 'clips' as const], false, true, true], + [['snapshots' as const, 'clips' as const], true, false, true], + [['snapshots' as const, 'clips' as const], true, true, true], + + [['snapshots' as const], false, false, false], + [['snapshots' as const], false, true, false], + [['snapshots' as const], true, false, true], + [['snapshots' as const], true, true, true], + + [['clips' as const], false, false, false], + [['clips' as const], false, true, true], + [['clips' as const], true, false, false], + [['clips' as const], true, true, true], + ])( + 'with events %s when snapshot %s and clip %s', + async ( + events: CameraTriggerEventType[], + hasSnapshot: boolean, + hasClip: boolean, + call: boolean, + ) => { + const eventCallback = vi.fn(); + const camera = new FrigateCamera( + createCameraConfig({ + id: 'CAMERA_1', + frigate: { + camera_name: 'camera.front_door', + }, + triggers: { + events: events, + }, + }), + mock(), + { + eventCallback: eventCallback, + }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler( + hass, + createFrigateEventChangeTrigger( + 'new', + { + camera: 'camera.front_door', + snapshot: null, + has_clip: false, + has_snapshot: false, + label: 'person', + current_zones: [], + }, + { + camera: 'camera.front_door', + snapshot: null, + has_clip: hasClip, + has_snapshot: hasSnapshot, + label: 'person', + current_zones: [], + }, + ), + ); + + if (call) { + expect(eventCallback).toBeCalledWith({ + type: 'new', + cameraID: 'CAMERA_1', + clip: hasClip && events.includes('clips'), + snapshot: hasSnapshot && events.includes('snapshots'), + fidelity: 'high', + }); + } else { + expect(eventCallback).not.toBeCalled(); + } + }, + ); + }); + + describe('should handle zones correctly', () => { + it.each([ + ['has no zone', [], false], + ['has mismatched zone', ['fence'], false], + ['has matching zone', ['front_steps'], true], + ])('%s', async (_name: string, zones: string[], call: boolean) => { + const eventCallback = vi.fn(); + const camera = new FrigateCamera( + createCameraConfig({ + id: 'CAMERA_1', + frigate: { + camera_name: 'camera.front_door', + zones: ['front_steps'], + }, + }), + mock(), + { + eventCallback: eventCallback, + }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler( + hass, + createFrigateEventChangeTrigger( + 'new', + { + camera: 'camera.front_door', + snapshot: null, + has_clip: false, + has_snapshot: false, + label: 'person', + current_zones: [], + }, + { + camera: 'camera.front_door', + snapshot: null, + has_clip: false, + has_snapshot: true, + label: 'person', + current_zones: zones, + }, + ), + ); + + expect(eventCallback).toHaveBeenCalledTimes(call ? 1 : 0); + }); + }); + + describe('should handle labels correctly', () => { + it.each([ + ['has mismatched label', 'car', false], + ['has matching label', 'person', true], + ])('%s', async (_name: string, label: string, call: boolean) => { + const eventCallback = vi.fn(); + const camera = new FrigateCamera( + createCameraConfig({ + id: 'CAMERA_1', + frigate: { + camera_name: 'camera.front_door', + labels: ['person'], + }, + }), + mock(), + { + eventCallback: eventCallback, + }, + ); + + const hass = createHASS(); + await camera.initialize(hass, mock()); + + callHASubscribeMessageHandler( + hass, + createFrigateEventChangeTrigger( + 'new', + { + camera: 'camera.front_door', + snapshot: null, + has_clip: false, + has_snapshot: false, + // Even new events appear to have the event label in the + // 'before' dictionary. + label: label, + current_zones: [], + }, + { + camera: 'camera.front_door', + snapshot: null, + has_clip: false, + has_snapshot: true, + label: label, + current_zones: [], + }, + ), + ); + + expect(eventCallback).toHaveBeenCalledTimes(call ? 1 : 0); + }); + }); + }); + }); + + describe('should handle triggers', () => { + const cameraEntity: Partial = { + config_entry_id: 'config_entry_id', + }; + + const occupancySensorEntityAll: Partial = { + config_entry_id: 'config_entry_id', + disabled_by: null, + entity_id: 'binary_sensor.foo', + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:occupancy_sensor:front_door_all', + }; + + const motionSensorEntity: Partial = { + config_entry_id: 'config_entry_id', + disabled_by: null, + entity_id: 'binary_sensor.foo', + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:motion_sensor:front_door', + }; + + describe('should detect motion sensor', () => { + it('without a camera name', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(motionSensorEntity), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + triggers: { + motion: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual([]); + }); + + it('with camera entity and name', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(motionSensorEntity), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.front_door', + frigate: { + camera_name: 'front_door', + }, + triggers: { + motion: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual(['binary_sensor.foo']); + }); + + it('with matching entity', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(motionSensorEntity), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + triggers: { + motion: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual(['binary_sensor.foo']); + }); + + it('without matching entity', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + triggers: { + motion: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual([]); + }); + }); + + describe('should detect occupancy sensor', () => { + it('without a camera name', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(occupancySensorEntityAll), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual([]); + }); + + it('without a camera name but with occupancy trigger', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(occupancySensorEntityAll), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual([]); + }); + + it('with matching entity', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity(occupancySensorEntityAll), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual(['binary_sensor.foo']); + }); + + it('without matching entity', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + }, + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual([]); + }); + + it('with zones', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity({ + ...occupancySensorEntityAll, + unique_id: '8c4e19d258359e82bc0cf9d47b021c46:occupancy_sensor:zone_all', + }), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + zones: ['zone'], + }, + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual(['binary_sensor.foo']); + }); + + it('with labels', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity({ + ...occupancySensorEntityAll, + unique_id: + '8c4e19d258359e82bc0cf9d47b021c46:occupancy_sensor:front_door_car', + }), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + frigate: { + camera_name: 'front_door', + labels: ['car'], + }, + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + expect(camera.getConfig().triggers.entities).toEqual(['binary_sensor.foo']); + }); + }); + + it('should filter entities with correct function', async () => { + const entityRegistryManager = mock(); + entityRegistryManager.getEntity.mockResolvedValue( + createRegistryEntity(cameraEntity), + ); + entityRegistryManager.getMatchingEntities.mockResolvedValue([ + createRegistryEntity({ + ...occupancySensorEntityAll, + }), + ]); + const camera = new FrigateCamera( + createCameraConfig({ + camera_entity: 'camera.foo', + triggers: { + occupancy: true, + }, + }), + mock(), + ); + const hass = createHASS(); + await camera.initialize(hass, entityRegistryManager); + + const filterFunc = entityRegistryManager.getMatchingEntities.mock.calls[0][1]; + + expect( + filterFunc( + createRegistryEntity({ + config_entry_id: cameraEntity.config_entry_id, + disabled_by: '', + entity_id: 'binary_sensor.foo', + }), + ), + ).toBeTruthy(); + + expect( + filterFunc( + createRegistryEntity({ + config_entry_id: cameraEntity.config_entry_id, + disabled_by: 'user', + entity_id: 'binary_sensor.foo', + }), + ), + ).toBeFalsy(); + + expect( + filterFunc( + createRegistryEntity({ + config_entry_id: cameraEntity.config_entry_id, + disabled_by: '', + entity_id: 'camera.is_not_a_binary_sensor', + }), + ), + ).toBeFalsy(); + + expect( + filterFunc( + createRegistryEntity({ + config_entry_id: 'not_a_matching_config_entry_id', + disabled_by: '', + entity_id: 'binary_sensor.foo', + }), + ), + ).toBeFalsy(); + }); + }); +}); diff --git a/tests/camera-manager/generic/engine-generic.test.ts b/tests/camera-manager/generic/engine-generic.test.ts index c023c808..f0edd57e 100644 --- a/tests/camera-manager/generic/engine-generic.test.ts +++ b/tests/camera-manager/generic/engine-generic.test.ts @@ -27,7 +27,7 @@ describe('GenericCameraManagerEngine', () => { it('should initialize camera', async () => { const config = createGenericCameraConfig(); - const camera = await createEngine().initializeCamera( + const camera = await createEngine().createCamera( createHASS(), mock(), config, diff --git a/tests/camera-manager/manager.test.ts b/tests/camera-manager/manager.test.ts new file mode 100644 index 00000000..642a11e2 --- /dev/null +++ b/tests/camera-manager/manager.test.ts @@ -0,0 +1,1229 @@ +import add from 'date-fns/add'; +import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; +import { mock } from 'vitest-mock-extended'; +import { Camera } from '../../src/camera-manager/camera'; +import { CameraManagerEngine } from '../../src/camera-manager/engine'; +import { CameraManagerEngineFactory } from '../../src/camera-manager/engine-factory.js'; +import { + CameraManager, + QueryClassifier, + QueryResultClassifier, +} from '../../src/camera-manager/manager'; +import { CameraManagerStore } from '../../src/camera-manager/store'; +import { + CameraEndpoint, + CameraEndpoints, + CameraEndpointsContext, + CameraEvent, + CameraManagerCameraCapabilities, + CameraManagerCameraMetadata, + CameraManagerMediaCapabilities, + Engine, + EventQuery, + EventQueryResults, + MediaMetadata, + QueryResults, + QueryResultsType, + QueryType, +} from '../../src/camera-manager/types'; +import { sortMedia } from '../../src/camera-manager/utils'; +import { CardController } from '../../src/card-controller/controller'; +import { CameraConfig } from '../../src/config/types'; +import { ViewMedia } from '../../src/view/media'; +import { + TestViewMedia, + createCamera, + createCameraCapabilities, + createCameraConfig, + createCardAPI, + createConfig, + createHASS, + generateViewMediaArray, +} from '../test-utils'; + +describe('QueryClassifier', async () => { + it('should classify event query', async () => { + expect(QueryClassifier.isEventQuery({ type: QueryType.Event })).toBeTruthy(); + expect(QueryClassifier.isEventQuery({ type: QueryType.Recording })).toBeFalsy(); + expect( + QueryClassifier.isEventQuery({ type: QueryType.RecordingSegments }), + ).toBeFalsy(); + expect(QueryClassifier.isEventQuery({ type: QueryType.MediaMetadata })).toBeFalsy(); + }); + it('should classify recording query', async () => { + expect(QueryClassifier.isRecordingQuery({ type: QueryType.Event })).toBeFalsy(); + expect(QueryClassifier.isRecordingQuery({ type: QueryType.Recording })).toBeTruthy(); + expect( + QueryClassifier.isRecordingQuery({ type: QueryType.RecordingSegments }), + ).toBeFalsy(); + expect( + QueryClassifier.isRecordingQuery({ type: QueryType.MediaMetadata }), + ).toBeFalsy(); + }); + it('should classify recording segments query', async () => { + expect( + QueryClassifier.isRecordingSegmentsQuery({ type: QueryType.Event }), + ).toBeFalsy(); + expect( + QueryClassifier.isRecordingSegmentsQuery({ type: QueryType.Recording }), + ).toBeFalsy(); + expect( + QueryClassifier.isRecordingSegmentsQuery({ type: QueryType.RecordingSegments }), + ).toBeTruthy(); + expect( + QueryClassifier.isRecordingSegmentsQuery({ type: QueryType.MediaMetadata }), + ).toBeFalsy(); + }); + it('should classify media metadata query', async () => { + expect(QueryClassifier.isMediaMetadataQuery({ type: QueryType.Event })).toBeFalsy(); + expect( + QueryClassifier.isMediaMetadataQuery({ type: QueryType.Recording }), + ).toBeFalsy(); + expect( + QueryClassifier.isMediaMetadataQuery({ type: QueryType.RecordingSegments }), + ).toBeFalsy(); + expect( + QueryClassifier.isMediaMetadataQuery({ type: QueryType.MediaMetadata }), + ).toBeTruthy(); + }); +}); + +describe('QueryResultClassifier', async () => { + const createResults = (type: Partial): QueryResults => { + return { + type: type, + engine: Engine.Generic, + }; + }; + + it('should classify event query result', async () => { + expect( + QueryResultClassifier.isEventQueryResult(createResults(QueryResultsType.Event)), + ).toBeTruthy(); + expect( + QueryResultClassifier.isEventQueryResult( + createResults(QueryResultsType.Recording), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isEventQueryResult( + createResults(QueryResultsType.RecordingSegments), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isEventQueryResult( + createResults(QueryResultsType.MediaMetadata), + ), + ).toBeFalsy(); + }); + it('should classify recording query result', async () => { + expect( + QueryResultClassifier.isRecordingQueryResult( + createResults(QueryResultsType.Event), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isRecordingQueryResult( + createResults(QueryResultsType.Recording), + ), + ).toBeTruthy(); + expect( + QueryResultClassifier.isRecordingQueryResult( + createResults(QueryResultsType.RecordingSegments), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isRecordingQueryResult( + createResults(QueryResultsType.MediaMetadata), + ), + ).toBeFalsy(); + }); + it('should classify recording segments query result', async () => { + expect( + QueryResultClassifier.isRecordingSegmentsQueryResult( + createResults(QueryResultsType.Event), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isRecordingSegmentsQueryResult( + createResults(QueryResultsType.Recording), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isRecordingSegmentsQueryResult( + createResults(QueryResultsType.RecordingSegments), + ), + ).toBeTruthy(); + expect( + QueryResultClassifier.isRecordingSegmentsQueryResult( + createResults(QueryResultsType.MediaMetadata), + ), + ).toBeFalsy(); + }); + it('should classify media metadata query result', async () => { + expect( + QueryResultClassifier.isMediaMetadataQueryResult( + createResults(QueryResultsType.Event), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isMediaMetadataQueryResult( + createResults(QueryResultsType.Recording), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isMediaMetadataQueryResult( + createResults(QueryResultsType.RecordingSegments), + ), + ).toBeFalsy(); + expect( + QueryResultClassifier.isMediaMetadataQueryResult( + createResults(QueryResultsType.MediaMetadata), + ), + ).toBeTruthy(); + }); +}); + +describe('CameraManager', async () => { + const baseCameraConfig = { + id: 'id', + camera_entity: 'camera.foo', + engine: 'generic', + }; + + const baseEventQuery: EventQuery = { + type: QueryType.Event as const, + cameraIDs: new Set(['id']), + }; + + const baseEventQueryResults: EventQueryResults = { + type: QueryResultsType.Event as const, + engine: Engine.Generic, + }; + + const baseRecordingQuery = { + type: QueryType.Recording as const, + cameraIDs: new Set(['id']), + }; + + const baseRecordingQueryResults = { + type: QueryResultsType.Recording as const, + engine: Engine.Generic, + }; + + const createCameraManager = ( + api: CardController, + engine?: CameraManagerEngine, + cameras: { + config?: CameraConfig; + engineType?: Engine | null; + capabilties?: CameraManagerCameraCapabilities; + }[] = [{}], + factory?: CameraManagerEngineFactory, + ): CameraManager => { + const camerasConfig = cameras?.map( + (camera) => camera.config ?? createCameraConfig({ engine: 'generic' }), + ); + vi.mocked(api.getConfigManager().getConfig).mockReturnValue( + createConfig({ + cameras: camerasConfig, + }), + ); + + const mockFactory = factory ?? mock(); + const mockEngine = engine ?? mock(); + vi.mocked(mockFactory.createEngine).mockResolvedValueOnce(mockEngine); + + for (const camera of cameras ?? []) { + const engineType = + camera.engineType === undefined ? Engine.Generic : camera.engineType; + if (engineType) { + vi.mocked(mockEngine.createCamera).mockResolvedValueOnce( + createCamera( + camera.config ?? createCameraConfig(baseCameraConfig), + mockEngine, + camera.capabilties ?? createCameraCapabilities(), + ), + ); + } + vi.mocked(mockFactory.getEngineForCamera).mockResolvedValueOnce(engineType); + } + + return new CameraManager(api, { factory: mockFactory }); + }; + + it('should reset', async () => { + const store = new CameraManagerStore(); + store.addCamera( + new Camera(createCameraConfig({ id: 'id' }), mock()), + ); + const manager = new CameraManager(createCardAPI(), { store: store }); + + expect(manager.getStore().getCameraCount()).toBe(1); + await manager.reset(); + expect(manager.getStore().getCameraCount()).toBe(0); + }); + + describe('should initialize cameras from config', () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + const manager = createCameraManager(api); + + await manager.initializeCamerasFromConfig(); + expect(manager.getStore().getCameraCount()).toBe(1); + expect(manager.isInitialized()).toBeTruthy(); + }); + + it('without hass', async () => { + const manager = createCameraManager(createCardAPI()); + + await manager.initializeCamerasFromConfig(); + expect(manager.getStore().getCameraCount()).toBe(0); + }); + + it('without a config', async () => { + const api = createCardAPI(); + vi.mocked(api.getConfigManager().getConfig).mockReturnValue(null); + + const manager = createCameraManager(api); + + await manager.initializeCamerasFromConfig(); + expect(manager.getStore().getCameraCount()).toBe(0); + }); + + it('without an id', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, mock(), [ + { + config: createCameraConfig({ + // No id. + engine: 'generic', + }), + }, + ]); + expect(await manager.initializeCamerasFromConfig()).toBeFalsy(); + expect(api.getMessageManager().setErrorIfHigherPriority).toBeCalledWith( + new Error( + 'Could not determine camera id for the following camera, ' + + "may need to set 'id' parameter manually", + ), + ); + }); + + it('with a duplicate id', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const cameraConfig = createCameraConfig({ + id: 'DUPLICATE', + engine: 'generic', + }); + const manager = createCameraManager(api, mock(), [ + { + config: cameraConfig, + }, + { + config: cameraConfig, + }, + ]); + expect(await manager.initializeCamerasFromConfig()).toBeFalsy(); + expect(api.getMessageManager().setErrorIfHigherPriority).toBeCalledWith( + new Error( + 'Duplicate Frigate camera id for the following camera, ' + + "use the 'id' parameter to uniquely identify cameras", + ), + ); + }); + + it('with no engine', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, mock(), [ + { + config: createCameraConfig({ + id: 'id', + }), + engineType: null, + }, + ]); + expect(await manager.initializeCamerasFromConfig()).toBeFalsy(); + expect(api.getMessageManager().setErrorIfHigherPriority).toBeCalledWith( + new Error('Could not determine suitable engine for camera'), + ); + }); + + it('with no cameras', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, mock(), []); + expect(await manager.initializeCamerasFromConfig()).toBeFalsy(); + expect(api.getMessageManager().setErrorIfHigherPriority).toBeCalledWith( + new Error( + 'No visible cameras found, you must configure at least one non-hidden camera', + ), + ); + }); + + it('should pass events to triggers manager', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const factory = mock(); + const manager = createCameraManager( + api, + mock(), + [{}], + factory, + ); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + const triggerCallback = factory.createEngine.mock.calls[0][1]; + + const cameraEvent: CameraEvent = { + cameraID: 'camera', + type: 'new', + }; + triggerCallback?.(cameraEvent); + expect(api.getTriggersManager().handleCameraEvent).toBeCalledWith(cameraEvent); + }); + + describe('should fetch entity list when required', () => { + it('with entity based trigger', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, mock(), [ + { + config: createCameraConfig({ + ...baseCameraConfig, + triggers: { + occupancy: true, + }, + }), + }, + ]); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + expect(api.getEntityRegistryManager().fetchEntityList).toBeCalled(); + }); + + it('without entity based trigger', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + expect(api.getEntityRegistryManager().fetchEntityList).not.toBeCalled(); + }); + }); + + describe('generate default queries', () => { + it.each([ + [ + QueryType.Event as const, + 'generateDefaultEventQuery', + 'generateDefaultEventQueries', + ], + [ + QueryType.Recording as const, + 'generateDefaultRecordingQuery', + 'generateDefaultRecordingQueries', + ], + [ + QueryType.RecordingSegments as const, + 'generateDefaultRecordingSegmentsQuery', + 'generateDefaultRecordingSegmentsQueries', + ], + ])( + 'basic %s', + async ( + queryType: string, + engineMethodName: string, + managerMethodName: string, + ) => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const queries = [{ type: queryType, cameraIDs: new Set(['id']) }]; + engine[engineMethodName].mockReturnValue(queries); + expect(manager[managerMethodName]('id')).toEqual(queries); + }, + ); + + it('without cameras', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, mock(), []); + + expect(manager.generateDefaultEventQueries('not_a_camera')).toBeNull(); + }); + + it('without queries', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + engine.generateDefaultEventQuery.mockReturnValue(null); + expect(manager.generateDefaultEventQueries('id')).toBeNull(); + }); + }); + }); + + describe('should get media metadata', () => { + const query = { + type: QueryType.MediaMetadata as const, + cameraIDs: new Set('id'), + }; + + it('with nothing', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const queryResults = { + type: QueryResultsType.MediaMetadata as const, + engine: Engine.Generic, + metadata: {}, + }; + + engine.getMediaMetadata.mockResolvedValue(new Map([[query, queryResults]])); + expect(await manager.getMediaMetadata()).toBeNull(); + }); + + it.each([['days'], ['tags'], ['where'], ['what']])( + 'with %s', + async (metadataType: string) => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const metadata: MediaMetadata = { + [metadataType]: new Set(['data']), + }; + const queryResults = { + type: QueryResultsType.MediaMetadata as const, + engine: Engine.Generic, + metadata: metadata, + }; + + engine.getMediaMetadata.mockResolvedValue(new Map([[query, queryResults]])); + expect(await manager.getMediaMetadata()).toEqual(metadata); + }, + ); + }); + + describe('should get events', () => { + it('without hass', async () => { + const manager = createCameraManager(createCardAPI()); + expect(await manager.getEvents(baseEventQuery)).toEqual(new Map()); + }); + + it('without cameras', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const manager = createCameraManager(api); + expect(await manager.getEvents(baseEventQuery)).toEqual(new Map()); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const engineOptions = {}; + const results = new Map([[baseEventQuery, baseEventQueryResults]]); + engine.getEvents.mockResolvedValue(results); + expect(await manager.getEvents(baseEventQuery, engineOptions)).toEqual(results); + expect(engine.getEvents).toBeCalledWith( + hass, + expect.anything(), + baseEventQuery, + engineOptions, + ); + }); + }); + + describe('should get recordings', () => { + it('successfully', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const engineOptions = {}; + const results = new Map([[baseRecordingQuery, baseRecordingQueryResults]]); + engine.getRecordings.mockResolvedValue(results); + expect(await manager.getRecordings(baseRecordingQuery, engineOptions)).toEqual( + results, + ); + }); + }); + + describe('should get recording segments', () => { + const query = { + type: QueryType.RecordingSegments as const, + cameraIDs: new Set(['id']), + start: new Date(), + end: new Date(), + }; + + const queryResults = { + type: QueryResultsType.RecordingSegments as const, + engine: Engine.Generic, + segments: [], + }; + + it('successfully', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const engineOptions = {}; + const results = new Map([[query, queryResults]]); + engine.getRecordingSegments.mockResolvedValue(results); + expect(await manager.getRecordingSegments(query, engineOptions)).toEqual(results); + }); + }); + + describe('should execute media queries', () => { + it('events', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const results = new Map([[baseEventQuery, baseEventQueryResults]]); + engine.getEvents.mockResolvedValue(results); + const media = sortMedia(generateViewMediaArray({ count: 5 })); + engine.generateMediaFromEvents.mockReturnValue(media); + + expect(await manager.executeMediaQueries([baseEventQuery])).toEqual(media); + }); + + it('no converted media', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const results = new Map([[baseEventQuery, baseEventQueryResults]]); + engine.getEvents.mockResolvedValue(results); + engine.generateMediaFromEvents.mockReturnValue(null); + + expect(await manager.executeMediaQueries([baseEventQuery])).toEqual([]); + }); + + it('without matching camera engine during conversion', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const results = new Map([ + [baseEventQuery, { ...baseEventQueryResults, engine: Engine.MotionEye }], + ]); + engine.getEvents.mockResolvedValue(results); + + expect(await manager.executeMediaQueries([baseEventQuery])).toEqual([]); + }); + + it('recordings', async () => { + const api = createCardAPI(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const results = new Map([[baseRecordingQuery, baseRecordingQueryResults]]); + engine.getRecordings.mockResolvedValue(results); + const media = sortMedia(generateViewMediaArray({ count: 5 })); + engine.generateMediaFromRecordings.mockReturnValue(media); + + expect(await manager.executeMediaQueries([baseRecordingQuery])).toEqual(media); + }); + + it('without hass', async () => { + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(createCardAPI(), engine); + const results = new Map([[baseEventQuery, baseEventQueryResults]]); + engine.getEvents.mockResolvedValue(results); + + expect(await manager.executeMediaQueries([baseEventQuery])).toEqual([]); + }); + }); + + describe('should extend media queries', () => { + const dateBase = new Date('2024-03-01T20:01:00'); + const mediaTwoCameras = generateViewMediaArray({ count: 5 }); + const mediaMixedStart: ViewMedia[] = [ + new TestViewMedia({ + startTime: dateBase, + }), + new TestViewMedia({ + startTime: add(dateBase, { days: 1 }), + }), + new TestViewMedia({ + startTime: add(dateBase, { days: 2 }), + }), + ]; + + it('without hass', async () => { + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const manager = createCameraManager(createCardAPI(), engine); + expect(await manager.extendMediaQueries([baseEventQuery], [], 'later')).toBeNull(); + }); + + it.each([ + ['empty query and results', new Map(), [], [], [], null], + [ + 'query without existing media', + new Map([[baseEventQuery, baseEventQueryResults]]), + [], + [{ ...baseEventQuery, limit: 50 }], + generateViewMediaArray({ count: 5 }), + { + queries: [{ ...baseEventQuery, limit: 50 }], + results: sortMedia(generateViewMediaArray({ count: 5 })), + }, + ], + [ + 'query that extends existing results', + new Map([[baseEventQuery, baseEventQueryResults]]), + generateViewMediaArray({ count: 5, cameraIDs: ['kitchen'] }), + [{ ...baseEventQuery, limit: 50 }], + generateViewMediaArray({ count: 5, cameraIDs: ['office'] }), + { + queries: [{ ...baseEventQuery, limit: 50 }], + results: sortMedia(mediaTwoCameras), + }, + ], + [ + 'query with existing media but no new media', + new Map([[baseEventQuery, baseEventQueryResults]]), + mediaTwoCameras, + [ + { + ...baseEventQuery, + limit: 50, + }, + ], + + // Fetch identical media again. + mediaTwoCameras, + + // Returns null to signify nothing new. + null, + ], + [ + 'query fetching later', + new Map([[{ ...baseEventQuery, start: dateBase }, baseEventQueryResults]]), + mediaMixedStart, + [ + { + ...baseEventQuery, + limit: 50, + start: add(dateBase, { days: 2 }), + }, + ], + mediaTwoCameras, + { + queries: [{ ...baseEventQuery, limit: 50, start: dateBase }], + results: sortMedia(mediaMixedStart.concat(mediaTwoCameras)), + }, + 'later' as const, + ], + [ + 'query fetching earlier', + new Map([[{ ...baseEventQuery, start: dateBase }, baseEventQueryResults]]), + mediaMixedStart, + [ + { + ...baseEventQuery, + limit: 50, + end: dateBase, + }, + ], + mediaTwoCameras, + { + queries: [{ ...baseEventQuery, limit: 50, start: dateBase }], + results: sortMedia(mediaMixedStart.concat(mediaTwoCameras)), + }, + 'earlier' as const, + ], + ])( + 'handles %s', + async ( + _name: string, + // The previously submitted query & results. + inputQueries: Map, + + // The previously received media. + inputMediaResults: ViewMedia[], + + // The queries expected to be dispatched. + newChunkQueries: EventQuery[], + + // The media received from the new queries. + outputMediaResults: ViewMedia[], + + // The expect extended queries and results. + expected?: { + queries: EventQuery[]; + results: ViewMedia[]; + } | null, + direction?: 'earlier' | 'later', + ) => { + const engine = mock(); + vi.mocked(engine.getEngineType).mockReturnValue(Engine.Generic); + + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = createCameraManager(api, engine); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + engine.getEvents.mockResolvedValue(inputQueries); + engine.generateMediaFromEvents.mockReturnValue(outputMediaResults); + + expect( + await manager.extendMediaQueries( + [...inputQueries.keys()], + inputMediaResults, + direction ?? 'later', + ), + ).toEqual(expected); + + // Make sure the issued queries are correct. + for (const query of newChunkQueries) { + expect(engine.getEvents).toHaveBeenCalledWith( + expect.anything(), + expect.anything(), + query, + undefined, + ); + } + }, + ); + }); + + describe('should get media download path', () => { + it('without camera', async () => { + const manager = createCameraManager(createCardAPI()); + expect(await manager.getMediaDownloadPath(new TestViewMedia())).toBeNull(); + }); + + it('without hass', async () => { + const api = createCardAPI(); + const manager = createCameraManager(api); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(null); + expect(await manager.getMediaDownloadPath(new TestViewMedia())).toBeNull(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const result: CameraEndpoint = { + endpoint: 'http://localhost/path/to/media', + }; + vi.mocked(engine.getMediaDownloadPath).mockResolvedValue(result); + expect( + await manager.getMediaDownloadPath(new TestViewMedia({ cameraID: 'id' })), + ).toBe(result); + }); + }); + + describe('should get media capabilities', () => { + it('without camera', async () => { + const manager = createCameraManager(createCardAPI()); + expect(manager.getMediaCapabilities(new TestViewMedia())).toBeNull(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const result: CameraManagerMediaCapabilities = { + canFavorite: false, + canDownload: false, + }; + vi.mocked(engine.getMediaCapabilities).mockReturnValue(result); + expect(manager.getMediaCapabilities(new TestViewMedia({ cameraID: 'id' }))).toBe( + result, + ); + }); + }); + + describe('should favorite media', () => { + it('without camera', async () => { + const engine = mock(); + const manager = createCameraManager(createCardAPI(), engine); + manager.favoriteMedia(new TestViewMedia(), true); + + expect(engine.favoriteMedia).not.toBeCalled(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const media = new TestViewMedia({ cameraID: 'id' }); + manager.favoriteMedia(media, true); + expect(engine.favoriteMedia).toBeCalledWith(hass, expect.anything(), media, true); + }); + }); + + describe('should get camera endpoints', () => { + it('without camera', () => { + const manager = createCameraManager(createCardAPI()); + expect(manager.getCameraEndpoints('BAD')).toBeNull(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const result: CameraEndpoints = {}; + const context: CameraEndpointsContext = {}; + vi.mocked(engine.getCameraEndpoints).mockReturnValue(result); + + expect(manager.getCameraEndpoints('id', context)).toBe(result); + expect(engine.getCameraEndpoints).toBeCalledWith(expect.anything(), context); + }); + }); + + describe('should get camera metadata', () => { + it('without camera', () => { + const manager = createCameraManager(createCardAPI()); + expect(manager.getCameraMetadata('BAD')).toBeNull(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const result: CameraManagerCameraMetadata = { + title: 'My Camera', + icon: 'mdi:camera', + }; + vi.mocked(engine.getCameraMetadata).mockReturnValue(result); + + expect(manager.getCameraMetadata('id')).toBe(result); + }); + }); + + describe('should get camera capabilities', () => { + it('without camera', () => { + const manager = createCameraManager(createCardAPI()); + expect(manager.getCameraCapabilities('BAD')).toBeNull(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const manager = createCameraManager(api, engine); + + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + expect(manager.getCameraCapabilities('id')).toEqual(createCameraCapabilities()); + }); + }); + + describe('should get aggregate camera capabilities', () => { + it('without camera', () => { + const manager = createCameraManager(createCardAPI()); + expect(manager.getAggregateCameraCapabilities()).toEqual({ + canFavoriteEvents: false, + canFavoriteRecordings: false, + canSeek: false, + + supportsClips: false, + supportsRecordings: false, + supportsSnapshots: false, + supportsTimeline: false, + + supportsPTZ: false, + }); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const manager = createCameraManager(api, mock(), [ + { + capabilties: { + canFavoriteEvents: false, + canFavoriteRecordings: false, + canSeek: false, + + supportsClips: false, + supportsRecordings: false, + supportsSnapshots: false, + supportsTimeline: false, + }, + }, + { + config: createCameraConfig({ baseCameraConfig, id: 'another' }), + capabilties: { + canFavoriteEvents: true, + canFavoriteRecordings: true, + canSeek: true, + + supportsClips: true, + supportsRecordings: true, + supportsSnapshots: true, + supportsTimeline: true, + + ptz: {}, + }, + }, + ]); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + expect(manager.getAggregateCameraCapabilities()).toEqual({ + canFavoriteEvents: true, + canFavoriteRecordings: true, + canSeek: true, + + supportsClips: true, + supportsRecordings: true, + supportsSnapshots: true, + supportsTimeline: true, + + supportsPTZ: true, + }); + }); + }); + + describe('should execute PTZ action', () => { + it('without camera', () => { + const engine = mock(); + const manager = createCameraManager(createCardAPI(), engine); + + manager.executePTZAction('id', 'left', {}); + + expect(engine.executePTZAction).not.toBeCalled(); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + const hass = createHASS(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(hass); + const manager = createCameraManager(api, engine); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + const action = 'left'; + const options = {}; + manager.executePTZAction('id', action, options); + + expect(engine.executePTZAction).toBeCalledWith( + hass, + expect.anything(), + action, + options, + ); + }); + }); + + describe('should determine if queries are fresh', () => { + beforeAll(() => { + const start = new Date('2024-03-02T20:35:00'); + vi.useFakeTimers(); + vi.setSystemTime(start); + }); + + afterAll(() => { + vi.useRealTimers(); + }); + + it.each([ + ['not fresh', new Date('2024-03-02T20:32:00'), false], + ['fresh on lower bound', new Date('2024-03-02T20:34:00'), true], + ['fresh at current time', new Date('2024-03-02T20:35:00'), true], + ['fresh in the future', new Date('2024-03-02T20:40:00'), true], + [ + 'unknown camera', + new Date('2024-03-02T20:35:00'), + + // Default assumed to be fresh. + true, + [ + { + ...baseEventQuery, + cameraIDs: new Set(['BAD']), + }, + ], + ], + ])( + '%s', + async ( + _name: string, + resultsTimestamp: Date, + expectedFresh: boolean, + queries: EventQuery[] = [baseEventQuery], + ) => { + const api = createCardAPI(); + const engine = mock(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + const manager = createCameraManager(api, engine); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + engine.getQueryResultMaxAge.mockReturnValue(60); + expect(manager.areMediaQueriesResultsFresh(queries, resultsTimestamp)).toBe( + expectedFresh, + ); + }, + ); + }); + + describe('should get media seek time', () => { + const startTime = new Date('2024-03-02T20:52:00'); + const endTime = new Date('2024-03-02T20:53:00'); + const middleTime = new Date('2024-03-02T20:52:30'); + + describe('invalid requests', () => { + it.each([ + ['null start and end', null, null, middleTime], + ['no start', null, endTime, middleTime], + ['no end', startTime, null, middleTime], + ['target < start', endTime, endTime, startTime], + ['target > end', startTime, startTime, endTime], + ])( + '%s', + async (_name: string, start: Date | null, end: Date | null, target: Date) => { + const api = createCardAPI(); + const engine = mock(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + const manager = createCameraManager(api, engine); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + + expect( + await manager.getMediaSeekTime( + new TestViewMedia({ startTime: start, endTime: end }), + target, + ), + ).toBeNull(); + }, + ); + }); + + it('successfully', async () => { + const api = createCardAPI(); + const engine = mock(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + const manager = createCameraManager(api, engine); + + expect(await manager.initializeCamerasFromConfig()).toBeTruthy(); + engine.getMediaSeekTime.mockResolvedValue(42); + + const media = new TestViewMedia({ + cameraID: 'id', + startTime: startTime, + endTime: endTime, + }); + expect(await manager.getMediaSeekTime(media, middleTime)).toBe(42); + + expect(engine.getMediaSeekTime).toBeCalledWith( + expect.anything(), + expect.anything(), + media, + middleTime, + ); + }); + }); +}); diff --git a/tests/camera-manager/store.test.ts b/tests/camera-manager/store.test.ts index 384f43e7..fa67beab 100644 --- a/tests/camera-manager/store.test.ts +++ b/tests/camera-manager/store.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it, vi } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { Camera } from '../../src/camera-manager/camera.js'; import { CameraManagerEngineFactory } from '../../src/camera-manager/engine-factory.js'; @@ -6,11 +6,7 @@ import { CameraManagerStore } from '../../src/camera-manager/store.js'; import { Engine } from '../../src/camera-manager/types.js'; import { EntityRegistryManager } from '../../src/utils/ha/entity-registry/index.js'; import { ResolvedMediaCache } from '../../src/utils/ha/resolved-media.js'; -import { - TestViewMedia, - createCameraCapabilities, - createCameraConfig, -} from '../test-utils.js'; +import { createCameraConfig, TestViewMedia } from '../test-utils.js'; describe('CameraManagerStore', async () => { const configVisible = createCameraConfig({ @@ -31,10 +27,14 @@ describe('CameraManagerStore', async () => { const setupStore = (): CameraManagerStore => { const store = new CameraManagerStore(); - store.addCamera( - new Camera(configVisible, engineGeneric, createCameraCapabilities()), - ); - store.addCamera(new Camera(configHidden, engineFrigate, createCameraCapabilities())); + const camera_1 = new Camera(configVisible, engineGeneric); + const camera_2 = new Camera(configHidden, engineFrigate); + + camera_1.destroy = vi.fn(); + camera_2.destroy = vi.fn(); + + store.addCamera(camera_1); + store.addCamera(camera_2); return store; }; @@ -123,11 +123,15 @@ describe('CameraManagerStore', async () => { it('reset', async () => { const store = setupStore(); + const cameras = [...store.getCameras().values()]; - store.reset(); + await store.reset(); expect(store.getCameraCount()).toBe(0); expect(store.getVisibleCameraCount()).toBe(0); + for (const camera of cameras) { + expect(camera.destroy).toBeCalled(); + } }); it('getCameraConfigForMedia', async () => { @@ -169,7 +173,6 @@ describe('CameraManagerStore', async () => { id: 'camera-visible2', }, engineGeneric, - createCameraCapabilities(), ), ); @@ -209,7 +212,6 @@ describe('CameraManagerStore', async () => { }, }), engineGeneric, - createCameraCapabilities(), ), ); store.addCamera( @@ -218,7 +220,6 @@ describe('CameraManagerStore', async () => { id: 'two', }), engineGeneric, - createCameraCapabilities(), ), ); expect(store.getAllDependentCameras('one')).toEqual(new Set(['one', 'two'])); @@ -234,7 +235,6 @@ describe('CameraManagerStore', async () => { }, }), engineGeneric, - createCameraCapabilities(), ), ); store.addCamera( @@ -243,7 +243,6 @@ describe('CameraManagerStore', async () => { id: 'two', }), engineGeneric, - createCameraCapabilities(), ), ); expect(store.getAllDependentCameras('one')).toEqual(new Set(['one', 'two'])); diff --git a/tests/camera-manager/utils.test.ts b/tests/camera-manager/utils.test.ts index e5a58d0b..561d1df8 100644 --- a/tests/camera-manager/utils.test.ts +++ b/tests/camera-manager/utils.test.ts @@ -107,6 +107,19 @@ describe('sortMedia', () => { it('should remove duplicate id', () => { expect(sortMedia([media_1, media_2, media_3_dup_id])).toEqual([media_1, media_2]); }); + it('should sort by id when time not available', () => { + expect( + sortMedia([ + new TestViewMedia({ id: 'snake' }), + new TestViewMedia({ id: 'zebra' }), + new TestViewMedia({ id: 'aardvark' }), + ]), + ).toEqual([ + new TestViewMedia({ id: 'aardvark' }), + new TestViewMedia({ id: 'snake' }), + new TestViewMedia({ id: 'zebra' }), + ]); + }); it('should remove de-duplicate by object if no id', () => { expect(sortMedia([media_1, media_2, media_4_no_id, media_4_no_id])).toEqual([ media_1, diff --git a/tests/card-controller/card-element-manager.test.ts b/tests/card-controller/card-element-manager.test.ts index 89a5e8e1..a695b637 100644 --- a/tests/card-controller/card-element-manager.test.ts +++ b/tests/card-controller/card-element-manager.test.ts @@ -154,6 +154,8 @@ describe('CardElementManager', () => { element.removeEventListener = removeEventListener; const api = createCardAPI(); + vi.mocked(api.getCameraManager().reset).mockResolvedValue(); + const manager = new CardElementManager( api, element, @@ -184,5 +186,7 @@ describe('CardElementManager', () => { expect.anything(), ); expect(windowRemoveEventListener).toBeCalledWith('popstate', expect.anything()); + + expect(api.getCameraManager().reset).toBeCalled(); }); }); diff --git a/tests/card-controller/conditions-manager.test.ts b/tests/card-controller/conditions-manager.test.ts index 08e71c67..b40dffaf 100644 --- a/tests/card-controller/conditions-manager.test.ts +++ b/tests/card-controller/conditions-manager.test.ts @@ -206,6 +206,14 @@ describe('ConditionsManager', () => { expect(epoch_1).not.toBe(epoch_2); }); + it('should get state', () => { + const state = { fullscreen: true }; + + const manager = new ConditionsManager(createCardAPI()); + manager.setState(state); + expect(manager.getState()).toEqual(state); + }); + it('should not return hasHAStateConditions without HA state conditions', () => { const manager = new ConditionsManager(createCardAPI()); expect(manager.hasHAStateConditions()).toBeFalsy(); diff --git a/tests/card-controller/hass-manager.test.ts b/tests/card-controller/hass-manager.test.ts index 51f64728..45205f0e 100644 --- a/tests/card-controller/hass-manager.test.ts +++ b/tests/card-controller/hass-manager.test.ts @@ -66,18 +66,6 @@ describe('HASSManager', () => { }); }); - it('should update triggered cameras', () => { - const api = createAPIWithoutMediaPlayers(); - const manager = new HASSManager(api); - - const originalHASS = createHASS(); - manager.setHASS(originalHASS); - expect(api.getTriggersManager().updateTriggerHAState).toBeCalledWith(null); - - manager.setHASS(createHASS()); - expect(api.getTriggersManager().updateTriggerHAState).toBeCalledWith(originalHASS); - }); - describe('should handle connection state change when', () => { it('initially disconnected', () => { const api = createAPIWithoutMediaPlayers(); @@ -156,37 +144,6 @@ describe('HASSManager', () => { }); describe('should set default view when', () => { - it('selected camera trigger entity changes', () => { - const api = createAPIWithoutMediaPlayers(); - vi.mocked(api.getCameraManager).mockReturnValue(createCameraManager()); - vi.mocked(api.getCameraManager().getStore).mockReturnValue( - createStore([ - { - cameraID: 'camera.foo', - config: createCameraConfig({ - triggers: { - entities: ['binary_sensor.motion'], - }, - }), - }, - ]), - ); - vi.mocked(api.getViewManager().getView).mockReturnValue( - createView({ - camera: 'camera.foo', - }), - ); - - const manager = new HASSManager(api); - const hass = createHASS({ - 'binary_sensor.motion': createStateEntity(), - }); - - manager.setHASS(hass); - - expect(api.getViewManager().setViewDefault).toBeCalled(); - }); - it('selected camera is unknown', () => { const api = createAPIWithoutMediaPlayers(); vi.mocked(api.getCameraManager).mockReturnValue(createCameraManager()); diff --git a/tests/card-controller/triggers-manager.test.ts b/tests/card-controller/triggers-manager.test.ts index 90bcedd7..45193dda 100644 --- a/tests/card-controller/triggers-manager.test.ts +++ b/tests/card-controller/triggers-manager.test.ts @@ -1,22 +1,22 @@ import add from 'date-fns/add'; -import { HassEntities } from 'home-assistant-js-websocket'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { CardController } from '../../src/card-controller/controller'; import { TriggersManager } from '../../src/card-controller/triggers-manager'; -import { ScanOptions, scanSchema } from '../../src/config/types'; +import { TriggersOptions, triggersSchema } from '../../src/config/types'; import { createCameraConfig, createCameraManager, createCardAPI, createConfig, - createHASS, - createStateEntity, createStore, createView, } from '../test-utils'; -const baseScanConfig: Partial = { - enabled: true, +vi.mock('lodash-es/throttle', () => ({ + default: vi.fn((fn) => fn), +})); + +const baseTriggersConfig: Partial = { untrigger_seconds: 10, filter_selected_camera: false, actions: { @@ -29,21 +29,20 @@ const baseScanConfig: Partial = { // Creating and mocking a trigger API is a lot of boilerplate, this convenience // function reduces it. const createTriggerAPI = (options?: { - config?: Partial; - hassStates?: HassEntities; + config?: Partial; interaction?: boolean; }): CardController => { const api = createCardAPI(); vi.mocked(api.getConfigManager().getConfig).mockReturnValue( createConfig({ view: { - scan: options?.config ? scanSchema.parse(options.config) : baseScanConfig, + triggers: options?.config + ? triggersSchema.parse(options.config) + : baseTriggersConfig, }, }), ); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS(options?.hassStates), - ); + vi.mocked(api.getConditionsManager().getState).mockReturnValue({}); vi.mocked(api.getCameraManager).mockReturnValue(createCameraManager()); vi.mocked(api.getCameraManager().getStore).mockReturnValue( createStore([ @@ -60,22 +59,22 @@ const createTriggerAPI = (options?: { vi.mocked(api.getInteractionManager().hasInteraction).mockReturnValue( options?.interaction ?? false, ); + vi.mocked(api.getViewManager().getView).mockReturnValue( + createView({ + camera: 'camera_1' as const, + }), + ); return api; }; // @vitest-environment jsdom describe('TriggersManager', () => { - const hassActiveState = { - 'binary_sensor.motion': createStateEntity({ state: 'on' }), - }; - const hassInactiveState = { - 'binary_sensor.motion': createStateEntity({ state: 'off' }), - }; + const start = new Date('2023-10-01T17:14'); beforeEach(() => { - vi.resetAllMocks(); vi.useFakeTimers(); + vi.setSystemTime(start); }); it('should not be triggered by default', () => { @@ -83,23 +82,8 @@ describe('TriggersManager', () => { expect(manager.isTriggered()).toBeFalsy(); }); - it('should not trigger when scan mode disabled default', () => { - const api = createTriggerAPI({ - config: { enabled: false }, - hassStates: hassActiveState, - }); - const manager = new TriggersManager(api); - - manager.updateTriggerHAState(null); - - expect(manager.isTriggered()).toBeFalsy(); - }); - - it('should not trigger without a scan config', () => { - const api = createTriggerAPI({ - hassStates: hassActiveState, - }); - + it('should not trigger without a triggers config', () => { + const api = createTriggerAPI(); vi.mocked(api.getViewManager().getView).mockReturnValue( createView({ camera: 'camera_1' as const, @@ -108,19 +92,23 @@ describe('TriggersManager', () => { vi.mocked(api.getConfigManager().getConfig).mockReturnValue(null); const manager = new TriggersManager(api); - manager.updateView(null); + + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeFalsy(); }); - it('should trigger and untrigger based on entity state', () => { - const start = new Date('2023-10-01T17:14'); - vi.setSystemTime(start); - const api = createTriggerAPI({ - hassStates: hassActiveState, - }); + it('should trigger and untrigger based on low fidelity event', () => { + const api = createTriggerAPI(); const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); expect(manager.isTriggered()).toBeTruthy(); expect(api.getConditionsManager().setState).toHaveBeenLastCalledWith({ @@ -132,14 +120,14 @@ describe('TriggersManager', () => { cameraID: 'camera_1' as const, }); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS(hassInactiveState), - ); + vi.mocked(api.getConditionsManager().getState).mockReturnValue({ + triggered: new Set(['camera_1']), + }); - manager.updateTriggerHAState(createHASS(hassActiveState)); - - // Intentional state update with no change. - manager.updateTriggerHAState(createHASS(hassActiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'end', + }); // Will still be triggered, but untrigger timer will be running. expect(manager.isTriggered()).toBeTruthy(); @@ -155,34 +143,141 @@ describe('TriggersManager', () => { expect(api.getViewManager().setViewDefault).toBeCalled(); }); - it('should trigger when entity state is active on startup', () => { + describe('should treat high fidelity events appropriately', () => { + it('with no media', () => { + const api = createTriggerAPI(); + vi.mocked(api.getConfigManager().getConfig).mockReturnValue( + createConfig({ + view: { + default: 'clips', + }, + }), + ); + + const manager = new TriggersManager(api); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + fidelity: 'high', + + // Intentionally blank. + }); + + expect(manager.isTriggered()).toBeTruthy(); + expect(api.getViewManager().setViewByParameters).not.toBeCalled(); + }); + + it('with media', () => { + const api = createTriggerAPI(); + vi.mocked(api.getConfigManager().getConfig).mockReturnValue( + createConfig({ + view: { + default: 'clips', + }, + }), + ); + + const manager = new TriggersManager(api); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + fidelity: 'high', + clip: true, + }); + + expect(manager.isTriggered()).toBeTruthy(); + expect(api.getViewManager().setViewDefault).toBeCalled(); + }); + }); + + it('should change to default view when suitably configured', () => { const api = createTriggerAPI({ - hassStates: hassActiveState, + config: { + actions: { + interaction_mode: 'all', + trigger: 'default', + untrigger: 'none', + }, + }, }); const manager = new TriggersManager(api); - expect(manager.isTriggered()).toBeFalsy(); - manager.updateTriggerHAState(null); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); + expect(api.getViewManager().setViewDefault).toBeCalledWith({ + cameraID: 'camera_1', + }); + }); + + describe('should change to media view', () => { + it.each([ + [false, false, null], + [false, true, 'clip' as const], + [true, false, 'snapshot' as const], + [true, true, 'clip' as const], + ])( + 'with snapshot %s and clip %s', + async ( + hasSnapshot: boolean, + hasClip: boolean, + viewName: 'clip' | 'snapshot' | null, + ) => { + const api = createTriggerAPI({ + config: { + actions: { + interaction_mode: 'all', + trigger: 'media', + untrigger: 'none', + }, + }, + }); + const manager = new TriggersManager(api); + + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + fidelity: 'high', + snapshot: hasSnapshot, + clip: hasClip, + }); + + if (!viewName) { + expect(api.getViewManager().setViewByParameters).not.toBeCalled(); + } else { + expect(manager.isTriggered()).toBeTruthy(); + expect(api.getViewManager().setViewByParameters).toBeCalledWith({ + cameraID: 'camera_1', + viewName: viewName, + }); + } + }, + ); }); it('should take no actions with human interactions', () => { - const start = new Date('2023-10-01T17:14'); const api = createTriggerAPI({ - hassStates: hassActiveState, // Interaction present. interaction: true, }); const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); + + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); expect(api.getViewManager().setViewByParameters).not.toBeCalled(); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS(hassInactiveState), - ); - manager.updateTriggerHAState(createHASS(hassActiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'end', + }); vi.setSystemTime(add(start, { seconds: 10 })); vi.runOnlyPendingTimers(); @@ -193,11 +288,8 @@ describe('TriggersManager', () => { }); it('should take no actions when actions are set to none', () => { - const start = new Date('2023-10-01T17:14'); const api = createTriggerAPI({ - hassStates: hassActiveState, config: { - enabled: true, actions: { interaction_mode: 'all', trigger: 'none', @@ -206,32 +298,31 @@ describe('TriggersManager', () => { }, }); const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); expect(manager.isTriggered()).toBeTruthy(); - expect(api.getViewManager().setViewByParameters).not.toBeCalled(); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS(hassInactiveState), - ); - manager.updateTriggerHAState(createHASS(hassActiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'end', + }); vi.setSystemTime(add(start, { seconds: 10 })); vi.runOnlyPendingTimers(); expect(manager.isTriggered()).toBeFalsy(); - expect(api.getViewManager().setViewDefault).not.toBeCalled(); }); it('should take actions with human interactions when interaction mode is active', () => { - const start = new Date('2023-10-01T17:14'); const api = createTriggerAPI({ - hassStates: hassActiveState, // Interaction present. interaction: true, config: { - ...baseScanConfig, + ...baseTriggersConfig, actions: { trigger: 'live' as const, untrigger: 'default' as const, @@ -240,18 +331,21 @@ describe('TriggersManager', () => { }, }); const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); - expect(manager.isTriggered()).toBeTruthy(); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); expect(api.getViewManager().setViewByParameters).toBeCalledWith({ viewName: 'live' as const, cameraID: 'camera_1' as const, }); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS(hassInactiveState), - ); - manager.updateTriggerHAState(createHASS(hassActiveState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'end', + }); vi.setSystemTime(add(start, { seconds: 10 })); vi.runOnlyPendingTimers(); @@ -262,14 +356,7 @@ describe('TriggersManager', () => { }); it('should report multiple triggered cameras', () => { - const start = new Date('2023-10-01T17:14'); - const bothOnState = { - 'binary_sensor.one': createStateEntity({ state: 'on' }), - 'binary_sensor.two': createStateEntity({ state: 'on' }), - }; - const api = createTriggerAPI({ - hassStates: bothOnState, - }); + const api = createTriggerAPI(); vi.mocked(api.getCameraManager().getStore).mockReturnValue( createStore([ { @@ -297,7 +384,15 @@ describe('TriggersManager', () => { expect(manager.getMostRecentlyTriggeredCameraID()).toBeNull(); expect(manager.getTriggeredCameraIDs()).toEqual(new Set()); - manager.updateTriggerHAState(null); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + manager.handleCameraEvent({ + cameraID: 'camera_2', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); expect(manager.getTriggeredCameraIDs()).toEqual(new Set(['camera_1', 'camera_2'])); @@ -306,14 +401,10 @@ describe('TriggersManager', () => { manager.getMostRecentlyTriggeredCameraID(), ); - vi.mocked(api.getHASSManager().getHASS).mockReturnValue( - createHASS({ - 'binary_sensor.one': createStateEntity({ state: 'off' }), - 'binary_sensor.two': createStateEntity({ state: 'on' }), - }), - ); - - manager.updateTriggerHAState(createHASS(bothOnState)); + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'end', + }); vi.setSystemTime(add(start, { seconds: 10 })); vi.runOnlyPendingTimers(); @@ -322,75 +413,87 @@ describe('TriggersManager', () => { expect(manager.getMostRecentlyTriggeredCameraID()).toBe('camera_2'); }); - it('should filter triggers by camera', () => { - const start = new Date('2023-10-01T17:14'); - const api = createTriggerAPI({ - config: { - ...baseScanConfig, - // Filter triggers to selected camera only. - filter_selected_camera: true, - }, - hassStates: hassActiveState, - }); - const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); - expect(manager.isTriggered()).toBeFalsy(); + describe('should filter triggers by camera', () => { + it('no dependencies', () => { + const api = createTriggerAPI({ + config: { + ...baseTriggersConfig, + // Filter triggers to selected camera only. + filter_selected_camera: true, + }, + }); + const manager = new TriggersManager(api); + expect(manager.isTriggered()).toBeFalsy(); - const otherCameraSelected = createView({ - camera: 'camera_SOME_OTHER_CAMERA' as const, + const otherCameraSelected = createView({ + camera: 'camera_SOME_OTHER_CAMERA' as const, + }); + vi.mocked(api.getViewManager().getView).mockReturnValue(otherCameraSelected); + + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeFalsy(); + + const thisCameraSelected = createView({ + camera: 'camera_1' as const, + }); + vi.mocked(api.getViewManager().getView).mockReturnValue(thisCameraSelected); + + manager.handleCameraEvent({ + cameraID: 'camera_1', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); }); - vi.mocked(api.getViewManager().getView).mockReturnValue(otherCameraSelected); - manager.updateView(null); - expect(manager.isTriggered()).toBeFalsy(); + it('dependencies', () => { + const api = createTriggerAPI({ + config: { + ...baseTriggersConfig, + // Filter triggers to selected camera only. + filter_selected_camera: true, + }, + }); + vi.mocked(api.getCameraManager().getStore).mockReturnValue( + createStore([ + { + cameraID: 'camera_primary', + config: createCameraConfig({ + triggers: { + entities: ['binary_sensor.motion'], + }, + dependencies: { + all_cameras: true, + }, + }), + }, + { + cameraID: 'camera_secondary', + config: createCameraConfig({ + triggers: { + entities: ['binary_sensor.motion'], + }, + }), + }, + ]), + ); - const thisCameraSelected = createView({ - camera: 'camera_1' as const, + const manager = new TriggersManager(api); + + const primaryCameraView = createView({ + camera: 'camera_primary' as const, + }); + vi.mocked(api.getViewManager().getView).mockReturnValue(primaryCameraView); + + // Events for the secondary will still trigger when filter_selected_camera + // is true. + manager.handleCameraEvent({ + cameraID: 'camera_secondary', + type: 'new', + }); + expect(manager.isTriggered()).toBeTruthy(); }); - - vi.mocked(api.getViewManager().getView).mockReturnValue(thisCameraSelected); - manager.updateView(otherCameraSelected); - expect(manager.isTriggered()).toBeTruthy(); - - // Ensure a view change to the same camera stays triggered. - vi.mocked(api.getViewManager().getView).mockReturnValue(thisCameraSelected); - manager.updateView(thisCameraSelected); - expect(manager.isTriggered()).toBeTruthy(); - }); - - it('should not untrigger triggers by camera', () => { - const start = new Date('2023-10-01T17:14'); - const api = createTriggerAPI({ - config: { - ...baseScanConfig, - // Filter triggers to selected camera only. - filter_selected_camera: true, - }, - hassStates: hassActiveState, - }); - const manager = new TriggersManager(api); - manager.updateTriggerHAState(createHASS(hassInactiveState)); - expect(manager.isTriggered()).toBeFalsy(); - - const otherCameraSelected = createView({ - camera: 'camera_SOME_OTHER_CAMERA' as const, - }); - - vi.mocked(api.getViewManager().getView).mockReturnValue(otherCameraSelected); - manager.updateView(null); - expect(manager.isTriggered()).toBeFalsy(); - - const thisCameraSelected = createView({ - camera: 'camera_1' as const, - }); - - vi.mocked(api.getViewManager().getView).mockReturnValue(thisCameraSelected); - manager.updateView(otherCameraSelected); - expect(manager.isTriggered()).toBeTruthy(); - - // Ensure a view change to the same camera stays triggered. - vi.mocked(api.getViewManager().getView).mockReturnValue(thisCameraSelected); - manager.updateView(thisCameraSelected); - expect(manager.isTriggered()).toBeTruthy(); }); }); diff --git a/tests/config-mgmt.test.ts b/tests/config-mgmt.test.ts index 702a2637..9ca34a98 100644 --- a/tests/config-mgmt.test.ts +++ b/tests/config-mgmt.test.ts @@ -4,6 +4,7 @@ import { createRangedTransform, deleteConfigValue, deleteTransform, + deleteWithOverrides, getArrayConfigPath, getConfigValue, isConfigUpgradeable, @@ -344,6 +345,12 @@ describe('upgrade functions', () => { it('should have upgrades with bad input data', () => { expect(upgradeConfig(3 as unknown as RawFrigateCardConfig)).toBeFalsy(); }); + + it('should delete properties', () => { + const config = { c: 10, d: 10 }; + expect(deleteWithOverrides('c')(config)).toBeTruthy(); + expect(config).toEqual({ d: 10 }); + }); }); describe('should handle version specific upgrades', () => { @@ -1167,52 +1174,6 @@ describe('should handle version specific upgrades', () => { }); }); - describe('should move and transform untrigger_reset', () => { - it('when true', () => { - const config = { - type: 'custom:frigate-card', - cameras: [{ camera_entity: 'camera.office' }], - view: { - scan: { - untrigger_reset: true, - }, - }, - }; - expect(upgradeConfig(config)).toBeTruthy(); - expect(config).toEqual({ - type: 'custom:frigate-card', - cameras: [{ camera_entity: 'camera.office' }], - view: { - scan: { - actions: { - untrigger: 'default', - }, - }, - }, - }); - }); - - it('when false', () => { - const config = { - type: 'custom:frigate-card', - cameras: [{ camera_entity: 'camera.office' }], - view: { - scan: { - untrigger_reset: false, - }, - }, - }; - expect(upgradeConfig(config)).toBeTruthy(); - expect(config).toEqual({ - type: 'custom:frigate-card', - cameras: [{ camera_entity: 'camera.office' }], - view: { - scan: {}, - }, - }); - }); - }); - it('should move view.timeout_seconds', () => { const config = { type: 'custom:frigate-card', @@ -1690,5 +1651,92 @@ describe('should handle version specific upgrades', () => { }, ); }); + + describe('should transform scan mode', () => { + describe('should move and transform untrigger_reset', () => { + it('when true', () => { + const config = { + type: 'custom:frigate-card', + cameras: [{ camera_entity: 'camera.office' }], + view: { + scan: { + untrigger_reset: true, + }, + }, + }; + expect(upgradeConfig(config)).toBeTruthy(); + expect(config).toEqual({ + type: 'custom:frigate-card', + cameras: [{ camera_entity: 'camera.office' }], + view: { + triggers: { + actions: { + untrigger: 'default', + }, + }, + }, + }); + }); + + it('when false', () => { + const config = { + type: 'custom:frigate-card', + cameras: [{ camera_entity: 'camera.office' }], + view: { + scan: { + untrigger_reset: false, + }, + }, + }; + expect(upgradeConfig(config)).toBeTruthy(); + expect(config).toEqual({ + type: 'custom:frigate-card', + cameras: [{ camera_entity: 'camera.office' }], + view: { + triggers: {}, + }, + }); + }); + }); + + describe('should rename view.scan.enabled to a trigger action', () => { + it('when true', () => { + const config = { + view: { + scan: { + enabled: true, + }, + }, + }; + expect(upgradeConfig(config)).toBeTruthy(); + expect(config).toEqual({ + view: { + triggers: { + filter_selected_camera: false, + actions: { + trigger: 'live', + }, + }, + }, + }); + }); + + it('when false', () => { + const config = { + view: { + scan: { + enabled: false, + }, + }, + }; + expect(upgradeConfig(config)).toBeTruthy(); + expect(config).toEqual({ + view: { + triggers: {}, + }, + }); + }); + }); + }); }); }); diff --git a/tests/config/types.test.ts b/tests/config/types.test.ts index d34b057f..632586a7 100644 --- a/tests/config/types.test.ts +++ b/tests/config/types.test.ts @@ -38,9 +38,10 @@ describe('config defaults', () => { }, }, triggers: { + events: ['events', 'clips', 'snapshots'], entities: [], motion: false, - occupancy: true, + occupancy: false, }, }, debug: { @@ -279,16 +280,15 @@ describe('config defaults', () => { camera_select: 'current', dark_mode: 'off', default: 'live', - scan: { - enabled: false, - show_trigger_status: true, + triggers: { + show_trigger_status: false, untrigger_seconds: 0, actions: { - trigger: 'live', - untrigger: 'default', + trigger: 'default', + untrigger: 'none', interaction_mode: 'inactive', }, - filter_selected_camera: false, + filter_selected_camera: true, }, interaction_seconds: 300, reset_after_interaction: true, diff --git a/tests/test-utils.ts b/tests/test-utils.ts index 8c134c6d..773c3220 100644 --- a/tests/test-utils.ts +++ b/tests/test-utils.ts @@ -1,5 +1,6 @@ +import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; import { HassEntities, HassEntity } from 'home-assistant-js-websocket'; -import { vi } from 'vitest'; +import { expect, vi } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { Camera } from '../src/camera-manager/camera'; import { CameraManagerEngine } from '../src/camera-manager/engine'; @@ -8,6 +9,7 @@ import { GenericCameraManagerEngine } from '../src/camera-manager/generic/engine import { CameraManager } from '../src/camera-manager/manager'; import { CameraManagerStore } from '../src/camera-manager/store'; import { + CameraEventCallback, CameraManagerCameraCapabilities, CameraManagerCapabilities, CameraManagerMediaCapabilities, @@ -36,16 +38,17 @@ import { TriggersManager } from '../src/card-controller/triggers-manager'; import { ViewManager } from '../src/card-controller/view-manager'; import { CameraConfig, - cameraConfigSchema, FrigateCardCondition, - frigateCardConditionSchema, FrigateCardConfig, - frigateCardConfigSchema, PerformanceConfig, - performanceConfigSchema, RawFrigateCardConfig, + cameraConfigSchema, + frigateCardConditionSchema, + frigateCardConfigSchema, + performanceConfigSchema, } from '../src/config/types'; import { ExtendedHomeAssistant, MediaLoadedInfo } from '../src/types'; +import { EntityRegistryManager } from '../src/utils/ha/entity-registry'; import { Entity } from '../src/utils/ha/entity-registry/types'; import { ViewMedia, ViewMediaType } from '../src/view/media'; import { MediaQueriesResults } from '../src/view/media-queries-results'; @@ -69,11 +72,20 @@ export const createConfig = (config?: RawFrigateCardConfig): FrigateCardConfig = }); }; +export const createCamera = ( + config: CameraConfig, + engine: CameraManagerEngine, + capabilities?: CameraManagerCameraCapabilities, +): Camera => { + return new Camera(config, engine, { capabilities: capabilities }); +}; + export const createHASS = (states?: HassEntities): ExtendedHomeAssistant => { const hass = mock(); if (states) { hass.states = states; } + hass.connection.subscribeMessage = vi.fn(); return hass; }; @@ -158,14 +170,19 @@ export const createStore = ( engine?: CameraManagerEngine; config?: CameraConfig; capabilities?: CameraManagerCameraCapabilities; + eventCallback?: CameraEventCallback; }[], ): CameraManagerStore => { const store = new CameraManagerStore(); for (const cameraProps of cameras ?? []) { + const eventCallback = cameraProps.eventCallback ?? vi.fn(); const camera = new Camera( cameraProps.config ?? createCameraConfig(), - cameraProps.engine ?? new GenericCameraManagerEngine(), - cameraProps.capabilities ?? createCameraCapabilities(), + cameraProps.engine ?? new GenericCameraManagerEngine(eventCallback), + { + capabilities: cameraProps.capabilities ?? createCameraCapabilities(), + eventCallback: eventCallback, + }, ); camera.setID(cameraProps.cameraID); store.addCamera(camera); @@ -260,10 +277,10 @@ export class TestViewMedia extends ViewMedia { constructor(options?: { id?: string | null; - startTime?: Date; + startTime?: Date | null; mediaType?: ViewMediaType; cameraID?: string; - endTime?: Date; + endTime?: Date | null; inProgress?: boolean; contentID?: string; title?: string; @@ -364,6 +381,7 @@ export const createCardAPI = (): CardController => { api.getConditionsManager.mockReturnValue(mock()); api.getConfigManager.mockReturnValue(mock()); api.getDownloadManager.mockReturnValue(mock()); + api.getEntityRegistryManager.mockReturnValue(mock()); api.getExpandManager.mockReturnValue(mock()); api.getFullscreenManager.mockReturnValue(mock()); api.getHASSManager.mockReturnValue(mock()); @@ -380,3 +398,13 @@ export const createCardAPI = (): CardController => { return api; }; + +export const callHASubscribeMessageHandler = ( + hass: HomeAssistant, + ev: unknown, + n = 0, +): void => { + const mock = vi.mocked(hass.connection.subscribeMessage).mock; + expect(mock.calls.length).greaterThan(n); + mock.calls[n][0](ev); +}; diff --git a/tests/utils/ha/index.test.ts b/tests/utils/ha/index.test.ts index 823f7ead..8c25a4f8 100644 --- a/tests/utils/ha/index.test.ts +++ b/tests/utils/ha/index.test.ts @@ -1,8 +1,10 @@ import { HomeAssistant } from '@dermotduffy/custom-card-helpers'; -import { describe, expect, it } from 'vitest'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; import { getEntityIcon, hasHAConnectionStateChanged, + parseStateChangeTrigger, + subscribeToTrigger, } from '../../../src/utils/ha/index.js'; import { createHASS, createStateEntity } from '../../test-utils.js'; @@ -67,3 +69,105 @@ describe('getEntityIcon', () => { expect(getEntityIcon(createHASS(), 'camera.test')).toBe('mdi:video'); }); }); + +describe('should subscribe to trigger', () => { + it('mqtt', async () => { + const hass = createHASS(); + const callback = vi.fn(); + + await subscribeToTrigger(hass, callback, { + platform: 'mqtt', + topic: 'topic', + payload: 'payload', + valueTemplate: 'value_template', + }); + + expect(hass.connection.subscribeMessage).toBeCalledWith(callback, { + type: 'subscribe_trigger', + trigger: { + platform: 'mqtt', + topic: 'topic', + payload: 'payload', + value_template: 'value_template', + }, + }); + }); + + it('state and attributes', async () => { + const hass = createHASS(); + const callback = vi.fn(); + + await subscribeToTrigger(hass, callback, { + platform: 'state', + entityID: 'camera.foo', + }); + + expect(hass.connection.subscribeMessage).toBeCalledWith(callback, { + type: 'subscribe_trigger', + trigger: { + platform: 'state', + entity_id: 'camera.foo', + }, + }); + }); + + it('state only', async () => { + const hass = createHASS(); + const callback = vi.fn(); + + await subscribeToTrigger(hass, callback, { + platform: 'state', + entityID: 'camera.foo', + stateOnly: true, + }); + + expect(hass.connection.subscribeMessage).toBeCalledWith(callback, { + type: 'subscribe_trigger', + trigger: { + platform: 'state', + entity_id: 'camera.foo', + from: null, + to: null, + }, + }); + }); +}); + +describe('should parse state change response', () => { + beforeEach(() => { + vi.restoreAllMocks(); + }); + + it('malformed response', async () => { + const consoleSpy = vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + expect(parseStateChangeTrigger('INVALID')).toBeNull(); + + expect(consoleSpy).toBeCalledWith('Ignoring unparseable HA state change', 'INVALID'); + }); + + it('valid response', async () => { + const consoleSpy = vi.spyOn(global.console, 'warn').mockReturnValue(undefined); + + const stateChange = { + from_state: { + entity_id: 'camera.foo', + state: 'off', + }, + to_state: { + entity_id: 'camera.foo', + state: 'on', + }, + }; + + expect( + parseStateChangeTrigger({ + variables: { + trigger: stateChange, + }, + }), + ).toEqual(stateChange); + + expect(consoleSpy).not.toBeCalled(); + }); +}); diff --git a/tests/utils/media-to-view.test.ts b/tests/utils/media-to-view.test.ts index 24ac2bf9..2a96605c 100644 --- a/tests/utils/media-to-view.test.ts +++ b/tests/utils/media-to-view.test.ts @@ -202,6 +202,40 @@ describe('changeViewToRecentEventsForCameraAndDependents', () => { ); }); + it('should respect useCache', async () => { + const cameraManager = createCameraManager(); + vi.mocked(cameraManager.getStore).mockReturnValue( + createStore([ + { + cameraID: 'camera', + }, + ]), + ); + vi.mocked(cameraManager.generateDefaultEventQueries).mockReturnValue([ + { + type: QueryType.Event, + cameraIDs: new Set(['camera']), + }, + ]); + + await changeViewToRecentEventsForCameraAndDependents( + createElementListenForView().element, + cameraManager, + {}, + createView(), + { + useCache: false, + }, + ); + + expect(vi.mocked(cameraManager.executeMediaQueries)).toBeCalledWith( + expect.anything(), + expect.objectContaining({ + useCache: false, + }), + ); + }); + describe('should respect request for media type', () => { it.each([ ['snapshots' as const, 'hasSnapshot'], @@ -463,6 +497,42 @@ describe('changeViewToRecentRecordingForCameraAndDependents', () => { }), ); }); + + it('should respect useCache', async () => { + const cameraManager = createCameraManager(); + vi.mocked(cameraManager.getStore).mockReturnValue( + createStore([ + { + cameraID: 'camera', + }, + ]), + ); + vi.mocked(cameraManager.generateDefaultRecordingQueries).mockReturnValue([ + { + type: QueryType.Recording, + cameraIDs: new Set(['camera']), + }, + ]); + + await changeViewToRecentRecordingForCameraAndDependents( + createElementListenForView().element, + cameraManager, + {}, + createView(), + { + targetView: 'recordings', + select: 'latest', + useCache: false, + }, + ); + + expect(vi.mocked(cameraManager.executeMediaQueries)).toBeCalledWith( + expect.anything(), + expect.objectContaining({ + useCache: false, + }), + ); + }); }); // @vitest-environment jsdom diff --git a/vite.config.ts b/vite.config.ts index 108e7a88..c22c0b38 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -3,17 +3,22 @@ import { defineConfig } from 'vitest/config'; // ts-prune-ignore-next export default defineConfig({ test: { + include: [ + "tests/**/*.test.ts" + ], coverage: { // Favor istanbul for coverage over v8 due to better accuracy. provider: 'istanbul', // Thresholds will automatically be updated as coverage improves to avoid // back-sliding. - thresholdAutoUpdate: true, - statements: 73.59, - branches: 63.6, - functions: 74.86, - lines: 73.48, + thresholds: { + autoUpdate: true, + statements: 73.59, + branches: 63.6, + functions: 74.86, + lines: 73.48, + }, }, }, }); diff --git a/yarn.lock b/yarn.lock index 89af7f0d..da79a3f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,233 +2,140 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 6 - cacheKey: 8 + version: 8 + cacheKey: 10c0 "@a11y/focus-trap@npm:^1.0.5": version: 1.0.5 resolution: "@a11y/focus-trap@npm:1.0.5" - checksum: aa5dbdcbfa0ce2de0a9778c1696a67c25ce28e06126079bb8c302a97fbffe620608a4fc0038a3ee0c0cfbbd4dc7fdafe029353e7aa06b0e5fdf9da69b0008b6b + checksum: 10c0/194206784b7bff55f1e8403275cd7fa4562f7e9d529a79a5e3a008f9e4c76ecbddab07257fec42540a5d230b9d8bef1527170bb6999c81024952326e087682d2 languageName: node linkType: hard -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f languageName: node linkType: hard "@ampproject/remapping@npm:^2.2.0": - version: 2.2.1 - resolution: "@ampproject/remapping@npm:2.2.1" + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + "@babel/highlight": "npm:^7.23.4" + chalk: "npm:^2.4.2" + checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 languageName: node linkType: hard -"@babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" +"@babel/compat-data@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/compat-data@npm:7.23.5" + checksum: 10c0/081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c + languageName: node + linkType: hard + +"@babel/core@npm:^7.19.0, @babel/core@npm:^7.23.9": + version: 7.24.0 + resolution: "@babel/core@npm:7.24.0" dependencies: - "@babel/highlight": ^7.22.13 - chalk: ^2.4.2 - checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.24.0" + "@babel/parser": "npm:^7.24.0" + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/bb37cbf0bdfd676b246af0a3d9a7932d10573f2d45114fdda02a71889e35530ce13d8930177e78b065d6734b8d45a4fbf7c77f223b1d44b4a28cfe5fefee93ed languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5": - version: 7.20.14 - resolution: "@babel/compat-data@npm:7.20.14" - checksum: 6c9efe36232094e4ad0b70d165587f21ca718e5d011f7a52a77a18502a7524e90e2855aa5a2e086395bcfd21bd2c7c99128dcd8d9fdffe94316b72acf5c66f2c - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 - languageName: node - linkType: hard - -"@babel/core@npm:^7.12.3": - version: 7.22.11 - resolution: "@babel/core@npm:7.22.11" +"@babel/generator@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.11 - "@babel/parser": ^7.22.11 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.11 - "@babel/types": ^7.22.11 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.3 - semver: ^6.3.1 - checksum: f258b2539ea2e5bfe55a708c2f3e1093a1b4744f12becc35abeb896037b66210de9a8ad6296a706046d5dc3a24e564362b73a9b814e5bfe500c8baab60c22d2e + "@babel/types": "npm:^7.23.6" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda languageName: node linkType: hard -"@babel/core@npm:^7.19.0": - version: 7.20.12 - resolution: "@babel/core@npm:7.20.12" +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helpers": ^7.20.7 - "@babel/parser": ^7.20.7 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.12 - "@babel/types": ^7.20.7 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: 62e6c3e2149a70b5c9729ef5f0d3e2e97e9dcde89fc039c8d8e3463d5d7ba9b29ee84d10faf79b61532ac1645aa62f2bd42338320617e6e3a8a4d8e2a27076e7 + "@babel/types": "npm:^7.22.5" + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 languageName: node linkType: hard -"@babel/generator@npm:^7.20.7": - version: 7.20.14 - resolution: "@babel/generator@npm:7.20.14" +"@babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" dependencies: - "@babel/types": ^7.20.7 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: 5f6aa2d86af26e76d276923a5c34191124a119b16ee9ccc34aef654a7dec84fbd7d2daed2e6458a6a06bf87f3661deb77c9fea59b8f67faff5c90793c96d76d6 + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa languageName: node linkType: hard -"@babel/generator@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.0" dependencies: - "@babel/types": ^7.22.10 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-compilation-targets@npm:7.20.7" - dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4 + checksum: 10c0/341548496df202805489422a160bba75b111d994c64d788a397c35f01784632af48bf06023af8aa2fe72c2c254f8c885b4e0f7f3df5ef17a37370f2feaf80328 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.5 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.20.12": - version: 7.20.12 - resolution: "@babel/helper-create-class-features-plugin@npm:7.20.12" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 1e9ed4243b75278fa24deb40dc62bf537b79307987223a2d2d2ae5abf7ba6dc8435d6e3bb55d52ceb30d3e1eba88e7eb6a1885a8bb519e5cfc3e9dedb97d43e6 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 248532077d732a34cd0844eb7b078ff917c3a8ec81a7f133593f71a860a582f05b60f818dc5049c2212e5baa12289c27889a4b81d56ef409b4863db49646c4b1 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-function-name@npm:7.22.5" - dependencies: - "@babel/template": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 6b1f6ce1b1f4e513bf2c8385a557ea0dd7fa37971b9002ad19268ca4384bbe90c09681fe4c076013f33deabc63a53b341ed91e792de741b4b35e01c00238177a - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 languageName: node linkType: hard @@ -236,105 +143,70 @@ __metadata: version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" dependencies: - "@babel/types": ^7.22.5 - checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + "@babel/types": "npm:^7.22.5" + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.20.7" +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: - "@babel/types": ^7.20.7 - checksum: cec17aab7e964830b0146e575bd141127032319f26ed864a65b35abd75ad618d264d3e11449b9b4e29cfd95bb1a7e774afddd4884fdcc29c36ac9cbd2b66359f + "@babel/types": "npm:^7.23.0" + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" +"@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + "@babel/types": "npm:^7.22.15" + checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" dependencies: - "@babel/types": ^7.22.5 - checksum: 9ac2b0404fa38b80bdf2653fbeaf8e8a43ccb41bd505f9741d820ed95d3c4e037c62a1bcdcb6c9527d7798d2e595924c4d025daed73283badc180ada2c9c49ad - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/helper-module-transforms@npm:7.20.11" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.10 - "@babel/types": ^7.20.7 - checksum: 29319ebafa693d48756c6ba0d871677bb0037e0da084fbe221a17c38d57093fc8aa38543c07d76e788266a937976e37ab4901971ca7f237c5ab45f524b9ecca0 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" - dependencies: - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.5 + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd + "@babel/types": "npm:^7.22.5" + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b +"@babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/helper-plugin-utils@npm:7.24.0" + checksum: 10c0/90f41bd1b4dfe7226b1d33a4bb745844c5c63e400f9e4e8bf9103a7ceddd7d425d65333b564d9daba3cebd105985764d51b4bd4c95822b97c2e3ac1201a8a5da languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" +"@babel/helper-replace-supers@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-member-expression-to-functions": "npm:^7.22.15" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 languageName: node linkType: hard @@ -342,26 +214,17 @@ __metadata: version: 7.22.5 resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 + "@babel/types": "npm:^7.22.5" + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: - "@babel/types": ^7.20.0 - checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b + "@babel/types": "npm:^7.22.5" + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 languageName: node linkType: hard @@ -369,112 +232,60 @@ __metadata: version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: - "@babel/types": ^7.22.5 - checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + "@babel/types": "npm:^7.22.5" + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a +"@babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: bbeca8a85ee86990215c0424997438b388b8d642d69b9f86c375a174d3cdeb270efafd1ff128bc7a1d370923d13b6e45829ba8581c027620e83e3a80c5c414b3 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.20.7": - version: 7.20.13 - resolution: "@babel/helpers@npm:7.20.13" +"@babel/helpers@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/helpers@npm:7.24.0" dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.13 - "@babel/types": ^7.20.7 - checksum: d62076fa834f342798f8c3fd7aec0870cc1725d273d99e540cbaa8d6c3ed10258228dd14601c8e66bfeabbb9424c3b31090ecc467fe855f7bd72c4734df7fb09 + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/dd27c9f11c1c5244ef312fae37636f2fcc69c541c46508017b846c4cf680af059f1922ce84e3f778f123a70d027ded75c96070ee8e906f3bc52dc26dc43df608 languageName: node linkType: hard -"@babel/helpers@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/helpers@npm:7.22.11" +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" dependencies: - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.11 - "@babel/types": ^7.22.11 - checksum: 93186544228b5e371486466ec3b86a77cce91beeff24a5670ca8ec46d50328f7700dab82d532351286e9d68624dc51d6d71589b051dd9535e44be077a43ec013 + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 languageName: node linkType: hard -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" - dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: 7266d2bff8aa8fc78eb65b6e92a8211e12897a731126a282d2f9bb50d8fcaa4c1b02af2284f990ac7e3ab8d892d448a2cab8f5ed0ea8a90bce2c025b11ebe802 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.22.11, @babel/parser@npm:^7.22.5": - version: 7.22.14 - resolution: "@babel/parser@npm:7.22.14" +"@babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/parser@npm:7.24.0" bin: parser: ./bin/babel-parser.js - checksum: a2293971f0889726a3d5a35fcceedc71d2fa4c8d97f438fc348fe0cf7e739affc6e2665e4c6ddd4900714772e19bfd5d6feb967ca1f623b894c0099ecb148b52 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.20.13, @babel/parser@npm:^7.20.7": - version: 7.20.15 - resolution: "@babel/parser@npm:7.20.15" - bin: - parser: ./bin/babel-parser.js - checksum: 1d0f47ca67ff2652f1c0ff1570bed8deccbc4b53509e7cd73476af9cc7ed23480c99f1179bd6d0be01612368b92b39e206d330ad6054009d699934848a89298b + checksum: 10c0/77593d0b9de9906823c4d653bb6cda1c7593837598516330f655f70cba6224a37def7dbe5b4dad0038482d407d8d209eb8be5f48ca9a13357d769f829c5adb8e languageName: node linkType: hard @@ -482,124 +293,91 @@ __metadata: version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 languageName: node linkType: hard "@babel/plugin-proposal-decorators@npm:^7.19.0": - version: 7.20.13 - resolution: "@babel/plugin-proposal-decorators@npm:7.20.13" + version: 7.24.0 + resolution: "@babel/plugin-proposal-decorators@npm:7.24.0" dependencies: - "@babel/helper-create-class-features-plugin": ^7.20.12 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/plugin-syntax-decorators": ^7.19.0 + "@babel/helper-create-class-features-plugin": "npm:^7.24.0" + "@babel/helper-plugin-utils": "npm:^7.24.0" + "@babel/plugin-syntax-decorators": "npm:^7.24.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 445723b410627d52ab2d195589eb9fe5fbd66a00ebfc9bedcf63b6cbfdfc42e163d77ac391f8738ab9f632779e6f2aa427fe468fbbd6661177ef0cdca735a7d5 + checksum: 10c0/6bf16cb2b5b2f1b63b5ea964853cd3b3419c8285296b5bf64a64127c9d5c1b2e6829e84bd92734e4b71df67686d8f36fb01bb8a45fc52bcece7503b73bc42ec7 languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.19.0" +"@babel/plugin-syntax-decorators@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/plugin-syntax-decorators@npm:7.24.0" dependencies: - "@babel/helper-plugin-utils": ^7.19.0 + "@babel/helper-plugin-utils": "npm:^7.24.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 105a13d581a8643ba145d4d0d31f34a492b352defa5b155e785702da6ce9c3ff0c1843ba9bee176e35f6e38afa19dc7bd12c120220af0495de4b128f1dd27f6e + checksum: 10c0/6c11801e062772d4e1b0b418a4732574128b1dfc13193a2909fa93937346746aaa7046f88f6026ff3c80777c967d0fe2e4bb19a1d3fb399e8349c81741e4f471 languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" +"@babel/runtime@npm:^7.21.0": + version: 7.24.0 + resolution: "@babel/runtime@npm:7.24.0" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/3495eed727bf4a4f84c35bb51ab53317ae38f4bbc3b1d0a8303751f9dfa0ce6f5fb2afced72b76c3dd0d8bb2ccb84787559a4dee9886291a36b26f02f0f759b4 languageName: node linkType: hard -"@babel/template@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/template@npm:7.24.0" dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/parser": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: c5746410164039aca61829cdb42e9a55410f43cace6f51ca443313f3d0bdfa9a5a330d0b0df73dc17ef885c72104234ae05efede37c1cc8a72dc9f93425977a3 + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/9d3dd8d22fe1c36bc3bdef6118af1f4b030aaf6d7d2619f5da203efa818a2185d717523486c111de8d99a8649ddf4bbf6b2a7a64962d8411cf6a8fa89f010e54 languageName: node linkType: hard -"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13, @babel/traverse@npm:^7.20.7": - version: 7.20.13 - resolution: "@babel/traverse@npm:7.20.13" +"@babel/traverse@npm:^7.24.0": + version: 7.24.0 + resolution: "@babel/traverse@npm:7.24.0" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.13 - "@babel/types": ^7.20.7 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 30ca6e0bd18233fda48fa09315efd14dfc61dcf5b8fa3712b343bfc61b32bc63b5e85ea1773cc9576c9b293b96f46b4589aaeb0a52e1f3eeac4edc076d049fc7 + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/55ffd2b0ce0fbd0a09051edc4def4fb1e96f35e0b100c0dc2a7429df569971ae312c290e980e423471f350961705698a257c7eea8c8304918024cc26f02468ba languageName: node linkType: hard -"@babel/traverse@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/traverse@npm:7.22.11" +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.24.0, @babel/types@npm:^7.8.3": + version: 7.24.0 + resolution: "@babel/types@npm:7.24.0" dependencies: - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.11 - "@babel/types": ^7.22.11 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 4ad62d548ca8b95dbf45bae16cc167428f174f3c837d55a5878b1f17bdbc8b384d6df741dc7c461b62c04d881cf25644d3ab885909ba46e3ac43224e2b15b504 - languageName: node - linkType: hard - -"@babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.8.3": - version: 7.20.7 - resolution: "@babel/types@npm:7.20.7" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: b39af241f0b72bba67fd6d0d23914f6faec8c0eba8015c181cbd5ea92e59fc91a52a1ab490d3520c7dbd19ddb9ebb76c476308f6388764f16d8201e37fae6811 - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.10, @babel/types@npm:^7.22.11, @babel/types@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/types@npm:7.22.11" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - to-fast-properties: ^2.0.0 - checksum: 431a6446896adb62c876d0fe75263835735d3c974aae05356a87eb55f087c20a777028cf08eadcace7993e058bbafe3b21ce2119363222c6cef9eedd7a204810 + "@babel/helper-string-parser": "npm:^7.23.4" + "@babel/helper-validator-identifier": "npm:^7.22.20" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/777a0bb5dbe038ca4c905fdafb1cdb6bdd10fe9d63ce13eca0bd91909363cbad554a53dc1f902004b78c1dcbc742056f877f2c99eeedff647333b1fadf51235d languageName: node linkType: hard "@cycjimmy/jsmpeg-player@npm:^6.0.4": version: 6.0.5 resolution: "@cycjimmy/jsmpeg-player@npm:6.0.5" - checksum: c83c4cc2060f75d3933c889c92e6261fe207bb79e3af41538be3809a33188875363266b87cb7f70c34f3aaaf475615813ec0520b70c6eae0503f526857b4b4c0 + checksum: 10c0/f061a030fcee2b27157e5e6f196b33b9b47d4e7780a75645fd528bb447e3f766613e27136506499d95b3c5901c5a8951182dd55b154f14f637ec8ed6732074b0 languageName: node linkType: hard @@ -607,21 +385,21 @@ __metadata: version: 1.9.0 resolution: "@dermotduffy/custom-card-helpers@npm:1.9.0" dependencies: - "@formatjs/intl-utils": ^3.8.4 - home-assistant-js-websocket: ^6.0.1 - intl-messageformat: ^9.11.1 - lit: ^2.1.1 - rollup: ^2.63.0 - superstruct: ^0.15.3 - typescript: ^4.5.4 - checksum: 356b6ee436a9c07ce09f8ce435d39eae0448f3d9b4eaef1d32bd6ce3565d5a84c57624b3a28506d265bf55c86bb444e8211054bc9cdd0eb6cf08e1a5ca1e7e4d + "@formatjs/intl-utils": "npm:^3.8.4" + home-assistant-js-websocket: "npm:^6.0.1" + intl-messageformat: "npm:^9.11.1" + lit: "npm:^2.1.1" + rollup: "npm:^2.63.0" + superstruct: "npm:^0.15.3" + typescript: "npm:^4.5.4" + checksum: 10c0/312a31a9abe6ddc37109ffe2725df30e72213b4fa2cceacbb4bdb3712b46a73e49b9fb7fab69dc521050538e882d7180e3d7434011f637a34f2bc9098b880e97 languageName: node linkType: hard "@dermotduffy/panzoom@npm:^4.5.1": version: 4.5.1 resolution: "@dermotduffy/panzoom@npm:4.5.1" - checksum: 4c826f910425e50d9155005947e14bf344ec6b6a68783feb5a62f6bd2d7261cc541ceb18462552be271539a284a24b423dca27201caf45e153002fc5bf1c188e + checksum: 10c0/566f62a81714f9b836b6c0138cdc9913577c3854fe7ce6b609e26734c6692a3db5c9282945930bb6e83c0a70befa269203694f9aeb588e8831842a698c7b51cf languageName: node linkType: hard @@ -629,8 +407,8 @@ __metadata: version: 1.4.0 resolution: "@duetds/date-picker@npm:1.4.0" dependencies: - "@stencil/core": ^2.3.0 - checksum: a7b82bbf207768b6f1ad1e38893ec21ef360d48f155d5c29863cc83414adaf2537f279dec2c146631967e9ea4761eb026d78e209aa1054d3a42e31deaad3a4fc + "@stencil/core": "npm:^2.3.0" + checksum: 10c0/a3be1c26af595a96228bf045fab30585a54dd6a57175a9229da3669952025213c2a8288e32695b946d8491b623bbd2e537dc95114c5ef97cfa2c60a8c908afa2 languageName: node linkType: hard @@ -638,179 +416,211 @@ __metadata: version: 2.0.17 resolution: "@egjs/hammerjs@npm:2.0.17" dependencies: - "@types/hammerjs": ^2.0.36 - checksum: 8945137cec5837edd70af3f2e0ea621543eb0aa3b667e6269ec6485350f4d120c2434b37c7c30b1cf42a65275dd61c1f24626749c616696d3956ac0c008c4766 + "@types/hammerjs": "npm:^2.0.36" + checksum: 10c0/dbedc15a0e633f887c08394bd636faf6a3abd05726dc0909a0e01209d5860a752d9eca5e512da623aecfabe665f49f1d035de3103eb2f9022c5cea692f9cc9be languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-arm64@npm:0.17.15" +"@esbuild/aix-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/aix-ppc64@npm:0.19.12" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm64@npm:0.19.12" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-arm@npm:0.17.15" +"@esbuild/android-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-arm@npm:0.19.12" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/android-x64@npm:0.17.15" +"@esbuild/android-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/android-x64@npm:0.19.12" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/darwin-arm64@npm:0.17.15" +"@esbuild/darwin-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-arm64@npm:0.19.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/darwin-x64@npm:0.17.15" +"@esbuild/darwin-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/darwin-x64@npm:0.19.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/freebsd-arm64@npm:0.17.15" +"@esbuild/freebsd-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-arm64@npm:0.19.12" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/freebsd-x64@npm:0.17.15" +"@esbuild/freebsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/freebsd-x64@npm:0.19.12" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-arm64@npm:0.17.15" +"@esbuild/linux-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm64@npm:0.19.12" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-arm@npm:0.17.15" +"@esbuild/linux-arm@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-arm@npm:0.19.12" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-ia32@npm:0.17.15" +"@esbuild/linux-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ia32@npm:0.19.12" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-loong64@npm:0.17.15" +"@esbuild/linux-loong64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-loong64@npm:0.19.12" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-mips64el@npm:0.17.15" +"@esbuild/linux-mips64el@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-mips64el@npm:0.19.12" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-ppc64@npm:0.17.15" +"@esbuild/linux-ppc64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-ppc64@npm:0.19.12" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-riscv64@npm:0.17.15" +"@esbuild/linux-riscv64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-riscv64@npm:0.19.12" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-s390x@npm:0.17.15" +"@esbuild/linux-s390x@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-s390x@npm:0.19.12" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/linux-x64@npm:0.17.15" +"@esbuild/linux-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/linux-x64@npm:0.19.12" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/netbsd-x64@npm:0.17.15" +"@esbuild/netbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/netbsd-x64@npm:0.19.12" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/openbsd-x64@npm:0.17.15" +"@esbuild/openbsd-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/openbsd-x64@npm:0.19.12" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/sunos-x64@npm:0.17.15" +"@esbuild/sunos-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/sunos-x64@npm:0.19.12" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-arm64@npm:0.17.15" +"@esbuild/win32-arm64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-arm64@npm:0.19.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-ia32@npm:0.17.15" +"@esbuild/win32-ia32@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-ia32@npm:0.19.12" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.17.15": - version: 0.17.15 - resolution: "@esbuild/win32-x64@npm:0.17.15" +"@esbuild/win32-x64@npm:0.19.12": + version: 0.19.12 + resolution: "@esbuild/win32-x64@npm:0.19.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@eslint/eslintrc@npm:^1.4.1": - version: 1.4.1 - resolution: "@eslint/eslintrc@npm:1.4.1" +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.4.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.0": + version: 8.57.0 + resolution: "@eslint/js@npm:8.57.0" + checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 languageName: node linkType: hard @@ -818,9 +628,9 @@ __metadata: version: 1.11.4 resolution: "@formatjs/ecma402-abstract@npm:1.11.4" dependencies: - "@formatjs/intl-localematcher": 0.2.25 - tslib: ^2.1.0 - checksum: 05dbe1c6457acfe9cdc0fc770940260e19fa588be6c655b1ff1697506348dac1eee9b249b64e6544531174d07a5a74a9e75f68430947cfdc074ebe8e3c86f86f + "@formatjs/intl-localematcher": "npm:0.2.25" + tslib: "npm:^2.1.0" + checksum: 10c0/c25d56a54f7c6a356c8475ba76ba5357bbf8cb035ab1da5a6b3b75b41a49dae6e1790271bb619e8d09aca52f1daa3e28d5fa2297297fdef5e986e213be4c84b7 languageName: node linkType: hard @@ -828,8 +638,8 @@ __metadata: version: 1.2.1 resolution: "@formatjs/fast-memoize@npm:1.2.1" dependencies: - tslib: ^2.1.0 - checksum: 7df9e941142be16e5862afe7387926cec44ec136d2c2f9a7e1598cb6c8c23a65e420ed90251ec9b48df083f5473b10d6fbbee2e9fc7233d5bf1f27efffba59a7 + tslib: "npm:^2.1.0" + checksum: 10c0/ec3d5f256ab5c889d7061f58a6c178908b3cec43831d26efdbf79db7f31a6045ab7d4448cf1829de213fa05bec144b795a632249d6a6cd566f7eb7f98daec574 languageName: node linkType: hard @@ -837,10 +647,10 @@ __metadata: version: 2.1.0 resolution: "@formatjs/icu-messageformat-parser@npm:2.1.0" dependencies: - "@formatjs/ecma402-abstract": 1.11.4 - "@formatjs/icu-skeleton-parser": 1.3.6 - tslib: ^2.1.0 - checksum: 8dab4d102b334dd7ab25b85817b074f1b54845d02f9ef9fa5a1fa6a9723176ad28a59d845fdc0eeedb868b891e61a4c530384b123db29f5b14e1f3f8b207373f + "@formatjs/ecma402-abstract": "npm:1.11.4" + "@formatjs/icu-skeleton-parser": "npm:1.3.6" + tslib: "npm:^2.1.0" + checksum: 10c0/d4d432df5232143e343a613a691abf4253f3e97a1fc0edc04b8dcdf2a88628f52fe5a47ed3e4c90ab20d843b6b4ac4c84cb883d040487d576181bfcae7f760f1 languageName: node linkType: hard @@ -848,9 +658,9 @@ __metadata: version: 1.3.6 resolution: "@formatjs/icu-skeleton-parser@npm:1.3.6" dependencies: - "@formatjs/ecma402-abstract": 1.11.4 - tslib: ^2.1.0 - checksum: cce2d8bea54f0096c557dc03920bfe4785893e60962313fab9eeee41f0b411d38b9d45852882b19f261417d730362c8685bea6ba5ac1e2dee141f030cda624e9 + "@formatjs/ecma402-abstract": "npm:1.11.4" + tslib: "npm:^2.1.0" + checksum: 10c0/47aed8193fb632e005a361c229725e2cd9e21844ef1c73995f2e64c67a15dd6c35897760a63af2345f1cbc1807d9ff8b3d90bc9d8c5d985ebfe877e079fdba27 languageName: node linkType: hard @@ -858,8 +668,8 @@ __metadata: version: 0.2.25 resolution: "@formatjs/intl-localematcher@npm:0.2.25" dependencies: - tslib: ^2.1.0 - checksum: ee00ddc23317dc47a58831aaca5112e101d8bb1f38adc0ecfe1a9d7e008d0bb1091519f07e1d7d805b0c1e28f2c3e75f697ae479e22423445814412c7669284c + tslib: "npm:^2.1.0" + checksum: 10c0/a49d5d1a09ff5d02b3c14176783f0e26978895878a35b986fafdf8ecbaa474d669eb1ee1b7a257167cb8df54d5001011d6abde691bc7f75fd123e070e87c194a languageName: node linkType: hard @@ -867,58 +677,65 @@ __metadata: version: 3.8.4 resolution: "@formatjs/intl-utils@npm:3.8.4" dependencies: - emojis-list: ^3.0.0 - checksum: e38a98d391ec68d8abc4bb1824426bd804dfb022ce61be004459faec69f7843ddb3733bae8d0dce4aafbfafad59cb10e67fc21d22d62f68d98251ce0bce8e704 - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + emojis-list: "npm:^3.0.0" + checksum: 10c0/737d5e796c46da0efc956a31a73a754e4e368fa1d7d7190a6c5a10192f6bab93569437a3165669fb0d435f6f054e0651f30e511f3d14bab467fd79384d0e2062 languageName: node linkType: hard "@graphiteds/core@npm:^1.9.11": - version: 1.9.11 - resolution: "@graphiteds/core@npm:1.9.11" + version: 1.9.20 + resolution: "@graphiteds/core@npm:1.9.20" dependencies: - "@duetds/date-picker": ^1.4.0 - "@popperjs/core": ^2.11.5 - "@stencil/core": ^2.20.0 - checksum: de67030f51fb165563bd73dc55a1294063f40e6de1bd55f864ea9c627069da81fbdb171de7908ae34a8c3f8d0505fd9414762bd695a0e449304d441867bc59cc + "@duetds/date-picker": "npm:^1.4.0" + "@popperjs/core": "npm:^2.11.5" + "@stencil/core": "npm:^2.20.0" + checksum: 10c0/934f79ef0a19dd581841321df5a0760c4aabdb7c2609ed5a15dbf54faf0ad8442ff86aa120e57215d56f6e914011c14debac99840d87b32929789f407698b176 languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.8": - version: 0.11.8 - resolution: "@humanwhocodes/config-array@npm:0.11.8" +"@humanwhocodes/config-array@npm:^0.11.14": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.5 - checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 languageName: node linkType: hard "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.2 + resolution: "@humanwhocodes/object-schema@npm:2.0.2" + checksum: 10c0/6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a languageName: node linkType: hard @@ -926,111 +743,77 @@ __metadata: version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@sinclair/typebox": ^0.27.8 - checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.17": - version: 0.3.19 - resolution: "@jridgewell/trace-mapping@npm:0.3.19" +"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.24 + resolution: "@jridgewell/trace-mapping@npm:0.3.24" dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/5d6656c439f67cee8bc196a72ceebc446c23924dba6c67806fd3dfefb3ef4c8b2168ea44a0293d8c33c71b88e60862e0397576ef8707e4321e64898fec7a0189 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@lit-labs/scoped-registry-mixin@npm:^1.0.3": + version: 1.0.3 + resolution: "@lit-labs/scoped-registry-mixin@npm:1.0.3" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + "@lit/reactive-element": "npm:^1.0.0 || ^2.0.0" + lit: "npm:^2.0.0 || ^3.0.0" + checksum: 10c0/eb03fd10ba400eb80ef7acac84a128a10f595dc38ad8e9d559d5fd141e36b51441a79c262852e91560ea60437815e65e216098537a5baf2f1fe2cb5404377620 languageName: node linkType: hard -"@lit-labs/scoped-registry-mixin@npm:^1.0.1": - version: 1.0.1 - resolution: "@lit-labs/scoped-registry-mixin@npm:1.0.1" - dependencies: - "@lit/reactive-element": ^1.0.0 - lit: ^2.0.0 - checksum: 94a86c8329d27b0f7e3b6ec1928c0eb7efc64f6dc2ed2d5cce09184650e465ce63e77ca4fec95d508583ea0d793fe0495b75a7b0830f5c1f951caa28d7d51842 - languageName: node - linkType: hard - -"@lit-labs/ssr-dom-shim@npm:^1.0.0": - version: 1.0.0 - resolution: "@lit-labs/ssr-dom-shim@npm:1.0.0" - checksum: ccba6675ad631c6f7360af4e12e328e88d877a52ec992ae9254a1be9902ef699b7916d851b073803dd91244d0f709de2c0539a7db643889cfe341ff6e1a74eb5 +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0, @lit-labs/ssr-dom-shim@npm:^1.2.0": + version: 1.2.0 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.0" + checksum: 10c0/016168cf6901ab343462c13fb168dda6d549f8b42680aa394e6b7cd0af7cce51271e00dbfa5bbbe388912bf89cbb8f941a21cc3ec9bf95d6a84b6241aa9e5a72 languageName: node linkType: hard @@ -1038,17 +821,26 @@ __metadata: version: 1.1.3 resolution: "@lit-labs/task@npm:1.1.3" dependencies: - "@lit/reactive-element": ^1.1.0 - checksum: 82b3680a8b6d5c447364857a0beb8e28237c05fdffe06456183196521000b4fcd696da374f17d28020248042bda2af7d4ddf9adbe40309c32e6672afa6e58935 + "@lit/reactive-element": "npm:^1.1.0" + checksum: 10c0/bea28fbd87a486a06d4f2f51ba63db27419e659a97e723dc6c0009375262fb0f526a7436273589830fdf42dc1117f7aec372c5bf975c6adfca69cf64eaeecfd0 languageName: node linkType: hard -"@lit/reactive-element@npm:^1.0.0, @lit/reactive-element@npm:^1.1.0, @lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": - version: 1.6.1 - resolution: "@lit/reactive-element@npm:1.6.1" +"@lit/reactive-element@npm:^1.0.0 || ^2.0.0, @lit/reactive-element@npm:^2.0.4": + version: 2.0.4 + resolution: "@lit/reactive-element@npm:2.0.4" dependencies: - "@lit-labs/ssr-dom-shim": ^1.0.0 - checksum: fab0bcfdade9c26af2ad5115fb564bcf8ba0732a3a8be86c157851c2771e3fdc65ab38f2cd60fa121946058bf6e487461fd217f87b01f96e88ee7a95d5d866ba + "@lit-labs/ssr-dom-shim": "npm:^1.2.0" + checksum: 10c0/359cc19ea9ee8b65e1417eb9c12f40dddba8f0a5ab32f0e5facaecee6060629e44eb4ca27d9af945fe6eda8c033aa636abaa5f0c4e6a529b224d78674acf47ba + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.1.0, @lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": "npm:^1.0.0" + checksum: 10c0/10f1d25e24e32feb21c4c6f9e11d062901241602e12c4ecf746b3138f87fed4d8394194645514d5c1bfd5f33f3fd56ee8ef41344e2cb4413c40fe4961ec9d419 languageName: node linkType: hard @@ -1056,16 +848,16 @@ __metadata: version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard @@ -1073,36 +865,45 @@ __metadata: version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 languageName: node linkType: hard -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" +"@npmcli/agent@npm:^2.0.0": + version: 2.2.1 + resolution: "@npmcli/agent@npm:2.2.1" dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.1" + checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 languageName: node linkType: hard -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 + semver: "npm:^7.3.5" + checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd languageName: node linkType: hard "@popperjs/core@npm:^2.11.5": - version: 2.11.6 - resolution: "@popperjs/core@npm:2.11.6" - checksum: 47fb328cec1924559d759b48235c78574f2d71a8a6c4c03edb6de5d7074078371633b91e39bbf3f901b32aa8af9b9d8f82834856d2f5737a23475036b16817f0 + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 languageName: node linkType: hard @@ -1110,8 +911,8 @@ __metadata: version: 5.3.1 resolution: "@rollup/plugin-babel@npm:5.3.1" dependencies: - "@babel/helper-module-imports": ^7.10.4 - "@rollup/pluginutils": ^3.1.0 + "@babel/helper-module-imports": "npm:^7.10.4" + "@rollup/pluginutils": "npm:^3.1.0" peerDependencies: "@babel/core": ^7.0.0 "@types/babel__core": ^7.1.9 @@ -1119,7 +920,7 @@ __metadata: peerDependenciesMeta: "@types/babel__core": optional: true - checksum: 220d71e4647330f252ef33d5f29700aef2e8284a0b61acfcceb47617a7f96208aa1ed16eae75619424bf08811ede5241e271a6d031f07026dee6b3a2bdcdc638 + checksum: 10c0/2766134dd5567c0d4fd6909d1f511ce9bf3bd9d727e1bc5ffdd6097a3606faca324107ae8e0961839ee4dbb45e5e579ae601efe472fc0a271259aea79920cafa languageName: node linkType: hard @@ -1127,31 +928,31 @@ __metadata: version: 22.0.2 resolution: "@rollup/plugin-commonjs@npm:22.0.2" dependencies: - "@rollup/pluginutils": ^3.1.0 - commondir: ^1.0.1 - estree-walker: ^2.0.1 - glob: ^7.1.6 - is-reference: ^1.2.1 - magic-string: ^0.25.7 - resolve: ^1.17.0 + "@rollup/pluginutils": "npm:^3.1.0" + commondir: "npm:^1.0.1" + estree-walker: "npm:^2.0.1" + glob: "npm:^7.1.6" + is-reference: "npm:^1.2.1" + magic-string: "npm:^0.25.7" + resolve: "npm:^1.17.0" peerDependencies: rollup: ^2.68.0 - checksum: 70098a4b91afe3f164f5d27cba65edf148c5ed146ee0e07a964b66940681553ac77391083114cdcf9427e7f2706bf0d61eab310b3a2caeab83b7452c0292fcae + checksum: 10c0/2b9df23a40493e5ca6dab50b28a7803c0fe73f5fe84c16f38e3e00e38b9a246de450d1ee8dba145ea5dc3c661616a4ae1927b084fdbb47ae3afcac979fdfa1d1 languageName: node linkType: hard "@rollup/plugin-image@npm:^3.0.2": - version: 3.0.2 - resolution: "@rollup/plugin-image@npm:3.0.2" + version: 3.0.3 + resolution: "@rollup/plugin-image@npm:3.0.3" dependencies: - "@rollup/pluginutils": ^5.0.1 - mini-svg-data-uri: ^1.4.4 + "@rollup/pluginutils": "npm:^5.0.1" + mini-svg-data-uri: "npm:^1.4.4" peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: f9d8f587f10c51398fa8c23f1543e3073f969cf7e4acd7f401e02a3e3752702a9eb289ddb14009733ce37d04474c549aba9e7d13ebf50e26226266ba51546b69 + checksum: 10c0/e699e52c44b1799df887f72959779c9d2af11f04b23ed84dc7a4c423f72c66b14510c8a366a9856e07047fbabbd6e94c1972fcced2c80b2c5e7e91e8414e8b48 languageName: node linkType: hard @@ -1159,10 +960,10 @@ __metadata: version: 4.1.0 resolution: "@rollup/plugin-json@npm:4.1.0" dependencies: - "@rollup/pluginutils": ^3.0.8 + "@rollup/pluginutils": "npm:^3.0.8" peerDependencies: rollup: ^1.20.0 || ^2.0.0 - checksum: 867bc9339b4ccf0b9ff3b2617a95b3b8920115163f86c8e3b1f068a14ca25949472d3c05b09a5ac38ca0fe2185756e34617eaeb219d4a2b6e2307c501c7d4552 + checksum: 10c0/9fc4a3ee60929afcb5269ebda602914d1cf5dc020808f85be90c0a5a2ba9ca26136b0284a1935984861f0549a1e1db30fc372906c14425f5da4909f0fd21e5ea languageName: node linkType: hard @@ -1170,15 +971,15 @@ __metadata: version: 13.3.0 resolution: "@rollup/plugin-node-resolve@npm:13.3.0" dependencies: - "@rollup/pluginutils": ^3.1.0 - "@types/resolve": 1.17.1 - deepmerge: ^4.2.2 - is-builtin-module: ^3.1.0 - is-module: ^1.0.0 - resolve: ^1.19.0 + "@rollup/pluginutils": "npm:^3.1.0" + "@types/resolve": "npm:1.17.1" + deepmerge: "npm:^4.2.2" + is-builtin-module: "npm:^3.1.0" + is-module: "npm:^1.0.0" + resolve: "npm:^1.19.0" peerDependencies: rollup: ^2.42.0 - checksum: ec5418e6b3c23a9e30683056b3010e9d325316dcfae93fbc673ae64dad8e56a2ce761c15c48f5e2dcfe0c822fdc4a4905ee6346e3dcf90603ba2260afef5a5e6 + checksum: 10c0/6caa32a8304a20f1c9953111b25e9543f4de7d254958d81ce0158ad909e4493946bc2060c4ace23d9748b560ebc84c920ee7bc1b7d50dbf8ba852ef13c91af58 languageName: node linkType: hard @@ -1186,11 +987,11 @@ __metadata: version: 4.0.0 resolution: "@rollup/plugin-replace@npm:4.0.0" dependencies: - "@rollup/pluginutils": ^3.1.0 - magic-string: ^0.25.7 + "@rollup/pluginutils": "npm:^3.1.0" + magic-string: "npm:^0.25.7" peerDependencies: rollup: ^1.20.0 || ^2.0.0 - checksum: b61701e612661a46da06ca88f390c3839b586708abc0329a476411b90aa8ac59fe94437ede4c3fe53fea268b3054ea9d7d4ee851d7bd0cb7a5f06906002067cb + checksum: 10c0/90c8983ec6944dcc85bb8f0a4448a57329f43662ca5d6ebf26aad97c3871d39ba7f2d344569bc93f35eb57ddd697470b6fcb255cd1f4a9331f3334b16cb3c1aa languageName: node linkType: hard @@ -1198,12 +999,12 @@ __metadata: version: 3.1.0 resolution: "@rollup/pluginutils@npm:3.1.0" dependencies: - "@types/estree": 0.0.39 - estree-walker: ^1.0.1 - picomatch: ^2.2.2 + "@types/estree": "npm:0.0.39" + estree-walker: "npm:^1.0.1" + picomatch: "npm:^2.2.2" peerDependencies: rollup: ^1.20.0||^2.0.0 - checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa + checksum: 10c0/7151753160d15ba2b259461a6c25b3932150994ea52dba8fd3144f634c7647c2e56733d986e2c15de67c4d96a9ee7d6278efa6d2e626a7169898fd64adc0f90c languageName: node linkType: hard @@ -1211,55 +1012,146 @@ __metadata: version: 4.2.1 resolution: "@rollup/pluginutils@npm:4.2.1" dependencies: - estree-walker: ^2.0.1 - picomatch: ^2.2.2 - checksum: 6bc41f22b1a0f1efec3043899e4d3b6b1497b3dea4d94292d8f83b4cf07a1073ecbaedd562a22d11913ff7659f459677b01b09e9598a98936e746780ecc93a12 + estree-walker: "npm:^2.0.1" + picomatch: "npm:^2.2.2" + checksum: 10c0/3ee56b2c8f1ed8dfd0a92631da1af3a2dfdd0321948f089b3752b4de1b54dc5076701eadd0e5fc18bd191b77af594ac1db6279e83951238ba16bf8a414c64c48 languageName: node linkType: hard "@rollup/pluginutils@npm:^5.0.1": - version: 5.0.2 - resolution: "@rollup/pluginutils@npm:5.0.2" + version: 5.1.0 + resolution: "@rollup/pluginutils@npm:5.1.0" dependencies: - "@types/estree": ^1.0.0 - estree-walker: ^2.0.2 - picomatch: ^2.3.1 + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^2.3.1" peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: edea15e543bebc7dcac3b0ac8bc7b8e8e6dbd46e2864dbe5dd28072de1fbd5b0e10d545a610c0edaa178e8a7ac432e2a2a52e547ece1308471412caba47db8ce + checksum: 10c0/c7bed15711f942d6fdd3470fef4105b73991f99a478605e13d41888963330a6f9e32be37e6ddb13f012bc7673ff5e54f06f59fd47109436c1c513986a8a7612d + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.12.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-android-arm64@npm:4.12.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.12.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.12.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.12.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.12.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.12.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.12.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.12.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.12.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.12.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.12.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.12.0": + version: 4.12.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.12.0" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard "@stencil/core@npm:^2.20.0, @stencil/core@npm:^2.3.0": - version: 2.22.2 - resolution: "@stencil/core@npm:2.22.2" + version: 2.22.3 + resolution: "@stencil/core@npm:2.22.3" bin: stencil: bin/stencil - checksum: 139a7b63b81c7eaa5026e76e1c947a402f58d0a6d1d353a34883995ea7e480fa6991e71c0c3d812f7046d395b99d0f7f7b11af9277f04a3c62aba96cda18dd5d + checksum: 10c0/6df88e165ec0cf132b1dbdb71d61399359974c7533a20b5e2bcee5f9ab4495a63dff5cbb4b2687639ee711c91ef36ac55af45e613464e4f904ce346f490b04dc languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 languageName: node linkType: hard "@trysound/sax@npm:0.2.0": version: 0.2.0 resolution: "@trysound/sax@npm:0.2.0" - checksum: 11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 languageName: node linkType: hard @@ -1267,133 +1159,112 @@ __metadata: version: 0.12.3 resolution: "@ts-morph/common@npm:0.12.3" dependencies: - fast-glob: ^3.2.7 - minimatch: ^3.0.4 - mkdirp: ^1.0.4 - path-browserify: ^1.0.1 - checksum: d96ea9805d4f0300cc05c47daa9454438903b86ffb7116f5181a1eba71e881012a1adc2a867b3afbe4429ef29e3e0d6204175cbaf33ecdd7a7d09b5d8a37f12d + fast-glob: "npm:^3.2.7" + minimatch: "npm:^3.0.4" + mkdirp: "npm:^1.0.4" + path-browserify: "npm:^1.0.1" + checksum: 10c0/2a0b25128eca547cfdf4795d39e7d6e15c81008b74867ccdda9d0d9c1b0eaca534d6d729220572e726a811786efa3c38f3b6a482d3fc970d3bf0acea39a7248f languageName: node linkType: hard "@types/bluebird@npm:^3.5.36": - version: 3.5.38 - resolution: "@types/bluebird@npm:3.5.38" - checksum: 8d1b04261e8e58816ec84ffa616c9e641c9416d0ab10c915ddb9cd8a0e7070af16df4f2eec243a3809cbed8ecee2fb3f45600ae43b3ab0ceea563aa18ceb6ab1 - languageName: node - linkType: hard - -"@types/chai-subset@npm:^1.3.3": - version: 1.3.3 - resolution: "@types/chai-subset@npm:1.3.3" - dependencies: - "@types/chai": "*" - checksum: 4481da7345022995f5a105e6683744f7203d2c3d19cfe88d8e17274d045722948abf55e0adfd97709e0f043dade37a4d4e98cd4c660e2e8a14f23e6ecf79418f - languageName: node - linkType: hard - -"@types/chai@npm:*": - version: 4.3.4 - resolution: "@types/chai@npm:4.3.4" - checksum: 571184967beb03bf64c4392a13a7d44e72da9af5a1e83077ff81c39cf59c0fda2a5c78d2005084601cf8f3d11726608574d8b5b4a0e3e9736792807afd926cd0 - languageName: node - linkType: hard - -"@types/chai@npm:^4.3.5": - version: 4.3.5 - resolution: "@types/chai@npm:4.3.5" - checksum: c8f26a88c6b5b53a3275c7f5ff8f107028e3cbb9ff26795fff5f3d9dea07106a54ce9e2dce5e40347f7c4cc35657900aaf0c83934a25a1ae12e61e0f5516e431 + version: 3.5.42 + resolution: "@types/bluebird@npm:3.5.42" + checksum: 10c0/ce752a5e277bbc0cdee3dee9c875ac093d1331905a8a5175665ccb8cb76b7b95a84836f92bc46076c2fd1e384a107866893eeeb20f6fb33427482663879faf93 languageName: node linkType: hard "@types/cssnano@npm:^5.0.0": - version: 5.1.0 - resolution: "@types/cssnano@npm:5.1.0" + version: 5.0.0 + resolution: "@types/cssnano@npm:5.0.0" dependencies: - cssnano: "*" - checksum: 4cce9e5d041a6276cd2e4bc3fce3e9ef5cd53531f86cedee2e9abdd12b050fb927e7a68a87043dbfa222f74ad3eced377d677a113b4772ec7297c737cdab0d74 + postcss: "npm:^8" + checksum: 10c0/3b939509d65c053c274dc261cef17d9329e02d82784b569e441e01fb61dbcd5c914c5f7f53499cc641a1b224c30a9c814e419f8cb682be249d87fa2ddc20e9ae languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 +"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard "@types/estree@npm:0.0.39": version: 0.0.39 resolution: "@types/estree@npm:0.0.39" - checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 + checksum: 10c0/f0af6c95ac1988c4827964bd9d3b51d24da442e2188943f6dfcb1e1559103d5d024d564b2e9d3f84c53714a02a0a7435c7441138eb63d9af5de4dfc66cdc0d92 languageName: node linkType: hard "@types/hammerjs@npm:^2.0.36": - version: 2.0.41 - resolution: "@types/hammerjs@npm:2.0.41" - checksum: d16fbd688fc9b18cc270abe8dea8d4c50ef7bd8375e593d92c233d299387933a6b003c8db69819344833052458bc5f9ef1b472001277a49f095928d184356006 + version: 2.0.45 + resolution: "@types/hammerjs@npm:2.0.45" + checksum: 10c0/1f01e3d0260e3cb824fd0ae32c9a8e1b3727e53ef31682612a0a282c4a84bb758dd30b04749b2ae91e621443c80bfe541b38e91e33308f9dea5d9ac92bd0e854 languageName: node linkType: hard "@types/jquery@npm:*": - version: 3.5.16 - resolution: "@types/jquery@npm:3.5.16" + version: 3.5.29 + resolution: "@types/jquery@npm:3.5.29" dependencies: - "@types/sizzle": "*" - checksum: 13c995f15d1c2f1d322103dc1cb0a22b95eecc3e7546f00279b8731aea21d7ec04550af40e609ee48e755d4e11bf61c25b4aa9f53df3bcbec4b8fe8e81471732 + "@types/sizzle": "npm:*" + checksum: 10c0/17409b551956c54d641264895790b9e63a2179bacdabe2a87d5f8f2baebe2f16625d111b17b1441cdffbf9e059e683bb25bf04ba6ea56b36e39ea50cc77f5b8c languageName: node linkType: hard "@types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db languageName: node linkType: hard "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac languageName: node linkType: hard "@types/lodash-es@npm:^4.17.5": - version: 4.17.6 - resolution: "@types/lodash-es@npm:4.17.6" + version: 4.17.12 + resolution: "@types/lodash-es@npm:4.17.12" dependencies: - "@types/lodash": "*" - checksum: 9bd239dd525086e278821949ce12fbdd4f100a060fed9323fc7ad5661113e1641f28a7ebab617230ed3474680d8f4de705c1928b48252bb684be6ec9eed715db + "@types/lodash": "npm:*" + checksum: 10c0/5d12d2cede07f07ab067541371ed1b838a33edb3c35cb81b73284e93c6fd0c4bbeaefee984e69294bffb53f62d7272c5d679fdba8e595ff71e11d00f2601dde0 languageName: node linkType: hard "@types/lodash@npm:*": - version: 4.14.191 - resolution: "@types/lodash@npm:4.14.191" - checksum: ba0d5434e10690869f32d5ea49095250157cae502f10d57de0a723fd72229ce6c6a4979576f0f13e0aa9fbe3ce2457bfb9fa7d4ec3d6daba56730a51906d1491 + version: 4.14.202 + resolution: "@types/lodash@npm:4.14.202" + checksum: 10c0/6064d43c8f454170841bd67c8266cc9069d9e570a72ca63f06bceb484cb4a3ee60c9c1f305c1b9e3a87826049fd41124b8ef265c4dd08b00f6766609c7fe9973 languageName: node linkType: hard "@types/masonry-layout@npm:^4.2.5": - version: 4.2.5 - resolution: "@types/masonry-layout@npm:4.2.5" + version: 4.2.7 + resolution: "@types/masonry-layout@npm:4.2.7" dependencies: - "@types/jquery": "*" - checksum: 68961e4dd393a8d51e6e80676a814a6741c0c9175501a1a556ec6d4ef5438aa1e982248a90c7f00099fb18da9529e9f6733be5ffebdb9b2e95cd36a6adeecb40 + "@types/jquery": "npm:*" + checksum: 10c0/81ea3d8c0780ff7a4523dd8e954f4825806ca2c9928e13a19489571f2517e483c0a7143abc322da9fc820392e8c92a8a88aa9eda0a67ceb68a4bd346711aa157 languageName: node linkType: hard "@types/node@npm:*": - version: 18.11.19 - resolution: "@types/node@npm:18.11.19" - checksum: d7cd19fcfc59cbdd3f9ba0b4072cb7adc21bd575bd8eb7d7e698975e63564aaa83f03434f32b12331f84f73d0b369d9cbe2371e359d9d7f5c3361f4987f4f7da + version: 20.11.24 + resolution: "@types/node@npm:20.11.24" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/5a62225eb4797b41e6953f9c08c4611d607b5422ddd153312fc81ed6ed37115228ae27e3e3caa1a3bf52d88310306a196ba1cfbd8b2ec918a20f64d80dfa22c9 languageName: node linkType: hard "@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 languageName: node linkType: hard @@ -1401,233 +1272,244 @@ __metadata: version: 1.17.1 resolution: "@types/resolve@npm:1.17.1" dependencies: - "@types/node": "*" - checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5 + "@types/node": "npm:*" + checksum: 10c0/6eeb9c27d99bf4b393bf168d43208f63e78cefca5644662a0bdb2bdbf8352386f4f3aca66add138fc41bce5f66fd48a0de430a1473f11b612fbed0375ae78031 languageName: node linkType: hard "@types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa languageName: node linkType: hard "@types/sizzle@npm:*": - version: 2.3.3 - resolution: "@types/sizzle@npm:2.3.3" - checksum: 586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160 + version: 2.3.8 + resolution: "@types/sizzle@npm:2.3.8" + checksum: 10c0/ab5460147ae6680cc20c2223a8f17d9f7c97144b70f00a222a1c32d68b5207696d48177ab9784dda88c74d93ed5a78dd31f74d271b15382520b423c81b4aac89 languageName: node linkType: hard "@types/trusted-types@npm:^2.0.2": - version: 2.0.2 - resolution: "@types/trusted-types@npm:2.0.2" - checksum: 3371eef5f1c50e1c3c07a127c1207b262ba65b83dd167a1c460fc1b135a3fb0c97b9f508efebd383f239cc5dd5b7169093686a692a501fde9c3f7208657d9b0d + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^5.36.2": - version: 5.51.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.51.0" + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.51.0 - "@typescript-eslint/type-utils": 5.51.0 - "@typescript-eslint/utils": 5.51.0 - debug: ^4.3.4 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - natural-compare-lite: ^1.4.0 - regexpp: ^3.2.0 - semver: ^7.3.7 - tsutils: ^3.21.0 + "@eslint-community/regexpp": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" peerDependencies: "@typescript-eslint/parser": ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 5351d8cec13bd9867ce4aaf7052aa31c9ca867fc89c620fc0fe5718ac2cbc165903275db59974324d98e45df0d33a73a4367d236668772912731031a672cfdcd + checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard "@typescript-eslint/parser@npm:^5.36.2": - version: 5.51.0 - resolution: "@typescript-eslint/parser@npm:5.51.0" + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" dependencies: - "@typescript-eslint/scope-manager": 5.51.0 - "@typescript-eslint/types": 5.51.0 - "@typescript-eslint/typescript-estree": 5.51.0 - debug: ^4.3.4 + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 096ec819132839febd4f390c4bbf31687e06191092c244dbd189a64cd7383fbaba728f2765e8809cd9834c0069163ab38b0e5f0f6360157d831647d4c295f8cd + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/scope-manager@npm:5.51.0" +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.51.0 - "@typescript-eslint/visitor-keys": 5.51.0 - checksum: b3c9f48b6b7a7ae2ebcad4745ef91e4727776b2cf56d31be6456b1aa063aa649539e20f9fffa83cad9ccaaa9c492f2354a1c15526a2b789e235ec58b3a82d22c + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/type-utils@npm:5.51.0" +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" dependencies: - "@typescript-eslint/typescript-estree": 5.51.0 - "@typescript-eslint/utils": 5.51.0 - debug: ^4.3.4 - tsutils: ^3.21.0 + "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" peerDependencies: eslint: "*" peerDependenciesMeta: typescript: optional: true - checksum: ab9747b0c629cfaaab903eed8ce1e39d34d69a402ce5faf2f1fff2bbb461bdbe034044b1368ba67ba8e5c1c512172e07d83c8a563635d8de811bf148d95c7dec + checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/types@npm:5.51.0" - checksum: b31021a0866f41ba5d71b6c4c7e20cc9b99d49c93bb7db63b55b2e51542fb75b4e27662ee86350da3c1318029e278a5a807facaf4cb5aeea724be8b0e021e836 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.51.0" +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.51.0 - "@typescript-eslint/visitor-keys": 5.51.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" peerDependenciesMeta: typescript: optional: true - checksum: aec23e5cab48ee72fefa6d1ac266639ebabf6cebec1e0207ad47011d3a48186ac9a632c8e34c3bac896155f54895a497230c11d789fd81263b08eb267d7113ce + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/utils@npm:5.51.0" +"@typescript-eslint/utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" dependencies: - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.51.0 - "@typescript-eslint/types": 5.51.0 - "@typescript-eslint/typescript-estree": 5.51.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - semver: ^7.3.7 + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c6e28c942fbac5500f0e8ed67ef304b484ba296486e55306f78fb090dc9d5bb1f25a0bedc065e14680041eadce5e95fa10aab618cb0c316599ec987e6ea72442 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.51.0": - version: 5.51.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.51.0" +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" dependencies: - "@typescript-eslint/types": 5.51.0 - eslint-visitor-keys: ^3.3.0 - checksum: b49710f3c6b3b62a846a163afffd81be5eb2b1f44e25bec51ff3c9f4c3b579d74aa4cbd3753b4fc09ea3dbc64a7062f9c658c08d22bb2740a599cb703d876220 + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard -"@vitest/coverage-istanbul@npm:^0.34.3": - version: 0.34.3 - resolution: "@vitest/coverage-istanbul@npm:0.34.3" +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@vitest/coverage-istanbul@npm:^1.3.1": + version: 1.3.1 + resolution: "@vitest/coverage-istanbul@npm:1.3.1" dependencies: - istanbul-lib-coverage: ^3.2.0 - istanbul-lib-instrument: ^6.0.0 - istanbul-lib-report: ^3.0.1 - istanbul-lib-source-maps: ^4.0.1 - istanbul-reports: ^3.1.5 - test-exclude: ^6.0.0 + debug: "npm:^4.3.4" + istanbul-lib-coverage: "npm:^3.2.2" + istanbul-lib-instrument: "npm:^6.0.1" + istanbul-lib-report: "npm:^3.0.1" + istanbul-lib-source-maps: "npm:^4.0.1" + istanbul-reports: "npm:^3.1.6" + magicast: "npm:^0.3.3" + picocolors: "npm:^1.0.0" + test-exclude: "npm:^6.0.0" peerDependencies: - vitest: ">=0.32.0 <1" - checksum: 6e5f437d8b3d1e93aa25180661d47339b2a1df24686a5d7154cd266db47fbf0c2a2faa58290f79dd009e531e16c14bfb8a0fb49031d9a14b6e962de82155eb12 + vitest: 1.3.1 + checksum: 10c0/40efacde51e5998bde8032dd45d64fe214674f1efb97c094c4ae9ef1893afc4e0ef97f3fa4cc4923561b67b1196c27a877a0fa5bc71a049b8e48e3ef1f5c48db languageName: node linkType: hard -"@vitest/expect@npm:0.34.3": - version: 0.34.3 - resolution: "@vitest/expect@npm:0.34.3" +"@vitest/expect@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/expect@npm:1.3.1" dependencies: - "@vitest/spy": 0.34.3 - "@vitest/utils": 0.34.3 - chai: ^4.3.7 - checksum: 79afaa37d2efb7bb5503332caf389860b2261f198dbe61557e8061262b628d18658e59eb51d1808ecd35fc59f4bb4d04c0e0f97a27c7db02584ab5b424147b8d + "@vitest/spy": "npm:1.3.1" + "@vitest/utils": "npm:1.3.1" + chai: "npm:^4.3.10" + checksum: 10c0/ea66a1e912d896a481a27631b68089b885af7e8ed62ba8aaa119c37a9beafe6c094fd672775a20e6e23460af66e294f9ca259e6e0562708d1b7724eaaf53c7bb languageName: node linkType: hard -"@vitest/runner@npm:0.34.3": - version: 0.34.3 - resolution: "@vitest/runner@npm:0.34.3" +"@vitest/runner@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/runner@npm:1.3.1" dependencies: - "@vitest/utils": 0.34.3 - p-limit: ^4.0.0 - pathe: ^1.1.1 - checksum: 945580eaa58e8edbe29a64059bc2a524a9e85117b6d600fdb457cfe84cbfb81bf6d7e98e1227e7cb4e7399992c8fe8d83d0791d0385ff005dc1a4d9da125443b + "@vitest/utils": "npm:1.3.1" + p-limit: "npm:^5.0.0" + pathe: "npm:^1.1.1" + checksum: 10c0/d732de2368d2bc32cbc27f0bbc5477f6e36088ddfb873c036935a45b1b252ebc529b932cf5cd944eed9b692243acebef828f6d3218583cb8a6817a8270712050 languageName: node linkType: hard -"@vitest/snapshot@npm:0.34.3": - version: 0.34.3 - resolution: "@vitest/snapshot@npm:0.34.3" +"@vitest/snapshot@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/snapshot@npm:1.3.1" dependencies: - magic-string: ^0.30.1 - pathe: ^1.1.1 - pretty-format: ^29.5.0 - checksum: 234893e91a1efd4bdbbde047a68de40975e02ead8407724ce8ca4a24edf0fb2d725f8a3efceb104965388407b598faf22407aadfbf4164cc74b3cf1e0e9f4543 + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + checksum: 10c0/cad0844270852c6d53c1ca6b7ca279034880d2140837ff245d5bd2376f4356cc924929c58dc69bcf9fad83ba934d4a06000c908971cc24b5d7a9ec2656b72d29 languageName: node linkType: hard -"@vitest/spy@npm:0.34.3": - version: 0.34.3 - resolution: "@vitest/spy@npm:0.34.3" +"@vitest/spy@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/spy@npm:1.3.1" dependencies: - tinyspy: ^2.1.1 - checksum: a2b64b9c357a56ad2f2340ecd225ffe787e61afba4ffb24a6670aad3fc90ea2606ed48daa188ed62b3ef67d55c0259fda6b101143d6c91b58c9ac4298d8be4f9 + tinyspy: "npm:^2.2.0" + checksum: 10c0/efc42f679d2a51fc6583ca3136ccd47581cb27c923ed3cb0500f5dee9aac99b681bfdd400c16ef108f2e0761daa642bc190816a6411931a2aba99ebf8b213dd4 languageName: node linkType: hard -"@vitest/utils@npm:0.34.3": - version: 0.34.3 - resolution: "@vitest/utils@npm:0.34.3" +"@vitest/utils@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/utils@npm:1.3.1" dependencies: - diff-sequences: ^29.4.3 - loupe: ^2.3.6 - pretty-format: ^29.5.0 - checksum: aeb8ef7fd98b32cb6c403796880d0aa8f5411bbdb249bb23b3301a70e1b7d1ee025ddb204aae8c1db5756f6ac428c49ebbb8e2ed23ce185c8a659b67413efa85 + diff-sequences: "npm:^29.6.3" + estree-walker: "npm:^3.0.3" + loupe: "npm:^2.3.7" + pretty-format: "npm:^29.7.0" + checksum: 10c0/d604c8ad3b1aee30d4dcd889098f591407bfe18547ff96485b1d1ed54eff58219c756a9544a7fbd4e37886863abacd7a89a76334cb3ea7f84c3d496bb757db23 languageName: node linkType: hard "abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 languageName: node linkType: hard @@ -1635,9 +1517,9 @@ __metadata: version: 7.0.1 resolution: "acorn-globals@npm:7.0.1" dependencies: - acorn: ^8.1.0 - acorn-walk: ^8.0.2 - checksum: 2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b languageName: node linkType: hard @@ -1646,52 +1528,41 @@ __metadata: resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 languageName: node linkType: hard -"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.2.0": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.3.2": + version: 8.3.2 + resolution: "acorn-walk@npm:8.3.2" + checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.5.0, acorn@npm:^8.8.0, acorn@npm:^8.8.2": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" +"acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 languageName: node linkType: hard -"acorn@npm:^8.10.0, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": +"agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.2.1 - resolution: "agentkeepalive@npm:4.2.1" +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 + debug: "npm:^4.3.4" + checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce languageName: node linkType: hard @@ -1699,28 +1570,35 @@ __metadata: version: 3.1.0 resolution: "aggregate-error@npm:3.1.0" dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": +"ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 languageName: node linkType: hard @@ -1728,8 +1606,8 @@ __metadata: version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b languageName: node linkType: hard @@ -1737,15 +1615,22 @@ __metadata: version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 languageName: node linkType: hard "ansi-styles@npm:^5.0.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c languageName: node linkType: hard @@ -1753,119 +1638,156 @@ __metadata: version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e languageName: node linkType: hard -"array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" +"array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - is-string: ^1.0.7 - checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.7": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + is-string: "npm:^1.0.7" + checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b languageName: node linkType: hard "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" +"array.prototype.filter@npm:^1.0.3": + version: 1.0.3 + resolution: "array.prototype.filter@npm:1.0.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10c0/8b70b5f866df5d90fa27aa5bfa30f5fefc44cbea94b0513699d761713658077c2a24cbf06aac5179eabddb6c93adc467af4c288b7a839c5bc5a769ee5a2d48ad languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.4 + resolution: "array.prototype.findlastindex@npm:1.2.4" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/b23ae35cf7621c82c20981ee110626090734a264798e781b052e534e3d61d576f03d125d92cf2e3672062bb5cc5907e02e69f2d80196a55f3cdb0197b4aa8c64 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 languageName: node linkType: hard "assertion-error@npm:^1.1.0": version: 1.1.0 resolution: "assertion-error@npm:1.1.0" - checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a +"available-typed-arrays@npm:^1.0.6, available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d languageName: node linkType: hard "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" - checksum: 3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf languageName: node linkType: hard @@ -1873,9 +1795,9 @@ __metadata: version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 languageName: node linkType: hard @@ -1883,8 +1805,8 @@ __metadata: version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f languageName: node linkType: hard @@ -1892,100 +1814,83 @@ __metadata: version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + fill-range: "npm:^7.0.1" + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.16.6, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2": + version: 4.23.0 + resolution: "browserslist@npm:4.23.0" dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 + caniuse-lite: "npm:^1.0.30001587" + electron-to-chromium: "npm:^1.4.668" + node-releases: "npm:^2.0.14" + update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.9": - version: 4.21.10 - resolution: "browserslist@npm:4.21.10" - dependencies: - caniuse-lite: ^1.0.30001517 - electron-to-chromium: ^1.4.477 - node-releases: ^2.0.13 - update-browserslist-db: ^1.0.11 - bin: - browserslist: cli.js - checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 + checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" - checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 languageName: node linkType: hard "builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" - checksum: db021755d7ed8be048f25668fe2117620861ef6703ea2c65ed2779c9e3636d5c3b82325bd912244293959ff3ae303afa3471f6a15bf5060c103e4cc3a839749d + checksum: 10c0/2cb3448b4f7306dc853632a4fcddc95e8d4e4b9868c139400027b71938fc6806d4ff44007deffb362ac85724bd40c2c6452fb6a0aa4531650eeddb98d8e5ee8a languageName: node linkType: hard "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" - checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a + checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 languageName: node linkType: hard -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" +"cacache@npm:^18.0.0": + version: 18.0.2 + resolution: "cacache@npm:18.0.2" dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 languageName: node linkType: hard @@ -1993,51 +1898,44 @@ __metadata: version: 3.0.0 resolution: "caniuse-api@npm:3.0.0" dependencies: - browserslist: ^4.0.0 - caniuse-lite: ^1.0.0 - lodash.memoize: ^4.1.2 - lodash.uniq: ^4.5.0 - checksum: db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 + browserslist: "npm:^4.0.0" + caniuse-lite: "npm:^1.0.0" + lodash.memoize: "npm:^4.1.2" + lodash.uniq: "npm:^4.5.0" + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001450 - resolution: "caniuse-lite@npm:1.0.30001450" - checksum: 511b360bfc907b2e437699364cf96b83507bc45043926450056642332bcd6f65a1e72540c828534ae15e0ac906e3e9af46cb2bb84458dd580bc31478e9dce282 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001587": + version: 1.0.30001591 + resolution: "caniuse-lite@npm:1.0.30001591" + checksum: 10c0/21937d341c3d75994504db21340f65573a1e847a8ab33ee4964ed493994d6552864c494ba144485459abd9c711c75c0708bc9fa19f2bff525bff75ffb0a42c3b languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001525 - resolution: "caniuse-lite@npm:1.0.30001525" - checksum: a0d190c185b8e1220dbc72e42f310633059aa175ca3396eb781b249ac3da6c62b30cb8efc5fa24d632cb938f58d90b0c7772d1c9942b6643cf418c27c2cb8632 - languageName: node - linkType: hard - -"chai@npm:^4.3.7": - version: 4.3.7 - resolution: "chai@npm:4.3.7" +"chai@npm:^4.3.10": + version: 4.4.1 + resolution: "chai@npm:4.4.1" dependencies: - assertion-error: ^1.1.0 - check-error: ^1.0.2 - deep-eql: ^4.1.2 - get-func-name: ^2.0.0 - loupe: ^2.3.1 - pathval: ^1.1.1 - type-detect: ^4.0.5 - checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.8" + checksum: 10c0/91590a8fe18bd6235dece04ccb2d5b4ecec49984b50924499bdcd7a95c02cb1fd2a689407c19bb854497bde534ef57525cfad6c7fdd2507100fd802fbc2aefbd languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.4.2": +"chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 languageName: node linkType: hard @@ -2045,49 +1943,51 @@ __metadata: version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 languageName: node linkType: hard -"check-error@npm:^1.0.2": - version: 1.0.2 - resolution: "check-error@npm:1.0.2" - checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 languageName: node linkType: hard "chokidar@npm:>=3.0.0 <4.0.0": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" dependenciesMeta: fsevents: optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 languageName: node linkType: hard @@ -2095,17 +1995,17 @@ __metadata: version: 8.0.1 resolution: "cliui@npm:8.0.1" dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.1 - wrap-ansi: ^7.0.0 - checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 languageName: node linkType: hard "code-block-writer@npm:^11.0.0": version: 11.0.3 resolution: "code-block-writer@npm:11.0.3" - checksum: f0a2605f19963d7087267c9b0fd0b05a6638a50e7b29b70f97aa01a514f59475b0626f8aa092188df853ee6d96745426dfa132d6a677795df462c6ce32c21639 + checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 languageName: node linkType: hard @@ -2113,8 +2013,8 @@ __metadata: version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c languageName: node linkType: hard @@ -2122,38 +2022,29 @@ __metadata: version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard "colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" - checksum: 95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 languageName: node linkType: hard @@ -2161,71 +2052,64 @@ __metadata: version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 languageName: node linkType: hard "commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 languageName: node linkType: hard "commander@npm:^6.2.1": version: 6.2.1 resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea languageName: node linkType: hard "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" - checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a languageName: node linkType: hard "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" - checksum: 59715f2fc456a73f68826285718503340b9f0dd89bfffc42749906c5cf3d4277ef11ef1cca0350d0e79204f00f1f6d83851ececc9095dc88512a697ac0b9bdcb + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 languageName: node linkType: hard "component-emitter@npm:^1.3.0": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f languageName: node linkType: hard "confusing-browser-globals@npm:^1.0.10": version: 1.0.11 resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef + checksum: 10c0/475d0a284fa964a5182b519af5738b5b64bf7e413cfd703c1b3496bf6f4df9f827893a9b221c0ea5873c1476835beb1e0df569ba643eff0734010c1eb780589e languageName: node linkType: hard -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b languageName: node linkType: hard @@ -2233,39 +2117,39 @@ __metadata: version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" 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 - checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 languageName: node linkType: hard -"cross-spawn@npm:^7.0.2": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 languageName: node linkType: hard "crypto@npm:^1.0.1": version: 1.0.1 resolution: "crypto@npm:1.0.1" - checksum: 087fe3165bd94c333a49e6ed66a0193911f63eac38a24f379b3001a5fe260a59c413646e53a0f67875ba13902b2686d81dc703cb2c147a4ec727dcdc04e5645e + checksum: 10c0/fcf7dbd68ac5415b7fde7d7208fe203038e92e83e8a8fcf6e86ab4771ce3dd026d6967a990ba56b9d1c771378210814d5c90d907d3739fbd1723d552ad6c8ab8 languageName: node linkType: hard "css-declaration-sorter@npm:^6.3.1": - version: 6.3.1 - resolution: "css-declaration-sorter@npm:6.3.1" + version: 6.4.1 + resolution: "css-declaration-sorter@npm:6.4.1" peerDependencies: postcss: ^8.0.9 - checksum: ff0d9989ee21ec4c42430b9bb86c43f973ed5024d68f30edc1e3fb07a22828ce3c3e5b922019f2ccbff606722e43c407c5c76e3cddac523ac4afcb31e4b2601c + checksum: 10c0/b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 languageName: node linkType: hard @@ -2273,12 +2157,12 @@ __metadata: version: 4.3.0 resolution: "css-select@npm:4.3.0" dependencies: - boolbase: ^1.0.0 - css-what: ^6.0.1 - domhandler: ^4.3.1 - domutils: ^2.8.0 - nth-check: ^2.0.1 - checksum: d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + boolbase: "npm:^1.0.0" + css-what: "npm:^6.0.1" + domhandler: "npm:^4.3.1" + domutils: "npm:^2.8.0" + nth-check: "npm:^2.0.1" + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 languageName: node linkType: hard @@ -2286,16 +2170,16 @@ __metadata: version: 1.1.3 resolution: "css-tree@npm:1.1.3" dependencies: - mdn-data: 2.0.14 - source-map: ^0.6.1 - checksum: 79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f + mdn-data: "npm:2.0.14" + source-map: "npm:^0.6.1" + checksum: 10c0/499a507bfa39b8b2128f49736882c0dd636b0cd3370f2c69f4558ec86d269113286b7df469afc955de6a68b0dba00bc533e40022a73698081d600072d5d83c1c languageName: node linkType: hard "css-what@npm:^6.0.1": version: 6.1.0 resolution: "css-what@npm:6.1.0" - checksum: b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 languageName: node linkType: hard @@ -2304,53 +2188,53 @@ __metadata: resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 languageName: node linkType: hard "cssfilter@npm:0.0.10": version: 0.0.10 resolution: "cssfilter@npm:0.0.10" - checksum: bc2c52bbb3426c3f2e4832edb6f8573e6cfa65b40b540932762d1e018f0f0157725e2991b77344bbc8266c6bbf4daa2803b0707cfb1bd0877505bf83a68e4b04 + checksum: 10c0/478a227a616fb6e9bb338eb95f690df141b86231ec737cbea574484f31a09a51db894b4921afc4987459dae08d584355fd689ff2a7a7c7a74de4bb4c072ce553 languageName: node linkType: hard -"cssnano-preset-default@npm:^5.2.13": - version: 5.2.13 - resolution: "cssnano-preset-default@npm:5.2.13" +"cssnano-preset-default@npm:^5.2.14": + version: 5.2.14 + resolution: "cssnano-preset-default@npm:5.2.14" dependencies: - css-declaration-sorter: ^6.3.1 - cssnano-utils: ^3.1.0 - postcss-calc: ^8.2.3 - postcss-colormin: ^5.3.0 - postcss-convert-values: ^5.1.3 - postcss-discard-comments: ^5.1.2 - postcss-discard-duplicates: ^5.1.0 - postcss-discard-empty: ^5.1.1 - postcss-discard-overridden: ^5.1.0 - postcss-merge-longhand: ^5.1.7 - postcss-merge-rules: ^5.1.3 - postcss-minify-font-values: ^5.1.0 - postcss-minify-gradients: ^5.1.1 - postcss-minify-params: ^5.1.4 - postcss-minify-selectors: ^5.2.1 - postcss-normalize-charset: ^5.1.0 - postcss-normalize-display-values: ^5.1.0 - postcss-normalize-positions: ^5.1.1 - postcss-normalize-repeat-style: ^5.1.1 - postcss-normalize-string: ^5.1.0 - postcss-normalize-timing-functions: ^5.1.0 - postcss-normalize-unicode: ^5.1.1 - postcss-normalize-url: ^5.1.0 - postcss-normalize-whitespace: ^5.1.1 - postcss-ordered-values: ^5.1.3 - postcss-reduce-initial: ^5.1.1 - postcss-reduce-transforms: ^5.1.0 - postcss-svgo: ^5.1.0 - postcss-unique-selectors: ^5.1.1 + css-declaration-sorter: "npm:^6.3.1" + cssnano-utils: "npm:^3.1.0" + postcss-calc: "npm:^8.2.3" + postcss-colormin: "npm:^5.3.1" + postcss-convert-values: "npm:^5.1.3" + postcss-discard-comments: "npm:^5.1.2" + postcss-discard-duplicates: "npm:^5.1.0" + postcss-discard-empty: "npm:^5.1.1" + postcss-discard-overridden: "npm:^5.1.0" + postcss-merge-longhand: "npm:^5.1.7" + postcss-merge-rules: "npm:^5.1.4" + postcss-minify-font-values: "npm:^5.1.0" + postcss-minify-gradients: "npm:^5.1.1" + postcss-minify-params: "npm:^5.1.4" + postcss-minify-selectors: "npm:^5.2.1" + postcss-normalize-charset: "npm:^5.1.0" + postcss-normalize-display-values: "npm:^5.1.0" + postcss-normalize-positions: "npm:^5.1.1" + postcss-normalize-repeat-style: "npm:^5.1.1" + postcss-normalize-string: "npm:^5.1.0" + postcss-normalize-timing-functions: "npm:^5.1.0" + postcss-normalize-unicode: "npm:^5.1.1" + postcss-normalize-url: "npm:^5.1.0" + postcss-normalize-whitespace: "npm:^5.1.1" + postcss-ordered-values: "npm:^5.1.3" + postcss-reduce-initial: "npm:^5.1.2" + postcss-reduce-transforms: "npm:^5.1.0" + postcss-svgo: "npm:^5.1.0" + postcss-unique-selectors: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: f773de44f67f71e7301e1f4b4664b894c3a48bba4dadc16c559acd0b14ceafed228bdc76fe19d500b0ded9394732377069daadff2184465fa369f8dfd72d47e2 + checksum: 10c0/d125bdb9ac007f97f920e30be953c550a8e7de0cb9298f67e0bc9744f4b920039046b5a6b817e345872836b08689af747f82fbf2189c8bd48da3e6f0c1087b89 languageName: node linkType: hard @@ -2359,20 +2243,20 @@ __metadata: resolution: "cssnano-utils@npm:3.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 975c84ce9174cf23bb1da1e9faed8421954607e9ea76440cd3bb0c1bea7e17e490d800fca5ae2812d1d9e9d5524eef23ede0a3f52497d7ccc628e5d7321536f2 + checksum: 10c0/057508645a3e7584decede1045daa5b362dbfa2f5df96c3527c7d52e41e787a3442a56a8ea0c0af6a757f518e79a459ee580a35c323ad0d0eec912afd67d7630 languageName: node linkType: hard -"cssnano@npm:*, cssnano@npm:^5.0.15": - version: 5.1.14 - resolution: "cssnano@npm:5.1.14" +"cssnano@npm:^5.0.15": + version: 5.1.15 + resolution: "cssnano@npm:5.1.15" dependencies: - cssnano-preset-default: ^5.2.13 - lilconfig: ^2.0.3 - yaml: ^1.10.2 + cssnano-preset-default: "npm:^5.2.14" + lilconfig: "npm:^2.0.3" + yaml: "npm:^1.10.2" peerDependencies: postcss: ^8.2.15 - checksum: 73463c723c5e598b37b8b4d2f014145bd72133e6581349a1b154904e0830e58de17afb1e801ed3ea3b18e386883964ce4d0299e43d4dc37d339214a956c6697f + checksum: 10c0/4252e4f4edd7a0fbdd4017825c0f8632b7a12ecbfdd432d2ff7ec268d48eb956a0a10bbf209602181f9f84ceeecea4a864719ecde03aa2cc48f5d9636fcf5f9a languageName: node linkType: hard @@ -2380,8 +2264,8 @@ __metadata: version: 4.2.0 resolution: "csso@npm:4.2.0" dependencies: - css-tree: ^1.1.2 - checksum: 380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 + css-tree: "npm:^1.1.2" + checksum: 10c0/f8c6b1300efaa0f8855a7905ae3794a29c6496e7f16a71dec31eb6ca7cfb1f058a4b03fd39b66c4deac6cb06bf6b4ba86da7b67d7320389cb9994d52b924b903 languageName: node linkType: hard @@ -2389,8 +2273,8 @@ __metadata: version: 3.0.0 resolution: "cssstyle@npm:3.0.0" dependencies: - rrweb-cssom: ^0.6.0 - checksum: 31f694dfed9998ed93570fe539610837b878193dd8487c33cb12db8004333c53c2a3904166288bbec68388c72fb01014d46d3243ddfb02fe845989d852c06f27 + rrweb-cssom: "npm:^0.6.0" + checksum: 10c0/23acee092c1cec670fb7b8110e48abd740dc4e574d3b74848743067cb3377a86a1f64cf02606aabd7bb153785e68c2c1e09ce53295ddf7a4b470b3c7c55ec807 languageName: node linkType: hard @@ -2398,10 +2282,10 @@ __metadata: version: 4.0.0 resolution: "data-urls@npm:4.0.0" dependencies: - abab: ^2.0.6 - whatwg-mimetype: ^3.0.0 - whatwg-url: ^12.0.0 - checksum: 006e869b5bf079647949a3e9b1dd69d84b2d5d26e6b01c265485699bc96e83817d4b5aae758b2910a4c58c0601913f3a0034121c1ca2da268e9a244c57515b15 + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^12.0.0" + checksum: 10c0/928d9a21db31d3dcee125d514fddfeb88067c348b1225e9d2c6ca55db16e1cbe49bf58c092cae7163de958f415fd5c612c2aef2eef87896e097656fce205d766 languageName: node linkType: hard @@ -2410,26 +2294,28 @@ __metadata: resolution: "date-fns-tz@npm:1.3.8" peerDependencies: date-fns: ">=2.0.0" - checksum: dbf17cb88de7c7b71a9f86b815ac62ebdbf725c030e78d2421309456b5001a85284a5b6763f4af0ba660183f12e876c165e725a0723f642edb7846407db03133 + checksum: 10c0/4cb16aeae3ea4a72ac4ae9f7db2011e38797aff122a78be16217a0492dde3938e1e62d21dbf1469a36fb4426824196233cedc70807f0a3033bca132bf76d563e languageName: node linkType: hard "date-fns@npm:^2.29.2": - version: 2.29.3 - resolution: "date-fns@npm:2.29.3" - checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484 + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": "npm:^7.21.0" + checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: - ms: 2.1.2 + ms: "npm:2.1.2" peerDependenciesMeta: supports-color: optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 languageName: node linkType: hard @@ -2437,97 +2323,95 @@ __metadata: version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a languageName: node linkType: hard "decimal.js@npm:^10.4.3": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" - checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee languageName: node linkType: hard "decode-uri-component@npm:^0.2.2": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 languageName: node linkType: hard -"deep-eql@npm:^4.1.2": +"deep-eql@npm:^4.1.3": version: 4.1.3 resolution: "deep-eql@npm:4.1.3" dependencies: - type-detect: ^4.0.0 - checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f + type-detect: "npm:^4.0.0" + checksum: 10c0/ff34e8605d8253e1bf9fe48056e02c6f347b81d9b5df1c6650a1b0f6f847b4a86453b16dc226b34f853ef14b626e85d04e081b022e20b00cd7d54f079ce9bbdd languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c languageName: node linkType: hard "deepmerge@npm:^4.2.2": - version: 4.3.0 - resolution: "deepmerge@npm:4.3.0" - checksum: c7980eb5c5be040b371f1df0d566473875cfabed9f672ccc177b81ba8eee5686ce2478de2f1d0076391621cbe729e5eacda397179a59ef0f68901849647db126 + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 languageName: node linkType: hard "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 languageName: node linkType: hard "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:^1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 languageName: node linkType: hard "desandro-matches-selector@npm:^2.0.0": version: 2.0.2 resolution: "desandro-matches-selector@npm:2.0.2" - checksum: 30979e6b45d7720d259d4db11ec026fcbee242deee5ec0944c265d7e386a7358ab29f7417cbc3631830d0dbe6e827940dee31f789ed865dba22880d209fc9f8e + checksum: 10c0/f4b1f42e6ccd6c97e93e3f99a64461eef2722075b03d8a9e349e31766436f8b385d1fd50802b024dae951dc69399f13de20a139c1187000fd5e2fcf11cb5eb00 languageName: node linkType: hard -"diff-sequences@npm:^29.4.3": +"diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" - checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 languageName: node linkType: hard @@ -2535,8 +2419,8 @@ __metadata: version: 3.0.1 resolution: "dir-glob@npm:3.0.1" dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c languageName: node linkType: hard @@ -2544,8 +2428,8 @@ __metadata: version: 2.1.0 resolution: "doctrine@npm:2.1.0" dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac languageName: node linkType: hard @@ -2553,8 +2437,8 @@ __metadata: version: 3.0.0 resolution: "doctrine@npm:3.0.0" dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 languageName: node linkType: hard @@ -2562,17 +2446,17 @@ __metadata: version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" dependencies: - domelementtype: ^2.0.1 - domhandler: ^4.2.0 - entities: ^2.0.0 - checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.2.0" + entities: "npm:^2.0.0" + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" - checksum: ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard @@ -2580,8 +2464,8 @@ __metadata: version: 4.0.0 resolution: "domexception@npm:4.0.0" dependencies: - webidl-conversions: ^7.0.0 - checksum: ddbc1268edf33a8ba02ccc596735ede80375ee0cf124b30d2f05df5b464ba78ef4f49889b6391df4a04954e63d42d5631c7fcf8b1c4f12bc531252977a5f13d5 + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 languageName: node linkType: hard @@ -2589,8 +2473,8 @@ __metadata: version: 4.3.1 resolution: "domhandler@npm:4.3.1" dependencies: - domelementtype: ^2.2.0 - checksum: 4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + domelementtype: "npm:^2.2.0" + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b languageName: node linkType: hard @@ -2598,24 +2482,24 @@ __metadata: version: 2.8.0 resolution: "domutils@npm:2.8.0" dependencies: - dom-serializer: ^1.0.1 - domelementtype: ^2.2.0 - domhandler: ^4.2.0 - checksum: abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + dom-serializer: "npm:^1.0.1" + domelementtype: "npm:^2.2.0" + domhandler: "npm:^4.2.0" + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.284": - version: 1.4.288 - resolution: "electron-to-chromium@npm:1.4.288" - checksum: 312e1210f62c6bb593d1f57a15a1c64729e6a5edeacecc5d28dfb21f1a78ed3fac11805a0749a4e68f1fe1536229bf9d7bca36e1f34303369248a749a78aec1f +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.477": - version: 1.4.508 - resolution: "electron-to-chromium@npm:1.4.508" - checksum: 4475eb18f5805d43f84d9542364045a39b183a14cd9f4626e0951ea61d0fa4f84a5ed579c2c32189f9af4a27a31041d09fed78f60930ac36b3baa08547dd3aa6 +"electron-to-chromium@npm:^1.4.668": + version: 1.4.690 + resolution: "electron-to-chromium@npm:1.4.690" + checksum: 10c0/fba87387968bac5ac55161dc176e55d92a54146ae1e5fb16c3fdd5bf4f250ce6f271713659c0cdfa7fc0fd9a9ea1a79803f266fa2b936535b208c0759a4d3983 languageName: node linkType: hard @@ -2623,31 +2507,38 @@ __metadata: version: 8.0.0-rc04 resolution: "embla-carousel-wheel-gestures@npm:8.0.0-rc04" dependencies: - wheel-gestures: ^2.2.5 + wheel-gestures: "npm:^2.2.5" peerDependencies: embla-carousel: 8.0.0-rc03 - checksum: ace8ab88b661e8d360c2d99ae61c0fe61085ccd71f059ac7c6b8dc1ebb52c17919a00025010502d86012273490940c25c6c1fdb143f932670ab36c09fb4c6bca + checksum: 10c0/3b32b6565de5acd70a8cc3b427cfc411e9e2ed6671ce216efb8706f8897ac68da30e11e419d57aafbc6f9bf1d2405665c9d037002985f7033d770475f0569b62 languageName: node linkType: hard "embla-carousel@npm:8.0.0-rc14": version: 8.0.0-rc14 resolution: "embla-carousel@npm:8.0.0-rc14" - checksum: 48f6b7420fbb5c6800e84fb15f37fbd9b2b951b36a3f30ff66ee6121d7e722bf6bc28bd986a83136651f216940ca8e472d569774e74bf2ed01e4f8e349f74289 + checksum: 10c0/f8dcb810e43d2f898b60188648b7f23e1dd904b70d4935d067dde4a245ffc0527b793ddb4c744342c0268ad43ca6ca627619ced506d5fe08f27cdc34963b0b03 languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 languageName: node linkType: hard "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" - checksum: ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b languageName: node linkType: hard @@ -2655,36 +2546,36 @@ __metadata: version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" - checksum: 19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 languageName: node linkType: hard "entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" - checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 languageName: node linkType: hard @@ -2692,69 +2583,100 @@ __metadata: version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.1 - resolution: "es-abstract@npm:1.21.1" +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3": + version: 1.22.5 + resolution: "es-abstract@npm:1.22.5" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-set-tostringtag: ^2.0.1 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.4 - is-array-buffer: ^3.0.1 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-typed-array: ^1.1.10 - is-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 - typed-array-length: ^1.0.4 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.9 - checksum: 23ff60d42d17a55d150e7bcedbdb065d4077a8b98c436e0e2e1ef4dd532a6d78a56028673de0bd8ed464a43c46ba781c50d9af429b6a17e44dbd14c7d7fb7926 + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.1" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.0" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.8" + string.prototype.trimend: "npm:^1.0.7" + string.prototype.trimstart: "npm:^1.0.7" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.5" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.14" + checksum: 10c0/4bca5a60f0dff6c0a5690d8e51374cfcb8760d5dbbb1069174b4d41461cf4e0c3e0c1993bccbc5aa0799ff078199f1bcde2122b8709e0d17c2beffafff01010a languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.1 - resolution: "es-set-tostringtag@npm:2.0.1" - dependencies: - get-intrinsic: ^1.1.3 - has: ^1.0.3 - has-tostringtag: ^1.0.0 - checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": +"es-array-method-boxes-properly@npm:^1.0.0": version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" dependencies: - has: ^1.0.3 - checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.0.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 languageName: node linkType: hard @@ -2762,40 +2684,43 @@ __metadata: version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 languageName: node linkType: hard -"esbuild@npm:^0.17.5": - version: 0.17.15 - resolution: "esbuild@npm:0.17.15" +"esbuild@npm:^0.19.3": + version: 0.19.12 + resolution: "esbuild@npm:0.19.12" dependencies: - "@esbuild/android-arm": 0.17.15 - "@esbuild/android-arm64": 0.17.15 - "@esbuild/android-x64": 0.17.15 - "@esbuild/darwin-arm64": 0.17.15 - "@esbuild/darwin-x64": 0.17.15 - "@esbuild/freebsd-arm64": 0.17.15 - "@esbuild/freebsd-x64": 0.17.15 - "@esbuild/linux-arm": 0.17.15 - "@esbuild/linux-arm64": 0.17.15 - "@esbuild/linux-ia32": 0.17.15 - "@esbuild/linux-loong64": 0.17.15 - "@esbuild/linux-mips64el": 0.17.15 - "@esbuild/linux-ppc64": 0.17.15 - "@esbuild/linux-riscv64": 0.17.15 - "@esbuild/linux-s390x": 0.17.15 - "@esbuild/linux-x64": 0.17.15 - "@esbuild/netbsd-x64": 0.17.15 - "@esbuild/openbsd-x64": 0.17.15 - "@esbuild/sunos-x64": 0.17.15 - "@esbuild/win32-arm64": 0.17.15 - "@esbuild/win32-ia32": 0.17.15 - "@esbuild/win32-x64": 0.17.15 + "@esbuild/aix-ppc64": "npm:0.19.12" + "@esbuild/android-arm": "npm:0.19.12" + "@esbuild/android-arm64": "npm:0.19.12" + "@esbuild/android-x64": "npm:0.19.12" + "@esbuild/darwin-arm64": "npm:0.19.12" + "@esbuild/darwin-x64": "npm:0.19.12" + "@esbuild/freebsd-arm64": "npm:0.19.12" + "@esbuild/freebsd-x64": "npm:0.19.12" + "@esbuild/linux-arm": "npm:0.19.12" + "@esbuild/linux-arm64": "npm:0.19.12" + "@esbuild/linux-ia32": "npm:0.19.12" + "@esbuild/linux-loong64": "npm:0.19.12" + "@esbuild/linux-mips64el": "npm:0.19.12" + "@esbuild/linux-ppc64": "npm:0.19.12" + "@esbuild/linux-riscv64": "npm:0.19.12" + "@esbuild/linux-s390x": "npm:0.19.12" + "@esbuild/linux-x64": "npm:0.19.12" + "@esbuild/netbsd-x64": "npm:0.19.12" + "@esbuild/openbsd-x64": "npm:0.19.12" + "@esbuild/sunos-x64": "npm:0.19.12" + "@esbuild/win32-arm64": "npm:0.19.12" + "@esbuild/win32-ia32": "npm:0.19.12" + "@esbuild/win32-x64": "npm:0.19.12" dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true "@esbuild/android-arm": optional: true "@esbuild/android-arm64": @@ -2842,47 +2767,46 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 4e3640d7bc8f6edb3465c076eb519ccb7684382714a1b883e000a7a592f8e285501ec7e82cb68441dfec8f7be7f70f40b00129ceb05057f6fa87f95d2187370a + checksum: 10c0/0f2d21ffe24ebead64843f87c3aebe2e703a5ed9feb086a0728b24907fac2eb9923e4a79857d3df9059c915739bd7a870dd667972eae325c67f478b592b8582d languageName: node linkType: hard "escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 languageName: node linkType: hard "escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" dependenciesMeta: source-map: optional: true bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -2890,73 +2814,75 @@ __metadata: version: 15.0.0 resolution: "eslint-config-airbnb-base@npm:15.0.0" dependencies: - confusing-browser-globals: ^1.0.10 - object.assign: ^4.1.2 - object.entries: ^1.1.5 - semver: ^6.3.0 + confusing-browser-globals: "npm:^1.0.10" + object.assign: "npm:^4.1.2" + object.entries: "npm:^1.1.5" + semver: "npm:^6.3.0" peerDependencies: eslint: ^7.32.0 || ^8.2.0 eslint-plugin-import: ^2.25.2 - checksum: 38626bad2ce2859fccac86b30cd2b86c9b7d8d71d458331860861dc05290a5b198bded2f4fb89efcb9046ec48f8ab4c4fb00365ba8916f27b172671da28b93ea + checksum: 10c0/93639d991654414756f82ad7860aac30b0dc6797277b7904ddb53ed88a32c470598696bbc6c503e066414024d305221974d3769e6642de65043bedf29cbbd30f languageName: node linkType: hard "eslint-config-prettier@npm:^8.5.0": - version: 8.6.0 - resolution: "eslint-config-prettier@npm:8.6.0" + version: 8.10.0 + resolution: "eslint-config-prettier@npm:8.10.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: ff0d0dfc839a556355422293428637e8d35693de58dabf8638bf0b6529131a109d0b2ade77521aa6e54573bb842d7d9d322e465dd73dd61c7590fa3834c3fa81 + checksum: 10c0/19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.7": - version: 0.3.7 - resolution: "eslint-import-resolver-node@npm:0.3.7" +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: - debug: ^3.2.7 - is-core-module: ^2.11.0 - resolve: ^1.22.1 - checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.4": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" +"eslint-module-utils@npm:^2.8.0": + version: 2.8.1 + resolution: "eslint-module-utils@npm:2.8.1" dependencies: - debug: ^3.2.7 + debug: "npm:^3.2.7" peerDependenciesMeta: eslint: optional: true - checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 + checksum: 10c0/1aeeb97bf4b688d28de136ee57c824480c37691b40fa825c711a4caf85954e94b99c06ac639d7f1f6c1d69223bd21bcb991155b3e589488e958d5b83dfd0f882 languageName: node linkType: hard "eslint-plugin-import@npm:^2.25.4": - version: 2.27.5 - resolution: "eslint-plugin-import@npm:2.27.5" + version: 2.29.1 + resolution: "eslint-plugin-import@npm:2.29.1" dependencies: - array-includes: ^3.1.6 - array.prototype.flat: ^1.3.1 - array.prototype.flatmap: ^1.3.1 - debug: ^3.2.7 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.7 - eslint-module-utils: ^2.7.4 - has: ^1.0.3 - is-core-module: ^2.11.0 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.values: ^1.1.6 - resolve: ^1.22.1 - semver: ^6.3.0 - tsconfig-paths: ^3.14.1 + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" + semver: "npm:^6.3.1" + tsconfig-paths: "npm:^3.15.0" peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: f500571a380167e25d72a4d925ef9a7aae8899eada57653e5f3051ec3d3c16d08271fcefe41a30a9a2f4fefc232f066253673ee4ea77b30dba65ae173dade85d + checksum: 10c0/5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196 languageName: node linkType: hard @@ -2964,14 +2890,14 @@ __metadata: version: 4.2.1 resolution: "eslint-plugin-prettier@npm:4.2.1" dependencies: - prettier-linter-helpers: ^1.0.0 + prettier-linter-helpers: "npm:^1.0.0" peerDependencies: eslint: ">=7.28.0" prettier: ">=2.0.0" peerDependenciesMeta: eslint-config-prettier: optional: true - checksum: b9e839d2334ad8ec7a5589c5cb0f219bded260839a857d7a486997f9870e95106aa59b8756ff3f37202085ebab658de382b0267cae44c3a7f0eb0bcc03a4f6d6 + checksum: 10c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 languageName: node linkType: hard @@ -2979,104 +2905,85 @@ __metadata: version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a languageName: node linkType: hard -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 languageName: node linkType: hard -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard "eslint@npm:^8.23.0": - version: 8.33.0 - resolution: "eslint@npm:8.33.0" + version: 8.57.0 + resolution: "eslint@npm:8.57.0" dependencies: - "@eslint/eslintrc": ^1.4.1 - "@humanwhocodes/config-array": ^0.11.8 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.3.0 - espree: ^9.4.0 - esquery: ^1.4.0 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - import-fresh: ^3.0.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.1 - regexpp: ^3.2.0 - strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 - text-table: ^0.2.0 + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.0" + "@humanwhocodes/config-array": "npm:^0.11.14" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c + checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 languageName: node linkType: hard -"espree@npm:^9.4.0": - version: 9.4.1 - resolution: "espree@npm:9.4.1" +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: - acorn: ^8.8.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.3.0 - checksum: 4d266b0cf81c7dfe69e542c7df0f246e78d29f5b04dda36e514eb4c7af117ee6cfbd3280e560571ed82ff6c9c3f0003c05b82583fc7a94006db7497c4fe4270e + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -3086,16 +2993,16 @@ __metadata: bin: esparse: ./bin/esparse.js esvalidate: ./bin/esvalidate.js - checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" dependencies: - estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + estraverse: "npm:^5.1.0" + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 languageName: node linkType: hard @@ -3103,107 +3010,140 @@ __metadata: version: 4.3.0 resolution: "esrecurse@npm:4.3.0" dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 languageName: node linkType: hard "estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d languageName: node linkType: hard "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 languageName: node linkType: hard "estree-walker@npm:^1.0.1": version: 1.0.1 resolution: "estree-walker@npm:1.0.1" - checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f + checksum: 10c0/fa9e5f8c1bbe8d01e314c0f03067b64a4f22d4c58410fc5237060d0c15b81e58c23921c41acc60abbdab490f1fdfcbd6408ede2d03ca704454272e0244d61a55 languageName: node linkType: hard "estree-walker@npm:^2.0.1, estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" - checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d languageName: node linkType: hard "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 languageName: node linkType: hard "ev-emitter@npm:^1.0.0": version: 1.1.1 resolution: "ev-emitter@npm:1.1.1" - checksum: 3dd78a7620701ef8095794f611dd251bdd9023badf322b3d6fa5e10a660c50e83eec5ee5bbc7654682635cf7b8858c94e2c77e1d10bdc188a2b0593436403476 + checksum: 10c0/332dcb444de2b1d81035fb22a10dd33926311baa7ea6fc24f1de7b60c6eff5b7e133611000fce740471f0c8f95259d3914d49b4201af2d85a51f0aeb8cb1ceda languageName: node linkType: hard "eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" - checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 languageName: node linkType: hard "fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 1b5306eaa9e826564d9e5ffcd6ebd881eb5f770b3f977fcbf38f05c824e42172b53c79920e8429c54eb742ce15a0caf268b0fdd5b38f6de52234c4a8368131ae + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 languageName: node linkType: hard "fast-glob@npm:^3.2.7, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 languageName: node linkType: hard "fastq@npm:^1.6.0": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: - reusify: ^1.0.4 - checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 languageName: node linkType: hard @@ -3211,8 +3151,8 @@ __metadata: version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd languageName: node linkType: hard @@ -3220,15 +3160,15 @@ __metadata: version: 7.0.1 resolution: "fill-range@npm:7.0.1" dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + to-regex-range: "npm:^5.0.1" + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f languageName: node linkType: hard "filter-obj@npm:^1.1.0": version: 1.1.0 resolution: "filter-obj@npm:1.1.0" - checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10 + checksum: 10c0/071e0886b2b50238ca5026c5bbf58c26a7c1a1f720773b8c7813d16ba93d0200de977af14ac143c5ac18f666b2cfc83073f3a5fe6a4e996c49e0863d5500fccf languageName: node linkType: hard @@ -3236,10 +3176,10 @@ __metadata: version: 3.3.2 resolution: "find-cache-dir@npm:3.3.2" dependencies: - commondir: ^1.0.1 - make-dir: ^3.0.2 - pkg-dir: ^4.1.0 - checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + commondir: "npm:^1.0.1" + make-dir: "npm:^3.0.2" + pkg-dir: "npm:^4.1.0" + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 languageName: node linkType: hard @@ -3247,9 +3187,9 @@ __metadata: version: 4.1.0 resolution: "find-up@npm:4.1.0" dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 languageName: node linkType: hard @@ -3257,9 +3197,9 @@ __metadata: version: 5.0.0 resolution: "find-up@npm:5.0.0" dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a languageName: node linkType: hard @@ -3267,25 +3207,26 @@ __metadata: version: 2.0.7 resolution: "fizzy-ui-utils@npm:2.0.7" dependencies: - desandro-matches-selector: ^2.0.0 - checksum: 001e54effa22c4f62728b90a25e8eb5477057ab53d0184e1c3231bbdfc7c34e278418fbcaf7d63c75ede823d82e61245e668ce8cba90e1c5699de960188c654f + desandro-matches-selector: "npm:^2.0.0" + checksum: 10c0/4c36d45db4e2e0cf1507aa9633af6710a12bdc047146fa89505e10aedc5bfb16cbfb0da686d5dfd89a37e1da4bce86bbee365e22be88705ab4ffccd530b4902a languageName: node linkType: hard "flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf languageName: node linkType: hard @@ -3293,8 +3234,18 @@ __metadata: version: 0.3.3 resolution: "for-each@npm:0.3.3" dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 languageName: node linkType: hard @@ -3302,10 +3253,10 @@ __metadata: version: 4.0.0 resolution: "form-data@npm:4.0.0" dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e languageName: node linkType: hard @@ -3313,70 +3264,70 @@ __metadata: version: 0.0.0-use.local resolution: "frigate-hass-card@workspace:." dependencies: - "@babel/core": ^7.19.0 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-decorators": ^7.19.0 - "@cycjimmy/jsmpeg-player": ^6.0.4 - "@dermotduffy/custom-card-helpers": ^1.9.0 - "@dermotduffy/panzoom": ^4.5.1 - "@egjs/hammerjs": ^2.0.17 - "@graphiteds/core": ^1.9.11 - "@lit-labs/scoped-registry-mixin": ^1.0.1 - "@lit-labs/task": ^1.1.3 - "@rollup/plugin-babel": ^5.3.1 - "@rollup/plugin-commonjs": ^22.0.2 - "@rollup/plugin-image": ^3.0.2 - "@rollup/plugin-json": ^4.1.0 - "@rollup/plugin-node-resolve": ^13.3.0 - "@rollup/plugin-replace": ^4.0.0 - "@types/bluebird": ^3.5.36 - "@types/lodash-es": ^4.17.5 - "@types/masonry-layout": ^4.2.5 - "@typescript-eslint/eslint-plugin": ^5.36.2 - "@typescript-eslint/parser": ^5.36.2 - "@vitest/coverage-istanbul": ^0.34.3 - component-emitter: ^1.3.0 - crypto: ^1.0.1 - date-fns: ^2.29.2 - date-fns-tz: ^1.3.7 - embla-carousel: 8.0.0-rc14 - embla-carousel-wheel-gestures: 8.0.0-rc04 - eslint: ^8.23.0 - eslint-config-airbnb-base: ^15.0.0 - eslint-config-prettier: ^8.5.0 - eslint-plugin-import: ^2.25.4 - eslint-plugin-prettier: ^4.2.1 - home-assistant-js-websocket: ^8.0.0 - jsdom: ^21.1.1 - keycharm: ^0.4.0 - lit: ^2.3.1 - lodash-es: ^4.17.21 - masonry-layout: ^4.2.2 - moment: ^2.29.4 - prettier: ^2.6.0 - propagating-hammerjs: ^2.0.1 - quick-lru: ^6.1.0 - rollup: ^2.79.0 - rollup-plugin-git-info: ^1.0.0 - rollup-plugin-serve: ^2.0.1 - rollup-plugin-styles: ^4.0.0 - rollup-plugin-terser: ^7.0.2 - rollup-plugin-typescript2: ^0.33.0 - rollup-plugin-visualizer: ^5.8.2 - sass: ^1.54.9 - screenfull: ^6.0.2 - side-drawer: ^3.1.0 - ts-prune: ^0.10.3 - typescript: ^4.9.5 - uuid: ^8.3.2 - vis-data: ^7.1.4 - vis-timeline: ^7.7.0 - vis-util: ^5.0.2 - vitest: ^0.34.3 - vitest-mock-extended: ^1.2.1 - web-dialog: ^0.0.11 - xss: ^1.0.14 - zod: ^3.21.4 + "@babel/core": "npm:^7.19.0" + "@babel/plugin-proposal-class-properties": "npm:^7.18.6" + "@babel/plugin-proposal-decorators": "npm:^7.19.0" + "@cycjimmy/jsmpeg-player": "npm:^6.0.4" + "@dermotduffy/custom-card-helpers": "npm:^1.9.0" + "@dermotduffy/panzoom": "npm:^4.5.1" + "@egjs/hammerjs": "npm:^2.0.17" + "@graphiteds/core": "npm:^1.9.11" + "@lit-labs/scoped-registry-mixin": "npm:^1.0.3" + "@lit-labs/task": "npm:^1.1.3" + "@rollup/plugin-babel": "npm:^5.3.1" + "@rollup/plugin-commonjs": "npm:^22.0.2" + "@rollup/plugin-image": "npm:^3.0.2" + "@rollup/plugin-json": "npm:^4.1.0" + "@rollup/plugin-node-resolve": "npm:^13.3.0" + "@rollup/plugin-replace": "npm:^4.0.0" + "@types/bluebird": "npm:^3.5.36" + "@types/lodash-es": "npm:^4.17.5" + "@types/masonry-layout": "npm:^4.2.5" + "@typescript-eslint/eslint-plugin": "npm:^5.36.2" + "@typescript-eslint/parser": "npm:^5.36.2" + "@vitest/coverage-istanbul": "npm:^1.3.1" + component-emitter: "npm:^1.3.0" + crypto: "npm:^1.0.1" + date-fns: "npm:^2.29.2" + date-fns-tz: "npm:^1.3.7" + embla-carousel: "npm:8.0.0-rc14" + embla-carousel-wheel-gestures: "npm:8.0.0-rc04" + eslint: "npm:^8.23.0" + eslint-config-airbnb-base: "npm:^15.0.0" + eslint-config-prettier: "npm:^8.5.0" + eslint-plugin-import: "npm:^2.25.4" + eslint-plugin-prettier: "npm:^4.2.1" + home-assistant-js-websocket: "npm:^8.0.0" + jsdom: "npm:^21.1.1" + keycharm: "npm:^0.4.0" + lit: "npm:^3.1.2" + lodash-es: "npm:^4.17.21" + masonry-layout: "npm:^4.2.2" + moment: "npm:^2.29.4" + prettier: "npm:^2.6.0" + propagating-hammerjs: "npm:^2.0.1" + quick-lru: "npm:^6.1.0" + rollup: "npm:^2.79.0" + rollup-plugin-git-info: "npm:^1.0.0" + rollup-plugin-serve: "npm:^2.0.1" + rollup-plugin-styles: "npm:^4.0.0" + rollup-plugin-terser: "npm:^7.0.2" + rollup-plugin-typescript2: "npm:^0.33.0" + rollup-plugin-visualizer: "npm:^5.8.2" + sass: "npm:^1.54.9" + screenfull: "npm:^6.0.2" + side-drawer: "npm:^3.1.0" + ts-prune: "npm:^0.10.3" + typescript: "npm:^4.9.5" + uuid: "npm:^8.3.2" + vis-data: "npm:^7.1.9" + vis-timeline: "npm:^7.7.3" + vis-util: "npm:^5.0.2" + vitest: "npm:^1.3.1" + vitest-mock-extended: "npm:^1.3.1" + web-dialog: "npm:^0.0.11" + xss: "npm:^1.0.14" + zod: "npm:^3.21.4" languageName: unknown linkType: soft @@ -3384,136 +3335,139 @@ __metadata: version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e languageName: node linkType: hard -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": +"fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 languageName: node linkType: hard -"fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 conditions: os=darwin languageName: node linkType: hard -"fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: - node-gyp: latest + node-gyp: "npm:latest" conditions: os=darwin languageName: node linkType: hard -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 languageName: node linkType: hard "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde languageName: node linkType: hard -"get-func-name@npm:^2.0.0": - version: 2.0.0 - resolution: "get-func-name@npm:2.0.0" - checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 languageName: node linkType: hard "get-size@npm:^2.0.2": version: 2.0.3 resolution: "get-size@npm:2.0.3" - checksum: 18d5a5fdb3f541db8b1e6ad46a5411d4bb7da3061d2ef7e544db3bbce7a13543f05c91fd40c7f68b4bc4bc035c160fed23c45514cde7d5fb18de1cce10208b19 + checksum: 10c0/c9703caa61b4d38385eab34aa5068f3a25ab40f6d9cda6dac3f0dc4dcd8da38f7b0283035e71c9f52a47b670b9315372cae46f58d66ad709a4939e57c1fdc6cc languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc languageName: node linkType: hard @@ -3521,8 +3475,8 @@ __metadata: version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee languageName: node linkType: hard @@ -3530,8 +3484,23 @@ __metadata: version: 6.0.2 resolution: "glob-parent@npm:6.0.2" dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d languageName: node linkType: hard @@ -3539,42 +3508,29 @@ __metadata: version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe languageName: node linkType: hard "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 languageName: node linkType: hard "globals@npm:^13.19.0": - version: 13.20.0 - resolution: "globals@npm:13.20.0" + version: 13.24.0 + resolution: "globals@npm:13.24.0" dependencies: - type-fest: ^0.20.2 - checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd languageName: node linkType: hard @@ -3582,8 +3538,8 @@ __metadata: version: 1.0.3 resolution: "globalthis@npm:1.0.3" dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + define-properties: "npm:^1.1.3" + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 languageName: node linkType: hard @@ -3591,13 +3547,13 @@ __metadata: version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.2.9 - ignore: ^5.2.0 - merge2: ^1.4.1 - slash: ^3.0.0 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 languageName: node linkType: hard @@ -3605,105 +3561,98 @@ __metadata: version: 1.0.1 resolution: "gopd@npm:1.0.1" dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 languageName: node linkType: hard "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 languageName: node linkType: hard "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c languageName: node linkType: hard -"has-unicode@npm:^2.0.1": +"hasown@npm:^2.0.0, hasown@npm:^2.0.1": version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" + resolution: "hasown@npm:2.0.1" dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + function-bind: "npm:^1.1.2" + checksum: 10c0/9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb languageName: node linkType: hard "home-assistant-js-websocket@npm:^6.0.1": version: 6.1.1 resolution: "home-assistant-js-websocket@npm:6.1.1" - checksum: b46dd44ac1b393ecfdda152743fe44dcd6534463d1df631c448a71e71166c04d4fea2a0827dbb2e55c85fcd8d9ccdea4f168713bf18e832c7f688b9b2fdc8d72 + checksum: 10c0/fe00b8d7a681d39b31ac5078b79fa1ef67cccd37df2c7ec31b1ad9ded33c899570b453c9439db71c3bda24df6d0c1e3d9d040583b0717f4630476ab528120a9f languageName: node linkType: hard "home-assistant-js-websocket@npm:^8.0.0": - version: 8.0.1 - resolution: "home-assistant-js-websocket@npm:8.0.1" - checksum: e8b2204d58b2b1fbdf26ca1ad196fcc02ec5d18e6d867179f27246a9f2d4fe5f91de9dbbe7b82806c19dcb0af0e2b77fb48d393668b5c8c0844c201a16832023 + version: 8.2.0 + resolution: "home-assistant-js-websocket@npm:8.2.0" + checksum: 10c0/9a1f1f5cb39ce0629653347d5ae31a14f14742596c15fea7bd72f4c0ee4ce4613b1172b4f4df52f293b4e5aeb3b5ead75f395d5fe5c4785193e7d00f8355ef5a languageName: node linkType: hard @@ -3711,22 +3660,22 @@ __metadata: version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" dependencies: - whatwg-encoding: ^2.0.0 - checksum: 8d806aa00487e279e5ccb573366a951a9f68f65c90298eac9c3a2b440a7ffe46615aff2995a2f61c6746c639234e6179a97e18ca5ccbbf93d3725ef2099a4502 + whatwg-encoding: "npm:^2.0.0" + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 languageName: node linkType: hard "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc languageName: node linkType: hard @@ -3734,29 +3683,47 @@ __metadata: version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" +"https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 languageName: node linkType: hard @@ -3764,8 +3731,8 @@ __metadata: version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 languageName: node linkType: hard @@ -3774,52 +3741,45 @@ __metadata: resolution: "icss-utils@npm:5.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d languageName: node linkType: hard "ignore@npm:^5.2.0": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd languageName: node linkType: hard "immutable@npm:^4.0.0": - version: 4.2.4 - resolution: "immutable@npm:4.2.4" - checksum: 3be84eded37b05e65cad57bfba630bc1bf170c498b7472144bc02d2650cc9baef79daf03574a9c2e41d195ebb55a1c12c9b312f41ee324b653927b24ad8bcaa7 + version: 4.3.5 + resolution: "immutable@npm:4.3.5" + checksum: 10c0/63d2d7908241a955d18c7822fd2215b6e89ff5a1a33cc72cd475b013cbbdef7a705aa5170a51ce9f84a57f62fdddfaa34e7b5a14b33d8a43c65cc6a881d6e894 languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f languageName: node linkType: hard @@ -3827,27 +3787,27 @@ __metadata: version: 1.0.6 resolution: "inflight@npm:1.0.6" dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3": +"inherits@npm:2": version: 2.0.4 resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 languageName: node linkType: hard -"internal-slot@npm:^1.0.4": - version: 1.0.4 - resolution: "internal-slot@npm:1.0.4" +"internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" dependencies: - get-intrinsic: ^1.1.3 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 8974588d06bab4f675573a3b52975370facf6486df51bc0567a982c7024fa29495f10b76c0d4dc742dd951d1b72024fdc1e31bb0bedf1678dc7aacacaf5a4f73 + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c languageName: node linkType: hard @@ -3855,36 +3815,38 @@ __metadata: version: 9.13.0 resolution: "intl-messageformat@npm:9.13.0" dependencies: - "@formatjs/ecma402-abstract": 1.11.4 - "@formatjs/fast-memoize": 1.2.1 - "@formatjs/icu-messageformat-parser": 2.1.0 - tslib: ^2.1.0 - checksum: effb840ae6e213adceab9951dbb2d18d1a354c82e35dbd213011daf23bcc79e2a18b6ef79157ae3b69c1e6d898fe66b54dd184ac180ee0646e26a70276e60038 + "@formatjs/ecma402-abstract": "npm:1.11.4" + "@formatjs/fast-memoize": "npm:1.2.1" + "@formatjs/icu-messageformat-parser": "npm:2.1.0" + tslib: "npm:^2.1.0" + checksum: 10c0/d50b220ae943278a4403cb004e3776f288b5c2a2673b0dc11347d9b9d4e0361c3c33288cea54189a69b42c64a35171608c9c25ed55d6a9a6ec7f7af5e7782541 languageName: node linkType: hard -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "is-array-buffer@npm:3.0.1" +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-typed-array: ^1.1.10 - checksum: f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 languageName: node linkType: hard @@ -3892,8 +3854,8 @@ __metadata: version: 1.0.4 resolution: "is-bigint@npm:1.0.4" dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 languageName: node linkType: hard @@ -3901,8 +3863,8 @@ __metadata: version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 languageName: node linkType: hard @@ -3910,9 +3872,9 @@ __metadata: version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 languageName: node linkType: hard @@ -3920,24 +3882,24 @@ __metadata: version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" dependencies: - builtin-modules: ^3.3.0 - checksum: e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 + builtin-modules: "npm:^3.3.0" + checksum: 10c0/5a66937a03f3b18803381518f0ef679752ac18cdb7dd53b5e23ee8df8d440558737bd8dcc04d2aae555909d2ecb4a81b5c0d334d119402584b61e6a003e31af1 languageName: node linkType: hard "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + hasown: "npm:^2.0.0" + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 languageName: node linkType: hard @@ -3945,8 +3907,8 @@ __metadata: version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e languageName: node linkType: hard @@ -3955,21 +3917,21 @@ __metadata: resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc languageName: node linkType: hard @@ -3977,29 +3939,29 @@ __metadata: version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d languageName: node linkType: hard "is-module@npm:^1.0.0": version: 1.0.0 resolution: "is-module@npm:1.0.0" - checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + checksum: 10c0/795a3914bcae7c26a1c23a1e5574c42eac13429625045737bf3e324ce865c0601d61aee7a5afbca1bee8cb300c7d9647e7dc98860c9bdbc3b7fdc51d8ac0bffc languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e languageName: node linkType: hard @@ -4007,29 +3969,29 @@ __metadata: version: 1.0.7 resolution: "is-number-object@npm:1.0.7" dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 languageName: node linkType: hard "is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 languageName: node linkType: hard "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 languageName: node linkType: hard @@ -4037,8 +3999,8 @@ __metadata: version: 1.2.1 resolution: "is-reference@npm:1.2.1" dependencies: - "@types/estree": "*" - checksum: e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc + "@types/estree": "npm:*" + checksum: 10c0/7dc819fc8de7790264a0a5d531164f9f5b9ef5aa1cd05f35322d14db39c8a2ec78fd5d4bf57f9789f3ddd2b3abeea7728432b759636157a42db12a9e8c3b549b languageName: node linkType: hard @@ -4046,18 +4008,25 @@ __metadata: version: 1.1.4 resolution: "is-regex@npm:1.1.4" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a + call-bind: "npm:^1.0.7" + checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 languageName: node linkType: hard @@ -4065,8 +4034,8 @@ __metadata: version: 1.0.7 resolution: "is-string@npm:1.0.7" dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 languageName: node linkType: hard @@ -4074,21 +4043,17 @@ __metadata: version: 1.0.4 resolution: "is-symbol@npm:1.0.4" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" +"is-typed-array@npm:^1.1.13": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca languageName: node linkType: hard @@ -4096,8 +4061,8 @@ __metadata: version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 languageName: node linkType: hard @@ -4105,57 +4070,60 @@ __metadata: version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.0 - resolution: "istanbul-lib-instrument@npm:6.0.0" +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0, istanbul-lib-coverage@npm:^3.2.2": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.1": + version: 6.0.2 + resolution: "istanbul-lib-instrument@npm:6.0.2" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.2.0 - semver: ^7.5.4 - checksum: b9dc3723a769e65dbe1b912f935088ffc07cf393fa78a3ce79022c91aabb0ad01405ffd56083cdd822e514798e9daae3ea7bfe85633b094ecb335d28eb0a3f97 + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/405c6ac037bf8c7ee7495980b0cd5544b2c53078c10534d0c9ceeb92a9ea7dcf8510f58ccfce31336458a8fa6ccef27b570bbb602abaa8c1650f5496a807477c languageName: node linkType: hard -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" - dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 - supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.1": +"istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": version: 3.0.1 resolution: "istanbul-lib-report@npm:3.0.1" dependencies: - istanbul-lib-coverage: ^3.0.0 - make-dir: ^4.0.0 - supports-color: ^7.1.0 - checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 languageName: node linkType: hard @@ -4163,20 +4131,33 @@ __metadata: version: 4.0.1 resolution: "istanbul-lib-source-maps@npm:4.0.1" dependencies: - debug: ^4.1.1 - istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 languageName: node linkType: hard -"istanbul-reports@npm:^3.1.5": - version: 3.1.6 - resolution: "istanbul-reports@npm:3.1.6" +"istanbul-reports@npm:^3.1.6": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" dependencies: - html-escaper: ^2.0.0 - istanbul-lib-report: ^3.0.0 - checksum: 44c4c0582f287f02341e9720997f9e82c071627e1e862895745d5f52ec72c9b9f38e1d12370015d2a71dcead794f34c7732aaef3fab80a24bc617a21c3d911d6 + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 languageName: node linkType: hard @@ -4184,24 +4165,24 @@ __metadata: version: 26.6.2 resolution: "jest-worker@npm:26.6.2" dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e - languageName: node - linkType: hard - -"js-sdsl@npm:^4.1.4": - version: 4.3.0 - resolution: "js-sdsl@npm:4.3.0" - checksum: ce908257cf6909e213af580af3a691a736f5ee8b16315454768f917a682a4ea0c11bde1b241bbfaecedc0eb67b72101b2c2df2ffaed32aed5d539fca816f054e + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/07e4dba650381604cda253ab6d5837fe0279c8d68c25884995b45bfe149a7a1e1b5a97f304b4518f257dac2a9ddc1808d57d650649c3ab855e9e60cf824d2970 languageName: node linkType: hard "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-tokens@npm:^8.0.2": + version: 8.0.3 + resolution: "js-tokens@npm:8.0.3" + checksum: 10c0/b50ba7d926b087ad31949d8155c7bc84374e0785019b17bdddeb2c4f98f5dea04ba464651fe23a8be4f7d15f50d06ce8bb536087b24ce3ebfbaea4a1dc5869f0 languageName: node linkType: hard @@ -4209,49 +4190,56 @@ __metadata: version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: ^2.0.1 + argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 languageName: node linkType: hard "jsdom@npm:^21.1.1": - version: 21.1.1 - resolution: "jsdom@npm:21.1.1" + version: 21.1.2 + resolution: "jsdom@npm:21.1.2" dependencies: - abab: ^2.0.6 - acorn: ^8.8.2 - acorn-globals: ^7.0.0 - cssstyle: ^3.0.0 - data-urls: ^4.0.0 - decimal.js: ^10.4.3 - domexception: ^4.0.0 - escodegen: ^2.0.0 - form-data: ^4.0.0 - html-encoding-sniffer: ^3.0.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.1 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.2 - parse5: ^7.1.2 - rrweb-cssom: ^0.6.0 - saxes: ^6.0.0 - symbol-tree: ^3.2.4 - tough-cookie: ^4.1.2 - w3c-xmlserializer: ^4.0.0 - webidl-conversions: ^7.0.0 - whatwg-encoding: ^2.0.0 - whatwg-mimetype: ^3.0.0 - whatwg-url: ^12.0.1 - ws: ^8.13.0 - xml-name-validator: ^4.0.0 + abab: "npm:^2.0.6" + acorn: "npm:^8.8.2" + acorn-globals: "npm:^7.0.0" + cssstyle: "npm:^3.0.0" + data-urls: "npm:^4.0.0" + decimal.js: "npm:^10.4.3" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.4" + parse5: "npm:^7.1.2" + rrweb-cssom: "npm:^0.6.0" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^12.0.1" + ws: "npm:^8.13.0" + xml-name-validator: "npm:^4.0.0" peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: ea33c3f3f084b48685e3838baa1112f0cbffc2949b0249f90ee19152b66dbafc6ae7dd8573ee66933697f881e3bc04c0efc2b56cd26f64fd3e6321a64164e2d1 + checksum: 10c0/905012680891fa0c92b8c18acfa35fc0b3e4b15f778ee3494aec1aca3274875160d2be35917d666b8eacd0b3121f483bd95fbe35e14790a004b805b1cf01818a languageName: node linkType: hard @@ -4260,55 +4248,62 @@ __metadata: resolution: "jsesc@npm:2.5.2" bin: jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 languageName: node linkType: hard -"json5@npm:^1.0.1": +"json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" dependencies: - minimist: ^1.2.0 + minimist: "npm:^1.2.0" bin: json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f languageName: node linkType: hard -"json5@npm:^2.1.3, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.1.3, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c languageName: node linkType: hard "jsonc-parser@npm:^3.2.0": - version: 3.2.0 - resolution: "jsonc-parser@npm:3.2.0" - checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7 + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 10c0/ada66dec143d7f9cb0e2d0d29c69e9ce40d20f3a4cb96b0c6efb745025ac7f9ba647d7ac0990d0adfc37a2d2ae084a12009a9c833dbdbeadf648879a99b9df89 languageName: node linkType: hard @@ -4316,19 +4311,28 @@ __metadata: version: 6.1.0 resolution: "jsonfile@npm:6.1.0" dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 languageName: node linkType: hard "keycharm@npm:^0.4.0": version: 0.4.0 resolution: "keycharm@npm:0.4.0" - checksum: b6a601e04d7354af4f94facb4174bc46d0788b30b7d19ab8af37dacffb43f6f7ae4ab1f2a2a635de28b4da107b2f1b7219efc789887f7897ed53f209c97cce85 + checksum: 10c0/5e845331148b5cb652f65a6354a830df62a189e2c17faec56375fa12d91152a70f93c872c6f22b81acafe56b9df51268c9af6b7b8c0543cb65ba46042eb9713e + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e languageName: node linkType: hard @@ -4336,70 +4340,95 @@ __metadata: version: 0.4.1 resolution: "levn@npm:0.4.1" dependencies: - prelude-ls: ^1.2.1 - type-check: ~0.4.0 - checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e languageName: node linkType: hard "lilconfig@npm:^2.0.3": - version: 2.0.6 - resolution: "lilconfig@npm:2.0.6" - checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d languageName: node linkType: hard -"lit-element@npm:^3.2.0": - version: 3.2.2 - resolution: "lit-element@npm:3.2.2" +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" dependencies: - "@lit/reactive-element": ^1.3.0 - lit-html: ^2.2.0 - checksum: e1df57c02ad5ae4c42b49a5066b3b623bccf7fa6610bbc3f65bc22cbbe1546ecd6a7f717b1f01863929262f416c4b8b7a39ff166114215f93cc22f4e5b3825c3 + "@lit-labs/ssr-dom-shim": "npm:^1.1.0" + "@lit/reactive-element": "npm:^1.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/f44c12fa3423a4e9ca5b84651410687e14646bb270ac258325e6905affac64a575f041f8440377e7ebaefa3910b6f0d6b8b1e902cb1aa5d0849b3fdfbf4fb3b6 languageName: node linkType: hard -"lit-html@npm:^2.2.0, lit-html@npm:^2.6.0": - version: 2.6.1 - resolution: "lit-html@npm:2.6.1" +"lit-element@npm:^4.0.4": + version: 4.0.4 + resolution: "lit-element@npm:4.0.4" dependencies: - "@types/trusted-types": ^2.0.2 - checksum: 32291eb5bcaa7fcc1d433522a9a62c3c3d240e49bb8c57ccea5c10014823d94f62f17e2d5361781cb6ee0b3c9078ef839de6164d5374371d650471904515e48e + "@lit-labs/ssr-dom-shim": "npm:^1.2.0" + "@lit/reactive-element": "npm:^2.0.4" + lit-html: "npm:^3.1.2" + checksum: 10c0/c8fa358ff8208b5ef4e40018e4e6f3ad691ffc6aaaf32bec222b2e9117da18f92c80ecd41d394d494e9a55f7b0eee8a18a6529b401698f1f35dbe353a3042339 languageName: node linkType: hard -"lit@npm:^2.0.0, lit@npm:^2.1.1, lit@npm:^2.3.1": - version: 2.6.1 - resolution: "lit@npm:2.6.1" +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" dependencies: - "@lit/reactive-element": ^1.6.0 - lit-element: ^3.2.0 - lit-html: ^2.6.0 - checksum: 74f2813152a48f195784f01b6b4ff7e4e7d8fa90ac272b725d1953fa3e1d6c9dca60b77da435f34144fcdd38705480889a8ea986835676932a8559c897cea517 + "@types/trusted-types": "npm:^2.0.2" + checksum: 10c0/90057dee050803823ac884c1355b0213ab8c05fbe2ec63943c694b61aade5d36272068f3925f45a312835e504f9c9784738ef797009f0a756a750351eafb52d5 languageName: node linkType: hard -"local-pkg@npm:^0.4.3": - version: 0.4.3 - resolution: "local-pkg@npm:0.4.3" - checksum: 7825aca531dd6afa3a3712a0208697aa4a5cd009065f32e3fb732aafcc42ed11f277b5ac67229222e96f4def55197171cdf3d5522d0381b489d2e5547b407d55 +"lit-html@npm:^3.1.2": + version: 3.1.2 + resolution: "lit-html@npm:3.1.2" + dependencies: + "@types/trusted-types": "npm:^2.0.2" + checksum: 10c0/923ef6e0d52aef0cd1f3d6922c7b46e9de7efe0493b205da7f0e5a1d50ab02884cab87425886e2281396ece7745e4b794220bb5e8c4fedbdba47281aeeb489d3 + languageName: node + linkType: hard + +"lit@npm:^2.0.0 || ^3.0.0, lit@npm:^3.1.2": + version: 3.1.2 + resolution: "lit@npm:3.1.2" + dependencies: + "@lit/reactive-element": "npm:^2.0.4" + lit-element: "npm:^4.0.4" + lit-html: "npm:^3.1.2" + checksum: 10c0/47f10dbc6716974de6d6d6b75db278ac28869839c099e77f8f8494b25b1d3913f2c62126a52372a8b0c5e4a1d0d2301637d98d9ff1e583ee7d961998686810c9 + languageName: node + linkType: hard + +"lit@npm:^2.1.1": + version: 2.8.0 + resolution: "lit@npm:2.8.0" + dependencies: + "@lit/reactive-element": "npm:^1.6.0" + lit-element: "npm:^3.3.0" + lit-html: "npm:^2.8.0" + checksum: 10c0/bf33c26b1937ee204aed1adbfa4b3d43a284e85aad8ea9763c7865365917426eded4e5888158b4136095ea42054812561fe272862b61775f1198fad3588b071f + languageName: node + linkType: hard + +"local-pkg@npm:^0.5.0": + version: 0.5.0 + resolution: "local-pkg@npm:0.5.0" + dependencies: + mlly: "npm:^1.4.2" + pkg-types: "npm:^1.0.3" + checksum: 10c0/f61cbd00d7689f275558b1a45c7ff2a3ddf8472654123ed880215677b9adfa729f1081e50c27ffb415cdb9fa706fb755fec5e23cdd965be375c8059e87ff1cc9 languageName: node linkType: hard @@ -4407,8 +4436,8 @@ __metadata: version: 5.0.0 resolution: "locate-path@npm:5.0.0" dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 languageName: node linkType: hard @@ -4416,52 +4445,59 @@ __metadata: version: 6.0.0 resolution: "locate-path@npm:6.0.0" dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 languageName: node linkType: hard "lodash-es@npm:^4.17.21": version: 4.17.21 resolution: "lodash-es@npm:4.17.21" - checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 + checksum: 10c0/fb407355f7e6cd523a9383e76e6b455321f0f153a6c9625e21a8827d10c54c2a2341bd2ae8d034358b60e07325e1330c14c224ff582d04612a46a4f0479ff2f2 languageName: node linkType: hard "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" - checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 languageName: node linkType: hard "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 languageName: node linkType: hard "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e languageName: node linkType: hard "lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c languageName: node linkType: hard -"loupe@npm:^2.3.1, loupe@npm:^2.3.6": - version: 2.3.6 - resolution: "loupe@npm:2.3.6" +"loupe@npm:^2.3.6, loupe@npm:^2.3.7": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" dependencies: - get-func-name: ^2.0.0 - checksum: cc83f1b124a1df7384601d72d8d1f5fe95fd7a8185469fec48bb2e4027e45243949e7a013e8d91051a138451ff0552310c32aa9786e60b6a30d1e801bdc2163f + get-func-name: "npm:^2.0.1" + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee languageName: node linkType: hard @@ -4469,8 +4505,8 @@ __metadata: version: 5.1.1 resolution: "lru-cache@npm:5.1.1" dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 languageName: node linkType: hard @@ -4478,15 +4514,8 @@ __metadata: version: 6.0.0 resolution: "lru-cache@npm:6.0.0" dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.14.1 - resolution: "lru-cache@npm:7.14.1" - checksum: d72c6713c6a6d86836a7a6523b3f1ac6764768cca47ec99341c3e76db06aacd4764620e5e2cda719a36848785a52a70e531822dc2b33fb071fa709683746c104 + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 languageName: node linkType: hard @@ -4494,26 +4523,37 @@ __metadata: version: 0.25.9 resolution: "magic-string@npm:0.25.9" dependencies: - sourcemap-codec: ^1.4.8 - checksum: 9a0e55a15c7303fc360f9572a71cffba1f61451bc92c5602b1206c9d17f492403bf96f946dfce7483e66822d6b74607262e24392e87b0ac27b786e69a40e9b1a + sourcemap-codec: "npm:^1.4.8" + checksum: 10c0/37f5e01a7e8b19a072091f0b45ff127cda676232d373ce2c551a162dd4053c575ec048b9cbb4587a1f03adb6c5d0fd0dd49e8ab070cd2c83a4992b2182d9cb56 languageName: node linkType: hard -"magic-string@npm:^0.30.1": - version: 0.30.3 - resolution: "magic-string@npm:0.30.3" +"magic-string@npm:^0.30.5": + version: 0.30.7 + resolution: "magic-string@npm:0.30.7" dependencies: - "@jridgewell/sourcemap-codec": ^1.4.15 - checksum: a5a9ddf9bd3bf49a2de1048bf358464f1bda7b3cc1311550f4a0ba8f81a4070e25445d53a5ee28850161336f1bff3cf28aa3320c6b4aeff45ce3e689f300b2f3 + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + checksum: 10c0/d1d949f7a53c37c6e685f4ea7b2b151c2fe0cc5af8f1f979ecba916f7d60d58f35309aaf4c8b09ce1aef7c160b957be39a38b52b478a91650750931e4ddd5daf languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": +"magicast@npm:^0.3.3": + version: 0.3.3 + resolution: "magicast@npm:0.3.3" + dependencies: + "@babel/parser": "npm:^7.23.6" + "@babel/types": "npm:^7.23.6" + source-map-js: "npm:^1.0.2" + checksum: 10c0/2eeba19545ac4328433be817bd81fcfa8a517ec67599260541e13ce5ce18b27ff8830f1b87d54a1392d408d1b96e44938bf026920f0110edbdfecc96980919b3 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + semver: "npm:^6.0.0" + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa languageName: node linkType: hard @@ -4521,32 +4561,27 @@ __metadata: version: 4.0.0 resolution: "make-dir@npm:4.0.0" dependencies: - semver: ^7.5.3 - checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 languageName: node linkType: hard @@ -4554,30 +4589,30 @@ __metadata: version: 4.2.2 resolution: "masonry-layout@npm:4.2.2" dependencies: - get-size: ^2.0.2 - outlayer: ^2.1.0 - checksum: b947029b8fdfb384d17d7749d80a4f00f88d885acea04d77e1fefd36827cc2a345fd40d9ccddf720ed9323e133d8ea498125eece91d2c8517f69fd4e9e1bbdf4 + get-size: "npm:^2.0.2" + outlayer: "npm:^2.1.0" + checksum: 10c0/991044cf7c22acbbb1135690314d68f9f237ef17315494c9dd25ed00fa0c526a8eb27d6bcf99a141a9d049bd62c5c251f66f9c8a4c201ca9c0944d8e44c0f09f languageName: node linkType: hard "mdn-data@npm:2.0.14": version: 2.0.14 resolution: "mdn-data@npm:2.0.14" - checksum: 9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 + checksum: 10c0/67241f8708c1e665a061d2b042d2d243366e93e5bf1f917693007f6d55111588b952dcbfd3ea9c2d0969fb754aad81b30fdcfdcc24546495fc3b24336b28d4bd languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 languageName: node linkType: hard "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb languageName: node linkType: hard @@ -4585,16 +4620,16 @@ __metadata: version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff languageName: node linkType: hard "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa languageName: node linkType: hard @@ -4602,17 +4637,24 @@ __metadata: version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 languageName: node linkType: hard -"mime@npm:>=2.4.6": +"mime@npm:^3": version: 3.0.0 resolution: "mime@npm:3.0.0" bin: mime: cli.js - checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf languageName: node linkType: hard @@ -4621,7 +4663,7 @@ __metadata: resolution: "mini-svg-data-uri@npm:1.4.4" bin: mini-svg-data-uri: cli.js - checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09 + checksum: 10c0/24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191 languageName: node linkType: hard @@ -4629,48 +4671,48 @@ __metadata: version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 languageName: node linkType: hard -"minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" dependencies: - brace-expansion: ^2.0.1 - checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard "minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 languageName: node linkType: hard -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e languageName: node linkType: hard -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" dependenciesMeta: encoding: optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 languageName: node linkType: hard @@ -4678,8 +4720,8 @@ __metadata: version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd languageName: node linkType: hard @@ -4687,8 +4729,8 @@ __metadata: version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 languageName: node linkType: hard @@ -4696,24 +4738,31 @@ __metadata: version: 1.0.3 resolution: "minipass-sized@npm:1.0.3" dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": +"minipass@npm:^3.0.0": version: 3.3.6 resolution: "minipass@npm:3.3.6" dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c languageName: node linkType: hard -"minipass@npm:^4.0.0": - version: 4.0.2 - resolution: "minipass@npm:4.0.2" - checksum: 2e4f4caaf85a45c01c6042adc43b5111a6113f62e300acf1db3b193ac3ec6e955bc893d6d8a08635598771a55a0f60487dcac59a1ac39557eb524295d4778c9e +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 languageName: node linkType: hard @@ -4721,9 +4770,9 @@ __metadata: version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 languageName: node linkType: hard @@ -4732,141 +4781,131 @@ __metadata: resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf languageName: node linkType: hard -"mlly@npm:^1.2.0, mlly@npm:^1.4.0": - version: 1.4.1 - resolution: "mlly@npm:1.4.1" +"mlly@npm:^1.2.0, mlly@npm:^1.4.2": + version: 1.6.1 + resolution: "mlly@npm:1.6.1" dependencies: - acorn: ^8.10.0 - pathe: ^1.1.1 - pkg-types: ^1.0.3 - ufo: ^1.3.0 - checksum: b2b59ab3d70196127be4e54609d2a442bd252345727138940fb245672a238b2fbdd431e8c75ec5c741ff90410ce488c5fd6446d5d3e6476d21dbf4c3fa35d4a0 + acorn: "npm:^8.11.3" + pathe: "npm:^1.1.2" + pkg-types: "npm:^1.0.3" + ufo: "npm:^1.3.2" + checksum: 10c0/a7bf26b3d4f83b0f5a5232caa3af44be08b464f562f31c11d885d1bc2d43b7d717137d47b0c06fdc69e1b33ffc09f902b6d2b18de02c577849d40914e8785092 languageName: node linkType: hard "moment@npm:^2.29.4": - version: 2.29.4 - resolution: "moment@npm:2.29.4" - checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e + version: 2.30.1 + resolution: "moment@npm:2.30.1" + checksum: 10c0/865e4279418c6de666fca7786607705fd0189d8a7b7624e2e56be99290ac846f90878a6f602e34b4e0455c549b85385b1baf9966845962b313699e7cb847543a languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1": +"ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard -"nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 languageName: node linkType: hard "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 languageName: node linkType: hard "negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard "node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 + checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 languageName: node linkType: hard -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" dependencies: - abbrev: ^1.0.0 + abbrev: "npm:^2.0.0" bin: nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 languageName: node linkType: hard "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" - checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 + checksum: 10c0/95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 languageName: node linkType: hard -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba languageName: node linkType: hard @@ -4874,63 +4913,87 @@ __metadata: version: 2.1.1 resolution: "nth-check@npm:2.1.1" dependencies: - boolbase: ^1.0.0 - checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 + boolbase: "npm:^1.0.0" + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 languageName: node linkType: hard -"nwsapi@npm:^2.2.2": - version: 2.2.4 - resolution: "nwsapi@npm:2.2.4" - checksum: a5eb9467158bdf255d27e9c4555e9ca02e4ba84ddce9b683856ed49de23eb1bb28ae3b8e791b7a93d156ad62b324a56f4d44cad827c2ca288c107ed6bdaff8a8 +"nwsapi@npm:^2.2.4": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 10c0/44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db +"object-inspect@npm:^1.13.1": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 languageName: node linkType: hard "object.entries@npm:^1.1.5": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 languageName: node linkType: hard -"object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" +"object.fromentries@npm:^2.0.7": + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.1": + version: 1.0.2 + resolution: "object.groupby@npm:1.0.2" + dependencies: + array.prototype.filter: "npm:^1.0.3" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + checksum: 10c0/b6266b1cfec7eb784b8bbe0bca5dc4b371cf9dd3e601b0897d72fa97a5934273d8fb05b3fc5222204104dbec32b50e25ba27e05ad681f71fb739cc1c7e9b81b1 + languageName: node + linkType: hard + +"object.values@npm:^1.1.7": + version: 1.1.7 + resolution: "object.values@npm:1.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b languageName: node linkType: hard @@ -4938,19 +5001,28 @@ __metadata: version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c languageName: node linkType: hard "open@npm:^8.4.0": - version: 8.4.0 - resolution: "open@npm:8.4.0" + version: 8.4.2 + resolution: "open@npm:8.4.2" dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 languageName: node linkType: hard @@ -4959,35 +5031,21 @@ __metadata: resolution: "opener@npm:1.5.2" bin: opener: bin/opener-bin.js - checksum: 33b620c0d53d5b883f2abc6687dd1c5fd394d270dbe33a6356f2d71e0a2ec85b100d5bac94694198ccf5c30d592da863b2292c5539009c715a9c80c697b4f6cc + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" - dependencies: - 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 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 + "@aashutoshrathi/word-wrap": "npm:^1.2.3" + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -4995,17 +5053,17 @@ __metadata: version: 2.1.1 resolution: "outlayer@npm:2.1.1" dependencies: - ev-emitter: ^1.0.0 - fizzy-ui-utils: ^2.0.0 - get-size: ^2.0.2 - checksum: a8b69d07bad6b498ea1956f89a4bae6d38414d81a5feeae6af06cd8206a1bf47db82f664dc3ccd13b8d2c5886a6cded4a4642d0fafcbbd80f68873b7eb9f4153 + ev-emitter: "npm:^1.0.0" + fizzy-ui-utils: "npm:^2.0.0" + get-size: "npm:^2.0.2" + checksum: 10c0/863f5568e16833d11d048a760ddd92395a9e1e49b51b669d863ff4ffda4cf8f6d91ebb2c4c20e26ca30175cb295f8f436075772a56c7e17ae40d3f095d449a53 languageName: node linkType: hard "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 languageName: node linkType: hard @@ -5013,8 +5071,8 @@ __metadata: version: 2.3.0 resolution: "p-limit@npm:2.3.0" dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 languageName: node linkType: hard @@ -5022,17 +5080,17 @@ __metadata: version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a languageName: node linkType: hard -"p-limit@npm:^4.0.0": - version: 4.0.0 - resolution: "p-limit@npm:4.0.0" +"p-limit@npm:^5.0.0": + version: 5.0.0 + resolution: "p-limit@npm:5.0.0" dependencies: - yocto-queue: ^1.0.0 - checksum: 01d9d70695187788f984226e16c903475ec6a947ee7b21948d6f597bed788e3112cc7ec2e171c1d37125057a5f45f3da21d8653e04a3a793589e12e9e80e756b + yocto-queue: "npm:^1.0.0" + checksum: 10c0/574e93b8895a26e8485eb1df7c4b58a1a6e8d8ae41b1750cc2cc440922b3d306044fc6e9a7f74578a883d46802d9db72b30f2e612690fcef838c173261b1ed83 languageName: node linkType: hard @@ -5040,8 +5098,8 @@ __metadata: version: 4.1.0 resolution: "p-locate@npm:4.1.0" dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 languageName: node linkType: hard @@ -5049,8 +5107,8 @@ __metadata: version: 5.0.0 resolution: "p-locate@npm:5.0.0" dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a languageName: node linkType: hard @@ -5058,8 +5116,8 @@ __metadata: version: 4.0.0 resolution: "p-map@npm:4.0.0" dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 languageName: node linkType: hard @@ -5067,9 +5125,9 @@ __metadata: version: 6.6.2 resolution: "p-queue@npm:6.6.2" dependencies: - eventemitter3: ^4.0.4 - p-timeout: ^3.2.0 - checksum: 832642fcc4ab6477b43e6d7c30209ab10952969ed211c6d6f2931be8a4f9935e3578c72e8cce053dc34f2eb6941a408a2c516a54904e989851a1a209cf19761c + eventemitter3: "npm:^4.0.4" + p-timeout: "npm:^3.2.0" + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e languageName: node linkType: hard @@ -5077,15 +5135,15 @@ __metadata: version: 3.2.0 resolution: "p-timeout@npm:3.2.0" dependencies: - p-finally: ^1.0.0 - checksum: 3dd0eaa048780a6f23e5855df3dd45c7beacff1f820476c1d0d1bcd6648e3298752ba2c877aa1c92f6453c7dd23faaf13d9f5149fc14c0598a142e2c5e8d649c + p-finally: "npm:^1.0.0" + checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f languageName: node linkType: hard @@ -5093,8 +5151,8 @@ __metadata: version: 1.0.1 resolution: "parent-module@npm:1.0.1" dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 languageName: node linkType: hard @@ -5102,11 +5160,11 @@ __metadata: version: 5.2.0 resolution: "parse-json@npm:5.2.0" 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 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 languageName: node linkType: hard @@ -5114,85 +5172,95 @@ __metadata: version: 7.1.2 resolution: "parse5@npm:7.1.2" dependencies: - entities: ^4.4.0 - checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 languageName: node linkType: hard "path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" - checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c languageName: node linkType: hard -"pathe@npm:^1.1.0": - version: 1.1.0 - resolution: "pathe@npm:1.1.0" - checksum: 6b9be9968ea08a90c0824934799707a1c6a1ad22ac1f22080f377e3f75856d5e53a331b01d327329bfce538a14590587cfb250e8e7947f64408797c84c252056 - languageName: node - linkType: hard - -"pathe@npm:^1.1.1": - version: 1.1.1 - resolution: "pathe@npm:1.1.1" - checksum: 34ab3da2e5aa832ebc6a330ffe3f73d7ba8aec6e899b53b8ec4f4018de08e40742802deb12cf5add9c73b7bf719b62c0778246bd376ca62b0fb23e0dde44b759 +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 languageName: node linkType: hard "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" - checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6 + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be languageName: node linkType: hard @@ -5200,8 +5268,8 @@ __metadata: version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: - find-up: ^4.0.0 - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 languageName: node linkType: hard @@ -5209,10 +5277,17 @@ __metadata: version: 1.0.3 resolution: "pkg-types@npm:1.0.3" dependencies: - jsonc-parser: ^3.2.0 - mlly: ^1.2.0 - pathe: ^1.1.0 - checksum: 4b305c834b912ddcc8a0fe77530c0b0321fe340396f84cbb87aecdbc126606f47f2178f23b8639e71a4870f9631c7217aef52ffed0ae17ea2dbbe7e43d116a6e + jsonc-parser: "npm:^3.2.0" + mlly: "npm:^1.2.0" + pathe: "npm:^1.1.0" + checksum: 10c0/7f692ff2005f51b8721381caf9bdbc7f5461506ba19c34f8631660a215c8de5e6dca268f23a319dd180b8f7c47a0dc6efea14b376c485ff99e98d810b8f786c4 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd languageName: node linkType: hard @@ -5220,25 +5295,25 @@ __metadata: version: 8.2.4 resolution: "postcss-calc@npm:8.2.4" dependencies: - postcss-selector-parser: ^6.0.9 - postcss-value-parser: ^4.2.0 + postcss-selector-parser: "npm:^6.0.9" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.2 - checksum: 314b4cebb0c4ed0cf8356b4bce71eca78f5a7842e6a3942a3bba49db168d5296b2bd93c3f735ae1c616f2651d94719ade33becc03c73d2d79c7394fb7f73eabb + checksum: 10c0/8518a429488c3283ff1560c83a511f6f772329bc61d88875eb7c83e13a8683b7ccbdccaa9946024cf1553da3eacd2f40fcbcebf1095f7fdeb432bf86bc6ba6ba languageName: node linkType: hard -"postcss-colormin@npm:^5.3.0": - version: 5.3.0 - resolution: "postcss-colormin@npm:5.3.0" +"postcss-colormin@npm:^5.3.1": + version: 5.3.1 + resolution: "postcss-colormin@npm:5.3.1" dependencies: - browserslist: ^4.16.6 - caniuse-api: ^3.0.0 - colord: ^2.9.1 - postcss-value-parser: ^4.2.0 + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" + colord: "npm:^2.9.1" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 3d3e3cc25071407fb73d68541ca1039ebd154fceb649041461a8a3cab0400cc89b42dbb34a4eeaf573be4ba2370ce23af5e01aff5e03a8d72275f40605577212 + checksum: 10c0/c4ca6f335dd992dc8e3df24bffc3495c4e504eba8489c81cb6836fdce3203f423cf4c0b640c4b63c586f588c59d82adb5313c3c5d1a68113896d18ed71caa462 languageName: node linkType: hard @@ -5246,11 +5321,11 @@ __metadata: version: 5.1.3 resolution: "postcss-convert-values@npm:5.1.3" dependencies: - browserslist: ^4.21.4 - postcss-value-parser: ^4.2.0 + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: df48cdaffabf9737f9cfdc58a3dc2841cf282506a7a944f6c70236cff295d3a69f63de6e0935eeb8a9d3f504324e5b4e240abc29e21df9e35a02585d3060aeb5 + checksum: 10c0/cd10a81781a12487b2921ff84a1a068e948a1956b9539a284c202abecf4cacdd3e106eb026026b22dbf70933f4315c824c111f6b71f56c355e47b842ca9b1dec languageName: node linkType: hard @@ -5259,7 +5334,7 @@ __metadata: resolution: "postcss-discard-comments@npm:5.1.2" peerDependencies: postcss: ^8.2.15 - checksum: abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a + checksum: 10c0/cb5ba81623c498e18d406138e7d27d69fc668802a1139a8de69d28e80b3fe222cda7b634940512cae78d04f0c78afcd15d92bcf80e537c6c85fa8ff9cd61d00f languageName: node linkType: hard @@ -5268,7 +5343,7 @@ __metadata: resolution: "postcss-discard-duplicates@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 88d6964201b1f4ed6bf7a32cefe68e86258bb6e42316ca01d9b32bdb18e7887d02594f89f4a2711d01b51ea6e3fcca8c54be18a59770fe5f4521c61d3eb6ca35 + checksum: 10c0/3d3a49536c56097c06b4f085412e0cda0854fac1c559563ccb922d9fab6305ff13058cd6fee422aa66c1d7e466add4e7672d7ae2ff551a4af6f1a8d2142d471f languageName: node linkType: hard @@ -5277,7 +5352,7 @@ __metadata: resolution: "postcss-discard-empty@npm:5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 970adb12fae5c214c0768236ad9a821552626e77dedbf24a8213d19cc2c4a531a757cd3b8cdd3fc22fb1742471b8692a1db5efe436a71236dec12b1318ee8ff4 + checksum: 10c0/36c8b2197af836dbd93168c72cde4edc1f10fe00e564824119da076d3764909745bb60e4ada04052322e26872d1bce6a37c56815f1c48c813a21adca1a41fbdc languageName: node linkType: hard @@ -5286,7 +5361,7 @@ __metadata: resolution: "postcss-discard-overridden@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: d64d4a545aa2c81b22542895cfcddc787d24119f294d35d29b0599a1c818b3cc51f4ee80b80f5a0a09db282453dd5ac49f104c2117cc09112d0ac9b40b499a41 + checksum: 10c0/7d3fc0b0d90599606fc083327a7c24390f90270a94a0119af4b74815d518948581579281f63b9bfa62e2644edf59bc9e725dc04ea5ba213f697804f3fb4dd8dc languageName: node linkType: hard @@ -5294,25 +5369,25 @@ __metadata: version: 5.1.7 resolution: "postcss-merge-longhand@npm:5.1.7" dependencies: - postcss-value-parser: ^4.2.0 - stylehacks: ^5.1.1 + postcss-value-parser: "npm:^4.2.0" + stylehacks: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 81c3fc809f001b9b71a940148e242bdd6e2d77713d1bfffa15eb25c1f06f6648d5e57cb21645746d020a2a55ff31e1740d2b27900442913a9d53d8a01fb37e1b + checksum: 10c0/4d9f44b03f19522cc81ae4f5b1f2a9ef2db918dbd8b3042d4f1b2461b2230b8ec1269334db6a67a863ba68f64cabd712e6e45340ddb22a3fc03cd34df69d2bf0 languageName: node linkType: hard -"postcss-merge-rules@npm:^5.1.3": - version: 5.1.3 - resolution: "postcss-merge-rules@npm:5.1.3" +"postcss-merge-rules@npm:^5.1.4": + version: 5.1.4 + resolution: "postcss-merge-rules@npm:5.1.4" dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 - cssnano-utils: ^3.1.0 - postcss-selector-parser: ^6.0.5 + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" + cssnano-utils: "npm:^3.1.0" + postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 0ddaddff98cd7f3fac2b0e716c641f529a61a8668be6d5b48d60770d0a1246126088e1d606f309b9748ff598a3794f3fd6dd5b8c3d79112f84744cab5375d4d9 + checksum: 10c0/e7686cdda052071bf98810ad381e26145c43a2286f9540f04f97ef93101604b78d478dd555db91e5f73751bb353c283ba75c2fcb16a3751ac7d93dc6a0130c41 languageName: node linkType: hard @@ -5320,10 +5395,10 @@ __metadata: version: 5.1.0 resolution: "postcss-minify-font-values@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 35e858fa41efa05acdeb28f1c76579c409fdc7eabb1744c3bd76e895bb9fea341a016746362a67609688ab2471f587202b9a3e14ea28ad677754d663a2777ece + checksum: 10c0/7aa4f93a853b657f79a8b28d0e924cafce3720086d9da02ce04b8b2f8de42e18ce32c8f7f1078390fb5ec82468e2d8e771614387cea3563f05fd9fa1798e1c59 languageName: node linkType: hard @@ -5331,12 +5406,12 @@ __metadata: version: 5.1.1 resolution: "postcss-minify-gradients@npm:5.1.1" dependencies: - colord: ^2.9.1 - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 + colord: "npm:^2.9.1" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 27354072a07c5e6dab36731103b94ca2354d4ed3c5bc6aacfdf2ede5a55fa324679d8fee5450800bc50888dbb5e9ed67569c0012040c2be128143d0cebb36d67 + checksum: 10c0/bcb2802d7c8f0f76c7cff089884844f26c24b95f35c3ec951d7dec8c212495d1873d6ba62d6225ce264570e8e0668e271f9bc79bb6f5d2429c1f8933f4e3021d languageName: node linkType: hard @@ -5344,12 +5419,12 @@ __metadata: version: 5.1.4 resolution: "postcss-minify-params@npm:5.1.4" dependencies: - browserslist: ^4.21.4 - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 + browserslist: "npm:^4.21.4" + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: bd63e2cc89edcf357bb5c2a16035f6d02ef676b8cede4213b2bddd42626b3d428403849188f95576fc9f03e43ebd73a29bf61d33a581be9a510b13b7f7f100d5 + checksum: 10c0/debce6f0f7dd9af69b4bb9e467ea1ccccff2d849b6020461a2b9741c0c137340e6076c245dc2e83880180eb2e82936280fa31dfe8608e5a2e3618f3d864314c5 languageName: node linkType: hard @@ -5357,10 +5432,10 @@ __metadata: version: 5.2.1 resolution: "postcss-minify-selectors@npm:5.2.1" dependencies: - postcss-selector-parser: ^6.0.5 + postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 6fdbc84f99a60d56b43df8930707da397775e4c36062a106aea2fd2ac81b5e24e584a1892f4baa4469fa495cb87d1422560eaa8f6c9d500f9f0b691a5f95bab5 + checksum: 10c0/f3f4ec110f5f697cfc9dde3e491ff10aa07509bf33cc940aa539e4b5b643d1b9f8bb97f8bb83d05fc96f5eeb220500ebdeffbde513bd176c0671e21c2c96fab9 languageName: node linkType: hard @@ -5369,31 +5444,31 @@ __metadata: resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 - checksum: 4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 + checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 languageName: node linkType: hard "postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" + version: 4.0.4 + resolution: "postcss-modules-local-by-default@npm:4.0.4" dependencies: - icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.1.0 + icss-utils: "npm:^5.0.0" + postcss-selector-parser: "npm:^6.0.2" + postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 6cf570badc7bc26c265e073f3ff9596b69bb954bc6ac9c5c1b8cba2995b80834226b60e0a3cbb87d5f399dbb52e6466bba8aa1d244f6218f99d834aec431a69d + checksum: 10c0/9ebf464867eb10b29b73501b1466dcac8352ed852ef68ec23571f515daa74401d7ace9a6c72f354542081fdbb47d098c9bc6b05373b553a6e35779d072f967bb languageName: node linkType: hard "postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" + version: 3.1.1 + resolution: "postcss-modules-scope@npm:3.1.1" dependencies: - postcss-selector-parser: ^6.0.4 + postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.1.0 - checksum: 330b9398dbd44c992c92b0dc612c0626135e2cc840fee41841eb61247a6cfed95af2bd6f67ead9dd9d0bb41f5b0367129d93c6e434fa3e9c58ade391d9a5a138 + checksum: 10c0/3ef6ac14fcda1581bc43e37622256bd87b99ea49c59b2aae648d057d57f5ecc634648cce9910166220a797567af674bc09246ccc010f1dd58d2863b805719109 languageName: node linkType: hard @@ -5401,10 +5476,10 @@ __metadata: version: 4.0.0 resolution: "postcss-modules-values@npm:4.0.0" dependencies: - icss-utils: ^5.0.0 + icss-utils: "npm:^5.0.0" peerDependencies: postcss: ^8.1.0 - checksum: f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc languageName: node linkType: hard @@ -5413,7 +5488,7 @@ __metadata: resolution: "postcss-normalize-charset@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: e79d92971fc05b8b3c9b72f3535a574e077d13c69bef68156a0965f397fdf157de670da72b797f57b0e3bac8f38155b5dd1735ecab143b9cc4032d72138193b4 + checksum: 10c0/aa481584d4db48e0dbf820f992fa235e6c41ff3d4701a62d349f33c1ad4c5c7dcdea3096db9ff2a5c9497e9bed2186d594ccdb1b42d57b30f58affba5829ad9c languageName: node linkType: hard @@ -5421,10 +5496,10 @@ __metadata: version: 5.1.0 resolution: "postcss-normalize-display-values@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: b6eb7b9b02c3bdd62bbc54e01e2b59733d73a1c156905d238e178762962efe0c6f5104544da39f32cade8a4fb40f10ff54b63a8ebfbdff51e8780afb9fbdcf86 + checksum: 10c0/70b164fda885c097c02c98914fba4cd19b2382ff5f85f77e5315d88a1d477b4803f0f271d95a38e044e2a6c3b781c5c9bfb83222fc577199f2aeb0b8f4254e2f languageName: node linkType: hard @@ -5432,10 +5507,10 @@ __metadata: version: 5.1.1 resolution: "postcss-normalize-positions@npm:5.1.1" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4 + checksum: 10c0/910d58991fd38a7cf6ed6471e6fa4a96349690ad1a99a02e8cac46d76ba5045f2fca453088b68b05ff665afd96dc617c4674c68acaeabbe83f502e4963fb78b1 languageName: node linkType: hard @@ -5443,10 +5518,10 @@ __metadata: version: 5.1.1 resolution: "postcss-normalize-repeat-style@npm:5.1.1" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534 + checksum: 10c0/57c3817a2107ebb17e4ceee3831d230c72a3ccc7650f4d5f12aa54f6ea766777401f4f63b2615b721350b2e8c7ae0b0bbc3f1c5ad4e7fa737c9efb92cfa0cbb0 languageName: node linkType: hard @@ -5454,10 +5529,10 @@ __metadata: version: 5.1.0 resolution: "postcss-normalize-string@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 6e549c6e5b2831e34c7bdd46d8419e2278f6af1d5eef6d26884a37c162844e60339340c57e5e06058cdbe32f27fc6258eef233e811ed2f71168ef2229c236ada + checksum: 10c0/a5e9979998f478d385ddff865bdd8a4870af69fa8c91c9398572a299ff39b39a6bda922a48fab0d2cddc639f30159c39baaed880ed7d13cd27cc64eaa9400b3b languageName: node linkType: hard @@ -5465,10 +5540,10 @@ __metadata: version: 5.1.0 resolution: "postcss-normalize-timing-functions@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: da550f50e90b0b23e17b67449a7d1efd1aa68288e66d4aa7614ca6f5cc012896be1972b7168eee673d27da36504faccf7b9f835c0f7e81243f966a42c8c030aa + checksum: 10c0/afb34d8e313004ae8cd92910bf1a6eb9885f29ae803cd9032b6dfe7b67a9ad93f800976f10e55170b2b08fe9484825e9272629971186812c2764c73843268237 languageName: node linkType: hard @@ -5476,11 +5551,11 @@ __metadata: version: 5.1.1 resolution: "postcss-normalize-unicode@npm:5.1.1" dependencies: - browserslist: ^4.21.4 - postcss-value-parser: ^4.2.0 + browserslist: "npm:^4.21.4" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 4c24d26cc9f4b19a9397db4e71dd600dab690f1de8e14a3809e2aa1452dbc3791c208c38a6316bbc142f29e934fdf02858e68c94038c06174d78a4937e0f273c + checksum: 10c0/c102888d488d05c53ab10ffcd4e0efb892ef0cc2f9b0abe9c9b175a2d7a9c226981ca6806ed9e5c1b82a8190f2b3a8342a6de800f019b417130661b0787ff6d7 languageName: node linkType: hard @@ -5488,11 +5563,11 @@ __metadata: version: 5.1.0 resolution: "postcss-normalize-url@npm:5.1.0" dependencies: - normalize-url: ^6.0.1 - postcss-value-parser: ^4.2.0 + normalize-url: "npm:^6.0.1" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 3bd4b3246d6600230bc827d1760b24cb3101827ec97570e3016cbe04dc0dd28f4dbe763245d1b9d476e182c843008fbea80823061f1d2219b96f0d5c724a24c0 + checksum: 10c0/a016cefd1ef80f74ef9dbed50593d3b533101e93aaadfc292896fddd8d6c3eb732a9fc5cb2e0d27f79c1f60f0fdfc40b045a494b514451e9610c6acf9392eb98 languageName: node linkType: hard @@ -5500,10 +5575,10 @@ __metadata: version: 5.1.1 resolution: "postcss-normalize-whitespace@npm:5.1.1" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 12d8fb6d1c1cba208cc08c1830959b7d7ad447c3f5581873f7e185f99a9a4230c43d3af21ca12c818e4690a5085a95b01635b762ad4a7bef69d642609b4c0e19 + checksum: 10c0/d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 languageName: node linkType: hard @@ -5511,23 +5586,23 @@ __metadata: version: 5.1.3 resolution: "postcss-ordered-values@npm:5.1.3" dependencies: - cssnano-utils: ^3.1.0 - postcss-value-parser: ^4.2.0 + cssnano-utils: "npm:^3.1.0" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 6f3ca85b6ceffc68aadaf319d9ee4c5ac16d93195bf8cba2d1559b631555ad61941461cda6d3909faab86e52389846b2b36345cff8f0c3f4eb345b1b8efadcf9 + checksum: 10c0/55abfbd2c7267eefed62a881ed0b5c0c98409c50a589526a3ebb9f8d879979203e523b8888fa84732bdd1ac887f721287a037002fa70c27c8d33f1bcbae9d9c6 languageName: node linkType: hard -"postcss-reduce-initial@npm:^5.1.1": - version: 5.1.1 - resolution: "postcss-reduce-initial@npm:5.1.1" +"postcss-reduce-initial@npm:^5.1.2": + version: 5.1.2 + resolution: "postcss-reduce-initial@npm:5.1.2" dependencies: - browserslist: ^4.21.4 - caniuse-api: ^3.0.0 + browserslist: "npm:^4.21.4" + caniuse-api: "npm:^3.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 1b704aba8c38103cbb5a75c6201dbf58ec2f3a978013c7f7e8957fd3bf3282f992050dec5a01bc050d031bad836e187dd6622b922ca78ab92bcd0afd21fb0b98 + checksum: 10c0/ddb2ce61c8d0997184f08200eafdf32b3c67e88228fee960f5e2010c32da0c1d8ea07712585bf2b3aaa15f583066401d45db2c1131527c5116ca6794ebebd865 languageName: node linkType: hard @@ -5535,20 +5610,20 @@ __metadata: version: 5.1.0 resolution: "postcss-reduce-transforms@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 0c6af2cba20e3ff63eb9ad045e634ddfb9c3e5c0e614c020db2a02f3aa20632318c4ede9e0c995f9225d9a101e673de91c0a6e10bb2fa5da6d6c75d15a55882f + checksum: 10c0/caefaeb78652ad8701b94e91500e38551255e4899fa298a7357519a36cbeebae088eab4535e00f17675a1230f448c4a7077045639d496da4614a46bc41df4add languageName: node linkType: hard "postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" + version: 6.0.15 + resolution: "postcss-selector-parser@npm:6.0.15" dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: 0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/48b425d6cef497bcf6b7d136f6fd95cfca43026955e07ec9290d3c15457de3a862dbf251dd36f42c07a0d5b5ab6f31e41acefeff02528995a989b955505e440b languageName: node linkType: hard @@ -5556,11 +5631,11 @@ __metadata: version: 5.1.0 resolution: "postcss-svgo@npm:5.1.0" dependencies: - postcss-value-parser: ^4.2.0 - svgo: ^2.7.0 + postcss-value-parser: "npm:^4.2.0" + svgo: "npm:^2.7.0" peerDependencies: postcss: ^8.2.15 - checksum: d86eb5213d9f700cf5efe3073799b485fb7cacae0c731db3d7749c9c2b1c9bc85e95e0baeca439d699ff32ea24815fc916c4071b08f67ed8219df229ce1129bd + checksum: 10c0/309634a587e38fef244648bc9cd1817e12144868d24f1173d87b1edc14a4a7fca614962b2cb9d93f4801e11bd8d676083986ad40ebab4438cb84731ce1571994 languageName: node linkType: hard @@ -5568,42 +5643,35 @@ __metadata: version: 5.1.1 resolution: "postcss-unique-selectors@npm:5.1.1" dependencies: - postcss-selector-parser: ^6.0.5 + postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 637e7b786e8558265775c30400c54b6b3b24d4748923f4a39f16a65fd0e394f564ccc9f0a1d3c0e770618a7637a7502ea1d0d79f731d429cb202255253c23278 + checksum: 10c0/484f6409346d6244c134c5cdcd62f4f2751b269742f95222f13d8bac5fb224471ffe04e28a354670cbe0bdc2707778ead034fc1b801b473ffcbea5436807de30 languageName: node linkType: hard "postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 languageName: node linkType: hard -"postcss@npm:^8.4.21, postcss@npm:^8.4.5": - version: 8.4.21 - resolution: "postcss@npm:8.4.21" +"postcss@npm:^8, postcss@npm:^8.4.35, postcss@npm:^8.4.5": + version: 8.4.35 + resolution: "postcss@npm:8.4.35" dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679 + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/e8dd04e48001eb5857abc9475365bf08f4e508ddf9bc0b8525449a95d190f10d025acebc5b56ac2e94b3c7146790e4ae78989bb9633cb7ee20d1cc9b7dc909b2 languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" - checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd languageName: node linkType: hard @@ -5611,35 +5679,35 @@ __metadata: version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" dependencies: - fast-diff: ^1.1.2 - checksum: 00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab languageName: node linkType: hard "prettier@npm:^2.6.0": - version: 2.8.3 - resolution: "prettier@npm:2.8.3" + version: 2.8.8 + resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: 92f2ceb522d454370e02082aa74ad27388672f7cee8975028b59517c069fe643bdc73e322675c8faf2ff173d7a626d1a6389f26b474000308e793aa25fff46e5 + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a languageName: node linkType: hard -"pretty-format@npm:^29.5.0": - version: 29.6.3 - resolution: "pretty-format@npm:29.6.3" +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": ^29.6.3 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 4e1c0db48e65571c22e80ff92123925ff8b3a2a89b71c3a1683cfde711004d492de32fe60c6bc10eea8bf6c678e5cbe544ac6c56cb8096e1eb7caf856928b1c4 + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f languageName: node linkType: hard -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc languageName: node linkType: hard @@ -5647,9 +5715,9 @@ __metadata: version: 2.0.1 resolution: "promise-retry@npm:2.0.1" dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 languageName: node linkType: hard @@ -5658,21 +5726,21 @@ __metadata: resolution: "propagating-hammerjs@npm:2.0.1" peerDependencies: "@egjs/hammerjs": ^2.0.17 - checksum: 7177010beae4536c681f0d44c5f7208fb46d4c90cd79f18d7e96e2b4e0f2a3386b79b291e74813a3ccc155ad5dd40bf87796ec63efda84f4e6bdd82007f4270a + checksum: 10c0/c708d4fc2e11ddcc59c4d84dcb5bebc27093cbb7cab63a328b1486599be3b57a061cf58baf1f375decb62d6479589dcc5af260ee2695bcddee84785cad8eabca languageName: node linkType: hard "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab languageName: node linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 languageName: node linkType: hard @@ -5680,32 +5748,32 @@ __metadata: version: 7.1.3 resolution: "query-string@npm:7.1.3" dependencies: - decode-uri-component: ^0.2.2 - filter-obj: ^1.1.0 - split-on-first: ^1.0.0 - strict-uri-encode: ^2.0.0 - checksum: 91af02dcd9cc9227a052841d5c2eecb80a0d6489d05625df506a097ef1c59037cfb5e907f39b84643cbfd535c955abec3e553d0130a7b510120c37d06e0f4346 + decode-uri-component: "npm:^0.2.2" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 10c0/a896c08e9e0d4f8ffd89a572d11f668c8d0f7df9c27c6f49b92ab31366d3ba0e9c331b9a620ee747893436cd1f2f821a6327e2bc9776bde2402ac6c270b801b2 languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 languageName: node linkType: hard "quick-lru@npm:^6.1.0": - version: 6.1.1 - resolution: "quick-lru@npm:6.1.1" - checksum: a9c75bf1d208c1d207590e10403a75d037f9faf7857f2e0d38c294d92b40d8b400776bcb5d4dd516baa84e6f5e3baf2a16cf405e6fedc18107922f46aeae83ee + version: 6.1.2 + resolution: "quick-lru@npm:6.1.2" + checksum: 10c0/f499f07bd276eec460c4d7d2ee286c519f3bd189cbbb5ddf3eb929e2182e4997f66b951ea8d24b3f3cee8ed5ac9f0006bf40636f082acd1b38c050a4cbf07ed3 languageName: node linkType: hard @@ -5713,26 +5781,15 @@ __metadata: version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 languageName: node linkType: hard "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e - languageName: node - linkType: hard - -"readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 languageName: node linkType: hard @@ -5740,87 +5797,88 @@ __metadata: version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 languageName: node linkType: hard "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 languageName: node linkType: hard -"resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.21.0, resolve@npm:^1.22.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" +"resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.21.0, resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a languageName: node linkType: hard -"resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.21.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" +"resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.21.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 languageName: node linkType: hard @@ -5828,10 +5886,10 @@ __metadata: version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: - glob: ^7.1.3 + glob: "npm:^7.1.3" bin: rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 languageName: node linkType: hard @@ -5839,18 +5897,18 @@ __metadata: version: 1.0.0 resolution: "rollup-plugin-git-info@npm:1.0.0" dependencies: - "@rollup/plugin-json": ^4.1.0 - checksum: b54133235f102fa392edfaae2da2c4568cd6c8ac59dfd0cdf5b003f6af0ce0dc423b3f4686ac671d1302af80bc752df04d10c76152a76b9e25b1d58f1c337751 + "@rollup/plugin-json": "npm:^4.1.0" + checksum: 10c0/d0d6d20d47da9abf6452a76932066d2fb831a33a1f5618f7bc876ad1a290abdcfe5065c761a256f13c433fd98bc6264cfb096cad08d348684399521f6d637724 languageName: node linkType: hard "rollup-plugin-serve@npm:^2.0.1": - version: 2.0.2 - resolution: "rollup-plugin-serve@npm:2.0.2" + version: 2.0.3 + resolution: "rollup-plugin-serve@npm:2.0.3" dependencies: - mime: ">=2.4.6" - opener: 1 - checksum: de74616bc197360d282cabb26aa2f77780b4864364f62562d1d6cb3fd3ba74f956e1ce1bd881edf122e11e234b96132857a760e0668f22aebbd54a0fc55d1bec + mime: "npm:^3" + opener: "npm:1" + checksum: 10c0/a130760039296c07926ae66552defad6fcefd2da95ed29ba0b468b3356c9323c0015d212c79f8892ae571a9f63904da7615bc51b7b50db51e6d64aba62722b9f languageName: node linkType: hard @@ -5858,27 +5916,27 @@ __metadata: version: 4.0.0 resolution: "rollup-plugin-styles@npm:4.0.0" dependencies: - "@rollup/pluginutils": ^4.1.2 - "@types/cssnano": ^5.0.0 - cosmiconfig: ^7.0.1 - cssnano: ^5.0.15 - fs-extra: ^10.0.0 - icss-utils: ^5.1.0 - mime-types: ^2.1.34 - p-queue: ^6.6.2 - postcss: ^8.4.5 - postcss-modules-extract-imports: ^3.0.0 - postcss-modules-local-by-default: ^4.0.0 - postcss-modules-scope: ^3.0.0 - postcss-modules-values: ^4.0.0 - postcss-value-parser: ^4.2.0 - query-string: ^7.1.0 - resolve: ^1.21.0 - source-map-js: ^1.0.1 - tslib: ^2.3.1 + "@rollup/pluginutils": "npm:^4.1.2" + "@types/cssnano": "npm:^5.0.0" + cosmiconfig: "npm:^7.0.1" + cssnano: "npm:^5.0.15" + fs-extra: "npm:^10.0.0" + icss-utils: "npm:^5.1.0" + mime-types: "npm:^2.1.34" + p-queue: "npm:^6.6.2" + postcss: "npm:^8.4.5" + postcss-modules-extract-imports: "npm:^3.0.0" + postcss-modules-local-by-default: "npm:^4.0.0" + postcss-modules-scope: "npm:^3.0.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + query-string: "npm:^7.1.0" + resolve: "npm:^1.21.0" + source-map-js: "npm:^1.0.1" + tslib: "npm:^2.3.1" peerDependencies: rollup: ^2.63.0 - checksum: 857e5fd6820aedf2f751878d2ef4fa40210094fb548d1baaa1dafbcdd7f7ea9775bac1c899b305bd27a23026d0694940651692a39901ac2ba2f8ce9f2bd10eb1 + checksum: 10c0/dc9a15918ffa48d271fdaec921c71ec200b340b5ae986a0ea48227cd4e8cea0a9dd2316cc6ae22bb20ddddcee445c03a268e86d00d6b3658d36aeaf5b0e8b9bd languageName: node linkType: hard @@ -5886,13 +5944,13 @@ __metadata: version: 7.0.2 resolution: "rollup-plugin-terser@npm:7.0.2" dependencies: - "@babel/code-frame": ^7.10.4 - jest-worker: ^26.2.1 - serialize-javascript: ^4.0.0 - terser: ^5.0.0 + "@babel/code-frame": "npm:^7.10.4" + jest-worker: "npm:^26.2.1" + serialize-javascript: "npm:^4.0.0" + terser: "npm:^5.0.0" peerDependencies: rollup: ^2.0.0 - checksum: af84bb7a7a894cd00852b6486528dfb8653cf94df4c126f95f389a346f401d054b08c46bee519a2ab6a22b33804d1d6ac6d8c90b1b2bf8fffb097eed73fc3c72 + checksum: 10c0/f79b851c6f7b06555d3a8ce7a4e32abd2b7cb8318e89fb8db73e662fa6e3af1a59920e881d111efc65a7437fd9582b61b1f4859b6fd839ba948616829d92432d languageName: node linkType: hard @@ -5900,33 +5958,33 @@ __metadata: version: 0.33.0 resolution: "rollup-plugin-typescript2@npm:0.33.0" dependencies: - "@rollup/pluginutils": ^4.1.2 - find-cache-dir: ^3.3.2 - fs-extra: ^10.0.0 - tslib: ^2.4.0 + "@rollup/pluginutils": "npm:^4.1.2" + find-cache-dir: "npm:^3.3.2" + fs-extra: "npm:^10.0.0" + tslib: "npm:^2.4.0" peerDependencies: rollup: ">=1.26.3" typescript: ">=2.4.0" - checksum: 03e3077c5197f512222f11ebb8b7682c97ddbd6332189ea06884aa3e778a04107483d340f3be94dbc471595e8908687dd841b81976855485486097b6bb095f65 + checksum: 10c0/20cf7b9557245f6c540e496052656bc0a6e24aebdc27ba83b471545fe3f5bd1c35b69459fdeadde2d59dfe45cb9f18c15d228e11e1a577491bb5d01e357b81fa languageName: node linkType: hard "rollup-plugin-visualizer@npm:^5.8.2": - version: 5.9.0 - resolution: "rollup-plugin-visualizer@npm:5.9.0" + version: 5.12.0 + resolution: "rollup-plugin-visualizer@npm:5.12.0" dependencies: - open: ^8.4.0 - picomatch: ^2.3.1 - source-map: ^0.7.4 - yargs: ^17.5.1 + open: "npm:^8.4.0" + picomatch: "npm:^2.3.1" + source-map: "npm:^0.7.4" + yargs: "npm:^17.5.1" peerDependencies: - rollup: 2.x || 3.x + rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rollup: optional: true bin: rollup-plugin-visualizer: dist/bin/cli.js - checksum: 362d4fac0295c14bd205dbc85c20c31f4b6c47604868da21d9565ed47e0333759f08b9fe0acb82f78221f5173ea01e4eb70d47351eb6012216afe71b5492ed5f + checksum: 10c0/0e44a641223377ebb472bb10f2b22efa773b5f6fbe8d54f197f07c68d7a432cbf00abad79a0aa1570f70c673c792f24700d926d663ed9a4d0ad8406ae5a0f4e4 languageName: node linkType: hard @@ -5934,34 +5992,74 @@ __metadata: version: 2.79.1 resolution: "rollup@npm:2.79.1" dependencies: - fsevents: ~2.3.2 + fsevents: "npm:~2.3.2" dependenciesMeta: fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 6a2bf167b3587d4df709b37d149ad0300692cc5deb510f89ac7bdc77c8738c9546ae3de9322b0968e1ed2b0e984571f5f55aae28fa7de4cfcb1bc5402a4e2be6 + checksum: 10c0/421418687f5dcd7324f4387f203c6bfc7118b7ace789e30f5da022471c43e037a76f5fd93837052754eeeae798a4fb266ac05ccee1e594406d912a59af98dde9 languageName: node linkType: hard -"rollup@npm:^3.18.0": - version: 3.20.2 - resolution: "rollup@npm:3.20.2" +"rollup@npm:^4.2.0": + version: 4.12.0 + resolution: "rollup@npm:4.12.0" dependencies: - fsevents: ~2.3.2 + "@rollup/rollup-android-arm-eabi": "npm:4.12.0" + "@rollup/rollup-android-arm64": "npm:4.12.0" + "@rollup/rollup-darwin-arm64": "npm:4.12.0" + "@rollup/rollup-darwin-x64": "npm:4.12.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.12.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.12.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.12.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.12.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.12.0" + "@rollup/rollup-linux-x64-musl": "npm:4.12.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.12.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.12.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.12.0" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 34b0932839b7c2a5d1742fb21ce95a47e0b49a0849f4abee2dccf25833187aa7babb898ca90d4fc761cffa4102b9ed0ac6ad7f6f6b96c8b8e2d67305abc5da65 + checksum: 10c0/1650168231ae8e2bd6fb4d82cc232e53b5c0fe67895188fa683370c9bd3f1febaa28e45c6b100cea333e54f8f5fae6f4d0eea7d86256ec2cc3e38212c55796d6 languageName: node linkType: hard "rrweb-cssom@npm:^0.6.0": version: 0.6.0 resolution: "rrweb-cssom@npm:0.6.0" - checksum: 182312f6e4f41d18230ccc34f14263bc8e8a6b9d30ee3ec0d2d8e643c6f27964cd7a8d638d4a00e988d93e8dc55369f4ab5a473ccfeff7a8bab95b36d2b5499c + checksum: 10c0/3d9d90d53c2349ea9c8509c2690df5a4ef930c9cf8242aeb9425d4046f09d712bb01047e00da0e1c1dab5db35740b3d78fd45c3e7272f75d3724a563f27c30a3 languageName: node linkType: hard @@ -5969,46 +6067,58 @@ __metadata: version: 1.2.0 resolution: "run-parallel@npm:1.2.0" dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard -"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-array-concat@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-array-concat@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.5" + get-intrinsic: "npm:^1.2.2" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/833d3d950fc7507a60075f9bfaf41ec6dac7c50c7a9d62b1e6b071ecc162185881f92e594ff95c1a18301c881352dd6fd236d56999d5819559db7b92da9c28af + languageName: node + linkType: hard + +"safe-buffer@npm:^5.1.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 languageName: node linkType: hard "sass@npm:^1.54.9": - version: 1.58.0 - resolution: "sass@npm:1.58.0" + version: 1.71.1 + resolution: "sass@npm:1.71.1" dependencies: - chokidar: ">=3.0.0 <4.0.0" - immutable: ^4.0.0 - source-map-js: ">=0.6.2 <2.0.0" + chokidar: "npm:>=3.0.0 <4.0.0" + immutable: "npm:^4.0.0" + source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: a7219634881d2de6441fb619787fb1a02e3fa0333fb715be26aa335ba49d6bdb4f1105d9df70a80a67200893022b08346745783dc49046095d94fc6e044492d6 + checksum: 10c0/59d79a6e106747746792b0c71908ae0aecdaf9b794d5724ee64e5249412f0d8ebe7ee2bf12946618848f14f949c4f6b530d82da3e62ab31c71198c6f73002130 languageName: node linkType: hard @@ -6016,55 +6126,35 @@ __metadata: version: 6.0.0 resolution: "saxes@npm:6.0.0" dependencies: - xmlchars: ^2.2.0 - checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 languageName: node linkType: hard "screenfull@npm:^6.0.2": version: 6.0.2 resolution: "screenfull@npm:6.0.2" - checksum: 56a541da09241ae7c97115cc31245623c09230bcbebb93636871e955b545f26c7dcdb2299795234a0a21bff5d5401b7329b22609becf4c381a9e22347acf87ba + checksum: 10c0/e4accdb10410aa506dc10b3aa55b05f96421da8559ca3594c44e2cb80174d3a01819ea2b0e815797e24843844599f27778daa69d53bdb007f6bbd77c94e50d0d languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" dependencies: - lru-cache: ^6.0.0 + lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 languageName: node linkType: hard @@ -6072,15 +6162,34 @@ __metadata: version: 4.0.0 resolution: "serialize-javascript@npm:4.0.0" dependencies: - randombytes: ^2.1.0 - checksum: 3273b3394b951671fcf388726e9577021870dfbf85e742a1183fb2e91273e6101bdccea81ff230724f6659a7ee4cef924b0ff9baca32b79d9384ec37caf07302 + randombytes: "npm:^2.1.0" + checksum: 10c0/510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d languageName: node linkType: hard -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 +"set-function-length@npm:^1.2.1": + version: 1.2.1 + resolution: "set-function-length@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.1.2" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.1" + checksum: 10c0/1927e296599f2c04d210c1911f1600430a5e49e04a6d8bb03dca5487b95a574da9968813a2ced9a774bd3e188d4a6208352c8f64b8d4674cdb021dca21e190ca + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.1": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 languageName: node linkType: hard @@ -6088,89 +6197,90 @@ __metadata: version: 2.0.0 resolution: "shebang-command@npm:2.0.0" dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 languageName: node linkType: hard "side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f languageName: node linkType: hard "side-drawer@npm:^3.1.0": version: 3.1.0 resolution: "side-drawer@npm:3.1.0" - checksum: aa6825741986bc67bac74729f377889f71af96769c4d28cc4f566a1caca828fee61d9b6c79a599914f160af3532942906ff740b385ef95535b45a596a402063e + checksum: 10c0/337e67929c6af45d27f0e2d89cb1b12553d262b5445e1d009f0b798c8bcee5c9373e53787cca9c481cc5da9ce9f67d381a7ebbd34ee23c74e9efc83b7ae85c82 languageName: node linkType: hard "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" - checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01 + checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 languageName: node linkType: hard -"signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 languageName: node linkType: hard "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 languageName: node linkType: hard -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + agent-base: "npm:^7.0.2" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 languageName: node linkType: hard -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" +"socks@npm:^2.7.1": + version: 2.8.1 + resolution: "socks@npm:2.8.1" dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/ac77b515c260473cc7c4452f09b20939e22510ce3ae48385c516d1d5784374d5cc75be3cb18ff66cc985a7f4f2ef8fef84e984c5ec70aad58355ed59241f40a8 languageName: node linkType: hard "source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 languageName: node linkType: hard @@ -6178,148 +6288,184 @@ __metadata: version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d languageName: node linkType: hard "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 languageName: node linkType: hard "source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc languageName: node linkType: hard "sourcemap-codec@npm:^1.4.8": version: 1.4.8 resolution: "sourcemap-codec@npm:1.4.8" - checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316 + checksum: 10c0/f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6 languageName: node linkType: hard "split-on-first@npm:^1.0.0": version: 1.1.0 resolution: "split-on-first@npm:1.1.0" - checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 + checksum: 10c0/56df8344f5a5de8521898a5c090023df1d8b8c75be6228f56c52491e0fc1617a5236f2ac3a066adb67a73231eac216ccea7b5b4a2423a543c277cb2f48d24c29 languageName: node linkType: hard -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + minipass: "npm:^7.0.3" + checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 languageName: node linkType: hard "stable@npm:^0.1.8": version: 0.1.8 resolution: "stable@npm:0.1.8" - checksum: 2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb + checksum: 10c0/df74b5883075076e78f8e365e4068ecd977af6c09da510cfc3148a303d4b87bc9aa8f7c48feb67ed4ef970b6140bd9eabba2129e28024aa88df5ea0114cba39d languageName: node linkType: hard "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" - checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 languageName: node linkType: hard -"std-env@npm:^3.3.3": - version: 3.4.3 - resolution: "std-env@npm:3.4.3" - checksum: bef186fb2baddda31911234b1e58fa18f181eb6930616aaec3b54f6d5db65f2da5daaa5f3b326b98445a7d50ca81d6fe8809ab4ebab85ecbe4a802f1b40921bf +"std-env@npm:^3.5.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e languageName: node linkType: hard "strict-uri-encode@npm:^2.0.0": version: 2.0.0 resolution: "strict-uri-encode@npm:2.0.0" - checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 + checksum: 10c0/010cbc78da0e2cf833b0f5dc769e21ae74cdc5d5f5bd555f14a4a4876c8ad2c85ab8b5bdf9a722dc71a11dcd3184085e1c3c0bd50ec6bb85fffc0f28cf82597d languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" +"string.prototype.trim@npm:^1.2.8": + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" +"string.prototype.trimend@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 languageName: node linkType: hard -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": +"string.prototype.trimstart@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 languageName: node linkType: hard "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd languageName: node linkType: hard -"strip-literal@npm:^1.0.1": - version: 1.3.0 - resolution: "strip-literal@npm:1.3.0" +"strip-literal@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-literal@npm:2.0.0" dependencies: - acorn: ^8.10.0 - checksum: f5fa7e289df8ebe82e90091fd393974faf8871be087ca50114327506519323cf15f2f8fee6ebe68b5e58bfc795269cae8bdc7cb5a83e27b02b3fe953f37b0a89 + js-tokens: "npm:^8.0.2" + checksum: 10c0/63a6e4224ac7088ff93fd19fc0f6882705020da2f0767dbbecb929cbf9d49022e72350420f47be635866823608da9b9a5caf34f518004721895b6031199fc3c8 languageName: node linkType: hard @@ -6327,18 +6473,18 @@ __metadata: version: 5.1.1 resolution: "stylehacks@npm:5.1.1" dependencies: - browserslist: ^4.21.4 - postcss-selector-parser: ^6.0.4 + browserslist: "npm:^4.21.4" + postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.2.15 - checksum: 11175366ef52de65bf06cefba0ddc9db286dc3a1451fd2989e74c6ea47091a02329a4bf6ce10b1a36950056927b6bbbe47c5ab3a1f4c7032df932d010fbde5a2 + checksum: 10c0/402c2b545eeda0e972f125779adddc88df11bcf3a89de60c92026bd98cd49c1abffcd5bfe41766398835e0a1c7e5e72bdb6905809ecbb60716cd8d3a32ea7cd3 languageName: node linkType: hard "superstruct@npm:^0.15.3": version: 0.15.5 resolution: "superstruct@npm:0.15.5" - checksum: 6d1f5249fee789424b7178fa0a1ffb2ace629c5480c39505885bd8c0046a4ff8b267569a3442fa53b8c560a7ba6599cf3f8af94225aebeb2cf6023f7dd911050 + checksum: 10c0/73ae2043443dcc7868da6e8b4e4895410c79a88e021b514c665161199675ee920d5eadd85bb9dee5a9f515817e62f4b65a67ccb82d29f73259d012afcbcd3ce4 languageName: node linkType: hard @@ -6346,8 +6492,8 @@ __metadata: version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 languageName: node linkType: hard @@ -6355,15 +6501,15 @@ __metadata: version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 languageName: node linkType: hard @@ -6371,51 +6517,51 @@ __metadata: version: 2.8.0 resolution: "svgo@npm:2.8.0" dependencies: - "@trysound/sax": 0.2.0 - commander: ^7.2.0 - css-select: ^4.1.3 - css-tree: ^1.1.3 - csso: ^4.2.0 - picocolors: ^1.0.0 - stable: ^0.1.8 + "@trysound/sax": "npm:0.2.0" + commander: "npm:^7.2.0" + css-select: "npm:^4.1.3" + css-tree: "npm:^1.1.3" + csso: "npm:^4.2.0" + picocolors: "npm:^1.0.0" + stable: "npm:^0.1.8" bin: svgo: bin/svgo - checksum: b92f71a8541468ffd0b81b8cdb36b1e242eea320bf3c1a9b2c8809945853e9d8c80c19744267eb91cabf06ae9d5fff3592d677df85a31be4ed59ff78534fa420 + checksum: 10c0/0741f5d5cad63111a90a0ce7a1a5a9013f6d293e871b75efe39addb57f29a263e45294e485a4d2ff9cc260a5d142c8b5937b2234b4ef05efdd2706fb2d360ecc languageName: node linkType: hard "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" - checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 languageName: node linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.13 - resolution: "tar@npm:6.1.13" + version: 6.2.0 + resolution: "tar@npm:6.2.0" dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^4.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: 8a278bed123aa9f53549b256a36b719e317c8b96fe86a63406f3c62887f78267cea9b22dc6f7007009738509800d4a4dccc444abd71d762287c90f35b002eb1c + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 languageName: node linkType: hard "terser@npm:^5.0.0": - version: 5.16.3 - resolution: "terser@npm:5.16.3" + version: 5.28.1 + resolution: "terser@npm:5.28.1" dependencies: - "@jridgewell/source-map": ^0.3.2 - acorn: ^8.5.0 - commander: ^2.20.0 - source-map-support: ~0.5.20 + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: d3c2ac1c2723c37b698b25b68d76fd315a1277fddde113983d5783d1f2a01dd7b8ed83ba3f54e5e65f0b59dd971ed7be2fdf8d4be94ec694b2d27832d2e7561f + checksum: 10c0/e0d9a3cd260b4e35b49e828687658e36b0f50dce7cc2e18f024725846013ffa0e9eb8ac61a7a1bbf6684e6c14493ccf155a0f5937a47c746f534208f9000ac29 languageName: node linkType: hard @@ -6423,45 +6569,45 @@ __metadata: version: 6.0.0 resolution: "test-exclude@npm:6.0.0" dependencies: - "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 languageName: node linkType: hard "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c languageName: node linkType: hard -"tinybench@npm:^2.5.0": - version: 2.5.0 - resolution: "tinybench@npm:2.5.0" - checksum: 284bb9428f197ec8b869c543181315e65e41ccfdad3c4b6c916bb1fdae1b5c6785661b0d90cf135b48d833b03cb84dc5357b2d33ec65a1f5971fae0ab2023821 +"tinybench@npm:^2.5.1": + version: 2.6.0 + resolution: "tinybench@npm:2.6.0" + checksum: 10c0/60ea35699bf8bac9bc8cf279fa5877ab5b335b4673dcd07bf0fbbab9d7953a02c0ccded374677213eaa13aa147f54eb75d3230139ddbeec3875829ebe73db310 languageName: node linkType: hard -"tinypool@npm:^0.7.0": - version: 0.7.0 - resolution: "tinypool@npm:0.7.0" - checksum: fdcccd5c750574fce51f8801a877f8284e145d12b79cd5f2d72bfbddfe20c895e915555bc848e122bb6aa968098e7ac4fe1e8e88104904d518dc01cccd18a510 +"tinypool@npm:^0.8.2": + version: 0.8.2 + resolution: "tinypool@npm:0.8.2" + checksum: 10c0/8998626614172fc37c394e9a14e701dc437727fc6525488a4d4fd42044a4b2b59d6f076d750cbf5c699f79c58dd4e40599ab09e2f1ae0df4b23516b98c9c3055 languageName: node linkType: hard -"tinyspy@npm:^2.1.1": - version: 2.1.1 - resolution: "tinyspy@npm:2.1.1" - checksum: cfe669803a7f11ca912742b84c18dcc4ceecaa7661c69bc5eb608a8a802d541c48aba220df8929f6c8cd09892ad37cb5ba5958ddbbb57940e91d04681d3cee73 +"tinyspy@npm:^2.2.0": + version: 2.2.1 + resolution: "tinyspy@npm:2.2.1" + checksum: 10c0/0b4cfd07c09871e12c592dfa7b91528124dc49a4766a0b23350638c62e6a483d5a2a667de7e6282246c0d4f09996482ddaacbd01f0c05b7ed7e0f79d32409bdc languageName: node linkType: hard "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 languageName: node linkType: hard @@ -6469,20 +6615,20 @@ __metadata: version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 languageName: node linkType: hard "tough-cookie@npm:^4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 languageName: node linkType: hard @@ -6490,27 +6636,27 @@ __metadata: version: 4.1.1 resolution: "tr46@npm:4.1.1" dependencies: - punycode: ^2.3.0 - checksum: aeeb821ac2cd792e63ec84888b4fd6598ac6ed75d861579e21a5cf9d4ee78b2c6b94e7d45036f2ca2088bc85b9b46560ad23c4482979421063b24137349dbd96 + punycode: "npm:^2.3.0" + checksum: 10c0/92085dcf186f56a49ba4124a581d9ae6a5d0cd4878107c34e2e670b9ddc49da85e4950084bb3e75015195cc23f37ae1c02d45064e94dd6018f5e789aa51d93a8 languageName: node linkType: hard "true-myth@npm:^4.1.0": version: 4.1.1 resolution: "true-myth@npm:4.1.1" - checksum: 0b937bb215b78d0ccff8637ac1c49be7f08c04f32a7b755c45a1566a1d522f50b0cadac93ad869b6bea9b843f60479160d3382c2c91d2381ef3559915564ff82 + checksum: 10c0/ac83ac82f969129d5f002dcc489b86e28e59ee4149641b341b0176e9407786823c83702fe4b9ae9c0f9593f29a98c931ee175789d33e884f99c47e9c16e80adb languageName: node linkType: hard "ts-essentials@npm:^9.3.2": - version: 9.4.0 - resolution: "ts-essentials@npm:9.4.0" + version: 9.4.1 + resolution: "ts-essentials@npm:9.4.1" peerDependencies: typescript: ">=4.1.0" peerDependenciesMeta: typescript: optional: true - checksum: 50719782f9bfa31678fd1607de783a92b322ed8c26e6229bd0d1786c0649b9f1a7b9a6ac5bc60435053c4952bd3ef2356b5c930cb3a8d3519dc8f41c5576328f + checksum: 10c0/03f195f1f8935c5e72615e05d5ca160aeb987ba23e1f7ffad2dc4ac47604a6931621bf120279c3325513894a2040cee01070f4df95c1e3bac6435c25339eb519 languageName: node linkType: hard @@ -6518,9 +6664,9 @@ __metadata: version: 13.0.3 resolution: "ts-morph@npm:13.0.3" dependencies: - "@ts-morph/common": ~0.12.3 - code-block-writer: ^11.0.0 - checksum: 0983a7c4e0e1063e3900186bf2e85c5080621e31b754434136d2130a82bda6556985fdf012b766a87b9ae47d6f63732a562bb80854c34644f9352bea9a35b8ee + "@ts-morph/common": "npm:~0.12.3" + code-block-writer: "npm:^11.0.0" + checksum: 10c0/9d7fa1a29be3996b209e19d3e0c80eacd088afa76cd7c12b4b3d8a6a08d282d5f17e01cedf8bd841ad549a5df6580b876ea10597b3273e2bb49b85ffa2044d99 languageName: node linkType: hard @@ -6528,41 +6674,41 @@ __metadata: version: 0.10.3 resolution: "ts-prune@npm:0.10.3" dependencies: - commander: ^6.2.1 - cosmiconfig: ^7.0.1 - json5: ^2.1.3 - lodash: ^4.17.21 - true-myth: ^4.1.0 - ts-morph: ^13.0.1 + commander: "npm:^6.2.1" + cosmiconfig: "npm:^7.0.1" + json5: "npm:^2.1.3" + lodash: "npm:^4.17.21" + true-myth: "npm:^4.1.0" + ts-morph: "npm:^13.0.1" bin: ts-prune: lib/index.js - checksum: 2cbc4d64a2e50637d06691e7f962b913d87aba2419ba772a3a1cb6e4b7542412cd77af592ba7b376ed273f5e37d9be180613b479602b9f92693e4d72f0f5a373 + checksum: 10c0/fecb609e4c1f207a23f8d82946cd654242a818ca28d078cebf7b8408f0b20c2245e1482019745117b7ae0e015b76aaba8d7382cd5429ee9fa48829253981b448 languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1": - version: 3.14.1 - resolution: "tsconfig-paths@npm:3.14.1" +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 languageName: node linkType: hard "tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 languageName: node linkType: hard "tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb languageName: node linkType: hard @@ -6570,10 +6716,10 @@ __metadata: version: 3.21.0 resolution: "tsutils@npm:3.21.0" dependencies: - tslib: ^1.8.1 + tslib: "npm:^1.8.1" 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" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 languageName: node linkType: hard @@ -6581,42 +6727,74 @@ __metadata: version: 0.4.0 resolution: "type-check@npm:0.4.0" dependencies: - prelude-ls: ^1.2.1 - checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - -"type-detect@npm:^4.0.0, type-detect@npm:^4.0.5": +"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd languageName: node linkType: hard "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 languageName: node linkType: hard -"typed-array-length@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - for-each: ^0.3.3 - is-typed-array: ^1.1.9 - checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.5": + version: 1.0.5 + resolution: "typed-array-length@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/5cc0f79196e70a92f8f40846cfa62b3de6be51e83f73655e137116cf65e3c29a288502b18cc8faf33c943c2470a4569009e1d6da338441649a2db2f135761ad5 languageName: node linkType: hard @@ -6626,24 +6804,24 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + checksum: 10c0/5f6cad2e728a8a063521328e612d7876e12f0d8a8390d3b3aaa452a6a65e24e9ac8ea22beb72a924fd96ea0a49ea63bb4e251fb922b12eedfb7f7a26475e5c56 languageName: node linkType: hard -"typescript@patch:typescript@^4.5.4#~builtin, typescript@patch:typescript@^4.9.5#~builtin": +"typescript@patch:typescript@npm%3A^4.5.4#optional!builtin, typescript@patch:typescript@npm%3A^4.9.5#optional!builtin": version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" + resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d + checksum: 10c0/e3333f887c6829dfe0ab6c1dbe0dd1e3e2aeb56c66460cb85c5440c566f900c833d370ca34eb47558c0c69e78ced4bfe09b8f4f98b6de7afed9b84b8d1dd06a1 languageName: node linkType: hard -"ufo@npm:^1.3.0": - version: 1.3.0 - resolution: "ufo@npm:1.3.0" - checksum: 01f0be86cd5c205ad1b49ebea985e000a4542c503ee75398302b0f5e4b9a6d9cd8e77af2dc614ab7bea08805fdfd9a85191fb3b5ee3df383cb936cf65e9db30d +"ufo@npm:^1.3.2": + version: 1.4.0 + resolution: "ufo@npm:1.4.0" + checksum: 10c0/d9a3cb8c5fd13356e0af661362244fd0a901edcdd08996f42553271007cae01e85dcec29a3303a87ddab6aa705cbd630332aaa8c268d037483536b198fa67a7c languageName: node linkType: hard @@ -6651,71 +6829,64 @@ __metadata: version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 languageName: node linkType: hard -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 languageName: node linkType: hard -"unique-slug@npm:^3.0.0": +"unique-filename@npm:^3.0.0": version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" + resolution: "unique-filename@npm:3.0.0" dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 languageName: node linkType: hard "universalify@npm:^0.2.0": version: 0.2.0 resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe languageName: node linkType: hard "universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.11": - version: 1.0.11 - resolution: "update-browserslist-db@npm:1.0.11" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 languageName: node linkType: hard @@ -6723,8 +6894,8 @@ __metadata: version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c languageName: node linkType: hard @@ -6732,16 +6903,16 @@ __metadata: version: 1.5.10 resolution: "url-parse@npm:1.5.10" dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard @@ -6750,75 +6921,74 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard -"vis-data@npm:^7.1.4": - version: 7.1.4 - resolution: "vis-data@npm:7.1.4" +"vis-data@npm:^7.1.9": + version: 7.1.9 + resolution: "vis-data@npm:7.1.9" peerDependencies: - uuid: ^7.0.0 || ^8.0.0 - vis-util: ^4.0.0 || ^5.0.0 - checksum: a1266eb678b7f75c422c070ebd579a99565de9b23deba2e75862afb9c15ef5fa67e34f002c8c7013751100c75d6fb76b25bdb9f1a309d9f0cda1bec0935b26ff + uuid: ^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + vis-util: ^5.0.1 + checksum: 10c0/2fce50e41862133e4fcdc92d216755b544936288a8586fc2f0afdc8b586ee75acb029e3fa9bbbb48a91e4c35ebc375bdba213e836926564f899ad80e0981d304 languageName: node linkType: hard -"vis-timeline@npm:^7.7.0": - version: 7.7.0 - resolution: "vis-timeline@npm:7.7.0" +"vis-timeline@npm:^7.7.3": + version: 7.7.3 + resolution: "vis-timeline@npm:7.7.3" peerDependencies: "@egjs/hammerjs": ^2.0.0 component-emitter: ^1.3.0 - keycharm: ^0.3.0 || ^0.4.0 + keycharm: ^0.2.0 || ^0.3.0 || ^0.4.0 moment: ^2.24.0 propagating-hammerjs: ^1.4.0 || ^2.0.0 - uuid: ^3.4.0 || ^7.0.0 || ^8.0.0 + uuid: ^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 vis-data: ^6.3.0 || ^7.0.0 - vis-util: ^3.0.0 || ^4.0.0 || ^5.0.0 + vis-util: ^5.0.1 xss: ^1.0.0 - checksum: 07d8618b7cf63ea64870c1404fb852d7b6e58df1b9fa429564225bd7a8f7f6ca047c109cee13c1501ee514abfed176699434be3f4fcf620731ca94aee525f8f8 + checksum: 10c0/82f5bdcc815e60e04562a071ef374d2e0d1d9387482faf8629471ce0de98ed75a593565af3b4db36d8c977d085b96b88afc51a967eb6f1f81031a3822d7f039d languageName: node linkType: hard "vis-util@npm:^5.0.2": - version: 5.0.3 - resolution: "vis-util@npm:5.0.3" + version: 5.0.7 + resolution: "vis-util@npm:5.0.7" peerDependencies: "@egjs/hammerjs": ^2.0.0 - component-emitter: ^1.3.0 - checksum: a6a809cca36fdebd2c9b06038c30980b21c346e10eba8b30b4cfac1495751adee8f7f5a10ca1842b352b3c1eb3051abc669dc8cf204ad391c52f8165b0ca274b + component-emitter: ^1.3.0 || ^2.0.0 + checksum: 10c0/8e460327b063335ade3a0ef9902c9fb93111036efcd13715513f075cd8972155388e84ccf1987ba8d947d671b257fb109d0cccbf0e18f061f0a303c9a46d0d92 languageName: node linkType: hard -"vite-node@npm:0.34.3": - version: 0.34.3 - resolution: "vite-node@npm:0.34.3" +"vite-node@npm:1.3.1": + version: 1.3.1 + resolution: "vite-node@npm:1.3.1" dependencies: - cac: ^6.7.14 - debug: ^4.3.4 - mlly: ^1.4.0 - pathe: ^1.1.1 - picocolors: ^1.0.0 - vite: ^3.0.0 || ^4.0.0 + cac: "npm:^6.7.14" + debug: "npm:^4.3.4" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 366c4f3fb7c038e2180abc6b18cfbac3b8684cd878eaf7ebf1ffb07d95d2ea325713fc575a7949a13bb00cfe264acbc28c02e2836b8647e1f443fe631c17805a + checksum: 10c0/b50665ef224f3527f856ab88a0cfabab36dd6e2dd1e3edca8f8f25d5d33754e1050495472c2c82147d0dcf7c5280971dae2f37a531c10f3941d8d3344e34ce0b languageName: node linkType: hard -"vite@npm:^3.0.0 || ^4.0.0": - version: 4.2.1 - resolution: "vite@npm:4.2.1" +"vite@npm:^5.0.0": + version: 5.1.4 + resolution: "vite@npm:5.1.4" dependencies: - esbuild: ^0.17.5 - fsevents: ~2.3.2 - postcss: ^8.4.21 - resolve: ^1.22.1 - rollup: ^3.18.0 + esbuild: "npm:^0.19.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.35" + rollup: "npm:^4.2.0" peerDependencies: - "@types/node": ">= 14" + "@types/node": ^18.0.0 || >=20.0.0 less: "*" + lightningcss: ^1.21.0 sass: "*" stylus: "*" sugarss: "*" @@ -6831,6 +7001,8 @@ __metadata: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -6841,62 +7013,58 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 70eb162ffc299017a3c310e3adc95e9661def6b17aafd1f8e5e02e516766060435590dbe3df1e4e95acc3583c728a76e91f07c546221d1e701f1b2b021293f45 + checksum: 10c0/8f04c8bed33f266bde27f432412456a3b893b51fe1857f0b8cd259100b376c1393a7927db1dd6344a4376baed72ed179ec5b0428aef2ae8508f1f28f95acb908 languageName: node linkType: hard -"vitest-mock-extended@npm:^1.2.1": - version: 1.2.1 - resolution: "vitest-mock-extended@npm:1.2.1" +"vitest-mock-extended@npm:^1.3.1": + version: 1.3.1 + resolution: "vitest-mock-extended@npm:1.3.1" dependencies: - ts-essentials: ^9.3.2 + ts-essentials: "npm:^9.3.2" peerDependencies: typescript: 3.x || 4.x || 5.x vitest: ">=0.31.1" - checksum: d3dc3940513cc053166bc912b0b9fdda0b073c5a5d2c2deba4f87ddae7a3b8c53a31227030a9f0eeb9f48c443b6978c451946ef0d36eea6976ef77e5bb4d6c04 + checksum: 10c0/0d3b5f1b4f53d326b636931573801811a6fe5566ea8ea06a2b9e1037845b3049d045156a33b0916b3ef40b83b9076499142ac4a24490a96bbecf74b9770a780f languageName: node linkType: hard -"vitest@npm:^0.34.3": - version: 0.34.3 - resolution: "vitest@npm:0.34.3" +"vitest@npm:^1.3.1": + version: 1.3.1 + resolution: "vitest@npm:1.3.1" dependencies: - "@types/chai": ^4.3.5 - "@types/chai-subset": ^1.3.3 - "@types/node": "*" - "@vitest/expect": 0.34.3 - "@vitest/runner": 0.34.3 - "@vitest/snapshot": 0.34.3 - "@vitest/spy": 0.34.3 - "@vitest/utils": 0.34.3 - acorn: ^8.9.0 - acorn-walk: ^8.2.0 - cac: ^6.7.14 - chai: ^4.3.7 - debug: ^4.3.4 - local-pkg: ^0.4.3 - magic-string: ^0.30.1 - pathe: ^1.1.1 - picocolors: ^1.0.0 - std-env: ^3.3.3 - strip-literal: ^1.0.1 - tinybench: ^2.5.0 - tinypool: ^0.7.0 - vite: ^3.0.0 || ^4.0.0 - vite-node: 0.34.3 - why-is-node-running: ^2.2.2 + "@vitest/expect": "npm:1.3.1" + "@vitest/runner": "npm:1.3.1" + "@vitest/snapshot": "npm:1.3.1" + "@vitest/spy": "npm:1.3.1" + "@vitest/utils": "npm:1.3.1" + acorn-walk: "npm:^8.3.2" + chai: "npm:^4.3.10" + debug: "npm:^4.3.4" + execa: "npm:^8.0.1" + local-pkg: "npm:^0.5.0" + magic-string: "npm:^0.30.5" + pathe: "npm:^1.1.1" + picocolors: "npm:^1.0.0" + std-env: "npm:^3.5.0" + strip-literal: "npm:^2.0.0" + tinybench: "npm:^2.5.1" + tinypool: "npm:^0.8.2" + vite: "npm:^5.0.0" + vite-node: "npm:1.3.1" + why-is-node-running: "npm:^2.2.2" peerDependencies: "@edge-runtime/vm": "*" - "@vitest/browser": "*" - "@vitest/ui": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 1.3.1 + "@vitest/ui": 1.3.1 happy-dom: "*" jsdom: "*" - playwright: "*" - safaridriver: "*" - webdriverio: "*" peerDependenciesMeta: "@edge-runtime/vm": optional: true + "@types/node": + optional: true "@vitest/browser": optional: true "@vitest/ui": @@ -6905,15 +7073,9 @@ __metadata: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true bin: vitest: vitest.mjs - checksum: 4535d080feede94db5015eb60c6ed5f7b0d8cd67f12072de5ae1faded133cc640043c0c2646ef51ab9b61c2f885589da57458a65e82cf91a25cf954470018a40 + checksum: 10c0/66d312a3dc12e67bba22d31332d939e89cd17d38531893c7b13b8826704564031c1dde795df2799b855660572c19a595301e920710c7775d072ee6332502efc5 languageName: node linkType: hard @@ -6921,8 +7083,8 @@ __metadata: version: 4.0.0 resolution: "w3c-xmlserializer@npm:4.0.0" dependencies: - xml-name-validator: ^4.0.0 - checksum: eba070e78deb408ae8defa4d36b429f084b2b47a4741c4a9be3f27a0a3d1845e277e3072b04391a138f7e43776842627d1334e448ff13ff90ad9fb1214ee7091 + xml-name-validator: "npm:^4.0.0" + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 languageName: node linkType: hard @@ -6930,15 +7092,15 @@ __metadata: version: 0.0.11 resolution: "web-dialog@npm:0.0.11" dependencies: - "@a11y/focus-trap": ^1.0.5 - checksum: bafe9ed971d30afb9db30ea23193ab941f236a8e8295b084b76463a4181310ccbc4c493d6317fdb2aff6dbb4d577c32f5e47f3750d2237e0396029ff47715613 + "@a11y/focus-trap": "npm:^1.0.5" + checksum: 10c0/b8c7ebe0264d6a0a5f5e02935bfb846e7275325192340f68dcb50207ea6aa559beec00ea6f757ec682d7e50675a4a352c21400e5cd1e0aebf13ccaeb76bb043a languageName: node linkType: hard "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" - checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 languageName: node linkType: hard @@ -6946,15 +7108,15 @@ __metadata: version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0" dependencies: - iconv-lite: 0.6.3 - checksum: 7087810c410aa9b689cbd6af8773341a53cdc1f3aae2a882c163bd5522ec8ca4cdfc269aef417a5792f411807d5d77d50df4c24e3abb00bb60192858a40cc675 + iconv-lite: "npm:0.6.3" + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e languageName: node linkType: hard "whatwg-mimetype@npm:^3.0.0": version: 3.0.0 resolution: "whatwg-mimetype@npm:3.0.0" - checksum: ce08bbb36b6aaf64f3a84da89707e3e6a31e5ab1c1a2379fd68df79ba712a4ab090904f0b50e6693b0dafc8e6343a6157e40bf18fdffd26e513cf95ee2a59824 + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f languageName: node linkType: hard @@ -6962,16 +7124,16 @@ __metadata: version: 12.0.1 resolution: "whatwg-url@npm:12.0.1" dependencies: - tr46: ^4.1.1 - webidl-conversions: ^7.0.0 - checksum: 8698993b763c1e7eda5ed16c31dab24bca6489626aca7caf8b5a2b64684dda6578194786f10ec42ceb1c175feea16d0a915096e6419e08d154ce551c43176972 + tr46: "npm:^4.1.1" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/99f506b2c996704fa0fc5c70d8e5e27dce15492db2921c99cf319a8d56cb61641f5c06089f63e1ab1983de9fd6a63c3c112a90cdb5fe352d7a846979b10df566 languageName: node linkType: hard "wheel-gestures@npm:^2.2.5": - version: 2.2.5 - resolution: "wheel-gestures@npm:2.2.5" - checksum: d382de6d4e49ad753dfb22f49000923b30dba1b622ec80821435d1097af63cdf6a1904e2ab1963a3f580d7522d7ba6de02976233eeb99e387d9cfdbeb8a0f9bf + version: 2.2.45 + resolution: "wheel-gestures@npm:2.2.45" + checksum: 10c0/c1c5c657773ce7fcb731b85b3ecba57eafa17bee7b8627d7dedefbc7b29ea98abe66270486f439fcc03f6694478dc173d2ac63f26277ef11389e82a3bcff0f43 languageName: node linkType: hard @@ -6979,37 +7141,47 @@ __metadata: version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e languageName: node linkType: hard -"which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" +"which-typed-array@npm:^1.1.14": + version: 1.1.14 + resolution: "which-typed-array@npm:1.1.14" dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.5" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.1" + checksum: 10c0/0960f1e77807058819451b98c51d4cd72031593e8de990b24bd3fc22e176f5eee22921d68d852297c786aec117689f0423ed20aa4fde7ce2704d680677891f56 languageName: node linkType: hard -"which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: - isexe: ^2.0.0 + isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a languageName: node linkType: hard @@ -7017,51 +7189,46 @@ __metadata: version: 2.2.2 resolution: "why-is-node-running@npm:2.2.2" dependencies: - siginfo: ^2.0.0 - stackback: 0.0.2 + siginfo: "npm:^2.0.0" + stackback: "npm:0.0.2" bin: why-is-node-running: cli.js - checksum: 50820428f6a82dfc3cbce661570bcae9b658723217359b6037b67e495255409b4c8bc7931745f5c175df71210450464517cab32b2f7458ac9c40b4925065200a + checksum: 10c0/805d57eb5d33f0fb4e36bae5dceda7fd8c6932c2aeb705e30003970488f1a2bc70029ee64be1a0e1531e2268b11e65606e88e5b71d667ea745e6dc48fc9014bd languageName: node linkType: hard -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 languageName: node linkType: hard "ws@npm:^8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" + version: 8.16.0 + resolution: "ws@npm:8.16.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -7070,21 +7237,21 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c + checksum: 10c0/a7783bb421c648b1e622b423409cb2a58ac5839521d2f689e84bc9dc41d59379c692dd405b15a997ea1d4c0c2e5314ad707332d0c558f15232d2bc07c0b4618a languageName: node linkType: hard "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0" - checksum: af100b79c29804f05fa35aa3683e29a321db9b9685d5e5febda3fa1e40f13f85abc40f45a6b2bf7bee33f68a1dc5e8eaef4cec100a304a9db565e6061d4cb5ad + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd languageName: node linkType: hard "xmlchars@npm:^2.2.0": version: 2.2.0 resolution: "xmlchars@npm:2.2.0" - checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 languageName: node linkType: hard @@ -7092,81 +7259,81 @@ __metadata: version: 1.0.14 resolution: "xss@npm:1.0.14" dependencies: - commander: ^2.20.3 - cssfilter: 0.0.10 + commander: "npm:^2.20.3" + cssfilter: "npm:0.0.10" bin: xss: bin/xss - checksum: 77c6a60a5f96490098ef837c3b49321c0f31963f323c748cb0a01bc02fc6e465a6accbe4c54cad62f8d6ffe647d984be173879433af861883f6213d9416d3f53 + checksum: 10c0/0a9b4d71781c8418a0327e86e5991dffe8d8b58d465d391ea74e3fa102168d1aa70a438c85d6af90e76f457bbb6041350b700bff7ad10077c5d816512f10ee0d languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 languageName: node linkType: hard "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard "yaml@npm:^1.10.0, yaml@npm:^1.10.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f languageName: node linkType: hard "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" - checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 languageName: node linkType: hard "yargs@npm:^17.5.1": - version: 17.6.2 - resolution: "yargs@npm:17.6.2" + version: 17.7.2 + resolution: "yargs@npm:17.7.2" dependencies: - cliui: ^8.0.1 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.1.1 - checksum: 47da1b0d854fa16d45a3ded57b716b013b2179022352a5f7467409da5a04a1eef5b3b3d97a2dfc13e8bbe5f2ffc0afe3bc6a4a72f8254e60f5a4bd7947138643 + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f languageName: node linkType: hard "yocto-queue@npm:^1.0.0": version: 1.0.0 resolution: "yocto-queue@npm:1.0.0" - checksum: 2cac84540f65c64ccc1683c267edce396b26b1e931aa429660aefac8fbe0188167b7aee815a3c22fa59a28a58d898d1a2b1825048f834d8d629f4c2a5d443801 + checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 languageName: node linkType: hard "zod@npm:^3.21.4": - version: 3.21.4 - resolution: "zod@npm:3.21.4" - checksum: f185ba87342ff16f7a06686767c2b2a7af41110c7edf7c1974095d8db7a73792696bcb4a00853de0d2edeb34a5b2ea6a55871bc864227dace682a0a28de33e1f + version: 3.22.4 + resolution: "zod@npm:3.22.4" + checksum: 10c0/7578ab283dac0eee66a0ad0fc4a7f28c43e6745aadb3a529f59a4b851aa10872b3890398b3160f257f4b6817b4ce643debdda4fb21a2c040adda7862cab0a587 languageName: node linkType: hard