diff --git a/package.json b/package.json index f8e1663ff6..3fe376b09a 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "@braintree/sanitize-url": "^6.0.0", "@codemirror/autocomplete": "^6.4.0", - "@codemirror/commands": "^6.1.3", + "@codemirror/commands": "^6.2.0", "@codemirror/language": "^6.4.0", "@codemirror/legacy-modes": "^6.3.1", "@codemirror/search": "^6.2.3", @@ -36,7 +36,7 @@ "@formatjs/intl-getcanonicallocales": "^2.0.5", "@formatjs/intl-locale": "^3.0.11", "@formatjs/intl-numberformat": "^7.2.5", - "@formatjs/intl-pluralrules": "^4.1.5", + "@formatjs/intl-pluralrules": "^5.1.8", "@formatjs/intl-relativetimeformat": "^11.1.8", "@fullcalendar/common": "^5.11.4", "@fullcalendar/core": "^5.11.4", @@ -152,16 +152,16 @@ "@babel/plugin-proposal-decorators": "^7.20.7", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.20.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/preset-env": "^7.20.2", "@babel/preset-typescript": "^7.18.6", - "@koa/cors": "^3.1.0", + "@koa/cors": "^4.0.0", "@octokit/auth-oauth-device": "^4.0.4", "@octokit/rest": "^19.0.7", - "@open-wc/dev-server-hmr": "^0.0.2", + "@open-wc/dev-server-hmr": "^0.1.3", "@rollup/plugin-babel": "^5.2.1", "@rollup/plugin-commonjs": "^11.1.0", "@rollup/plugin-json": "^4.0.3", @@ -192,7 +192,7 @@ "eslint-config-airbnb-typescript": "^14.0.0", "eslint-config-prettier": "^8.6.0", "eslint-import-resolver-webpack": "^0.13.1", - "eslint-plugin-disable": "^2.0.1", + "eslint-plugin-disable": "^2.0.3", "eslint-plugin-import": "^2.24.2", "eslint-plugin-lit": "^1.6.1", "eslint-plugin-unused-imports": "^1.1.5", @@ -208,7 +208,7 @@ "gulp-zopfli-green": "^3.0.1", "html-minifier": "^4.0.0", "husky": "^8.0.3", - "instant-mocha": "^1.3.1", + "instant-mocha": "^1.5.0", "jszip": "^3.10.1", "lint-staged": "^13.1.0", "lit-analyzer": "^1.2.1", @@ -229,7 +229,7 @@ "serve": "^11.3.2", "sinon": "^15.0.1", "source-map-url": "^0.4.0", - "systemjs": "^6.3.2", + "systemjs": "^6.13.0", "tar": "^6.1.11", "terser-webpack-plugin": "^5.2.4", "ts-lit-plugin": "^1.2.1", diff --git a/pyproject.toml b/pyproject.toml index 0f89a7abe2..da9f762c40 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "home-assistant-frontend" -version = "20230130.0" +version = "20230201.0" license = {text = "Apache-2.0"} description = "The Home Assistant frontend" readme = "README.md" diff --git a/src/common/config/version.ts b/src/common/config/version.ts index ec89a3407e..cdfebc4196 100644 --- a/src/common/config/version.ts +++ b/src/common/config/version.ts @@ -22,3 +22,11 @@ export const atLeastVersion = ( Number(haPatch) >= patch) ); }; + +export const isDevVersion = (version: string): boolean => { + if (__DEMO__) { + return false; + } + + return version.includes("dev"); +}; diff --git a/src/components/chart/state-history-chart-timeline.ts b/src/components/chart/state-history-chart-timeline.ts index 7b5a25e1ae..546e062d29 100644 --- a/src/components/chart/state-history-chart-timeline.ts +++ b/src/components/chart/state-history-chart-timeline.ts @@ -64,6 +64,8 @@ export class StateHistoryChartTimeline extends LitElement { } if ( + changedProps.has("startTime") || + changedProps.has("endTime") || changedProps.has("data") || this._chartTime < new Date(this.endTime.getTime() - MIN_TIME_BETWEEN_UPDATES) diff --git a/src/components/chart/state-history-charts.ts b/src/components/chart/state-history-charts.ts index 19421ef9b2..3d3d06a167 100644 --- a/src/components/chart/state-history-charts.ts +++ b/src/components/chart/state-history-charts.ts @@ -38,7 +38,7 @@ declare global { } @customElement("state-history-charts") -class StateHistoryCharts extends LitElement { +export class StateHistoryCharts extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: false }) public historyData!: HistoryResult; @@ -71,7 +71,6 @@ class StateHistoryCharts extends LitElement { // @ts-ignore @restoreScroll(".container") private _savedScrollPos?: number; - @eventOptions({ passive: true }) protected render(): TemplateResult { if (!isComponentLoaded(this.hass, "history")) { return html`
diff --git a/src/components/entity/ha-entity-picker.ts b/src/components/entity/ha-entity-picker.ts index ff26c4a79d..31d2af9062 100644 --- a/src/components/entity/ha-entity-picker.ts +++ b/src/components/entity/ha-entity-picker.ts @@ -1,3 +1,4 @@ +import "../ha-list-item"; import { HassEntity } from "home-assistant-js-websocket"; import { html, LitElement, PropertyValues, TemplateResult } from "lit"; import { ComboBoxLitRenderer } from "@vaadin/combo-box/lit"; @@ -9,7 +10,6 @@ import { computeStateName } from "../../common/entity/compute_state_name"; import { caseInsensitiveStringCompare } from "../../common/string/compare"; import { PolymerChangedEvent } from "../../polymer-types"; import { HomeAssistant } from "../../types"; -import "../ha-list-item"; import "../ha-combo-box"; import type { HaComboBox } from "../ha-combo-box"; import "../ha-icon-button"; diff --git a/src/components/ha-button.ts b/src/components/ha-button.ts new file mode 100644 index 0000000000..318fe8c483 --- /dev/null +++ b/src/components/ha-button.ts @@ -0,0 +1,24 @@ +import { Button } from "@material/mwc-button"; +import { css } from "lit"; +import { customElement } from "lit/decorators"; +import { styles } from "@material/mwc-button/styles.css"; + +@customElement("ha-button") +export class HaButton extends Button { + static override styles = [ + styles, + css` + ::slotted([slot="icon"]) { + margin-inline-start: 0px; + margin-inline-end: 8px; + direction: var(--direction); + } + `, + ]; +} + +declare global { + interface HTMLElementTagNameMap { + "ha-button": HaButton; + } +} diff --git a/src/components/ha-combo-box.ts b/src/components/ha-combo-box.ts index 27691d1a5f..061a241e07 100644 --- a/src/components/ha-combo-box.ts +++ b/src/components/ha-combo-box.ts @@ -16,7 +16,6 @@ import { fireEvent } from "../common/dom/fire_event"; import { HomeAssistant } from "../types"; import "./ha-list-item"; import "./ha-icon-button"; -import "./ha-textfield"; import type { HaTextField } from "./ha-textfield"; registerStyles( diff --git a/src/data/entity_registry.ts b/src/data/entity_registry.ts index 7b6a34a1d3..cbc5459b3b 100644 --- a/src/data/entity_registry.ts +++ b/src/data/entity_registry.ts @@ -30,7 +30,6 @@ export interface ExtEntityRegistryEntry extends EntityRegistryEntry { device_class?: string; original_device_class?: string; aliases: string[]; - options: EntityRegistryOptions | null; } export interface UpdateEntityRegistryEntryResult { @@ -40,7 +39,6 @@ export interface UpdateEntityRegistryEntryResult { } export interface SensorEntityOptions { - precision?: number | null; unit_of_measurement?: string | null; } @@ -56,12 +54,6 @@ export interface WeatherEntityOptions { wind_speed_unit?: string | null; } -export interface EntityRegistryOptions { - number?: NumberEntityOptions; - sensor?: SensorEntityOptions; - weather?: WeatherEntityOptions; -} - export interface EntityRegistryEntryUpdateParams { name?: string | null; icon?: string | null; diff --git a/src/data/history.ts b/src/data/history.ts index b4eb5e87ba..b0d1d4b041 100644 --- a/src/data/history.ts +++ b/src/data/history.ts @@ -117,7 +117,7 @@ export const fetchDateWS = ( export const subscribeHistory = ( hass: HomeAssistant, - callbackFunction: (message: HistoryStreamMessage) => void, + callbackFunction: (data: HistoryStates) => void, startTime: Date, endTime: Date, entityIds: string[] @@ -132,8 +132,9 @@ export const subscribeHistory = ( entityIdHistoryNeedsAttributes(hass, entityId) ), }; + const stream = new HistoryStream(hass); return hass.connection.subscribeMessage( - (message) => callbackFunction(message), + (message) => callbackFunction(stream.processMessage(message)), params ); }; @@ -141,11 +142,11 @@ export const subscribeHistory = ( class HistoryStream { hass: HomeAssistant; - hoursToShow: number; + hoursToShow?: number; combinedHistory: HistoryStates; - constructor(hass: HomeAssistant, hoursToShow: number) { + constructor(hass: HomeAssistant, hoursToShow?: number) { this.hass = hass; this.hoursToShow = hoursToShow; this.combinedHistory = {}; @@ -161,8 +162,9 @@ class HistoryStream { // indicate no more historical events return this.combinedHistory; } - const purgeBeforePythonTime = - (new Date().getTime() - 60 * 60 * this.hoursToShow * 1000) / 1000; + const purgeBeforePythonTime = this.hoursToShow + ? (new Date().getTime() - 60 * 60 * this.hoursToShow * 1000) / 1000 + : undefined; const newHistory: HistoryStates = {}; for (const entityId of Object.keys(this.combinedHistory)) { newHistory[entityId] = []; @@ -195,7 +197,7 @@ class HistoryStream { newHistory[entityId] = streamMessage.states[entityId]; } // Remove old history - if (entityId in this.combinedHistory) { + if (purgeBeforePythonTime && entityId in this.combinedHistory) { const expiredStates = newHistory[entityId].filter( (state) => state.lu < purgeBeforePythonTime ); diff --git a/src/panels/config/automation/action/ha-automation-action.ts b/src/panels/config/automation/action/ha-automation-action.ts index 0a56ac1318..7ff8100b76 100644 --- a/src/panels/config/automation/action/ha-automation-action.ts +++ b/src/panels/config/automation/action/ha-automation-action.ts @@ -11,6 +11,7 @@ import { fireEvent } from "../../../../common/dom/fire_event"; import { stringCompare } from "../../../../common/string/compare"; import { LocalizeFunc } from "../../../../common/translations/localize"; import "../../../../components/ha-button-menu"; +import "../../../../components/ha-button"; import type { HaSelect } from "../../../../components/ha-select"; import "../../../../components/ha-svg-icon"; import { ACTION_TYPES } from "../../../../data/action"; @@ -132,7 +133,7 @@ export default class HaAutomationAction extends LitElement { @action=${this._addAction} .disabled=${this.disabled} > - - + ${this._processedTypes(this.hass.localize).map( ([opt, label, icon]) => html` diff --git a/src/panels/config/automation/action/types/ha-automation-action-choose.ts b/src/panels/config/automation/action/types/ha-automation-action-choose.ts index bbc9b5a039..e515b49d1c 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-choose.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-choose.ts @@ -4,6 +4,7 @@ import { customElement, property, state } from "lit/decorators"; import { fireEvent } from "../../../../../common/dom/fire_event"; import { ensureArray } from "../../../../../common/array/ensure-array"; import "../../../../../components/ha-icon-button"; +import "../../../../../components/ha-button"; import { Condition } from "../../../../../data/automation"; import { Action, ChooseAction } from "../../../../../data/script"; import { haStyle } from "../../../../../resources/styles"; @@ -80,7 +81,7 @@ export class HaChooseAction extends LitElement implements ActionElement {
` )} - - + ${this._showDefault || action.default ? html`

@@ -196,6 +197,9 @@ export class HaChooseAction extends LitElement implements ActionElement { ha-icon-button { position: absolute; right: 0; + inset-inline-start: initial; + inset-inline-end: 0; + direction: var(--direction); padding: 4px; } ha-svg-icon { diff --git a/src/panels/config/automation/condition/ha-automation-condition.ts b/src/panels/config/automation/condition/ha-automation-condition.ts index 1b93b508e5..d936b7a4f3 100644 --- a/src/panels/config/automation/condition/ha-automation-condition.ts +++ b/src/panels/config/automation/condition/ha-automation-condition.ts @@ -8,6 +8,7 @@ import { repeat } from "lit/directives/repeat"; import memoizeOne from "memoize-one"; import type { SortableEvent } from "sortablejs"; import { fireEvent } from "../../../../common/dom/fire_event"; +import "../../../../components/ha-button"; import "../../../../components/ha-button-menu"; import "../../../../components/ha-svg-icon"; import type { Condition } from "../../../../data/automation"; @@ -177,7 +178,7 @@ export default class HaAutomationCondition extends LitElement { @action=${this._addCondition} .disabled=${this.disabled} > - - + ${this._processedTypes(this.hass.localize).map( ([opt, label, icon]) => html` diff --git a/src/panels/config/automation/trigger/ha-automation-trigger.ts b/src/panels/config/automation/trigger/ha-automation-trigger.ts index 7bc099265d..7c8b8bd755 100644 --- a/src/panels/config/automation/trigger/ha-automation-trigger.ts +++ b/src/panels/config/automation/trigger/ha-automation-trigger.ts @@ -11,6 +11,7 @@ import { fireEvent } from "../../../../common/dom/fire_event"; import { stringCompare } from "../../../../common/string/compare"; import type { LocalizeFunc } from "../../../../common/translations/localize"; import "../../../../components/ha-button-menu"; +import "../../../../components/ha-button"; import type { HaSelect } from "../../../../components/ha-select"; import "../../../../components/ha-svg-icon"; import { Trigger } from "../../../../data/automation"; @@ -125,7 +126,7 @@ export default class HaAutomationTrigger extends LitElement { )} - - + ${this._processedTypes(this.hass.localize).map( ([opt, label, icon]) => html` diff --git a/src/panels/config/entities/entity-registry-settings.ts b/src/panels/config/entities/entity-registry-settings.ts index 60c1f62dc4..d1afbb6b50 100644 --- a/src/panels/config/entities/entity-registry-settings.ts +++ b/src/panels/config/entities/entity-registry-settings.ts @@ -63,7 +63,6 @@ import { EntityRegistryEntry, EntityRegistryEntryUpdateParams, ExtEntityRegistryEntry, - SensorEntityOptions, fetchEntityRegistry, removeEntityRegistryEntry, updateEntityRegistryEntry, @@ -127,16 +126,6 @@ const OVERRIDE_WEATHER_UNITS = { const SWITCH_AS_DOMAINS = ["cover", "fan", "light", "lock", "siren"]; -const PRECISIONS = [0, 1, 2, 3, 4, 5, 6]; - -function precisionLabel(precision: number, _state?: string) { - const state_float = - _state === undefined || isNaN(parseFloat(_state)) - ? 0.0 - : parseFloat(_state); - return state_float.toFixed(precision); -} - @customElement("entity-registry-settings") export class EntityRegistrySettings extends SubscribeMixin(LitElement) { @property({ attribute: false }) public hass!: HomeAssistant; @@ -165,8 +154,6 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { @state() private _unit_of_measurement?: string | null; - @state() private _precision?: number | null; - @state() private _precipitation_unit?: string | null; @state() private _pressure_unit?: string | null; @@ -264,10 +251,6 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { this._unit_of_measurement = stateObj?.attributes?.unit_of_measurement; } - if (domain === "sensor") { - this._precision = this.entry.options?.sensor?.precision; - } - if (domain === "weather") { const stateObj: HassEntity | undefined = this.hass.states[this.entry.entity_id]; @@ -485,44 +468,6 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) { ` : ""} - ${domain === "sensor" && - // Allow customizing the precision for a sensor with numerical device class, - // a unit of measurement or state class - ((this._deviceClass && - !["date", "enum", "timestamp"].includes(this._deviceClass)) || - stateObj?.attributes.unit_of_measurement || - stateObj?.attributes.state_class) - ? html` - - ${this.hass.localize( - "ui.dialogs.entity_registry.editor.precision_default" - )} - ${PRECISIONS.map( - (precision) => html` - - ${precisionLabel( - precision, - this.hass.states[this.entry.entity_id]?.state - )} - - ` - )} - - ` - : ""} ${domain === "weather" ? html` Commission device with mobile app` : ""} + ${isDevVersion(this.hass.config.version) + ? html`Commission device + Add shared device` + : ""} Set WiFi Credentials - Set Thread - Commission device - Add shared deviceSet Thread Credentials diff --git a/src/panels/config/logs/ha-config-logs.ts b/src/panels/config/logs/ha-config-logs.ts index f632d1ef6a..3a40d0e5ad 100644 --- a/src/panels/config/logs/ha-config-logs.ts +++ b/src/panels/config/logs/ha-config-logs.ts @@ -4,6 +4,7 @@ import { customElement, property, query, state } from "lit/decorators"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { extractSearchParam } from "../../../common/url/search-params"; import "../../../components/ha-button-menu"; +import "../../../components/ha-button"; import "../../../components/search-input"; import { LogProvider } from "../../../data/error_log"; import { fetchHassioAddonsInfo } from "../../../data/hassio/addon"; @@ -115,7 +116,7 @@ export class HaConfigLogs extends LitElement { this.hass.userData?.showAdvanced ? html` - p.key === this._selectedLogProvider @@ -125,7 +126,7 @@ export class HaConfigLogs extends LitElement { slot="trailingIcon" .path=${mdiChevronDown} > - + ${this._logProviders.map( (provider) => html` ; + + private _interval?: number; + public constructor() { super(); const start = new Date(); - start.setHours(start.getHours() - 2, 0, 0, 0); + start.setHours(start.getHours() - 1, 0, 0, 0); this._startDate = start; const end = new Date(); - end.setHours(end.getHours() + 1, 0, 0, 0); + end.setHours(end.getHours() + 2, 0, 0, 0); this._endDate = end; } + public connectedCallback() { + super.connectedCallback(); + if (this.hasUpdated) { + this._getHistory(); + } + } + + public disconnectedCallback() { + super.disconnectedCallback(); + this._unsubscribeHistory(); + } + public hassSubscribe(): UnsubscribeFunc[] { return [ subscribeEntityRegistry(this.hass.connection!, (entities) => { @@ -270,24 +296,63 @@ class HaPanelHistory extends SubscribeMixin(LitElement) { if (entityIds.length === 0) { this._isLoading = false; - this._stateHistory = []; + this._stateHistory = { line: [], timeline: [] }; return; } - try { - const dateHistory = await fetchDateWS( - this.hass, - this._startDate, - this._endDate, - entityIds - ); - this._stateHistory = computeHistory( - this.hass, - dateHistory, - this.hass.localize - ); - } finally { + if (this._subscribed) { + this._unsubscribeHistory(); + } + + const now = new Date(); + + this._subscribed = subscribeHistory( + this.hass, + (history) => { + this._isLoading = false; + this._stateHistory = computeHistory( + this.hass, + history, + this.hass.localize + ); + }, + this._startDate, + this._endDate, + entityIds + ); + this._subscribed.catch(() => { this._isLoading = false; + this._unsubscribeHistory(); + }); + if (this._endDate > now) { + this._setRedrawTimer(); + } + } + + private _setRedrawTimer() { + clearInterval(this._interval); + const now = new Date(); + const end = this._endDate > now ? now : this._endDate; + const timespan = differenceInHours(this._startDate, end); + this._interval = window.setInterval( + () => this._stateHistoryCharts?.requestUpdate(), + // if timespan smaller than 1 hour, update every 10 seconds, smaller than 5 hours, redraw every minute, otherwise every 5 minutes + timespan < 2 + ? 10000 + : timespan < 10 + ? 60 * 1000 + : MIN_TIME_BETWEEN_UPDATES + ); + } + + private _unsubscribeHistory() { + if (this._interval) { + clearInterval(this._interval); + this._interval = undefined; + } + if (this._subscribed) { + this._subscribed.then((unsub) => unsub?.()); + this._subscribed = undefined; } } diff --git a/src/panels/lovelace/editor/config-elements/hui-tile-card-features-editor.ts b/src/panels/lovelace/editor/config-elements/hui-tile-card-features-editor.ts index 972db69887..ffcce2826f 100644 --- a/src/panels/lovelace/editor/config-elements/hui-tile-card-features-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-tile-card-features-editor.ts @@ -15,6 +15,7 @@ import { fireEvent } from "../../../../common/dom/fire_event"; import { stopPropagation } from "../../../../common/dom/stop_propagation"; import "../../../../components/entity/ha-entity-picker"; import "../../../../components/ha-icon-button"; +import "../../../../components/ha-button"; import "../../../../components/ha-svg-icon"; import { sortableStyles } from "../../../../resources/ha-sortable-style"; import { @@ -160,7 +161,7 @@ export class HuiTileCardFeaturesEditor extends LitElement { @action=${this._addFeature} @closed=${stopPropagation} > - - + ${this._supportedFeatureTypes.map( (featureType) => html` ` : html` - - + ` } =0.16.0" resolve: ^1.1.6 peerDependencies: eslint: ">=0.16.0" - checksum: 55d541a6378fe2a4c7c6cee17c937df8bb372d907a0b6b79aabb8ded0bb2bbde5f333fdbdfc16af959425e42b679e7048ee9c4ee1524b9f545866e711775397e + checksum: 71893242172d633b63d3442393bf103f8f63ce97958ca63f6c5dacea0e4d4cdb4e35f1200b5e66c219034e26003177d18adf88e35af9ae1154739578832ec8ce languageName: node linkType: hard @@ -7934,7 +7959,7 @@ __metadata: languageName: node linkType: hard -"eslint@npm:>=0.16.0, eslint@npm:^7.32.0": +"eslint@npm:^7.32.0": version: 7.32.0 resolution: "eslint@npm:7.32.0" dependencies: @@ -8058,7 +8083,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:^1.3.0, etag@npm:~1.8.1": +"etag@npm:^1.3.0, etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -8712,10 +8737,10 @@ __metadata: languageName: node linkType: hard -"fs-require@npm:^1.1.0": - version: 1.1.0 - resolution: "fs-require@npm:1.1.0" - checksum: c0fc2468a21f6264b29a5287920d63b4db8a21fd32b26774d6da95798c3a54a7542fbb2889173b5d8ac07c25468a04e45a8d76c816c9c37e568a77c3695f4822 +"fs-require@npm:^1.4.0": + version: 1.6.0 + resolution: "fs-require@npm:1.6.0" + checksum: 085145a3021e142ae8d591d955f7e1d9cab17191666294e0ad394df5cb9ee379817b89c50de63bd861138dcb6adec589289d347c23de9bfe1ac82aeba6b1a128 languageName: node linkType: hard @@ -9347,7 +9372,7 @@ fsevents@^1.2.7: "@babel/plugin-proposal-decorators": ^7.20.7 "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 "@babel/plugin-proposal-object-rest-spread": ^7.20.2 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 + "@babel/plugin-proposal-optional-chaining": ^7.20.7 "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/plugin-syntax-top-level-await": ^7.14.5 @@ -9355,7 +9380,7 @@ fsevents@^1.2.7: "@babel/preset-typescript": ^7.18.6 "@braintree/sanitize-url": ^6.0.0 "@codemirror/autocomplete": ^6.4.0 - "@codemirror/commands": ^6.1.3 + "@codemirror/commands": ^6.2.0 "@codemirror/language": ^6.4.0 "@codemirror/legacy-modes": ^6.3.1 "@codemirror/search": ^6.2.3 @@ -9365,7 +9390,7 @@ fsevents@^1.2.7: "@formatjs/intl-getcanonicallocales": ^2.0.5 "@formatjs/intl-locale": ^3.0.11 "@formatjs/intl-numberformat": ^7.2.5 - "@formatjs/intl-pluralrules": ^4.1.5 + "@formatjs/intl-pluralrules": ^5.1.8 "@formatjs/intl-relativetimeformat": ^11.1.8 "@fullcalendar/common": ^5.11.4 "@fullcalendar/core": ^5.11.4 @@ -9373,7 +9398,7 @@ fsevents@^1.2.7: "@fullcalendar/interaction": ^5.11.4 "@fullcalendar/list": ^5.11.4 "@fullcalendar/timegrid": ^5.11.4 - "@koa/cors": ^3.1.0 + "@koa/cors": ^4.0.0 "@lezer/highlight": ^1.1.3 "@lit-labs/motion": ^1.0.3 "@lit-labs/virtualizer": ^1.0.1 @@ -9405,7 +9430,7 @@ fsevents@^1.2.7: "@mdi/svg": 7.1.96 "@octokit/auth-oauth-device": ^4.0.4 "@octokit/rest": ^19.0.7 - "@open-wc/dev-server-hmr": ^0.0.2 + "@open-wc/dev-server-hmr": ^0.1.3 "@polymer/app-layout": ^3.1.0 "@polymer/iron-flex-layout": ^3.0.1 "@polymer/iron-icon": ^3.0.1 @@ -9468,7 +9493,7 @@ fsevents@^1.2.7: eslint-config-airbnb-typescript: ^14.0.0 eslint-config-prettier: ^8.6.0 eslint-import-resolver-webpack: ^0.13.1 - eslint-plugin-disable: ^2.0.1 + eslint-plugin-disable: ^2.0.3 eslint-plugin-import: ^2.24.2 eslint-plugin-lit: ^1.6.1 eslint-plugin-unused-imports: ^1.1.5 @@ -9490,7 +9515,7 @@ fsevents@^1.2.7: html-minifier: ^4.0.0 husky: ^8.0.3 idb-keyval: ^5.1.3 - instant-mocha: ^1.3.1 + instant-mocha: ^1.5.0 intl-messageformat: ^10.3.0 js-yaml: ^4.1.0 jszip: ^3.10.1 @@ -9529,7 +9554,7 @@ fsevents@^1.2.7: sortablejs: ^1.14.0 source-map-url: ^0.4.0 superstruct: ^1.0.3 - systemjs: ^6.3.2 + systemjs: ^6.13.0 tar: ^6.1.11 terser-webpack-plugin: ^5.2.4 tinykeys: ^1.1.3 @@ -9942,23 +9967,20 @@ fsevents@^1.2.7: languageName: node linkType: hard -"instant-mocha@npm:^1.3.1": - version: 1.3.1 - resolution: "instant-mocha@npm:1.3.1" +"instant-mocha@npm:^1.5.0": + version: 1.5.0 + resolution: "instant-mocha@npm:1.5.0" dependencies: - aggregate-error: ^3.1.0 - ansi-escapes: ^4.3.2 - fs-require: ^1.1.0 - memfs: ^3.2.2 - minimist: ^1.2.5 - source-map-support: ^0.5.19 + fs-require: ^1.4.0 + memfs: ^3.4.12 + source-map-support: ^0.5.21 yargs: ^16.2.0 peerDependencies: - mocha: ^6.1.4 || ^8.3.2 - webpack: ^4.40.0 || ^5.0.0 + mocha: 8 || 9 || 10 + webpack: 4 || 5 bin: - instant-mocha: bin/instant-mocha.js - checksum: f4313d75249b63ef58cf62bb92a44bc284c556d6ce8430483e564718fea75797a0f587640af7efe69252690df1c3f10fd9ebda4d445f4da3fac35f41249c2e8d + instant-mocha: dist/cli.js + checksum: 77741864a0b6602e7599dc93e3bd3dfc3451c58e84881c7163b8fc9494c095528ba3cc2c8b74be41e885a659711d81777ff7fd761523c34d4eabcd9fb555156d languageName: node linkType: hard @@ -10872,7 +10894,16 @@ fsevents@^1.2.7: languageName: node linkType: hard -"koa-send@npm:^5.0.0": +"koa-etag@npm:^4.0.0": + version: 4.0.0 + resolution: "koa-etag@npm:4.0.0" + dependencies: + etag: ^1.8.1 + checksum: b5f413574e1edbd60fbbd0d31720e66565d51bfcb407d1bc3f48d9dd5b45fa5a9e4f69a60e749fad7397348e90de23e943307578d007a69da30faaae432deaf6 + languageName: node + linkType: hard + +"koa-send@npm:^5.0.0, koa-send@npm:^5.0.1": version: 5.0.1 resolution: "koa-send@npm:5.0.1" dependencies: @@ -11456,7 +11487,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"memfs@npm:^3.2.2, memfs@npm:^3.4.3": +"memfs@npm:^3.4.12, memfs@npm:^3.4.3": version: 3.4.13 resolution: "memfs@npm:3.4.13" dependencies: @@ -14372,13 +14403,13 @@ fsevents@^1.2.7: languageName: node linkType: hard -"source-map-support@npm:^0.5.19, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": - version: 0.5.20 - resolution: "source-map-support@npm:0.5.20" +"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" dependencies: buffer-from: ^1.0.0 source-map: ^0.6.0 - checksum: 43946aff452011960d16154304b11011e0185549493e65dd90da045959409fb2d266ba1c854fff3d5949f8e59382e3fcc7f7c5fa66136007a6750ad06c6c0baa + checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 languageName: node linkType: hard @@ -14849,10 +14880,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"systemjs@npm:^6.3.2": - version: 6.3.2 - resolution: "systemjs@npm:6.3.2" - checksum: 640ee144b1bd85e41a1ed2fbd222a2341f996b8ec67cd8a22ee7d8afdf570cebd2953219862f6e780137a0d7fee77562c195f81dc9827edb4c648251c481b487 +"systemjs@npm:^6.13.0": + version: 6.13.0 + resolution: "systemjs@npm:6.13.0" + checksum: df8d7374249778291f3a85278fdb3e1b9d81ac07767b0a7f9edeca0ee45d847c19bceb01522c817605e2908d32a4fcfed6bacd707bfb7bd577774ab900d3707d languageName: node linkType: hard @@ -16510,9 +16541,9 @@ typescript@^3.8.3: languageName: node linkType: hard -"ws@npm:^7.3.1": - version: 7.4.0 - resolution: "ws@npm:7.4.0" +"ws@npm:^7.3.1, ws@npm:^7.4.2": + version: 7.5.9 + resolution: "ws@npm:7.5.9" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -16521,7 +16552,7 @@ typescript@^3.8.3: optional: true utf-8-validate: optional: true - checksum: 83a19a742aa2254ac5d7aa5d8f9a3bf7f2312bd147427fed02fc13168545c938450f1da9d8371133b292f63d1a21dcf7e7a09c6f89b8603581a27ed6c8e24e09 + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 languageName: node linkType: hard