mirror of
				https://github.com/home-assistant/frontend.git
				synced 2025-11-04 00:19:47 +00:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
			20251001.2
			...
			tinykeys-1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					ce0fb9dc1e | ||
| 
						 | 
					bbf45f33b6 | ||
| 
						 | 
					c04f6356f5 | ||
| 
						 | 
					c7afcd0b62 | ||
| 
						 | 
					53ba2f6b21 | ||
| 
						 | 
					304b923d89 | ||
| 
						 | 
					f9fd60042e | ||
| 
						 | 
					bd10e73510 | ||
| 
						 | 
					3dd4e3fcd6 | ||
| 
						 | 
					3c0430f424 | ||
| 
						 | 
					e703b0c3e0 | ||
| 
						 | 
					eb5b5275b1 | ||
| 
						 | 
					981db50826 | ||
| 
						 | 
					09683863a7 | ||
| 
						 | 
					8c78f931dc | ||
| 
						 | 
					40ce3c1e31 | ||
| 
						 | 
					e430a1b1be | ||
| 
						 | 
					a2c6116417 | ||
| 
						 | 
					3239273f3e | 
@@ -203,7 +203,7 @@
 | 
			
		||||
    "husky": "9.1.7",
 | 
			
		||||
    "jsdom": "27.0.0",
 | 
			
		||||
    "jszip": "3.10.1",
 | 
			
		||||
    "lint-staged": "16.1.6",
 | 
			
		||||
    "lint-staged": "16.2.0",
 | 
			
		||||
    "lit-analyzer": "2.0.3",
 | 
			
		||||
    "lodash.merge": "4.6.2",
 | 
			
		||||
    "lodash.template": "4.5.0",
 | 
			
		||||
@@ -213,7 +213,7 @@
 | 
			
		||||
    "rspack-manifest-plugin": "5.1.0",
 | 
			
		||||
    "serve": "14.2.5",
 | 
			
		||||
    "sinon": "21.0.0",
 | 
			
		||||
    "tar": "7.4.3",
 | 
			
		||||
    "tar": "7.4.4",
 | 
			
		||||
    "terser-webpack-plugin": "5.3.14",
 | 
			
		||||
    "ts-lit-plugin": "2.0.2",
 | 
			
		||||
    "typescript": "5.9.2",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										93
									
								
								src/common/keyboard/shortcuts.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								src/common/keyboard/shortcuts.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
import { tinykeys } from "tinykeys";
 | 
			
		||||
import { canOverrideAlphanumericInput } from "../dom/can-override-input";
 | 
			
		||||
 | 
			
		||||
export type ShortcutHandler = (event: KeyboardEvent) => void;
 | 
			
		||||
 | 
			
		||||
interface ShortcutEntry {
 | 
			
		||||
  /**
 | 
			
		||||
   * The keys that the shortcut is registered to.
 | 
			
		||||
   */
 | 
			
		||||
  keys: Set<string>;
 | 
			
		||||
  /**
 | 
			
		||||
   * A function to remove the shortcuts.
 | 
			
		||||
   */
 | 
			
		||||
  disposer: () => void;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Register keyboard shortcuts using tinykeys.
 | 
			
		||||
 *
 | 
			
		||||
 * @param shortcuts - Key combinations mapped to handler functions.
 | 
			
		||||
 * @returns A function to remove the shortcuts.
 | 
			
		||||
 */
 | 
			
		||||
function registerShortcuts(
 | 
			
		||||
  shortcuts: Record<string, ShortcutHandler>
 | 
			
		||||
): () => void {
 | 
			
		||||
  const wrappedShortcuts: Record<string, ShortcutHandler> = {};
 | 
			
		||||
 | 
			
		||||
  Object.entries(shortcuts).forEach(([key, handler]) => {
 | 
			
		||||
    wrappedShortcuts[key] = (event: KeyboardEvent) => {
 | 
			
		||||
      // Don't capture the event if the user is not focused on an input
 | 
			
		||||
      if (!canOverrideAlphanumericInput(event.composedPath())) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      // Don't capture the event if the user is selecting text
 | 
			
		||||
      if (window.getSelection()?.toString()) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      handler(event);
 | 
			
		||||
    };
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  return tinykeys(window, wrappedShortcuts);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A class that can add and remove keyboard shortcuts.
 | 
			
		||||
 */
 | 
			
		||||
export class ShortcutManager {
 | 
			
		||||
  public shortcutEntries: ShortcutEntry[] = [];
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Add a group of keyboard shortcuts to the manager.
 | 
			
		||||
   *
 | 
			
		||||
   * @param shortcuts - Key combinations mapped to handler functions.
 | 
			
		||||
   *   Uses tinykeys syntax. See https://github.com/jamiebuilds/tinykeys#usage.
 | 
			
		||||
   */
 | 
			
		||||
  public add(shortcuts: Record<string, ShortcutHandler>) {
 | 
			
		||||
    const disposer = registerShortcuts(shortcuts);
 | 
			
		||||
    const keys = new Set(Object.keys(shortcuts));
 | 
			
		||||
    const entry: ShortcutEntry = { keys, disposer };
 | 
			
		||||
    this.shortcutEntries.push(entry);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Remove shortcuts from the manager.
 | 
			
		||||
   *
 | 
			
		||||
   * @param keys - Optional array of specific key combinations to remove. If provided,
 | 
			
		||||
   *   only shortcuts matching these keys will be removed. If omitted, all shortcuts
 | 
			
		||||
   *   from this manager will be removed.
 | 
			
		||||
   */
 | 
			
		||||
  public remove(keys?: string[]) {
 | 
			
		||||
    if (keys) {
 | 
			
		||||
      const entriesToRemove: ShortcutEntry[] = [];
 | 
			
		||||
 | 
			
		||||
      for (const entry of this.shortcutEntries) {
 | 
			
		||||
        if (keys.some((key) => entry.keys.has(key))) {
 | 
			
		||||
          entry.disposer();
 | 
			
		||||
          entriesToRemove.push(entry);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      entriesToRemove.forEach((entry) => {
 | 
			
		||||
        const index = this.shortcutEntries.indexOf(entry);
 | 
			
		||||
        if (index !== -1) {
 | 
			
		||||
          this.shortcutEntries.splice(index, 1);
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    } else {
 | 
			
		||||
      this.shortcutEntries.forEach((entry) => entry.disposer());
 | 
			
		||||
      this.shortcutEntries.length = 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -54,9 +54,9 @@ export class HaBottomSheet extends LitElement {
 | 
			
		||||
      border-top-left-radius: var(--ha-border-radius-lg);
 | 
			
		||||
      border-top-right-radius: var(--ha-border-radius-lg);
 | 
			
		||||
      max-height: 90vh;
 | 
			
		||||
      margin-bottom: var(--safe-area-inset-bottom);
 | 
			
		||||
      margin-left: var(--safe-area-inset-left);
 | 
			
		||||
      margin-right: var(--safe-area-inset-right);
 | 
			
		||||
      padding-bottom: var(--safe-area-inset-bottom);
 | 
			
		||||
      padding-left: var(--safe-area-inset-left);
 | 
			
		||||
      padding-right: var(--safe-area-inset-right);
 | 
			
		||||
    }
 | 
			
		||||
  `;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import type { Action } from "./script";
 | 
			
		||||
export const callExecuteScript = (
 | 
			
		||||
  hass: HomeAssistant,
 | 
			
		||||
  sequence: Action | Action[]
 | 
			
		||||
): Promise<{ context: Context; response: Record<string, any> }> =>
 | 
			
		||||
): Promise<{ context: Context; response: Record<string, any> | null }> =>
 | 
			
		||||
  hass.callWS({
 | 
			
		||||
    type: "execute_script",
 | 
			
		||||
    sequence,
 | 
			
		||||
 
 | 
			
		||||
@@ -171,7 +171,7 @@ export default class HaAutomationSidebar extends LitElement {
 | 
			
		||||
        @mousedown=${this._handleMouseDown}
 | 
			
		||||
        @touchstart=${this._handleMouseDown}
 | 
			
		||||
      >
 | 
			
		||||
        ${this._resizing ? html`<div class="indicator"></div>` : nothing}
 | 
			
		||||
        <div class="indicator ${this._resizing ? "" : "hidden"}"></div>
 | 
			
		||||
      </div>
 | 
			
		||||
      ${this._renderContent()}
 | 
			
		||||
    `;
 | 
			
		||||
@@ -333,6 +333,15 @@ export default class HaAutomationSidebar extends LitElement {
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      width: 4px;
 | 
			
		||||
      border-radius: var(--ha-border-radius-pill);
 | 
			
		||||
      transform: scale3d(1, 1, 1);
 | 
			
		||||
      opacity: 1;
 | 
			
		||||
      transition:
 | 
			
		||||
        transform 180ms ease-in-out,
 | 
			
		||||
        opacity 180ms ease-in-out;
 | 
			
		||||
    }
 | 
			
		||||
    .handle .indicator.hidden {
 | 
			
		||||
      transform: scale3d(0, 1, 1);
 | 
			
		||||
      opacity: 0;
 | 
			
		||||
    }
 | 
			
		||||
  `;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -260,7 +260,7 @@ class DialogPersonDetail extends LitElement implements HassDialog {
 | 
			
		||||
        >
 | 
			
		||||
          ${this._params.entry
 | 
			
		||||
            ? this.hass!.localize("ui.common.save")
 | 
			
		||||
            : this.hass!.localize("ui.panel.config.person.detail.create")}
 | 
			
		||||
            : this.hass!.localize("ui.common.add")}
 | 
			
		||||
        </ha-button>
 | 
			
		||||
      </ha-dialog>
 | 
			
		||||
    `;
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,7 @@ class HaPanelDevAction extends LitElement {
 | 
			
		||||
  @state() private _response?: {
 | 
			
		||||
    domain: string;
 | 
			
		||||
    service: string;
 | 
			
		||||
    result: Record<string, any>;
 | 
			
		||||
    result: Record<string, any> | null;
 | 
			
		||||
    media?: Promise<TemplateResult | typeof nothing>;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@@ -205,7 +205,7 @@ class HaPanelDevAction extends LitElement {
 | 
			
		||||
          </ha-progress-button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      ${this._response
 | 
			
		||||
      ${this._response?.result
 | 
			
		||||
        ? html`<div class="content response">
 | 
			
		||||
            <ha-card
 | 
			
		||||
              .header=${this.hass.localize(
 | 
			
		||||
@@ -491,7 +491,7 @@ class HaPanelDevAction extends LitElement {
 | 
			
		||||
        service,
 | 
			
		||||
        result,
 | 
			
		||||
        media:
 | 
			
		||||
          "media_source_id" in result
 | 
			
		||||
          result && "media_source_id" in result
 | 
			
		||||
            ? resolveMediaSource(this.hass, result.media_source_id).then(
 | 
			
		||||
                (resolved) =>
 | 
			
		||||
                  resolved.mime_type.startsWith("image/")
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,9 @@ export class CommonControlsSectionStrategy extends ReactiveElement {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const predictedCommonControl = await getCommonControlUsagePrediction(hass);
 | 
			
		||||
    let predictedEntities = predictedCommonControl.entities;
 | 
			
		||||
    let predictedEntities = predictedCommonControl.entities.filter(
 | 
			
		||||
      (entity) => entity in hass.states
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (config.exclude_entities) {
 | 
			
		||||
      predictedEntities = predictedEntities.filter(
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import scrollLockStyles from "@home-assistant/webawesome/dist/styles/utilities/scroll-lock.css.js";
 | 
			
		||||
import { css } from "lit";
 | 
			
		||||
import { extractDerivedVars } from "../../common/style/derived-css-vars";
 | 
			
		||||
 | 
			
		||||
@@ -18,6 +19,8 @@ export const waMainStyles = css`
 | 
			
		||||
    --wa-border-width-l: var(--ha-border-radius-l);
 | 
			
		||||
    --wa-space-xl: 32px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ${scrollLockStyles}
 | 
			
		||||
`;
 | 
			
		||||
 | 
			
		||||
export const waMainDerivedVariables = extractDerivedVars(waMainStyles);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,4 @@
 | 
			
		||||
import type { PropertyValues } from "lit";
 | 
			
		||||
import { tinykeys } from "tinykeys";
 | 
			
		||||
import memoizeOne from "memoize-one";
 | 
			
		||||
import { isComponentLoaded } from "../common/config/is_component_loaded";
 | 
			
		||||
import { mainWindow } from "../common/dom/get_main_window";
 | 
			
		||||
@@ -12,6 +11,7 @@ import type { Constructor, HomeAssistant } from "../types";
 | 
			
		||||
import { storeState } from "../util/ha-pref-storage";
 | 
			
		||||
import { showToast } from "../util/toast";
 | 
			
		||||
import type { HassElement } from "./hass-element";
 | 
			
		||||
import { ShortcutManager } from "../common/keyboard/shortcuts";
 | 
			
		||||
import { extractSearchParamsObject } from "../common/url/search-params";
 | 
			
		||||
import { showVoiceCommandDialog } from "../dialogs/voice-command-dialog/show-ha-voice-command-dialog";
 | 
			
		||||
import { canOverrideAlphanumericInput } from "../common/dom/can-override-input";
 | 
			
		||||
@@ -62,7 +62,8 @@ export default <T extends Constructor<HassElement>>(superClass: T) =>
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private _registerShortcut() {
 | 
			
		||||
      tinykeys(window, {
 | 
			
		||||
      const shortcutManager = new ShortcutManager();
 | 
			
		||||
      shortcutManager.add({
 | 
			
		||||
        // Those are for latin keyboards that have e, c, m keys
 | 
			
		||||
        e: (ev) => this._showQuickBar(ev),
 | 
			
		||||
        c: (ev) => this._showQuickBar(ev, QuickBarMode.Command),
 | 
			
		||||
 
 | 
			
		||||
@@ -5365,7 +5365,7 @@
 | 
			
		||||
          "person_not_found_title": "Person not found",
 | 
			
		||||
          "person_not_found": "We couldn't find the person you were trying to edit.",
 | 
			
		||||
          "detail": {
 | 
			
		||||
            "new_person": "New person",
 | 
			
		||||
            "new_person": "Add person",
 | 
			
		||||
            "name": "Name",
 | 
			
		||||
            "name_error_msg": "Name is required",
 | 
			
		||||
            "linked_user": "Linked user",
 | 
			
		||||
@@ -5376,7 +5376,6 @@
 | 
			
		||||
            "device_tracker_picked": "Track device",
 | 
			
		||||
            "device_tracker_pick": "Pick device to track",
 | 
			
		||||
            "delete": "Delete",
 | 
			
		||||
            "create": "Create",
 | 
			
		||||
            "update": "Update",
 | 
			
		||||
            "confirm_delete_user_title": "Delete user account",
 | 
			
		||||
            "confirm_delete_user_text": "The user account for ''{name}'' will be permanently deleted. You can still track the user, but the person will no longer be able to log in.",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										92
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										92
									
								
								yarn.lock
									
									
									
									
									
								
							@@ -6621,7 +6621,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"chalk@npm:^5.0.1, chalk@npm:^5.6.0":
 | 
			
		||||
"chalk@npm:^5.0.1":
 | 
			
		||||
  version: 5.6.2
 | 
			
		||||
  resolution: "chalk@npm:5.6.2"
 | 
			
		||||
  checksum: 10/1b2f48f6fba1370670d5610f9cd54c391d6ede28f4b7062dd38244ea5768777af72e5be6b74fb6c6d54cb84c4a2dff3f3afa9b7cb5948f7f022cfd3d087989e0
 | 
			
		||||
@@ -6850,6 +6850,13 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"commander@npm:14.0.1":
 | 
			
		||||
  version: 14.0.1
 | 
			
		||||
  resolution: "commander@npm:14.0.1"
 | 
			
		||||
  checksum: 10/783115e9403caeca29c0fcbd4e0358f70c67760e4e4933f3453fcdd5ddba2ec44173c8da5213d7ce5e404f51c7e71203a42c548164dbe27b668b32a8981577f1
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"commander@npm:^10.0.0":
 | 
			
		||||
  version: 10.0.1
 | 
			
		||||
  resolution: "commander@npm:10.0.1"
 | 
			
		||||
@@ -6857,13 +6864,6 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"commander@npm:^14.0.0":
 | 
			
		||||
  version: 14.0.1
 | 
			
		||||
  resolution: "commander@npm:14.0.1"
 | 
			
		||||
  checksum: 10/783115e9403caeca29c0fcbd4e0358f70c67760e4e4933f3453fcdd5ddba2ec44173c8da5213d7ce5e404f51c7e71203a42c548164dbe27b668b32a8981577f1
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"commander@npm:^2.20.0, commander@npm:^2.20.3":
 | 
			
		||||
  version: 2.20.3
 | 
			
		||||
  resolution: "commander@npm:2.20.3"
 | 
			
		||||
@@ -9514,7 +9514,7 @@ __metadata:
 | 
			
		||||
    leaflet: "npm:1.9.4"
 | 
			
		||||
    leaflet-draw: "patch:leaflet-draw@npm%3A1.0.4#./.yarn/patches/leaflet-draw-npm-1.0.4-0ca0ebcf65.patch"
 | 
			
		||||
    leaflet.markercluster: "npm:1.5.3"
 | 
			
		||||
    lint-staged: "npm:16.1.6"
 | 
			
		||||
    lint-staged: "npm:16.2.0"
 | 
			
		||||
    lit: "npm:3.3.1"
 | 
			
		||||
    lit-analyzer: "npm:2.0.3"
 | 
			
		||||
    lit-html: "npm:3.3.1"
 | 
			
		||||
@@ -9539,7 +9539,7 @@ __metadata:
 | 
			
		||||
    sortablejs: "patch:sortablejs@npm%3A1.15.6#~/.yarn/patches/sortablejs-npm-1.15.6-3235a8f83b.patch"
 | 
			
		||||
    stacktrace-js: "npm:2.0.2"
 | 
			
		||||
    superstruct: "npm:2.0.2"
 | 
			
		||||
    tar: "npm:7.4.3"
 | 
			
		||||
    tar: "npm:7.4.4"
 | 
			
		||||
    terser-webpack-plugin: "npm:5.3.14"
 | 
			
		||||
    tinykeys: "npm:3.0.0"
 | 
			
		||||
    ts-lit-plugin: "npm:2.0.2"
 | 
			
		||||
@@ -10861,13 +10861,6 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"lilconfig@npm:^3.1.3":
 | 
			
		||||
  version: 3.1.3
 | 
			
		||||
  resolution: "lilconfig@npm:3.1.3"
 | 
			
		||||
  checksum: 10/b932ce1af94985f0efbe8896e57b1f814a48c8dbd7fc0ef8469785c6303ed29d0090af3ccad7e36b626bfca3a4dc56cc262697e9a8dd867623cf09a39d54e4c3
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"lines-and-columns@npm:2.0.4":
 | 
			
		||||
  version: 2.0.4
 | 
			
		||||
  resolution: "lines-and-columns@npm:2.0.4"
 | 
			
		||||
@@ -10875,27 +10868,24 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"lint-staged@npm:16.1.6":
 | 
			
		||||
  version: 16.1.6
 | 
			
		||||
  resolution: "lint-staged@npm:16.1.6"
 | 
			
		||||
"lint-staged@npm:16.2.0":
 | 
			
		||||
  version: 16.2.0
 | 
			
		||||
  resolution: "lint-staged@npm:16.2.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    chalk: "npm:^5.6.0"
 | 
			
		||||
    commander: "npm:^14.0.0"
 | 
			
		||||
    debug: "npm:^4.4.1"
 | 
			
		||||
    lilconfig: "npm:^3.1.3"
 | 
			
		||||
    listr2: "npm:^9.0.3"
 | 
			
		||||
    micromatch: "npm:^4.0.8"
 | 
			
		||||
    nano-spawn: "npm:^1.0.2"
 | 
			
		||||
    pidtree: "npm:^0.6.0"
 | 
			
		||||
    string-argv: "npm:^0.3.2"
 | 
			
		||||
    yaml: "npm:^2.8.1"
 | 
			
		||||
    commander: "npm:14.0.1"
 | 
			
		||||
    listr2: "npm:9.0.4"
 | 
			
		||||
    micromatch: "npm:4.0.8"
 | 
			
		||||
    nano-spawn: "npm:1.0.3"
 | 
			
		||||
    pidtree: "npm:0.6.0"
 | 
			
		||||
    string-argv: "npm:0.3.2"
 | 
			
		||||
    yaml: "npm:2.8.1"
 | 
			
		||||
  bin:
 | 
			
		||||
    lint-staged: bin/lint-staged.js
 | 
			
		||||
  checksum: 10/922b4392ae5d3d56130e4eba706c2fa6151d5da5e21f57ab601b1d6ce9cc635ceb5e4c3dc00e7da83ba8f0cb244b82604469c7ea1470b1e6b6ea0fc12454aa08
 | 
			
		||||
  checksum: 10/809a42e21f2634c1a3e718dfb25786275a13b51c0cfaef6bb4bed509c656d31ee9b3e6231df55223b4b60cb37e4b5e3ebd958b239cabb529d2d07253cf7e1726
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"listr2@npm:^9.0.3":
 | 
			
		||||
"listr2@npm:9.0.4":
 | 
			
		||||
  version: 9.0.4
 | 
			
		||||
  resolution: "listr2@npm:9.0.4"
 | 
			
		||||
  dependencies:
 | 
			
		||||
@@ -11272,7 +11262,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8":
 | 
			
		||||
"micromatch@npm:4.0.8, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.8":
 | 
			
		||||
  version: 4.0.8
 | 
			
		||||
  resolution: "micromatch@npm:4.0.8"
 | 
			
		||||
  dependencies:
 | 
			
		||||
@@ -11477,21 +11467,12 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"minizlib@npm:^3.0.1":
 | 
			
		||||
  version: 3.0.2
 | 
			
		||||
  resolution: "minizlib@npm:3.0.2"
 | 
			
		||||
"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0":
 | 
			
		||||
  version: 3.1.0
 | 
			
		||||
  resolution: "minizlib@npm:3.1.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    minipass: "npm:^7.1.2"
 | 
			
		||||
  checksum: 10/c075bed1594f68dcc8c35122333520112daefd4d070e5d0a228bd4cf5580e9eed3981b96c0ae1d62488e204e80fd27b2b9d0068ca9a5ef3993e9565faf63ca41
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"mkdirp@npm:^3.0.1":
 | 
			
		||||
  version: 3.0.1
 | 
			
		||||
  resolution: "mkdirp@npm:3.0.1"
 | 
			
		||||
  bin:
 | 
			
		||||
    mkdirp: dist/cjs/src/bin.js
 | 
			
		||||
  checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba
 | 
			
		||||
  checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
@@ -11535,7 +11516,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"nano-spawn@npm:^1.0.2":
 | 
			
		||||
"nano-spawn@npm:1.0.3":
 | 
			
		||||
  version: 1.0.3
 | 
			
		||||
  resolution: "nano-spawn@npm:1.0.3"
 | 
			
		||||
  checksum: 10/72c56e68ae733c81c459a338fd51e2aa3be06b1cca746c2abe83df7acfac7eee008b01833f5a8781f4ac9fc1eafd23036a44755257a669dfcc2ff2453850822a
 | 
			
		||||
@@ -12259,7 +12240,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"pidtree@npm:^0.6.0":
 | 
			
		||||
"pidtree@npm:0.6.0":
 | 
			
		||||
  version: 0.6.0
 | 
			
		||||
  resolution: "pidtree@npm:0.6.0"
 | 
			
		||||
  bin:
 | 
			
		||||
@@ -13786,7 +13767,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"string-argv@npm:^0.3.2":
 | 
			
		||||
"string-argv@npm:0.3.2":
 | 
			
		||||
  version: 0.3.2
 | 
			
		||||
  resolution: "string-argv@npm:0.3.2"
 | 
			
		||||
  checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af
 | 
			
		||||
@@ -14098,17 +14079,16 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"tar@npm:7.4.3, tar@npm:^7.4.3":
 | 
			
		||||
  version: 7.4.3
 | 
			
		||||
  resolution: "tar@npm:7.4.3"
 | 
			
		||||
"tar@npm:7.4.4, tar@npm:^7.4.3":
 | 
			
		||||
  version: 7.4.4
 | 
			
		||||
  resolution: "tar@npm:7.4.4"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@isaacs/fs-minipass": "npm:^4.0.0"
 | 
			
		||||
    chownr: "npm:^3.0.0"
 | 
			
		||||
    minipass: "npm:^7.1.2"
 | 
			
		||||
    minizlib: "npm:^3.0.1"
 | 
			
		||||
    mkdirp: "npm:^3.0.1"
 | 
			
		||||
    minizlib: "npm:^3.1.0"
 | 
			
		||||
    yallist: "npm:^5.0.0"
 | 
			
		||||
  checksum: 10/12a2a4fc6dee23e07cc47f1aeb3a14a1afd3f16397e1350036a8f4cdfee8dcac7ef5978337a4e7b2ac2c27a9a6d46388fc2088ea7c80cb6878c814b1425f8ecf
 | 
			
		||||
  checksum: 10/be7d95e019b029ac507e7cd4b23c243ba896b67d0837c4f53d18c32a5014a24b7b247e982f4d47147b8d637c491b35cc122e19e29246137ecb2b88a495aaf1fb
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
@@ -16026,7 +16006,7 @@ __metadata:
 | 
			
		||||
  languageName: node
 | 
			
		||||
  linkType: hard
 | 
			
		||||
 | 
			
		||||
"yaml@npm:^2.8.1":
 | 
			
		||||
"yaml@npm:2.8.1":
 | 
			
		||||
  version: 2.8.1
 | 
			
		||||
  resolution: "yaml@npm:2.8.1"
 | 
			
		||||
  bin:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user