Compare commits

..
3929 changed files with 161836 additions and 612922 deletions

No files matched your search

@@ -1,106 +0,0 @@
---
name: ha-frontend-components
description: Home Assistant frontend component patterns. Use when implementing or reviewing dialogs, ha-form, ha-alert, keyboard shortcuts, tooltips, panels, Lovelace cards, or ha-button usage.
---
# HA Frontend Components
Use this skill when creating or reviewing Home Assistant UI components and common interaction patterns.
Cross-load `ha-frontend-events` when component work includes event listener typing, custom event dispatch, or event-map declarations.
## Dialogs
Open dialogs through the fire-event pattern:
```ts
fireEvent(this, "show-dialog", {
dialogTag: "dialog-example",
dialogImport: () => import("./dialog-example"),
dialogParams: { title: "Example", data: someData },
});
```
Dialog implementation requirements:
- Use `ha-dialog`.
- Use `DialogMixin`, which implements `HassDialogNext<T>`, for new dialogs. See `src/dialogs/dialog-mixin.ts`.
- Read dialog parameters from the mixin's `params` property and render the dialog open. Return `nothing` while required parameters are absent.
- Call the mixin's `closeDialog()` to close a new dialog. The mixin handles the `closed` event, fires `dialog-closed`, and removes the host element.
- Existing dialogs may implement the legacy `HassDialog<T>` interface from `src/dialogs/make-dialog-manager.ts`.
- Preserve the existing `showDialog()`, open-state, and close-event lifecycle when maintaining a legacy dialog; do not copy that lifecycle into a `DialogMixin` dialog.
- Use `header-title` and `header-subtitle` for simple header text.
- Use slots when standard header attributes are not enough.
- Use `ha-dialog-footer` with `primaryAction` and `secondaryAction` slots.
- Add `autofocus` to the first focusable element, such as `<ha-form autofocus>`, and forward it internally if needed.
Use standard dialog widths: `small`, `medium`, `large`, or `full`. Avoid custom dialog sizing unless there is a clear product need.
## Buttons
`ha-button` wraps the Web Awesome button in `src/components/ha-button.ts`.
Axes:
- `variant`: `brand`, `neutral`, `danger`, `warning`, `success`.
- `appearance`: `accent`, `filled`, `outlined`, `plain`.
- `size`: `xs`, `s`, `m`, `l`, `xl`.
Common usage:
- Use `appearance="filled"` for primary emphasis when needed.
- Use `appearance="plain"` for cancel and dismiss actions.
- Use `variant="danger"` for destructive actions.
- Place primary actions in `slot="primaryAction"` and secondary actions in `slot="secondaryAction"`.
## Forms
`ha-form` is schema-driven with `HaFormSchema[]` and supports common selectors for entities, devices, areas, targets, numbers, booleans, time, actions, text, objects, selects, icons, media, and location.
Use `computeLabel`, `computeError`, and `computeHelper` for translated labels, validation, and helper text.
```ts
<ha-form
.hass=${this.hass}
.data=${this._data}
.schema=${this._schema}
.error=${this._errors}
.computeLabel=${(schema) => this._localize(`ui.panel.${schema.name}`)}
@value-changed=${this._valueChanged}
></ha-form>
```
## Alerts
Use `ha-alert` for user-visible status messaging.
- Alert types: `error`, `warning`, `info`, `success`.
- Useful properties: `title`, `alert-type`, `dismissable`, `narrow`.
- Slots: `icon` for custom leading icon, `action` for custom action content.
- Content is announced by screen readers when dynamically displayed.
```ts
html`
<ha-alert alert-type="error">${this._localize("ui.example.error")}</ha-alert>
<ha-alert alert-type="warning" .title=${this._localize("ui.example.warning")}>
${this._localize("ui.example.description")}
</ha-alert>
<ha-alert alert-type="success" dismissable>
${this._localize("ui.example.success")}
</ha-alert>
`;
```
## Shortcuts And Tooltips
Use `ShortcutManager` from `src/common/keyboard/shortcuts.ts` for keyboard shortcuts. It blocks shortcuts in input fields, can prevent shortcuts during text selection, and supports character and KeyCode shortcuts for non-latin keyboards. See `src/state/quick-bar-mixin.ts` for global shortcut examples.
Use `ha-tooltip` from `src/components/ha-tooltip.ts` for contextual hover help. See `src/components/ha-label.ts` for an example.
## Panels And Lovelace Cards
Panels commonly extend `SubscribeMixin(LitElement)` and receive route and narrow-layout properties.
Lovelace cards should implement `LovelaceCard`, validate config in `setConfig()`, handle loading, error, unavailable, and missing-entity states, and add a configuration editor when needed.
Cards are user-story surfaces. Support different households, entity types, responsive layouts, and accessible interaction states.
@@ -1,97 +0,0 @@
---
name: ha-frontend-contexts
description: Home Assistant frontend Lit context and hass migration guidance. Use when adding or changing component state access, replacing hass reads, consuming entity or registry contexts, or reviewing rerender behavior.
---
# HA Frontend Contexts
Use this skill when a component reads Home Assistant state, registries, localization, services, config, UI data, connection state, or API helpers.
## Goal
Move leaf components away from the broad `hass: HomeAssistant` object. Broad `hass` access rerenders components for unrelated changes, hides the data a component depends on, and makes tests harder to mock.
Container components may keep `hass` when they own it and feed providers. Leaf components should consume the narrowest context that covers their reads.
## Core Files
- Context definitions: `src/data/context/index.ts`
- `consume` decorator, `ContextSubscriptionController`, and `consumeContext` / `ContextController` for reactive controllers: `src/common/decorators/consume.ts` (use instead of `@lit/context`'s `consume` and `ContextConsumer`, enforced by ESLint)
- Entity-scoped consume helpers: `src/common/decorators/consume-context-entry.ts`
- Transform decorator: `src/common/decorators/transform.ts`
- Canonical migration example: `src/panels/lovelace/cards/hui-button-card.ts`
- Providers are wired by `contextMixin` on `HassBaseEl`; consumers do not wire providers manually.
## Context Selection
| Context | Replaces |
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `statesContext` | `hass.states` |
| `entitiesContext`, `devicesContext`, `areasContext`, `floorsContext` | `hass.entities`, `hass.devices`, `hass.areas`, `hass.floors` |
| `registriesContext` | all four registries together |
| `servicesContext` | `hass.services` |
| `internationalizationContext` | `hass.localize`, `hass.locale`, `hass.language` |
| `formattersContext` | entity and attribute formatters |
| `configContext` | `hass.config`, `hass.user`, `hass.auth`, `hass.userData` |
| `connectionContext` | `hass.connection`, `hass.connected`, `hass.debugConnection`, `hass.hassUrl` |
| `apiContext` | `hass.callService`, `hass.callApi`, `hass.callApiRaw`, `hass.callWS`, `hass.sendWS`, `hass.fetchWithAuth` |
| `uiContext` | themes, selected theme, panels, sidebar, and UI state |
| `narrowViewportContext` | narrow-layout boolean |
| `reducedMotionContext` | `prefers-reduced-motion` media query |
Lazy contexts subscribe on first consumer and tear down after the last consumer: `labelsContext`, `fullEntitiesContext`, `configEntriesContext`, `manifestsContext`, `triggerDescriptionsContext`, and `conditionDescriptionsContext`.
The single-field contexts such as `localizeContext`, `themesContext`, and `userContext` are deprecated. Use grouped contexts instead.
## Consumption Patterns
Import `consume` from `src/common/decorators/consume`, not from `@lit/context`. The `@lit/context` version forces a host update on every context change, so every consumed field rerenders the component, even without `@state()`, and `@transform` cannot skip anything. Our `consume` leaves update scheduling to the field:
- `@state()` plus `@consume`: rerenders when the context value changes.
- `@state()` plus `@consume` plus `@transform`: rerenders only when the transformed value changes.
- `@consume` alone: the field stays current but never triggers a render. Use this for values only read in event handlers or callbacks, such as `apiContext`, or for data read on demand, such as picker item callbacks.
In reactive controllers, extend `ContextController` and decorate fields with `consumeContext({ context, subscribe, transform })` from the same file. `transform` stores one part of the context value, and `contextUpdated()` runs only when that part changes. `@state()` and `@transform` do not work on controller fields; call `host.requestUpdate()` when the host needs to rerender. Example: `src/data/service-info-controller.ts`.
For lazily created subscriptions, use `ContextSubscriptionController` from the same file instead of `@lit/context`'s `ContextConsumer`, which also forces a host update. Its callback must store the value in a reactive field or call `host.requestUpdate()` itself when the host needs to rerender.
Use entity-scoped helpers when the component watches an entity ID held on the host:
```ts
@state() @consumeEntityState({ entityIdPath: ["_config", "entity"] })
private _stateObj?: HassEntity;
@state() @consumeEntityRegistryEntry({ entityIdPath: ["_config", "entity"] })
private _entity?: EntityRegistryDisplayEntry;
@state() @consumeLocalize()
private _localize!: LocalizeFunc;
```
Use `consumeEntityStates` when the host property contains one or more entity IDs. It filters missing entities and preserves the previous record when none of the selected entities changed.
```ts
@state() @consumeEntityStates({ entityIdPath: ["_config", "entities"] })
private _stateObjs?: Record<string, HassEntity>;
```
For a single field from a grouped context, pair `@consume` with `@transform`:
```ts
@state()
@consume({ context: uiContext, subscribe: true })
@transform<HomeAssistantUI, Themes>({ transformer: ({ themes }) => themes })
private _themes!: Themes;
```
Use `@transform` with `watch` when the transformer depends on a host property, such as a computed entity ID. `consumeEntityState` and `consumeEntityStates` only watch the first path segment.
To consume a whole group untransformed, omit `@transform` and type the field as `ContextType<typeof statesContext>` or the matching context type.
## Review Checklist
- The component consumes the narrowest context needed for the data it reads.
- A broad `hass` property is kept only when the component is a container or external API requires it.
- Entity-scoped reads use the consume helpers rather than ad hoc context transforms.
- Context fields read during render or `willUpdate` are marked `@state()` so updates trigger rendering. Fields only read outside the render cycle are left without `@state()`.
- Tests and mocks only provide the data the component actually consumes.
-69
View File
@@ -1,69 +0,0 @@
---
name: ha-frontend-demo
description: Home Assistant standalone demo structure, configurations, URL navigation, mocked APIs, shared demo stubs used by gallery, and verification. Use when changing files under demo/, changing gallery consumers of demo/src/stubs/, or running and validating the demo.
---
# HA Frontend Demo
Use this skill for standalone demo work and changes to shared demo stubs consumed by the gallery. Follow the persistent repository guidance in `AGENTS.md` and load matching specialist skills alongside this skill, especially `ha-frontend-testing` when running or validating the demo.
## Purpose
The demo is the full Home Assistant frontend running against a mocked backend and is published at <https://demo.home-assistant.io>. It needs no Home Assistant server, which makes it the easiest way to load the real UI in a browser, for example to take screenshots.
## Running The Demo
Run commands from the repository root:
```bash
pnpm dev:demo # Development server on http://localhost:8090
pnpm dev:demo --background # Detached; also supports --status/--stop/--logs
```
Use the E2E workflows documented in `ha-frontend-testing` when validating the demo.
## Opening A Specific Demo
The demo contains multiple demo configurations. Select one directly with the `demo` query parameter, for example `http://localhost:8090/?demo=<slug>`. The valid slugs are defined in `demoConfigs` in `demo/src/configs/demo-configs.ts`, so "the second demo" means the slug of the second entry in that list. An unknown slug falls back to the default, which is the first entry.
## Opening A Specific Page
The demo build uses hash-based routing: the frontend path goes in the URL hash, and the `demo` query parameter goes before the `#`. The URL format is:
```text
http://localhost:8090/?demo=<slug>#/<path>
```
Useful paths:
- `/lovelace/0`: The selected demo's dashboard, also the default when no hash is given.
- `/energy`: The energy dashboard. Its tabs are views: `/energy/overview` (Summary), `/energy/electricity`, `/energy/gas`, `/energy/water`, and `/energy/now`.
- `/map`, `/history`, `/todo`, `/config`: Other sidebar panels.
For example, the water tab of the energy dashboard of the second demo is:
```text
http://localhost:8090/?demo=<second slug>#/energy/water
```
## Structure
- `demo/src/ha-demo.ts`: Root element that sets up all backend mocks.
- `demo/src/configs/<slug>/`: One directory per demo configuration, containing entities, dashboard, and theme data.
- `demo/src/configs/demo-configs.ts`: Registry of demo configurations and URL slug handling.
- `demo/src/stubs/`: Mocked WebSocket and REST APIs.
- `demo/script/develop_demo`, `demo/script/build_demo`: Development server and static build wrappers.
## Core Data
The service descriptions in `src/fake_data/demo_services.ts` and the trigger and condition descriptions and icons in `demo/src/stubs/automation_platforms_*.ts` are generated from Home Assistant Core. Do not edit them by hand. Run `script/gen_demo_core_data` to regenerate them from the core `dev` branch, and add a domain to the lists in `build-scripts/gulp/gen-demo-core-data.js` when the demo needs its services, triggers, or conditions. Their translations come from the backend translations merged into the demo build.
## Shared Gallery Stubs
`demo/src/stubs/` is shared, not demo-private: gallery pages import from it directly. Before changing or removing anything a stub does, search for its callers across `demo/src/` and `gallery/src/`, then check the affected gallery pages as well as the demo.
The two consumers use a stub differently, so demo behavior does not predict gallery behavior. A gallery page calls stubs against the `hass` from `provideHass`, where `hass.config` is the shared `demoConfig` object. A stub that mutates `hass.config` in place is therefore visible to the page. `demo/src/ha-demo.ts` copies `components` into a new array before the stubs run, so the same mutation never reaches the demo. A change can look correct in the demo while quietly breaking a gallery page.
## Verification
Load `ha-frontend-testing` and use its demo and gallery workflows. Validate both consumers when changing shared stubs. Documentation-only changes do not require code tests unless examples or commands change.
-105
View File
@@ -1,105 +0,0 @@
---
name: ha-frontend-events
description: Home Assistant frontend event patterns. Use when typing event handlers, using HASSDomEvent types, dispatching with fireEvent, or declaring HASSDomEvents and event maps.
---
# HA Frontend Events
Use this skill when implementing or reviewing event listeners and custom event contracts. Cross-load `ha-frontend-components` when the work also involves dialogs, forms, alerts, shortcuts, tooltips, panels, Lovelace cards, or buttons.
## Event Handling
Use the event types from `src/common/dom/fire_event.ts` instead of plain `Event`, generic `CustomEvent`, or element casts when they express the handler contract:
- Use `HASSDomCurrentTargetEvent<T>` to read the element on which the listener was registered through `ev.currentTarget`.
- Use `HASSDomTargetEvent<T>` only to read the element that originated the event through `ev.target`.
- Use `HASSDomEvent<T>` to read a custom event payload through `ev.detail`.
- Use `ValueChangedEvent<T>` from `src/types.ts` for the standard `value-changed` event.
- Prefer an event type exported by the component being listened to, such as `HaSelectSelectEvent<T, Clearable>` or `HaDropdownSelectEvent<TValue, TData>`, over reconstructing its detail type.
- Use `ActionHandlerEvent` from `src/data/lovelace/action_handler.ts` for Lovelace tap, hold, and double-tap handlers.
Import event and element types with `import type`:
```ts
import type {
HASSDomCurrentTargetEvent,
HASSDomEvent,
HASSDomTargetEvent,
} from "../common/dom/fire_event";
import type { HaCheckbox } from "../components/ha-checkbox";
import type { HaEntityPicker } from "../components/entity/ha-entity-picker";
import type { HaRadioGroup } from "../components/radio/ha-radio-group";
import type { ValueChangedEvent } from "../types";
```
Type the handler so the selected property can be read directly. Do not cast `ev.currentTarget` or assign it to a single-use variable:
```ts
private _scopeChanged(ev: HASSDomCurrentTargetEvent<HaRadioGroup>): void {
this._scope = ev.currentTarget.value;
}
private _checkedChanged(ev: HASSDomTargetEvent<HaCheckbox>): void {
this._checked = ev.target.checked;
}
private _valueChanged(ev: ValueChangedEvent<string>): void {
this._value = ev.detail.value;
}
private _itemSelected(ev: HASSDomEvent<{ id: string }>): void {
this._selectedId = ev.detail.id;
}
```
Use intersections when a handler needs more than one facet of an event. Keep the native event type when the handler reads native fields such as `key`, modifier keys, `dataTransfer`, or focus relationships:
```ts
private _entityChanged(
ev: ValueChangedEvent<string> & HASSDomCurrentTargetEvent<HaEntityPicker>
): void {
ev.currentTarget.value = ev.detail.value;
}
private _keyDown(
ev: KeyboardEvent & HASSDomCurrentTargetEvent<HTMLInputElement>
): void {
if (ev.key === "Enter") {
this._submit(ev.currentTarget.value);
}
}
```
Dispatch Home Assistant component events with `fireEvent()` instead of constructing `Event` or `CustomEvent` directly. Register the event name and detail type by augmenting `HASSDomEvents`; use `undefined` when an event has no detail. `fireEvent()` constrains event names and supplied detail, and events bubble and cross shadow boundaries by default:
```ts
fireEvent(this, "item-selected", { id: item.id });
fireEvent(this, "refresh-requested");
```
When an event is already registered, derive handler and listener types from its registration rather than repeating the payload shape:
```ts
private _itemSelected(
ev: HASSDomEvent<HASSDomEvents["item-selected"]>
): void {
this._selectedId = ev.detail.id;
}
```
`HASSDomEvents` types `fireEvent()` calls. Augment `HTMLElementEventMap` for typed listeners on HTML elements, or `GlobalEventHandlersEventMap` when the event is handled on global event targets.
In component files, prefer placing global event declarations after the class at the bottom of the file. Preserve the existing placement when editing established files; foundational type, helper, and mixin files commonly keep declarations near the top before their consumers.
```ts
declare global {
interface HASSDomEvents {
"item-selected": { id: string };
"refresh-requested": undefined;
}
interface HTMLElementEventMap {
"item-selected": HASSDomEvent<HASSDomEvents["item-selected"]>;
}
}
```
-128
View File
@@ -1,128 +0,0 @@
---
name: ha-frontend-gallery
description: Home Assistant frontend gallery structure, pages, demos, content, and verification. Use when changing files under gallery/, including gallery markdown, TypeScript demos, sidebar entries, mock data, page generation, or gallery builds.
---
# HA Frontend Gallery
Use this skill for all work under `gallery/`. Follow the persistent repository guidance in `AGENTS.md` and load the matching specialist skills alongside this gallery-specific guidance.
## Quick Reference
Run commands from the repository root unless noted otherwise:
```bash
gallery/script/develop_gallery # Start the gallery development server
gallery/script/build_gallery # Build the static gallery
pnpm lint # ESLint, Prettier, TypeScript, and Lit checks
pnpm lint:types # TypeScript compiler, without file arguments
```
Never run `pnpm lint:types` or `tsc` with file arguments. File arguments make `tsc` ignore `tsconfig.json` and can emit `.js` files into `src/`.
## Purpose
The gallery is a developer and designer reference for Home Assistant frontend UI patterns. It documents component APIs, shows realistic Lovelace and more-info states, captures brand and copy guidance, and provides reproducible demos that are safe to inspect outside a running Home Assistant instance.
- Prefer demonstrating real production components from `src/` instead of creating gallery-only replacements.
- Keep fake state, sample data, and demo-only helpers inside `gallery/`.
- Do not move gallery stubs or demo data into production code unless a production feature explicitly needs them.
- Do not hand-edit generated output under `gallery/build/` or `gallery/dist/`.
## Structure
- `gallery/sidebar.js`: Defines gallery sections, headers, and explicit page ordering.
- `gallery/script/develop_gallery`: Wrapper for the `develop-gallery` gulp task.
- `gallery/script/build_gallery`: Wrapper for the `build-gallery` gulp task.
- `gallery/src/entrypoint.js`: Creates the `<ha-gallery>` shell.
- `gallery/src/ha-gallery.ts`: Renders the drawer, page routing, markdown descriptions, demos, edit links, and RTL toggle.
- `gallery/src/html/index.html.template`: HTML template used by the gallery build.
- `gallery/src/pages/<category>/<page>.markdown`: Optional page description and frontmatter.
- `gallery/src/pages/<category>/<page>.ts`: Optional live demo module for the same page ID.
- `gallery/src/components/`: Gallery-only demo wrappers like `demo-card`, `demo-cards`, `demo-more-info`, and `page-description`.
- `gallery/src/data/`: Fake `hass`, demo states, mock traces, and reusable sample data.
- `gallery/public/`: Static assets copied into the gallery output.
## Page Model
Gallery pages are generated by `gather-gallery-pages` in `build-scripts/gulp/gallery.js`.
- A page ID is the path under `gallery/src/pages/` without the extension, like `components/ha-button`.
- A `.markdown` file and a `.ts` file with the same page ID become one gallery page.
- A page may have only markdown, only a TypeScript demo, or both.
- Markdown can contain YAML frontmatter with `title` and optional `subtitle`.
- Markdown that contains only frontmatter contributes metadata without rendering a description block.
- TypeScript demo modules are dynamically imported for side effects when the page is opened.
- A demo module must define a custom element named `demo-${category}-${page}` with slashes replaced by hyphens, like `demo-components-ha-button` for `components/ha-button`.
- `gallery/src/ha-gallery.ts` renders that element with `dynamicElement()` based on the current page ID.
## Sidebar
Use `gallery/sidebar.js` when a page needs a visible section, section header, or deterministic ordering.
- `category` must match the first directory name under `gallery/src/pages/`.
- `header` is the section label shown in the drawer.
- `pages` is optional. When present, listed pages keep that exact order.
- Pages in a category that are not listed are appended alphabetically after the listed pages.
- New categories without a sidebar entry are appended by the generator with their category name as the header.
- If a listed page does not exist, the generator logs an error during `gather-gallery-pages`.
### Subsections
A section can group its pages under named subsections instead of one flat list. Use this for large categories where related pages should sit together.
- `subsections` is an array of `{ header, pages }`. It is mutually exclusive with a flat `pages` array on the same group.
- Each subsection `header` is a non-collapsible label rendered inside the section's expansion panel; the section stays the only collapsible level.
- Listed pages keep their per-subsection order.
- Any pages found in the category but not listed in a subsection are collected into a generated `Other` subsection, appended alphabetically. The `Other` subsection is omitted when there are no leftovers.
- A listed page that does not exist still logs an error during `gather-gallery-pages`.
- Use sentence case for subsection headers and follow the content standards below.
## Markdown Pages
Use markdown pages for explanations, design guidance, API notes, and copy standards.
- Start with frontmatter when the page needs a title or subtitle.
- Use sentence case for titles, headings, labels, and UI copy.
- Put the live example before the reference API when that makes the page easier to scan.
- Use fenced code blocks with a language tag for copyable examples.
- Keep examples short and focused on the behavior being documented.
- Prefer real component names and attributes over prose-only descriptions.
- Use Home Assistant terminology from `ha-frontend-user-facing-text`.
- For remove/delete and add/create wording, follow `gallery/src/pages/misc/remove-delete-add-create.markdown`.
Gallery markdown is documentation content and is not localized with `localize`. If demo code creates production UI strings, follow the localization and copy guidance in `ha-frontend-user-facing-text`.
## Demo Components
Use TypeScript demo pages for interactive or stateful examples.
- Import production components from `src/` using the correct relative path from the demo file.
- Import reusable gallery helpers from `gallery/src/components/` when they already model the pattern.
- Use `demo-card` and `demo-cards` for Lovelace card examples that render YAML card configs.
- Use `demo-more-info` and `demo-more-infos` for more-info dialog examples.
- Use shared mock data from `gallery/src/data/` instead of repeating large fake state objects inline.
- Show meaningful states, such as loading, unavailable, empty, error, active, inactive, and disabled when relevant.
- Check responsive behavior and the gallery RTL toggle when layout or direction-sensitive UI changes.
- Keep unavoidable casts or loose demo parsing local to the demo helper or demo page.
The gallery ESLint config allows `console` for gallery diagnostics. Do not copy that exception into production frontend code.
## Content Standards
Follow the detailed copy standards in `ha-frontend-user-facing-text`: use American English, sentence case, active voice, inclusive language, direct user-focused wording, and consistent Home Assistant terminology.
- Use `Home Assistant` in full, not `HA` or `HASS`.
- Use `integration` instead of `component` for product concepts.
- Use `Remove` for reversible disassociation and `Delete` for permanent deletion.
- Use `Add` for existing items and `Create` for something made from scratch.
- Avoid Latin abbreviations like `e.g.` and `i.e.` in prose.
- Avoid stitching sentence fragments together in production UI examples.
## Verification
- For markdown, sidebar, and page-generation changes, run `gallery/script/build_gallery`.
- For TypeScript demo or gallery shell changes, run the smallest relevant check plus `pnpm lint` when practical.
- For type checking, run `pnpm lint:types` without file arguments.
- For visual changes, run `gallery/script/develop_gallery` and check the affected page on desktop, narrow viewport, and RTL when relevant.
- If verification is skipped, state which command was skipped and why.
-39
View File
@@ -1,39 +0,0 @@
---
name: ha-frontend-lit
description: Home Assistant frontend Lit conventions. Use when working with reactive properties, internal state, DOM queries, lifecycle methods, or render-derived state.
---
# HA Frontend Lit
Use this skill when implementing or reviewing Lit component state, DOM access, lifecycle methods, or rendering behavior. Cross-load `ha-frontend-types` for Home Assistant data contracts, assertions, and lifecycle parameter types.
## Reactive Fields
This project currently uses Lit's TypeScript experimental decorators with `useDefineForClassFields: false`. Match existing declarations and do not introduce standard-decorator `accessor` syntax unless the project changes decorator mode.
- Use `@property()` for public reactive API and `@state()` for private reactive state.
- Prefer inferred types for initialized reactive fields when inference preserves the intended type; annotate when widening or an external contract requires it.
## DOM Queries
Prefer Lit's `@query()` or `@queryAll()` decorators for fixed selectors in the component's render root.
- Type the decorated field with the narrowest useful DOM or component interface.
- Keep the field optional when it may be absent at the point of access, including conditional rendering or pre-render lifecycle access.
- Use a definite assignment assertion only when every call site runs after the node is guaranteed to exist.
- The optional second argument to `@query()`, as in `@query("#target", true)`, caches the first query result. Use it only when later renders cannot replace the queried node.
- Use a direct query when the selector is dynamic or the target is outside the component's render root. Before querying a child, consider whether the required value belongs in parent state or data flow.
## Render-Derived State
- Prefer render-local values for inexpensive structures used only by that render.
- Assign a render-local value once when repeated evaluation is non-trivial or a local name improves clarity.
- Keep purely presentational derivations in `render()`. Use stored state or `willUpdate()` when the value must participate in lifecycle work, reflection, CSS, or non-render consumers.
- Use `memoizeOne` for pure, argument-derived transforms when stable input identity avoids meaningful repeated work. Keep inputs explicit and limited, and do not add caching without a credible benefit over computing the value directly.
## References
- [Reactive properties](https://lit.dev/docs/components/properties/)
- [Decorators](https://lit.dev/docs/components/decorators/)
- [Shadow DOM queries](https://lit.dev/docs/components/shadow-dom/#query)
- [Reactive update cycle](https://lit.dev/docs/components/lifecycle/)
-127
View File
@@ -1,127 +0,0 @@
---
name: ha-frontend-review
description: Home Assistant frontend PR and review guidance, including implementation quality, existing review feedback, established design patterns, and the authority of UI/UX evidence. Use when reviewing frontend changes, preparing a PR, checking recurring review issues, or applying the PR template.
---
# HA Frontend Review
Use this skill when reviewing Home Assistant frontend changes or preparing a pull request.
## Review Preparation
1. Establish the review scope from the diff and the behavior changed by it.
2. Before identifying findings, use the [project skill catalogue](../../../AGENTS.md#project-skills) to load every matching companion's `SKILL.md`. Follow applicable companion references in those skills as well; this review skill supplies the workflow, and companions supply the domain-specific criteria.
3. Apply all loaded guidance within that scope. Report only problems introduced or worsened by the changeset, anchored to changed lines. Read surrounding code to understand affected behavior, not to generate unrelated cleanup or migration requests.
## Pull Request Body
When creating a pull request, use `.github/PULL_REQUEST_TEMPLATE.md` as the body.
- Do not omit, reorder, or rewrite template sections.
- Check the appropriate "Type of change" box based on the actual change.
- Do not check checklist items on behalf of the user.
- If the PR includes UI changes, remind the user to add screenshots or a short video.
- Explain what the change does for users, not only implementation details.
- Use Markdown.
## Pre-Submission Checklist
- `pnpm lint` passes when practical for the scope.
- `pnpm test` or focused relevant tests are green when practical for the scope.
- Each test added by the change protects real logic, not the look of a component.
- User-facing text is localized and follows `ha-frontend-user-facing-text` guidance.
- Components handle loading, error, unavailable, and missing-entity states.
- Entity existence is checked before property access.
- Event listeners and subscriptions are cleaned up.
- UI is accessible to screen readers and keyboard users.
## Recurring Review Issues
Scope and public surface:
- Keep changes independently reviewable and limited to the requested area.
- Prefer existing Home Assistant helpers, Lit primitives, and component seams over parallel implementations.
- Challenge new public properties and optional feature surface when transient options or existing seams meet the requirement with less lifecycle and consistency cost.
Stateful and asynchronous UI:
- Review transitions in both directions, not only individual rendered states.
- When controls reappear, restore valid defaults instead of retaining state that was only valid while they were hidden.
- Establish immutable dirty-state baselines before asynchronous work, guard against stale responses, and preserve unsaved state in mounted editors.
- Determine an action's current meaning before applying dirty-state checks, especially when an action can change between Save and Close.
Readiness and invalidation:
- Treat readiness as the first displayable terminal result, including stable empty and error states.
- Register child readiness before resolving the parent, do not treat fallback work as terminal, and replay readiness correctly for cached or reused panels.
- Ensure every value read by memoized output participates in its invalidation.
Repository-owned contracts:
- Consult the public [frontend contributor documentation](https://contributors.home-assistant.io/frontend/) for documented architecture, data flow, design, and development workflows.
- For new leaf components, load `ha-frontend-contexts` and verify they consume narrow contexts instead of introducing a broad `hass` property; containers and external APIs may still require `hass`.
- Verify backend assumptions against the owning Core, Supervisor, or WebSocket implementation, and component assumptions against the exported component contract.
- Prefer canonical repository helpers and test setup over duplicate local implementations.
- Promote AI-review concerns into durable guidance only when supported by code evidence, reproduced behavior, an accepted corrective commit, or human-maintainer validation.
User experience and accessibility:
- Forms need proper labels, helper text, and validation feedback.
- Form markup should not cause password managers to identify fields incorrectly.
- Clickable areas should be large enough for touch interaction.
- Hover, active, disabled, loading, and focus states should be clear.
Dialog and modal patterns:
- Multi-step operations should show progress.
- Dialog state should survive background operations correctly.
- Cancel and close buttons should behave consistently.
- Defaults should be helpful without blocking user override.
Component design patterns:
- Terminology should be consistent. Use words like "Join" or "Apply" instead of "Group" when that better matches the user action.
- Visual hierarchy should use appropriate font sizes, weights, and spacing ratios.
- Components should align to the design grid.
- Badges and indicators should be placed consistently.
Code quality:
- Null and undefined paths should be handled explicitly.
- Potentially undefined array and object access should be guarded.
- Event handlers, timers, observers, and subscriptions should be cleaned up.
Configuration and props:
- Make configuration fields optional when sensible.
- Provide reasonable defaults.
- Keep APIs extensible without adding speculative abstractions.
- Validate configuration before applying changes.
## UI/UX Evidence
For user-facing changes, establish the existing design context as part of frontend review:
- Treat an applicable gallery specification as the authoritative repository source for the documented component or interaction. Inspect its written guidance and demos when present.
- Note relevant production designs, approved designs, and shared `ha-*` components so the implementation can also be compared with established frontend behaviour.
- Require the applicable gallery documentation or demo to change when the implementation intentionally changes behaviour documented there.
- Prefer an established input layout or appropriate shared component over a raw input or ad hoc control.
- Treat explicit UI/UX approval, current repository guidance, and direct human or workflow instructions as stronger evidence than inference.
- Treat linked tasks as evidence of the problem and stated requirements, not automatic UI/UX approval.
- When the direction remains uncertain, search frontend pull requests that carry or previously carried **Needs UX**. Inspect their label history, comments, and reviews rather than relying on the current label alone.
- Judge relevant feedback by its content and surrounding discussion. When GitHub provides `author_association`, prioritise feedback marked `MEMBER`.
- Prefer recent feedback about similar interactions or components. Label removal can show that a workflow gate moved on, but does not prove approval without the surrounding discussion.
- Summarise the applicable guidance instead of maintaining a reviewer list or treating one historical decision as a permanent rule.
## Review Flow
- Before reviewing a pull request, read its existing comments, reviews, and threads, including their status, resolver, and Copilot resolution reason when available.
- Prioritise substantive human feedback, especially from authors marked `MEMBER`, and validate agent-generated feedback against the code and repository guidance.
- Do not duplicate unresolved findings as new inline comments; reference any that still need action in the review summary. Treat resolved feedback as closed only when the resolution reason or surrounding discussion supports that outcome; otherwise validate it against the current code before suppressing it. Respect **Won't fix** and **Incorrect** reasons.
- When a later commit addresses an unresolved thread, note in the review summary that it looks addressed, linking the thread and the commit, so it can be resolved. Do not report it as still open.
- Identify behavioral regressions, bugs, accessibility issues, and missing tests that `ha-frontend-testing` calls for first.
- Do not ask for new tests on visual components. If the visuals clearly changed and the PR has no screenshots or videos, suggest adding them instead.
- When the change adds something repository guidance rules out, such as a rendering test, open the comment with the removal ("Remove this test file") and cite the guidance in one sentence. Do not critique how the unwanted code is written, as that reads as a request to fix it.
- Record the applicable UI/UX evidence for user-facing changes, whether or not further input is needed.
- Keep style-only comments secondary unless they affect maintainability or user experience.
- Prefer small, direct fixes over large refactors during review follow-up.
@@ -1,78 +0,0 @@
---
name: ha-frontend-styling
description: Home Assistant frontend styling, theming, spacing, responsive layout, RTL, and View Transitions guidance. Use when editing CSS, layout, motion, or visual component structure.
---
# HA Frontend Styling
Use this skill when editing CSS, layout, visual hierarchy, theme integration, responsive behavior, RTL support, or view transitions.
## Theme And Layout Basics
- Use Home Assistant CSS custom properties instead of hardcoded colors.
- Use `--ha-space-*` spacing tokens instead of hardcoded spacing where possible.
- Keep components mobile-first and enhance for desktop.
- Keep layouts RTL-safe. Prefer logical properties when they fit.
- Prefer `ha-*` components and current Web Awesome wrappers.
- Avoid adding new legacy Material Web Components (`mwc-*`).
- Scope styles to the component. Do not rely on global styles for component internals.
Spacing tokens are defined in `src/resources/theme/core.globals.ts`. The scale runs from `--ha-space-1` at 4px through `--ha-space-20` at 80px in 4px increments. Common values are `--ha-space-2` at 8px, `--ha-space-4` at 16px, and `--ha-space-8` at 32px.
```ts
static get styles() {
return css`
:host {
padding: var(--ha-space-4);
color: var(--primary-text-color);
background-color: var(--card-background-color);
}
.content {
gap: var(--ha-space-2);
}
@media (max-width: 600px) {
:host {
padding: var(--ha-space-2);
}
}
`;
}
```
## Interaction States
- Make touch targets large enough for mobile.
- Provide clear hover, active, focus, disabled, loading, error, and unavailable states.
- Preserve keyboard navigation and visible focus indicators.
- Maintain WCAG AA contrast for text and essential UI affordances.
## View Transitions
Use the View Transitions API only for meaningful continuity between DOM states.
Core resources:
- Utility wrapper: `src/common/util/view-transition.ts`, `withViewTransition()`.
- Launch-screen fade example: `src/util/launch-screen.ts`.
- Animation keyframes: `src/resources/theme/animations.globals.ts`.
- Animation duration tokens: `src/resources/theme/core.globals.ts`.
Implementation rules:
- Use `withViewTransition()` for fallback behavior.
- Keep transitions simple. Subtle fades and crossfades usually work best.
- Use `--ha-animation-duration-fast`, `--ha-animation-duration-normal`, or `--ha-animation-duration-slow` for timing.
- Ensure each `view-transition-name` is unique at any given time.
- Remember only one view transition can run at a time.
- View transitions operate at document level and do not work inside Shadow DOM style isolation. For web components, set `view-transition-name` on `:host` or use document-level transitions.
- The root gets `view-transition-name: root` by default. Target `::view-transition-group(root)` to customize the default page transition.
## Review Checklist
- Styling uses theme variables and spacing tokens where practical.
- Layout is mobile-first and RTL-safe.
- Component styles are scoped.
- Interactive states are clear and accessible.
- Motion is subtle, tokenized, and respects reduced-motion behavior through existing globals.
-100
View File
@@ -1,100 +0,0 @@
---
name: ha-frontend-testing
description: Home Assistant frontend testing and validation workflow. Use when adding or updating tests, running lint, TypeScript checks, Vitest, Playwright e2e suites, dev servers, or chart-data benchmarks.
---
# HA Frontend Testing
Use this skill when choosing or running validation for frontend changes.
## Test Helpers
- Before adding or changing tests, inspect the relevant suite's existing helpers and fixtures. Reuse them instead of duplicating setup, test data, navigation, interactions, waits, or assertions.
- When the same test flow appears more than once, move it into the closest suite-local helper with a focused interface.
- Keep one-off test behaviour in the test unless a helper makes the intent materially clearer. Do not hide the behaviour under test behind broad, configurable abstractions.
## Core Commands
```bash
pnpm lint # ESLint + Prettier + TypeScript + Lit
pnpm format # Auto-fix ESLint + Prettier
pnpm lint:types # TypeScript compiler, run without file arguments
pnpm test # Vitest
pnpm build # Full production build
pnpm dev # App dev server
pnpm dev:serve # Local serving dev server
```
Never run `tsc` or `pnpm lint:types` with file arguments. File arguments make `tsc` ignore `tsconfig.json` and can emit `.js` files into `src/`.
For focused type feedback on one file, use editor diagnostics instead of a file-scoped `tsc` command.
## Production Builds
Production builds support foreground and managed background execution:
```bash
pnpm build # Full foreground build
pnpm build --background # Full managed background build
pnpm build --modern # Modern frontend_latest bundle only
pnpm build --modern --background # Modern managed background build
pnpm build --status
pnpm build --logs [--follow]
pnpm build --stop
```
Use `pnpm build --modern --background` for production bundle-size or browser performance comparisons that only need modern browser output. It runs the normal metadata and static preparation, minifies and compresses the modern `frontend_latest` bundle and shared static assets, and generates modern-only entry pages and service workers. It deliberately skips the legacy bundle and its service worker.
Do not pass `--help`, `--background`, or `--modern` to `script/build_frontend`; that raw script does not parse arguments and always starts the full foreground build. Use `pnpm build` for managed builds. App builds and development servers keep exclusive ownership of `hass_frontend/` for their lifetime.
Managed app, demo, gallery, and E2E app workflows share one lifetime lock, so only one build or development server can run at a time.
## When To Add Tests
- Write tests for code that computes something: data processing, utilities, config validation, and strategies.
- Do not write rendering tests. This includes views, panels, and components whose text, styles, slots, or option defaults are checked, or that only put context and helper data into a template.
- Do not try to cover every scenario, especially for behaviour that changes often.
- If you are not sure a test is useful, describe it and what it would catch, and let the user decide.
- Tests never talk to a real Home Assistant. Replace `callWS`, `callApi`, and the connection with fakes.
## Dev Servers
`pnpm dev` builds and watches the app, served by a running Home Assistant core configured through `development_repo`.
`pnpm dev:serve` also serves locally and supports `-c` for the core URL and `-p` for the port. The default is 8124, or 8123 in a devcontainer.
Dev server commands support `--background`, `--status`, `--stop`, and `--logs [--follow]`. `pnpm dev`, `pnpm dev:serve`, `pnpm dev:demo`, and `pnpm dev:gallery` also support `--fetch-translations`; this runs translation fetching, including first-time GitHub device authentication, under the workflow lock before starting the watcher. It works in foreground and background modes. Prefer managed background mode while iterating so the watcher stays available across test runs without occupying the terminal. `pnpm dev` and `pnpm dev:serve` share one managed process slot because both write the app output.
## Playwright E2E
Each suite has its own dev server port. Playwright reuses an existing server locally when its configured URL responds; otherwise it performs a slow full build. When a development watcher is being reused, rspack recompiles on save and reruns should not need a restart.
Start the relevant suite server, then run that suite:
| Suite | Background server | Test command |
| ------- | -------------------------------------------- | ----------------------- |
| App | `pnpm test:e2e:app:dev --background` on 8095 | `pnpm test:e2e:app` |
| Demo | `pnpm dev:demo --background` on 8090 | `pnpm test:e2e:demo` |
| Gallery | `pnpm dev:gallery --background` on 8100 | `pnpm test:e2e:gallery` |
The custom development wrappers use `/__ha_dev_status` to identify and manage their own suites. Playwright server reuse checks the configured URL instead. Wrapper start and stop operations are idempotent for a matching suite and reject an unrelated process occupying the port.
Local runs against a watched development server do not always match CI's clean build artifacts, environment, sharding, or worker configuration. Use background servers for the fast iteration loop, but confirm the relevant CI jobs complete successfully before considering E2E changes verified.
Use `-g "<title>" --project=chromium` to narrow a run. `pnpm test:e2e` runs suites sequentially when managed servers are unavailable to prevent cold builds racing over shared generated assets. Run suites directly; piping through output truncation hides progress and failures.
The app suite uses a stripped-down harness for e2e. Demo and gallery use their normal dev servers.
## Benchmarks
For chart data transforms such as history, statistics, energy, and downsampling, read and follow the complete workflow in `test/benchmarks/README.md` before making benchmark or optimization changes.
That workflow owns the baseline, noise analysis, guardrails, acceptance thresholds, and reporting requirements. In particular, optimizations must keep output bit-identical; never update snapshots or modify fixtures to make an optimization pass.
## Verification Selection
- Documentation-only change: no code test required unless examples or commands changed.
- Type-only or utility change: run focused Vitest if available, then `pnpm lint:types` if practical.
- Lit component change: run relevant tests plus lint or typecheck depending on scope.
- E2E-sensitive flow: start the relevant e2e dev server and run the narrow Playwright suite.
- Broad refactor: run `pnpm lint` and relevant test suites when practical.
-44
View File
@@ -1,44 +0,0 @@
---
name: ha-frontend-types
description: Home Assistant frontend TypeScript conventions. Use when defining or reviewing backend data contracts, optional schemas, shared types, assertions, or Lit lifecycle types.
---
# HA Frontend Types
Use this skill for Home Assistant-specific TypeScript contracts and type choices.
## Home Assistant Data Contracts
Verify data contracts against the source that owns them, such as Home Assistant Core, Supervisor, a WebSocket handler, or an exported component type. Do not shape a type around assumptions made by its current frontend consumers.
- Match required, optional, nullable, and defaulted fields to the producer and runtime contract. Preserve optional configuration fields when omission is supported and has defined behavior.
- Use distinct request and response types when their wire shapes differ.
- When changing a shared contract, check affected consumers, tests, fixtures, and mocks.
## Reuse Home Assistant Contracts
- Reuse the canonical Home Assistant type when one exists. Define shared contract types in the data or API module that owns them.
- Reuse types exported by components and helpers rather than reconstructing their payloads. For event types, follow `ha-frontend-events`.
- When one domain contract is used across modules, define and export it from the module that owns that contract.
Prefer an existing owning contract. Introduce a frontend-specific type when the frontend shape or boundary genuinely differs.
## Assertions
Prefer accurate types and runtime narrowing. Use assertions or TypeScript suppressions at boundaries where the runtime invariant is understood but cannot be expressed cleanly; keep them narrow and explain non-obvious invariants.
## Lit Lifecycle Types
For Lit lifecycle methods that receive changed properties, use `PropertyValues<this>` when the method only needs public reactive properties:
```ts
protected willUpdate(changedProperties: PropertyValues<this>) {
// ...
}
```
Use unparameterized `PropertyValues` when the method inspects private or protected reactive properties, which are not keys of `this`. Do not add assertions solely to retain `PropertyValues<this>`.
## Enforced Baseline
Use `import type` for type-only imports. This is enforced by the repository ESLint configuration.
@@ -1,98 +0,0 @@
---
name: ha-frontend-user-facing-text
description: Home Assistant frontend copy, localization, terminology, and user-facing text guidance. Use when adding or reviewing labels, buttons, dialogs, errors, translations, or UI strings.
---
# HA Frontend User-Facing Text
Use this skill for all user-facing text, translations, labels, buttons, dialog copy, errors, helper text, and review comments about wording.
## Localization
- All user-facing text must be translatable.
- Add translation keys to `src/translations/en.json` when introducing new strings.
- Use the localization system instead of inline user-visible strings.
- Prefer complete localized strings with placeholders over concatenating translated fragments.
- Give translators enough context through key naming and placeholders.
```ts
this._localize("ui.panel.config.updates.updates_refreshed", {
count: 5,
});
```
## Voice And Style
- Use American English.
- Use a friendly, informational tone.
- Address users directly with "you" and "your" when appropriate.
- Be inclusive, objective, and non-discriminatory.
- Be concise and clear.
- Use active voice.
- Avoid jargon where a familiar home automation term works.
- Always write "Home Assistant" in full. Do not use "HA" or "HASS" in user-facing copy.
- Spell out terms when possible.
- Use sentence case for titles, headings, buttons, labels, and UI elements.
- Use the Oxford comma in lists.
- Prefer "like" over "e.g." and "for example" over "i.e.".
- Avoid all caps for emphasis. Use wording, bold, or italics instead.
- Write for both technical and non-technical users.
Sentence case examples:
- Use: "Create new automation"
- Avoid: "Create New Automation"
- Use: "Device settings"
- Avoid: "Device Settings"
## Terminology
Use "integration" instead of "component" for user-facing product language unless referring to a frontend component in developer context.
Technical product terms are lowercase in prose: automation, entity, device, service.
## Delete, Remove, Create, Add
Use "Remove" for actions that can be restored or reapplied:
- Removing a user's permission.
- Removing a user from a group.
- Removing links between items.
- Removing a widget from a dashboard.
- Removing an item from a cart.
Use "Delete" for permanent, non-recoverable actions:
- Deleting a field.
- Deleting a value in a field.
- Deleting a task.
- Deleting a group.
- Deleting a permission.
- Deleting a calendar event.
Use "Add" for already-existing items:
- Adding a permission to a user.
- Adding a user to a group.
- Adding links between items.
- Adding a widget to a dashboard.
- Adding an item to a cart.
Use "Create" for something made from scratch:
- Creating a new field.
- Creating a new task.
- Creating a new group.
- Creating a new permission.
- Creating a new calendar event.
Create pairs with Delete. Add pairs with Remove.
## Review Checklist
- Text is localized.
- Copy uses sentence case.
- "Home Assistant" is written in full.
- Delete/Remove and Create/Add match recoverability and object lifecycle.
- Placeholders are used instead of string concatenation.
- The wording is concise and understandable without implementation knowledge.
@@ -1,44 +0,0 @@
---
name: ha-frontend-ux-readiness
description: Home Assistant frontend UI/UX readiness routing for new cards, badges, screens, and interaction patterns. Use it with `ha-frontend-review` to decide whether frontend review is enough or further UI/UX input is needed. Skip it for PRs already carrying Needs UX and for fixes or technical details that preserve an established experience.
---
# HA Frontend UI/UX Readiness
Use the design context and evidence gathered through `ha-frontend-review` to decide whether a change's UI/UX direction is settled and whether further UI/UX review should be recommended or is explicitly required. This skill routes the result; it does not repeat or replace implementation, accessibility, or frontend quality review.
## Early Exit
If the PR already carries the **Needs UX** label, reviewers have already decided to ask designers or UX reviewers for guidance. Do not use this skill to make that recommendation again.
## Triage
1. Apply `ha-frontend-review` and record its UI/UX evidence.
- Include the applicable gallery specification, production or approved designs, shared `ha-*` components, task requirements, historical feedback, and direct instructions.
- Keep the implementation review separate from this readiness decision.
2. Classify the user-facing decision.
- Existing-feature fixes and technical details normally remain with frontend review when they preserve the established experience.
- New cards, badges, screens, and interaction patterns normally need this readiness check.
3. Decide whether the evidence gathered during frontend review settles the direction.
- Frontend maintainer guidance, explicit UI/UX approval, current guidance, an established pattern, or a task that settles the material visual and interaction choices can settle the direction.
- Insufficient or conflicting evidence leaves the direction unresolved.
4. Select exactly one route below and state which frontend-review evidence supports it.
## Routes
- **Frontend review sufficient:** The change preserves the established experience, or the evidence settles the material visual and interaction choices. Cite that evidence and continue with `ha-frontend-review`.
- **UI/UX review recommended:** A new user experience has material design choices that remain unresolved. Identify the decision that needs input and recommend UI/UX review.
- **UI/UX review required:** A workflow rule or direct human instruction explicitly requires UI/UX review. Cite that evidence. A new design, task link, or lack of evidence is not enough on its own.
Frontend maintainer guidance, explicit UI/UX approval, established patterns, and task requirements inform the route. A task can settle requirements without settling the UI/UX. Recommend UI/UX review when important design choices remain unresolved.
## Reporting
Keep the result concise and use this structure:
- **Route:** Frontend review sufficient, UI/UX review recommended, or UI/UX review required
- **Established patterns:** relevant gallery specifications, production designs, and shared `ha-*` components for the next reviewer to compare
- **Supporting evidence:** approval, guidance, established patterns, task requirements, direct instructions, or the evidence gap or conflict
- **Next action:** the review action implied by the route
Separate whether the UI/UX direction is settled from whether the implementation is correct.
+34 -47
View File
@@ -1,52 +1,39 @@
[modern]
# Modern builds target recent browsers supporting the latest features to minimize transpilation, polyfills, etc.
# It is served to browsers meeting the following requirements:
# - released in the last 2 years + current alpha/beta versions
# - exclude dead browsers (no security maintenance for 2+ years)
# - exclude QQ, and UC browsers due to lack of sufficient feature support data
unreleased versions
last 2 years
not dead
# Support for dynamic import is the main litmus test for serving modern builds.
# Although officially a ES2020 feature, browsers implemented it early, so this
# enables all of ES2017 and some features in ES2018.
supports es6-module-dynamic-import
# Exclude Safari 11-12 because of a bug in tagged template literals
# https://bugs.webkit.org/show_bug.cgi?id=190756
# Note: Dropping version 11 also enables several more ES2018 features
not Safari < 13
not iOS < 13
# Exclude KaiOS, QQ, and UC browsers due to lack of sufficient feature support data
# Babel ignores these automatically, but we need here for Webpack to output ESM with dynamic imports
not KaiOS > 0
not QQAndroid > 0
not UCAndroid > 0
[legacy]
# Legacy builds are served when modern requirements are not met.
# Floors are pinned explicitly (not usage-based) so the support policy is
# deliberate and does not drift with global usage statistics, which do not
# represent old tablets and wall displays used as Home Assistant dashboards:
# - iOS/Safari >= 12: iPad Air 1 / mini 2 / mini 3 (last supported iOS).
# Older iPads (iPad 2/3/mini 1 on iOS 9.3, iPad 4 on iOS 10.3) cannot run
# the app: their engines lack custom elements, shadow DOM, and/or CSS grid.
# - Chrome >= 59: Fire OS 5 tablets (Fire 7/HD 8/HD 10 through ~2017) have
# their system WebView pinned at Chromium 59 and commonly run Fully Kiosk;
# also covers old kiosk browsers and no-longer-updating webviews above it.
# - Edge >= 79: all Chromium-based Edge. Costs nothing (above the Chrome
# floor); mainly catches Edge 109 on Windows 7/8.1 and update-frozen
# enterprise installs, whose engines can run the legacy build fine.
# - Firefox >= 94: the zero-cost floor, not a chased population — pinning it
# adds no babel transforms, core-js modules, or Lightning CSS prefixes to
# the output. Mozilla-supported Firefox (incl. current ESR) always matches
# [modern]; Firefox on old OSes is not supported (use Chrome 109 instead).
# If Firefox ever becomes the pin forcing extra output, raise it first.
# - Samsung >= 9: Samsung Internet on old Galaxy tablets
Chrome >= 59
ChromeAndroid >= 59
Edge >= 79
Firefox >= 94
FirefoxAndroid >= 94
iOS >= 12
Safari >= 12
Samsung >= 9
# Exclude unsupported browsers
not dead
[legacy-sw]
# Same as legacy, restricted to browsers that support service workers
# (currently resolves to the same set; guards the service worker build if the legacy floor ever drops below them)
Chrome >= 59 and supports serviceworkers
ChromeAndroid >= 59 and supports serviceworkers
Edge >= 79 and supports serviceworkers
Firefox >= 94 and supports serviceworkers
FirefoxAndroid >= 94 and supports serviceworkers
iOS >= 12 and supports serviceworkers
Safari >= 12 and supports serviceworkers
Samsung >= 9 and supports serviceworkers
[legacy]
# Legacy builds are served when modern requirements are not met and support browsers:
# - released in the last 7 years + current alpha/beta versionss
# - with global utilization above 0.05%
# The lattermost query ensures that support for popular old browsers is not dropped too early
# (e.g. IE 11, Android 4.4, or Samsung 4).
#
# In addition, legacy browsers must support some minimum features that cannot be polyfilled:
# - ES5 (strict mode)
# - web sockets to communicate with backend
# - inline SVG used widely in buttons, widgets, etc.
# - custom events used for most user interactions
# - CSS flexbox used in the majority of the layout
# Nearly all of these are redundant with the above rules.
# As of May 2023, only web sockets must be added to the query.
unreleased versions
last 7 years
> 0.05% and supports websockets
-1
View File
@@ -1 +0,0 @@
../.agents/skills
+2 -1
View File
@@ -1,4 +1,5 @@
FROM mcr.microsoft.com/devcontainers/python:3.14
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.148.1/containers/python-3/.devcontainer/base.Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/python:0-3.11
ENV \
DEBIAN_FRONTEND=noninteractive \
+1 -7
View File
@@ -5,15 +5,10 @@
"context": ".."
},
"appPort": "8124:8123",
"postCreateCommand": "./.devcontainer/post_create.sh",
"postStartCommand": "script/bootstrap",
"containerEnv": {
"DEV_CONTAINER": "1",
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
},
"remoteEnv": {
"NODE_OPTIONS": "--max_old_space_size=8192"
},
"customizations": {
"vscode": {
"extensions": [
@@ -21,8 +16,7 @@
"esbenp.prettier-vscode",
"runem.lit-plugin",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"yeion7.styled-global-variables-autocomplete"
"eamodio.gitlens"
],
"settings": {
"files.eol": "\n",
-22
View File
@@ -1,22 +0,0 @@
#!/bin/bash
# This script will run after the container is created
# add github cli
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
# Update package lists
sudo apt-get update
sudo apt upgrade -y
# Install necessary packages
sudo apt-get install -y libpcap-dev gh
# Display a message
echo "Post-create script has been executed successfully."
+130
View File
@@ -0,0 +1,130 @@
{
"extends": [
"airbnb-base",
"airbnb-typescript/base",
"plugin:@typescript-eslint/recommended",
"plugin:wc/recommended",
"plugin:lit/all",
"plugin:lit-a11y/recommended",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"ecmaFeatures": {
"modules": true
},
"sourceType": "module",
"project": "./tsconfig.json"
},
"settings": {
"import/resolver": {
"webpack": {
"config": "./webpack.config.cjs"
}
}
},
"globals": {
"__DEV__": false,
"__DEMO__": false,
"__BUILD__": false,
"__VERSION__": false,
"__STATIC_PATH__": false,
"__SUPERVISOR__": false,
"Polymer": true
},
"env": {
"browser": true,
"es6": true
},
"rules": {
"class-methods-use-this": "off",
"new-cap": "off",
"prefer-template": "off",
"object-shorthand": "off",
"func-names": "off",
"no-underscore-dangle": "off",
"strict": "off",
"no-plusplus": "off",
"no-bitwise": "error",
"comma-dangle": "off",
"vars-on-top": "off",
"no-continue": "off",
"no-param-reassign": "off",
"no-multi-assign": "off",
"no-console": "error",
"radix": "off",
"no-alert": "off",
"no-nested-ternary": "off",
"prefer-destructuring": "off",
"no-restricted-globals": [2, "event"],
"prefer-promise-reject-errors": "off",
"import/prefer-default-export": "off",
"import/no-default-export": "off",
"import/no-unresolved": "off",
"import/no-cycle": "off",
"import/extensions": [
"error",
"ignorePackages",
{
"ts": "never",
"js": "never"
}
],
"no-restricted-syntax": ["error", "LabeledStatement", "WithStatement"],
"object-curly-newline": "off",
"default-case": "off",
"wc/no-self-class": "off",
"no-shadow": "off",
"@typescript-eslint/camelcase": "off",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-shadow": ["error"],
"@typescript-eslint/naming-convention": [
"off",
{
"selector": "default",
"format": ["camelCase", "snake_case"],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": ["variable"],
"format": ["camelCase", "snake_case", "UPPER_CASE"],
"leadingUnderscore": "allow",
"trailingUnderscore": "allow"
},
{
"selector": "typeLike",
"format": ["PascalCase"]
}
],
"@typescript-eslint/no-unused-vars": "off",
"unused-imports/no-unused-vars": [
"error",
{
"vars": "all",
"varsIgnorePattern": "^_",
"args": "after-used",
"argsIgnorePattern": "^_",
"ignoreRestSiblings": true
}
],
"unused-imports/no-unused-imports": "error",
"lit/attribute-value-entities": "off",
"lit/no-template-map": "off",
"lit/no-native-attributes": "warn",
"lit/no-this-assign-in-render": "warn",
"lit-a11y/click-events-have-key-events": ["off"],
"lit-a11y/no-autofocus": "off",
"lit-a11y/alt-text": "warn",
"lit-a11y/anchor-is-valid": "warn",
"lit-a11y/role-has-required-aria-attrs": "warn"
},
"plugins": ["disable", "unused-imports"],
"processor": "disable/disable"
}
+1 -1
View File
@@ -67,7 +67,7 @@ DO NOT DELETE ANY TEXT from this template! Otherwise, your issue may be closed w
<!--
If your issue is about how an entity is shown in the UI, please add the state
and attributes for all situations with a screenshot of the UI.
You can find this information at `/config/tools/state`
You can find this information at `/developer-tools/state`
-->
```yaml
+8 -24
View File
@@ -7,17 +7,13 @@ body:
value: |
Make sure you are running the [latest version of Home Assistant][releases] before reporting an issue.
Please read our [issue reporting guide][reporting-issues] before submitting a report.
If you have a feature or enhancement request for the frontend, please [start an discussion][fr] instead of creating an issue.
If you have a feature or enhancement request for the frontend, please [start a discussion][fr] instead of creating an issue.
**Please not not report issues for custom cards.**
**Please do not report issues for custom cards.**
[fr]: https://github.com/orgs/home-assistant/discussions
[fr]: https://github.com/home-assistant/frontend/discussions
[releases]: https://github.com/home-assistant/home-assistant/releases
[reporting-issues]: https://www.home-assistant.io/help/reporting_issues/
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please verify that you've followed these steps
@@ -28,27 +24,23 @@ body:
required: true
- label: I have tried a different browser to see if it is related to my browser.
required: true
- label: I have tried reproducing the issue in [safe mode](https://www.home-assistant.io/blog/2023/11/01/release-202311/#restarting-into-safe-mode) to rule out problems with unsupported custom resources.
- type: markdown
attributes:
value: |
## The problem
- type: textarea
id: problem
validations:
required: true
attributes:
label: Describe the issue you are experiencing
description: Provide a clear and concise description of what the bug is.
- type: textarea
id: expected_behavior
validations:
required: true
attributes:
label: Describe the behavior you expected
description: Describe what you expected to happen or it should look/behave.
- type: textarea
id: steps_to_reproduce
validations:
required: true
attributes:
@@ -66,7 +58,6 @@ body:
value: |
## Environment
- type: input
id: core_version
validations:
required: true
attributes:
@@ -75,21 +66,18 @@ body:
description: >
Can be found in: [Settings -> About](https://my.home-assistant.io/redirect/info/).
- type: input
id: last_working_version
attributes:
label: What was the last working version of Home Assistant Core?
placeholder: core-
description: >
If known, otherwise leave blank.
- type: input
id: browser
attributes:
label: In which browser are you experiencing the issue?
label: In which browser are you experiencing the issue with?
placeholder: Google Chrome 88.0.4324.150
description: >
Provide the full name and don't forget to add the version!
- type: input
id: os
attributes:
label: Which operating system are you using to run this browser?
placeholder: macOS Big Sur (1.11)
@@ -101,16 +89,14 @@ body:
# Details
- type: textarea
id: entity_state
attributes:
label: State of relevant entities
description: >
If your issue is about how an entity is shown in the UI, please add the
state and attributes for all situations. You can find this
information in the Details view of the More info dialog.
state and attributes for all situations. You can find this information
at Developer Tools -> States.
render: txt
- type: textarea
id: configuration
attributes:
label: Problem-relevant frontend configuration
description: >
@@ -120,15 +106,13 @@ body:
passwords, private URLs and other credentials.
render: yaml
- type: textarea
id: javascript_errors
attributes:
label: JavaScript errors shown in your browser console/inspector
label: Javascript errors shown in your browser console/inspector
description: >
If you come across any JavaScript or other error logs, e.g., in your
If you come across any Javascript or other error logs, e.g., in your
browser console/inspector please provide them.
render: txt
- type: textarea
id: additional_information
attributes:
label: Additional information
description: >
+2 -5
View File
@@ -1,11 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Request a feature for the UI / Dashboards
url: https://github.com/orgs/home-assistant/discussions
about: Request a new feature for the Home Assistant frontend.
- name: Discuss UI or UX design
url: https://github.com/OpenHomeFoundation/ux-design/discussions
about: Share design feedback and discuss visual or UX changes with the design team.
url: https://github.com/home-assistant/frontend/discussions/category_choices
about: Request an new feature for the Home Assistant frontend.
- name: Report a bug that is NOT related to the UI / Dashboards
url: https://github.com/home-assistant/core/issues
about: This is the issue tracker for our frontend. Please report other issues in the backend ("core") repository.
-53
View File
@@ -1,53 +0,0 @@
name: Task
description: For staff only - Create a task
type: Task
body:
- type: markdown
attributes:
value: |
## ⚠️ RESTRICTED ACCESS
**This form is restricted to Open Home Foundation staff and authorized contributors only.**
If you are a community member wanting to contribute, please:
- For bug reports: Use the [bug report form](https://github.com/home-assistant/frontend/issues/new?template=bug_report.yml)
- For feature requests: Submit to [Feature Requests](https://github.com/orgs/home-assistant/discussions)
---
### For authorized contributors
Use this form to create tasks for development work, improvements, or other actionable items that need to be tracked.
- type: textarea
id: description
attributes:
label: Description
description: |
Provide a clear and detailed description of the task that needs to be accomplished.
Be specific about what needs to be done, why it's important, and any constraints or requirements.
placeholder: |
Describe the task, including:
- What needs to be done
- Why this task is needed
- Expected outcome
- Any constraints or requirements
validations:
required: true
- type: textarea
id: additional_context
attributes:
label: Additional context
description: |
Any additional information, links, research, or context that would be helpful.
Include links to related issues, research, prototypes, roadmap opportunities etc.
placeholder: |
- Roadmap opportunity: [link]
- Epic: [link]
- Feature request: [link]
- Technical design documents: [link]
- Prototype/mockup: [link]
- Dependencies: [links]
validations:
required: false
+12 -42
View File
@@ -21,14 +21,6 @@
-->
## Screenshots
<!--
If your PR includes visual changes, please add screenshots or a short video
showing the before and after. This helps reviewers understand the impact of
your changes.
Note: Remove this section if this PR has no visual changes.
-->
## Type of change
<!--
What type of change does your PR introduce to the Home Assistant frontend?
@@ -43,6 +35,16 @@
- [ ] Breaking change (fix/feature causing existing functionality to break)
- [ ] Code quality improvements to existing code or addition of tests
## Example configuration
<!--
Supplying a configuration snippet, makes it easier for a maintainer to test
your PR.
-->
```yaml
```
## Additional information
<!--
Details are important, and help maintainers processing your PR.
@@ -52,8 +54,6 @@
- This PR fixes or closes issue: fixes #
- This PR is related to issue or discussion:
- Link to documentation pull request:
- Link to developer documentation pull request:
- Link to backend pull request:
## Checklist
<!--
@@ -61,48 +61,18 @@
creating the PR. If you're unsure about any of them, don't hesitate to ask.
We're here to help! This is simply a reminder of what we are going to look
for before merging your code.
AI tools are welcome, but contributors are responsible for *fully*
understanding the code before submitting a PR.
-->
- [ ] I understand the code I am submitting and can explain how it works.
- [ ] The code change is tested and works locally.
- [ ] There is no commented out code in this PR.
- [ ] I have followed the [perfect PR recommendations][perfect-pr]
- [ ] Any generated code has been carefully reviewed for correctness and compliance with project standards.
- [ ] Tests have been added to verify that the new code works.
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated for [www.home-assistant.io][docs-repository]
<!--
This project is very active and we have a high turnover of pull requests.
Unfortunately, the number of incoming pull requests is higher than what our
reviewers can review and merge so there is a long backlog of pull requests
waiting for review. You can help here!
By reviewing another pull request, you will help raise the code quality of
that pull request and the final review will be faster. This way the general
pace of pull request reviews will go up and your wait time will go down.
When picking a pull request to review, try to choose one that hasn't yet
been reviewed.
Thanks for helping out!
-->
To help with the load of incoming pull requests:
- [ ] I have reviewed two other [open pull requests][prs] in this repository.
[prs]: https://github.com/home-assistant/frontend/pulls?q=is%3Aopen+is%3Apr+-author%3A%40me+-draft%3Atrue+sort%3Acreated-desc+review%3Anone+-status%3Afailure
<!--
Thank you for contributing <3
Below, some useful links you could explore:
-->
[docs-repository]: https://github.com/home-assistant/home-assistant.io
[perfect-pr]: https://contributors.home-assistant.io/start/pull-requests/#before-you-open-it
-27
View File
@@ -1,27 +0,0 @@
name: Build frontend target
description: Run a gulp build target
inputs:
target:
description: gulp target to run
required: true
github-token:
description: GitHub token for fetching nightly translations; omit to build English-only
default: ""
is-test:
description: Set IS_TEST for the build (skips source maps and compression)
default: "false"
rspack-cache:
description: rspack persistent cache mode ("readwrite", "readonly", or "" to disable)
default: ""
runs:
using: composite
steps:
- name: Build ${{ inputs.target }}
shell: bash
run: ./node_modules/.bin/gulp ${{ inputs.target }}
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
IS_TEST: ${{ inputs.is-test }}
RSPACK_CACHE: ${{ inputs.rspack-cache }}
-52
View File
@@ -1,52 +0,0 @@
name: Deploy to Netlify
description: Deploy a directory to Netlify (production when alias is empty, otherwise to the alias)
inputs:
dir:
description: Directory to deploy
required: true
alias:
description: Deploy alias; leave empty to deploy to production
default: ""
auth-token:
description: NETLIFY_AUTH_TOKEN
required: true
site-id:
description: NETLIFY_SITE_ID
required: true
outputs:
netlify_url:
description: The deployed URL
value: ${{ steps.deploy.outputs.netlify_url }}
unique_deploy_url:
description: The unique hash-based deployment URL for this specific build
value: ${{ steps.deploy.outputs.unique_deploy_url }}
runs:
using: composite
steps:
- name: Deploy to Netlify
id: deploy
shell: bash
env:
DIR: ${{ inputs.dir }}
ALIAS: ${{ inputs.alias }}
NETLIFY_AUTH_TOKEN: ${{ inputs.auth-token }}
NETLIFY_SITE_ID: ${{ inputs.site-id }}
run: |
# Execute the deployment
if [ -n "$ALIAS" ]; then
npx -y netlify-cli deploy --dir="$DIR" --alias "$ALIAS" --json > deploy_output.json
else
npx -y netlify-cli deploy --dir="$DIR" --prod --json > deploy_output.json
fi
# Collect the urls from the deployment output
NETLIFY_URL=$(jq -r '.url // .deploy_url' deploy_output.json)
SITE_NAME=$(jq -r '.site_name' deploy_output.json)
DEPLOY_ID=$(jq -r '.deploy_id' deploy_output.json)
UNIQUE_URL="https://${DEPLOY_ID}--${SITE_NAME}.netlify.app"
echo "netlify_url=$NETLIFY_URL" >> "$GITHUB_OUTPUT"
echo "unique_deploy_url=$UNIQUE_URL" >> "$GITHUB_OUTPUT"
@@ -1,41 +0,0 @@
name: Prepare dependencies
description: Install and cache the complete dependency tree
inputs:
node-modules-cache-key:
description: Prefix for the shared node_modules cache key
default: node-modules-v1
runs:
using: composite
steps:
- name: Check for complete dependency tree
id: dependencies
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
node_modules
~/.local/share/pnpm/store
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml', 'patches/**') }}
lookup-only: true
- name: Setup Node and install
if: steps.dependencies.outputs.cache-hit != 'true'
uses: ./.github/actions/setup
with:
cache: false
- name: Save complete dependency tree
if: steps.dependencies.outputs.cache-hit != 'true'
continue-on-error: true
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
node_modules
~/.local/share/pnpm/store
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml', 'patches/**') }}
-62
View File
@@ -1,62 +0,0 @@
name: Setup Node and install
description: Set up Node from .nvmrc and install pnpm dependencies
inputs:
immutable:
description: Pass --frozen-lockfile to pnpm install
default: "true"
cache:
description: Cache the pnpm store
default: "true"
node-modules-cache:
description: Restore the exact shared node_modules cache before installing
default: "false"
node-modules-cache-key:
description: Prefix for the shared node_modules cache key
default: node-modules-v1
runs:
using: composite
steps:
# The pnpm store is cached with node_modules because `pnpm licenses`
# (used by the license file generation) reads package metadata from it.
- name: Restore complete dependency tree
id: dependency-cache
if: inputs.node-modules-cache == 'true'
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
node_modules
~/.local/share/pnpm/store
key: >-
${{ inputs.node-modules-cache-key }}-${{ runner.os }}-${{ runner.arch }}-${{
hashFiles('.nvmrc', 'package.json', 'pnpm-lock.yaml', 'pnpm-workspace.yaml', 'patches/**') }}
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: ".nvmrc"
- name: Enable Corepack
shell: bash
run: corepack enable
- name: Get pnpm store directory
id: pnpm-store
if: inputs.cache == 'true' && (inputs.node-modules-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true')
shell: bash
run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"
- name: Cache pnpm store
if: steps.pnpm-store.outputs.path
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: pnpm-store-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: pnpm-store-${{ runner.os }}-${{ runner.arch }}-
- name: Install dependencies
if: inputs.node-modules-cache != 'true' || steps.dependency-cache.outputs.cache-hit != 'true'
shell: bash
run: pnpm install ${{ inputs.immutable == 'true' && '--frozen-lockfile' || '--no-frozen-lockfile' }}
-1
View File
@@ -1 +0,0 @@
../AGENTS.md
+11
View File
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
time: "06:00"
open-pull-requests-limit: 10
labels:
- Dependencies
- GitHub Actions
+19 -309
View File
@@ -1,321 +1,31 @@
# Path rules for .github/workflows/labeler.yaml, which runs actions/labeler on
# every pull request. A label is added when a pull request changes a matching
# file, and removed again when it no longer does, including one added by hand.
#
# Do not add these labels here. .github/scripts/label-content.mts applies and
# removes them from paths and code. A rule here would remove them whenever its
# paths don't match, even when the script's code check does:
#
# - Companion App
# - Home Assistant Link
# - Labs
# - Supervisor
Activity:
- changed-files:
- any-glob-to-any-file:
- src/panels/logbook/**
- src/panels/lovelace/**/*logbook*
- src/data/logbook.ts
Agents:
- changed-files:
- any-glob-to-any-file:
- "**/AGENTS.md"
- "**/CLAUDE.md"
- "**/GEMINI.md"
- .agents/**
- .claude/**
- .github/agents/**
- .github/copilot-instructions.md
- .github/hooks/**
- .github/instructions/**
- .github/plugin.json
- .github/plugin/**
- .github/prompts/**
- .github/skills/**
- .github/workflows/copilot-setup-steps.yml
AI:
- changed-files:
- any-glob-to-any-file:
- "src/panels/config/core/{ha-config-section-ai,ai-task-pref,mcp-pref}.ts"
- src/components/ha-suggest-with-ai-button.ts
- "src/data/{ai_task,llm}.ts"
Areas:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/areas/**
- src/data/area/**
- "src/data/{area_floor_picker,floor_registry,ws-area_registry,ws-floor_registry}.ts"
Automations:
- changed-files:
- any-glob-to-any-file:
- "src/panels/config/{automation,script,scene,blueprint}/**"
- src/components/automation/**
- src/components/trace/**
- src/data/trace*.ts
- "src/data/{automation,automation_i18n,script,script_i18n,scene,blueprint,trigger,condition,action}.ts"
Backups:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/backup/**
- src/data/backup*.ts
- src/onboarding/onboarding-restore-backup.ts
Build:
- changed-files:
- any-glob-to-any-file:
- build-scripts/**
- .browserslistrc
- gulpfile.js
Calendar:
- changed-files:
- any-glob-to-any-file:
- src/panels/calendar/**
- src/panels/lovelace/**/*calendar*
- src/data/calendar.ts
- build-scripts/**
- .browserslistrc
- gulpfile.js
Cast:
- changed-files:
- any-glob-to-any-file:
- cast/src/**
- src/cast/**
Connectivity:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/connectivity/**
- src/panels/config/tags/**
- "src/panels/config/integrations/integration-panels/{bluetooth,infrared,matter,modbus,mqtt,radio_frequency,serial,thread,zha,zwave_js}/**"
- "src/data/{bluetooth,infrared,matter,matter-lock,modbus,mqtt,otbr,radio_frequency,tag,thread,usb,zha,zwave_js,zwave_js-credentials}.ts"
Dashboards:
- changed-files:
- any-glob-to-any-file:
- src/panels/lovelace/**
- "src/panels/{home,climate,light,security,maintenance,map}/**"
- src/panels/config/lovelace/**
- "src/panels/config/dashboard/{dashboard-card,dialog-new-dashboard,show-dialog-new-dashboard}.ts"
- src/data/lovelace/**
- src/data/lovelace*.ts
- cast/src/**
- src/cast/**
Demo:
- changed-files:
- any-glob-to-any-file:
- demo/src/**
- src/fake_data/**
- demo/src/**
- src/fake_data/**
Design:
- changed-files:
- any-glob-to-any-file:
- gallery/src/**
- src/fake_data/**
- gallery/src/**
- src/fake_data/**
Dependencies:
- any:
- changed-files:
# Match when only these files are changed (i.e. don't match PRs that happen to add or remove packages)
- any-glob-to-all-files:
- package.json
- renovate.json
- pnpm-lock.yaml
- pnpm-workspace.yaml
- patches/**
- .nvmrc
# Dependabot and Renovate branches always match (i.e. compatibility tweaks by members considered minor)
- head-branch:
- "^renovate/"
- "^dependabot/"
Devices:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/devices/**
- src/data/device/device_registry.ts
- src/data/ws-device_registry.ts
Energy:
- changed-files:
- any-glob-to-any-file:
- src/panels/energy/**
- src/panels/config/energy/**
- src/panels/lovelace/cards/energy/**
- src/panels/lovelace/**/*energy*
- src/data/energy*.ts
Entities:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/entities/**
- src/data/entity/entity_registry*.ts
- src/data/ws-entity_registry_display.ts
- package.json
- renovate.json
- yarn.lock
- .yarn/**
- .yarnrc.yml
- .nvmrc
GitHub Actions:
- changed-files:
- any-glob-to-any-file:
- .github/actions/**
- .github/workflows/**
- .github/*.yml
- .github/workflows/**
- .github/*.yml
Helpers:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/helpers/**
- src/data/helpers_crud.ts
History:
- changed-files:
- any-glob-to-any-file:
- src/panels/history/**
- src/panels/lovelace/**/*history*
- src/data/history.ts
Integrations:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/integrations/**
- src/panels/config/application_credentials/**
- src/dialogs/config-flow/**
- src/data/application_credential.ts
- src/data/config_entries.ts
- "src/data/{config_flow,data_entry_flow,options_flow,sub_config_flow}.ts"
Labels:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/labels/**
- src/data/label/**
Landing Page:
- changed-files:
- any-glob-to-any-file:
- landing-page/**
Marketplace:
- changed-files:
- any-glob-to-any-file:
- src/panels/marketplace/**
- src/data/marketplace/**
- src/panels/config/integrations/offer-marketplace-uninstall.ts
Media:
- changed-files:
- any-glob-to-any-file:
- src/panels/media-browser/**
- src/components/media-player/**
- src/data/media_source.ts
Notifications:
- changed-files:
- any-glob-to-any-file:
- src/dialogs/notifications/**
- src/data/persistent_notification.ts
Onboarding:
- changed-files:
- any-glob-to-any-file:
- src/onboarding/**
- src/auth/**
- src/data/onboarding.ts
- src/data/auth.ts
People:
- changed-files:
- any-glob-to-any-file:
- "src/panels/config/{person,users}/**"
- "src/data/{person,user,ws-user}.ts"
Profile:
- changed-files:
- any-glob-to-any-file:
- src/panels/profile/**
Search:
- changed-files:
- any-glob-to-any-file:
- src/dialogs/quick-bar/**
- src/state/quick-bar-mixin.ts
- "src/data/{quick_bar,search}.ts"
Sidebar:
- changed-files:
- any-glob-to-any-file:
- src/components/ha-sidebar.ts
- src/dialogs/sidebar/**
System:
- changed-files:
- any-glob-to-any-file:
- "src/panels/config/{core,hardware,info,logs,network,repairs,storage}/**"
- src/panels/config/dashboard/ha-config-updates.ts
- "src/dialogs/{repairs-flow,restart}/**"
- "src/data/{analytics,entity_id_format,error_log,hardware,network,repairs,system_health,system_log,system_log_report,update}.ts"
"Tests: E2E":
- changed-files:
- any-glob-to-any-file:
- test/e2e/**
"Tests: App":
- changed-files:
- any-glob-to-any-file:
- test/e2e/app.spec.ts
- test/e2e/app/**
- test/e2e/playwright.app.config.ts
"Tests: Demo":
- changed-files:
- any-glob-to-any-file:
- test/e2e/demo.spec.ts
- test/e2e/playwright.demo.config.ts
"Tests: Design":
- changed-files:
- any-glob-to-any-file:
- test/e2e/gallery.spec.ts
- test/e2e/playwright.gallery.config.ts
"Tests: Unit":
- changed-files:
- any-glob-to-any-file:
- test/*.ts
- "test/!(e2e)/**"
Theming:
- changed-files:
- any-glob-to-any-file:
- src/resources/theme/**
- src/state/themes-mixin.ts
- src/common/dom/apply_themes_on_element.ts
- "src/data/{theme,ws-themes}.ts"
To-do:
- changed-files:
- any-glob-to-any-file:
- src/panels/todo/**
- src/panels/lovelace/**/*todo*
- src/data/todo.ts
Tools:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/tools/**
Voice:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/voice-assistants/**
- "src/dialogs/{voice-assistant-setup,voice-command-dialog}/**"
- src/components/ha-assist-chat.ts
- "src/data/{assist_pipeline,assist_satellite,conversation,stt,tts,wake_word}.ts"
Zones:
- changed-files:
- any-glob-to-any-file:
- src/panels/config/zone/**
- src/data/zone.ts
Supervisor:
- hassio/src/**
-289
View File
@@ -1,289 +0,0 @@
#!/usr/bin/env node
// Checks npm registry metadata for the direct dependencies in package.json:
// deprecation, source repository and provenance. On pull requests only newly
// added packages are checked, and a deprecated one fails the check. Scheduled
// and manual runs report on every direct dependency without failing. Invoked
// from the `npm-metadata` job in .github/workflows/dependency-review.yaml via
// actions/github-script:
//
// const { default: checkNpmMetadata } =
// await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-npm-metadata.mts`);
// await checkNpmMetadata({ github, context, core });
import type { Octokit } from "@octokit/rest";
import type {
Context,
Core,
GitHubScriptArgs,
PullRequestPayload,
} from "./github-script.d.ts";
import { withRetry } from "./github-retry.mts";
// Scheduled and manual runs have no pull request
type Payload = Partial<PullRequestPayload>;
type Section =
| "dependencies"
| "devDependencies"
| "optionalDependencies"
| "peerDependencies";
type PackageJson = Partial<Record<Section, Record<string, string>>>;
interface Dependency {
name: string;
// The package npm installs, which differs from name for npm: aliases
registryName: string;
version: string;
section: Section;
}
// The fields read from a version document on registry.npmjs.org
interface NpmManifest {
deprecated?: string;
repository?: string | { url?: string };
dist?: { attestations?: object };
}
interface Result {
name: string;
version: string;
section: Section;
skipped?: string;
deprecated?: string;
repository?: string;
provenance?: boolean;
}
const SECTIONS: Section[] = [
"dependencies",
"devDependencies",
"optionalDependencies",
"peerDependencies",
];
const EXACT_VERSION = /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;
const NPM_ALIAS = /^npm:((?:@[^/]+\/)?[^@]+)@(.+)$/;
const CONCURRENCY = 8;
// Returns undefined when the registry reports 404, and throws on any other
// failure so a registry outage fails the job instead of skipping the check.
const fetchJson = async <T,>(url: string): Promise<T | undefined> => {
const response = await fetch(url);
if (response.status === 404) {
return undefined;
}
if (!response.ok) {
throw new Error(
`Request to ${url} failed: ${response.status} ${response.statusText}`
);
}
return JSON.parse(await response.text());
};
const readPackageJson = async (
github: Octokit,
context: Context<Payload>,
ref: string
): Promise<PackageJson> => {
const { data } = await withRetry(`package.json lookup at ${ref}`, () =>
github.rest.repos.getContent({
...context.repo,
path: "package.json",
ref,
mediaType: { format: "raw" },
})
);
// The raw media type returns the file contents as a string, but Octokit
// types the response as the JSON form
if (typeof data !== "string") {
throw new Error("Expected raw package.json contents");
}
return JSON.parse(data);
};
const listDependencies = (pkg: PackageJson): Dependency[] =>
SECTIONS.flatMap((section) =>
Object.entries(pkg[section] ?? {}).map(([name, spec]) => {
// npm: aliases install another package, e.g. npm:[email protected]
const alias = spec.match(NPM_ALIAS);
return {
name,
registryName: alias?.[1] ?? name,
version: alias?.[2] ?? spec,
section,
};
})
);
const repositoryUrl = (repository: NpmManifest["repository"]) => {
const url = typeof repository === "string" ? repository : repository?.url;
return url?.replace(/^git\+/, "").replace(/\.git$/, "");
};
const checkPackage = async ({
name,
registryName,
version,
section,
}: Dependency): Promise<Result> => {
const result = {
name: registryName === name ? name : `${name} (npm:${registryName})`,
version,
section,
};
if (!EXACT_VERSION.test(version)) {
return { ...result, skipped: "not an exact version" };
}
const manifest = await fetchJson<NpmManifest>(
`https://registry.npmjs.org/${encodeURIComponent(registryName)}/${version}`
);
if (!manifest) {
return { ...result, skipped: "not found on the npm registry" };
}
return {
...result,
deprecated: manifest.deprecated,
repository: repositoryUrl(manifest.repository),
provenance: Boolean(manifest.dist?.attestations),
};
};
const checkAll = async (dependencies: Dependency[]) => {
const results: Result[] = [];
for (let i = 0; i < dependencies.length; i += CONCURRENCY) {
results.push(
// eslint-disable-next-line no-await-in-loop
...(await Promise.all(
dependencies.slice(i, i + CONCURRENCY).map(checkPackage)
))
);
}
return results;
};
const writeSummary = async (core: Core, heading: string, results: Result[]) => {
await core.summary
.addHeading(heading, 2)
.addTable([
[
"Package",
"Version",
"Section",
"Deprecated",
"Provenance",
"Repository",
].map((data) => ({ data, header: true })),
...results.map((result) =>
result.skipped
? [
result.name,
result.version,
result.section,
`skipped: ${result.skipped}`,
"-",
"-",
]
: [
result.name,
result.version,
result.section,
result.deprecated ? "yes" : "no",
result.provenance ? "yes" : "no",
result.repository ?? "none",
]
),
])
.write();
};
export default async function checkNpmMetadata({
github,
context,
core,
}: GitHubScriptArgs<Payload>) {
const pr = context.payload.pull_request;
if (!pr) {
const pkg = await readPackageJson(github, context, context.sha);
const results = await checkAll(listDependencies(pkg));
const flagged = (result: Result) =>
Number(
Boolean(result.skipped || result.deprecated || !result.repository)
);
results.sort(
(a, b) => flagged(b) - flagged(a) || a.name.localeCompare(b.name)
);
await writeSummary(core, "Direct dependencies", results);
return;
}
const [base, head] = await Promise.all([
readPackageJson(github, context, pr.base.sha),
readPackageJson(github, context, pr.head.sha),
]);
// Compare the packages npm installs, so pointing an npm: alias at another
// package counts as new, but moving a package between sections does not
const existing = new Set(
listDependencies(base).map(({ registryName }) => registryName)
);
const added = listDependencies(head).filter(
({ registryName }) => !existing.has(registryName)
);
if (added.length === 0) {
core.info("No new dependencies");
return;
}
const results = await checkAll(added);
const annotation = { file: "package.json" };
for (const result of results) {
const label = `${result.name}@${result.version}`;
if (result.skipped) {
core.warning(`${label}: ${result.skipped}, not checked`, annotation);
continue;
}
if (result.deprecated) {
core.error(`${label} is deprecated: ${result.deprecated}`, annotation);
}
if (!result.repository) {
core.warning(`${label} has no source repository`, annotation);
}
if (!result.provenance) {
core.notice(`${label} was published without provenance`, annotation);
}
}
await writeSummary(core, "New dependencies", results);
if (results.some((result) => result.deprecated)) {
core.setFailed("New dependencies must not be deprecated on npm");
}
}
@@ -1,220 +0,0 @@
#!/usr/bin/env node
// Checks that a pull request follows the contribution standards: it must use the
// PR template, tick exactly one "Type of change" option, and describe the change.
// Labels and comments the PR when it does not, and fails the check so it blocks
// merging. Invoked from the `check` job in .github/workflows/pull-request-standards.yaml
// via actions/github-script:
//
// const { default: checkStandards } =
// await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-pull-request-standards.mts`);
// await checkStandards({ github, context, core });
import type {
GitHubScriptArgs,
PullRequestPayload,
} from "./github-script.d.ts";
import { withRetry } from "./github-retry.mts";
export default async function checkPullRequestStandards({
github,
context,
core,
}: GitHubScriptArgs<PullRequestPayload>) {
const pr = context.payload.pull_request;
// Exempt bots (Copilot agent, dependabot), drafts, and maintainers.
if (pr.user.type === "Bot") {
core.info(`Skipping bot author: ${pr.user.login}`);
return;
}
if (pr.draft) {
core.info("Skipping draft pull request");
return;
}
try {
await withRetry("organization membership check", () =>
github.rest.orgs.checkMembershipForUser({
org: "home-assistant",
username: pr.user.login,
})
);
core.info(`Skipping organization member: ${pr.user.login}`);
return;
} catch (_error) {
core.info(
`${pr.user.login} is not an organization member, checking standards`
);
}
const label = "Needs Template";
const marker = "<!-- pr-standards-check -->";
const { owner, repo } = context.repo;
const issue_number = pr.number;
let body = pr.body || "";
let previous;
do {
previous = body;
body = body.replace(/<!--[\s\S]*?-->/g, "");
} while (body !== previous);
const normalized = body.toLowerCase();
// Ignore 404s from mutations that race manual edits or cancelled runs.
const ignoreMissing = async <T,>(fn: () => Promise<T>) => {
try {
await fn();
} catch (error) {
if (
typeof error === "object" &&
error !== null &&
"status" in error &&
error.status === 404
) {
core.info("Target already removed, nothing to do");
return;
}
throw error;
}
};
// Hide/restore our comment via GraphQL (REST cannot minimize).
const setMinimized = async (subjectId: string, minimized: boolean) => {
const mutation = minimized
? `mutation($id: ID!) {
minimizeComment(input: { subjectId: $id, classifier: RESOLVED }) {
clientMutationId
}
}`
: `mutation($id: ID!) {
unminimizeComment(input: { subjectId: $id }) {
clientMutationId
}
}`;
try {
await withRetry(`comment ${minimized ? "minimize" : "restore"}`, () =>
github.graphql(mutation, { id: subjectId })
);
} catch (error) {
core.info(
`Could not ${minimized ? "minimize" : "restore"} comment: ${error instanceof Error ? error.message : error}`
);
}
};
// Content of a "## <name>" section, or null when the heading is absent.
const section = (name: string) => {
const match = body.match(
new RegExp(`##\\s${name}([\\s\\S]*?)(?=\\n##\\s|$)`, "i")
);
return match ? match[1] : null;
};
const problems = [];
const requiredHeadings = [
"## proposed change",
"## type of change",
"## checklist",
];
if (requiredHeadings.some((h) => !normalized.includes(h))) {
problems.push(
"Use the pull request template without removing its sections."
);
}
const typeOfChange = section("type of change");
if (typeOfChange !== null) {
const ticked = (typeOfChange.match(/-\s*\[[xX]\]/g) || []).length;
if (ticked !== 1) {
problems.push('Select exactly one option under "Type of change".');
}
}
const proposedChange = section("proposed change");
if (proposedChange !== null && proposedChange.trim().length === 0) {
problems.push('Describe your changes under "Proposed change".');
}
const isValid = problems.length === 0;
const comments = await withRetry("comment list", () =>
github.paginate(github.rest.issues.listComments, {
owner,
repo,
issue_number,
per_page: 100,
})
);
const existing = comments.find((c) => c.body?.includes(marker));
const hasLabel = pr.labels.some((l) => l.name === label);
if (isValid) {
core.info("Pull request standards met");
if (hasLabel) {
await ignoreMissing(() =>
withRetry("label removal", () =>
github.rest.issues.removeLabel({
owner,
repo,
issue_number,
name: label,
})
)
);
}
if (existing) {
await setMinimized(existing.node_id, true);
}
return;
}
core.info(`Pull request standards not met:\n- ${problems.join("\n- ")}`);
if (!hasLabel) {
await withRetry("label addition", () =>
github.rest.issues.addLabels({
owner,
repo,
issue_number,
labels: [label],
})
);
}
const message =
`${marker}\n` +
`Hey @${pr.user.login}!\n\n` +
`Thank you for your contribution! To help reviewers, please update ` +
`this pull request to follow our pull request standards:\n\n` +
problems.map((p) => `- ${p}`).join("\n") +
`\n\n` +
`Please complete the ` +
`[PR template](https://github.com/home-assistant/frontend/blob/dev/.github/PULL_REQUEST_TEMPLATE.md?plain=1) ` +
`and see the [contributor docs](https://contributors.home-assistant.io/start/pull-requests/#fill-out-the-template) ` +
`for more on creating a great pull request.`;
if (existing) {
await withRetry("comment update", () =>
github.rest.issues.updateComment({
owner,
repo,
comment_id: existing.id,
body: message,
})
);
await setMinimized(existing.node_id, false);
} else {
// Not retried, as a retry after GitHub created the comment would post it twice
await github.rest.issues.createComment({
owner,
repo,
issue_number,
body: message,
});
}
// Fail this check so it can block the PR from being merged
core.setFailed(`Pull request standards not met:\n- ${problems.join("\n- ")}`);
}
@@ -1,68 +0,0 @@
#!/usr/bin/env node
// Restricts Task issues to organization members: closes and labels the issue with
// an explanatory comment when the author is not an org member. Invoked from the
// `check-authorization` job in .github/workflows/restrict-task-creation.yaml via
// actions/github-script:
//
// const { default: checkTaskAuthorization } =
// await import(`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-task-authorization.mts`);
// await checkTaskAuthorization({ github, context, core });
import type { GitHubScriptArgs, IssuePayload } from "./github-script.d.ts";
import { withRetry } from "./github-retry.mts";
export default async function checkTaskAuthorization({
github,
context,
core,
}: GitHubScriptArgs<IssuePayload>) {
const issueAuthor = context.payload.issue.user.login;
// Check if user is an organization member
try {
await withRetry("organization membership check", () =>
github.rest.orgs.checkMembershipForUser({
org: "home-assistant",
username: issueAuthor,
})
);
core.info(`✅ ${issueAuthor} is an organization member`);
return; // Authorized
} catch (_error) {
core.info(`❌ ${issueAuthor} is not authorized to create Task issues`);
}
// Close the issue with a comment. Not retried, as a retry after GitHub
// created the comment would post it twice.
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body:
`Hi @${issueAuthor}, thank you for your contribution!\n\n` +
`Task issues are restricted to Open Home Foundation staff and authorized contributors.\n\n` +
`If you would like to:\n` +
`- Report a bug: Please use the [bug report form](https://github.com/home-assistant/frontend/issues/new?template=bug_report.yml)\n` +
`- Request a feature: Please submit to [Feature Requests](https://github.com/orgs/home-assistant/discussions)\n\n` +
`If you believe you should have access to create Task issues, please contact the maintainers.`,
});
await withRetry("issue close", () =>
github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
state: "closed",
})
);
// Add a label to indicate this was auto-closed
await withRetry("auto-closed label", () =>
github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ["auto-closed"],
})
);
}
-69
View File
@@ -1,69 +0,0 @@
// Retries GitHub API requests with jittered exponential backoff. Shared by the
// workflow scripts in this directory, test/e2e/post-report-comment.mjs and the
// fetch-nightly-translations gulp task. Only wrap requests that are safe to
// repeat: a create that fails after GitHub has applied it would run twice.
//
// This replaces @octokit/plugin-retry, which only retries HTTP error statuses
// on a fixed 1s, 4s, 9s delay with no jitter or logging. GitHub can also
// answer 200 with briefly stale data, such as the nightly translations lookup
// returning an old run with no artifact, and the plugin cannot retry that.
// github-script also leaves its built-in retries off by default.
const RETRIES = 3;
const BASE_DELAY = 1000; // ms
const MAX_DELAY = 10000; // ms
const TRANSIENT_STATUSES = new Set([408, 429, 500, 502, 503, 504]);
// Throw from a request to retry a response GitHub may answer differently on
// the next attempt, such as briefly stale data
export class RetryableError extends Error {}
// Octokit reports network failures as status 500
const isRetryable = (err: unknown) => {
if (err instanceof RetryableError) {
return true;
}
if (!(err instanceof Error) || !("status" in err)) {
return false;
}
const status = Number(err.status);
return (
TRANSIENT_STATUSES.has(status) ||
(status === 403 && /rate limit/i.test(err.message))
);
};
export async function withRetry<T>(
label: string,
request: () => Promise<T>
): Promise<T> {
for (let attempt = 1; ; attempt++) {
try {
// eslint-disable-next-line no-await-in-loop
return await request();
} catch (err) {
if (attempt > RETRIES || !isRetryable(err)) {
throw err;
}
const delay =
Math.min(BASE_DELAY * 2 ** (attempt - 1), MAX_DELAY) *
(0.8 + Math.random() * 0.4);
// eslint-disable-next-line no-console
console.log(
`Retrying ${label} after ${(delay / 1000).toFixed(1)}s (attempt ${attempt}/${RETRIES}): ${err instanceof Error ? err.message : err}`
);
// eslint-disable-next-line no-await-in-loop
await new Promise((resolve) => {
setTimeout(resolve, delay);
});
}
}
}
-61
View File
@@ -1,61 +0,0 @@
// The arguments actions/github-script passes to the scripts in this directory,
// limited to the parts they use.
import type { Octokit } from "@octokit/rest";
export type SummaryTableCell = string | { data: string; header?: boolean };
export interface Summary {
addHeading(text: string, level?: number): Summary;
addRaw(text: string): Summary;
addTable(rows: SummaryTableCell[][]): Summary;
write(): Promise<Summary>;
}
export interface AnnotationProperties {
file?: string;
}
export interface Core {
info(message: string): void;
notice(message: string, properties?: AnnotationProperties): void;
warning(message: string, properties?: AnnotationProperties): void;
error(message: string, properties?: AnnotationProperties): void;
setFailed(message: string): void;
summary: Summary;
}
export interface User {
login: string;
type: string;
}
export interface PullRequestPayload {
pull_request: {
number: number;
body: string | null;
draft: boolean;
user: User;
labels: { name: string }[];
base: { sha: string };
head: { sha: string };
};
}
export interface IssuePayload {
issue: {
user: User;
};
}
export interface Context<Payload> {
sha: string;
repo: { owner: string; repo: string };
issue: { owner: string; repo: string; number: number };
payload: Payload;
}
export interface GitHubScriptArgs<Payload> {
github: Octokit;
context: Context<Payload>;
core: Core;
}
-56
View File
@@ -1,56 +0,0 @@
/**
* Builds a section of a workflow run's summary: a heading, a table of rows and
* the warnings raised along the way.
*
* Warnings are also logged as annotations, so a script can report problems
* without failing its step.
*/
import type { AnnotationProperties, Core } from "./github-script.d.ts";
interface SummaryOptions {
heading: string;
columns: string[];
// Shown instead of the table when no rows were added
empty: string;
}
export const createSummary = (
core: Core,
{ heading, columns, empty }: SummaryOptions
) => {
const rows: string[][] = [];
const warnings: string[] = [];
return {
addRow: (...cells: string[]) => {
rows.push(cells);
},
warn: (message: string, properties?: AnnotationProperties) => {
core.warning(message, properties);
warnings.push(message);
},
write: async () => {
core.summary.addHeading(heading, 2);
if (rows.length > 0) {
core.summary.addTable([
columns.map((data) => ({ data, header: true })),
...rows,
]);
} else {
core.summary.addRaw(`${empty}\n`);
}
if (warnings.length > 0) {
core.summary
.addHeading("Warnings", 3)
.addRaw(`${warnings.map((warning) => `- ${warning}`).join("\n")}\n`);
}
await core.summary.write();
},
};
};
-324
View File
@@ -1,324 +0,0 @@
#!/usr/bin/env node
/**
* Applies the Companion App, Home Assistant Link, Labs and Supervisor labels
* to pull requests.
*
* These areas are often changed from code outside their folders, which
* actions/labeler can't see, so this script owns them and .github/labeler.yml
* leaves them out.
*
* A label matches when the pull request:
* - changes a file in one of the area's paths, or
* - adds or removes a line that uses the area's API, such as gating a feature
* behind Labs or only showing it on Supervisor installs.
*
* Like actions/labeler, a label is removed once the pull request no longer
* matches, including one added by hand.
*
* Invoked from the `triage` job in .github/workflows/labeler.yaml.
*/
import type {
GitHubScriptArgs,
PullRequestPayload,
} from "./github-script.d.ts";
import { withRetry } from "./github-retry.mts";
import { createSummary } from "./github-summary.mts";
const RULES: { label: string; paths: RegExp[]; pattern: RegExp }[] = [
{
label: "Companion App",
paths: [
/^src\/external_app\//,
/^src\/data\/external\.ts$/,
/^src\/util\/is_ios\.ts$/,
],
// Reads or messages the companion app the frontend is running in, or
// imports its modules. Matches imports of data/external rather than
// isExternal, which is also a common local name.
pattern:
/\bauth\??\.external\b(?:[!?]*\.\w+)*(?:\([^)]*)?|\bfireExternalBusMessage\([^)]*|(?:\bimport\s[^;]*?from\s*|\bimport\(\s*)["'][^"']*\/(?:external_app\/[^"']*|data\/external)["']/g,
},
{
label: "Home Assistant Link",
paths: [
/^src\/panels\/config\/cloud\//,
/^src\/data\/cloud\//,
/^src\/data\/cloud\.ts$/,
],
// Only runs when Home Assistant Link is set up
pattern: /isComponentLoaded\([^)]*["']cloud["']/g,
},
{
label: "Labs",
paths: [/^src\/panels\/config\/labs\//, /^src\/data\/labs\.ts$/],
// Gates a feature behind, or toggles, a Labs preview feature
pattern:
/\b(?:subscribeLabFeatures?|fetchLabFeatures|labsUpdatePreviewFeature)\([^)]*/g,
},
{
label: "Supervisor",
paths: [
/^src\/panels\/config\/apps\//,
/^src\/panels\/app\//,
/^src\/data\/hassio\//,
/^src\/data\/supervisor\//,
],
// Only runs on installs with the Supervisor
pattern: /isComponentLoaded\([^)]*["']hassio["']/g,
},
];
interface HunkSide {
lines: string[];
changed: boolean[];
}
interface CodeChange {
code: string;
filename: string;
}
const parseHunks = (patch: string) => {
const hunks: { before: HunkSide; after: HunkSide }[] = [];
for (const line of patch.split("\n")) {
if (line.startsWith("@@")) {
hunks.push({
before: { lines: [], changed: [] },
after: { lines: [], changed: [] },
});
continue;
}
const hunk = hunks.at(-1);
if (!hunk || line.startsWith("\\")) {
continue;
}
const text = line.slice(1);
if (!line.startsWith("+")) {
hunk.before.lines.push(text);
hunk.before.changed.push(line.startsWith("-"));
}
if (!line.startsWith("-")) {
hunk.after.lines.push(text);
hunk.after.changed.push(line.startsWith("+"));
}
}
return hunks;
};
// Ignores whitespace and trailing commas outside strings, as Prettier changes
// them when wrapping
const normaliseCode = (code: string) => {
const parts = code.split(
/("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*'|`(?:[^`\\]|\\.)*`)/
);
return parts
.map((part, i) => {
if (i % 2 === 1) {
return part;
}
const stripped = part.replace(/\s+/g, "").replace(/,(?=[}\])])/g, "");
return i === parts.length - 1 ? stripped.replace(/,$/, "") : stripped;
})
.join("");
};
// Matches whole calls, which can span lines, that touch a changed line
const changedMatches = (side: HunkSide, pattern: RegExp) => {
const text = side.lines.join("\n");
const matches: string[] = [];
for (const match of text.matchAll(pattern)) {
const first = text.slice(0, match.index).split("\n").length - 1;
const last = first + match[0].split("\n").length - 1;
if (side.changed.slice(first, last + 1).some(Boolean)) {
matches.push(normaliseCode(match[0]));
}
}
return matches;
};
// Matches that were only moved, reindented or reformatted cancel out in pairs,
// returning a file with a match that doesn't
const unmatchedChange = (added: CodeChange[], removed: CodeChange[]) => {
const remaining = [...removed];
for (const change of added) {
const index = remaining.findIndex(({ code }) => code === change.code);
if (index === -1) {
return change.filename;
}
remaining.splice(index, 1);
}
return remaining[0]?.filename;
};
const describeError = (cause: unknown) =>
cause instanceof Error ? cause.message : String(cause);
const isNotFound = (cause: unknown) =>
cause instanceof Error && "status" in cause && cause.status === 404;
export default async function labelContent({
github,
context,
core,
}: GitHubScriptArgs<PullRequestPayload>) {
const pr = context.payload.pull_request;
const summary = createSummary(core, {
heading: "Content labels",
columns: ["Label", "Change", "Reason"],
empty: "No content labels changed.",
});
if (process.env.LABELER_OUTCOME === "failure") {
summary.warn(
"Applying labels from .github/labeler.yml failed, see its step"
);
}
// Bot pull requests, such as Prettier bumps, rewrite code they don't change
const checkCode = pr.user.type !== "Bot";
const { owner, repo } = context.repo;
let files;
let existing: Set<string>;
try {
// Read the current labels, as the event's snapshot can be stale by now
const [fileList, labels] = await Promise.all([
withRetry("pull request files", () =>
github.paginate(github.rest.pulls.listFiles, {
owner,
repo,
pull_number: pr.number,
per_page: 100,
})
),
withRetry("pull request labels", () =>
github.paginate(github.rest.issues.listLabelsOnIssue, {
owner,
repo,
issue_number: pr.number,
per_page: 100,
})
),
]);
files = fileList;
existing = new Set(labels.map((l) => l.name));
} catch (error) {
summary.warn(
`Could not read the pull request's files and labels: ${describeError(error)}`
);
await summary.write();
return;
}
const add: { label: string; reason: string }[] = [];
const remove: string[] = [];
for (const rule of RULES) {
const added: CodeChange[] = [];
const removed: CodeChange[] = [];
if (checkCode) {
for (const { filename, patch } of files) {
for (const { before, after } of parseHunks(patch ?? "")) {
for (const code of changedMatches(after, rule.pattern)) {
added.push({ code, filename });
}
for (const code of changedMatches(before, rule.pattern)) {
removed.push({ code, filename });
}
}
}
}
// Renames count for both locations, as moving a file out of an area changes it
const match =
files.find(({ filename, previous_filename }) =>
rule.paths.some(
(path) =>
path.test(filename) ||
(previous_filename !== undefined && path.test(previous_filename))
)
)?.filename ?? unmatchedChange(added, removed);
if (match && !existing.has(rule.label)) {
core.info(`Adding ${rule.label} for ${match}`);
add.push({ label: rule.label, reason: match });
} else if (!match && existing.has(rule.label)) {
core.info(`Removing ${rule.label}, no longer matched`);
remove.push(rule.label);
}
}
const removals = await Promise.allSettled(
remove.map((name) =>
withRetry("label removal", () =>
github.rest.issues.removeLabel({
owner,
repo,
issue_number: pr.number,
name,
})
)
)
);
removals.forEach((removal, i) => {
const name = remove[i];
// Already removed, such as by hand or a run that raced this one
if (removal.status === "fulfilled" || isNotFound(removal.reason)) {
summary.addRow(name, "Removed", "No longer matched");
} else {
summary.warn(
`Could not remove ${name}: ${describeError(removal.reason)}`
);
}
});
if (add.length > 0) {
try {
await withRetry("label addition", () =>
github.rest.issues.addLabels({
owner,
repo,
issue_number: pr.number,
labels: add.map(({ label }) => label),
})
);
for (const { label, reason } of add) {
summary.addRow(label, "Added", reason);
}
} catch (error) {
summary.warn(
`Could not add ${add.map(({ label }) => label).join(", ")}: ${describeError(error)}`
);
}
}
await summary.write();
}
-19
View File
@@ -1,19 +0,0 @@
{
"compilerOptions": {
"target": "ES2024",
"lib": ["ES2024"],
"module": "NodeNext",
"moduleResolution": "NodeNext",
// actions/github-script imports these directly, relying on Node's type stripping
"erasableSyntaxOnly": true,
"allowImportingTsExtensions": true,
"verbatimModuleSyntax": true,
"noEmit": true,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"skipLibCheck": true,
"types": ["node"]
},
"include": ["*.mts", "*.d.ts"]
}
-42
View File
@@ -1,42 +0,0 @@
name: Lint workflow files
on:
push:
branches:
- dev
- master
paths:
- ".github/actions/**"
- ".github/workflows/**"
pull_request:
branches:
- dev
- master
paths:
- ".github/actions/**"
- ".github/workflows/**"
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
actionlint:
name: Check workflow files
runs-on: ubuntu-latest
env:
# renovate: datasource=github-releases depName=rhysd/actionlint
ACTIONLINT_VERSION: 1.7.12
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Run actionlint
run: |
curl -sSfL "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" \
| tar -xz actionlint
./actionlint -color
+38 -32
View File
@@ -8,9 +8,6 @@ on:
branches:
- master
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
@@ -18,62 +15,71 @@ jobs:
deploy_dev:
runs-on: ubuntu-latest
name: Deploy Development
if: github.repository == 'home-assistant/frontend' && github.event_name != 'push'
if: github.event_name != 'push'
environment:
name: Cast Development
url: ${{ steps.deploy.outputs.netlify_url }}
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
with:
ref: dev
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Cast
uses: ./.github/actions/build
with:
target: build-cast
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-cast
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: cast/dist
alias: dev
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_CAST_SITE_ID }}
args: deploy --dir=cast/dist --alias dev
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_CAST_SITE_ID }}
deploy_master:
runs-on: ubuntu-latest
name: Deploy Production
if: github.repository == 'home-assistant/frontend' && github.event_name == 'push'
if: github.event_name == 'push'
environment:
name: Cast Production
url: ${{ steps.deploy.outputs.netlify_url }}
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
with:
ref: master
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Cast
uses: ./.github/actions/build
with:
target: build-cast
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-cast
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: cast/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_CAST_SITE_ID }}
args: deploy --dir=cast/dist --prod
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_CAST_SITE_ID }}
+50 -95
View File
@@ -1,7 +1,6 @@
name: CI
on:
workflow_dispatch:
push:
branches:
- dev
@@ -13,138 +12,94 @@ on:
env:
NODE_OPTIONS: --max_old_space_size=6144
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
prepare-dependencies:
name: Prepare dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Prepare dependencies
uses: ./.github/actions/prepare-dependencies
lint:
name: Lint and check format
needs: prepare-dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
- name: Setup Node
uses: actions/[email protected]
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Check for duplicate dependencies
run: pnpm dedupe --check
run: yarn dedupe --check
- name: Build resources
id: build_resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup lint cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
uses: actions/cache@v3.3.2
with:
path: |
node_modules/.cache/prettier
node_modules/.cache/eslint
node_modules/.cache/typescript
key: lint-${{ github.sha }}
restore-keys: lint-
- name: Run eslint
run: pnpm run lint:eslint --quiet
run: yarn run lint:eslint --quiet
- name: Run tsc
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: pnpm run lint:types
- name: Run lit-analyzer
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: pnpm run lint:lit --quiet
run: yarn run lint:types
- name: Run prettier
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: pnpm run lint:prettier
- name: Check dependency licenses
if: ${{ !cancelled() && steps.build_resources.outcome == 'success' }}
run: pnpm run lint:licenses
- name: Check the bundled map sprite sheet
if: ${{ !cancelled() }}
run: ./node_modules/.bin/gulp check-map-sprites
run: yarn run lint:prettier
test:
name: Run tests
needs: prepare-dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
- name: Setup Node
uses: actions/[email protected]
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-translations build-locale-data
- name: Run Tests
run: pnpm run test
run: yarn run test
build:
name: Build frontend
needs:
- lint
- test
needs: [lint, test]
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
- name: Setup Node
uses: actions/[email protected]
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
# Read-only reuse of the rspack cache written by the nightly (see
# nightly.yaml). rspack itself decides what is still valid (version +
# buildDependencies + node_modules snapshot), so the GHA key just restores
# the latest nightly cache; no fingerprint, and no save step (CI never
# writes the shared cache).
- name: Restore rspack cache
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspack-cache
key: rspack-cache-${{ runner.os }}-${{ github.run_id }}
restore-keys: |
rspack-cache-${{ runner.os }}-
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Application
uses: ./.github/actions/build
run: ./node_modules/.bin/gulp build-app
env:
IS_TEST: "true"
supervisor:
name: Build supervisor
needs: [lint, test]
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/[email protected]
- name: Setup Node
uses: actions/[email protected]
with:
target: build-app
github-token: ${{ secrets.GITHUB_TOKEN }}
is-test: true
rspack-cache: readonly
- name: Upload bundle stats
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: frontend-bundle-stats
path: build/stats/*.json
if-no-files-found: error
- name: Check entrypoint bundle size budget
run: pnpm run check-bundlesize
- name: Upload frontend build
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: frontend-build
path: hass_frontend/
if-no-files-found: error
retention-days: 7
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Application
run: ./node_modules/.bin/gulp build-hassio
env:
IS_TEST: "true"
-43
View File
@@ -1,43 +0,0 @@
name: "CodeQL"
on:
push:
branches:
- dev
- master
pull_request:
# The branches below must be a subset of the branches above
branches:
- dev
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
contents: read # To check out the repository
security-events: write # To upload CodeQL results
steps:
- name: Check out code from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
with:
languages: javascript-typescript
build-mode: none
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
with:
category: "/language:javascript-typescript"
+60
View File
@@ -0,0 +1,60 @@
name: "CodeQL"
on:
push:
branches: [dev, master]
pull_request:
# The branches below must be a subset of the branches above
branches: [dev]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ["javascript"]
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/[email protected]
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
-34
View File
@@ -1,34 +0,0 @@
name: Copilot Setup Steps
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
with:
node-modules-cache: true
- name: Skip fetching nightly translations
run: echo "SKIP_FETCH_NIGHTLY_TRANSLATIONS=1" >> "$GITHUB_ENV"
- name: Build resources
run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages
+38 -31
View File
@@ -9,9 +9,6 @@ on:
- dev
- master
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
@@ -19,61 +16,71 @@ jobs:
deploy_dev:
runs-on: ubuntu-latest
name: Demo Development
if: github.repository == 'home-assistant/frontend' && (github.event_name != 'push' || github.ref_name != 'master')
if: github.event_name != 'push' || github.ref_name != 'master'
environment:
name: Demo Development
url: ${{ steps.deploy.outputs.unique_deploy_url }}
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
with:
ref: dev
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Demo
uses: ./.github/actions/build
with:
target: build-demo
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-demo
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: demo/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_DEMO_DEV_SITE_ID }}
args: deploy --dir=demo/dist --prod
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_DEMO_DEV_SITE_ID }}
deploy_master:
runs-on: ubuntu-latest
name: Demo Production
if: github.repository == 'home-assistant/frontend' && github.event_name == 'push' && github.ref_name == 'master'
if: github.event_name == 'push' && github.ref_name == 'master'
environment:
name: Demo Production
url: ${{ steps.deploy.outputs.netlify_url }}
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@v4.1.0
with:
ref: master
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Demo
uses: ./.github/actions/build
with:
target: build-demo
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-demo
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: demo/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_DEMO_SITE_ID }}
args: deploy --dir=demo/dist --prod
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_DEMO_SITE_ID }}
-55
View File
@@ -1,55 +0,0 @@
name: Dependency review
on:
pull_request:
branches:
- dev
paths:
- package.json
- pnpm-lock.yaml
- pnpm-workspace.yaml
schedule:
- cron: "0 6 1 * *" # Monthly report on all direct dependencies
workflow_dispatch:
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
dependency-review:
name: Review dependency changes
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
contents: read # To compare the dependency graph between base and head
steps:
- name: Dependency review
uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
with:
license-check: false # Covered by pnpm lint:licenses
fail-on-severity: high
show-openssf-scorecard: true
warn-on-openssf-scorecard-level: 3
npm-metadata:
name: Check npm metadata
runs-on: ubuntu-latest
permissions:
contents: read # To read package.json
steps:
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Check npm metadata
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { default: checkNpmMetadata } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-npm-metadata.mts`
);
await checkNpmMetadata({ github, context, core });
+18 -18
View File
@@ -5,38 +5,38 @@ on:
schedule:
- cron: "0 0 * * *"
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
jobs:
deploy:
if: github.repository == 'home-assistant/frontend'
runs-on: ubuntu-latest
environment:
name: Design
url: ${{ steps.deploy.outputs.netlify_url }}
url: ${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
uses: actions/checkout@v4.1.0
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Gallery
uses: ./.github/actions/build
with:
target: build-gallery
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-gallery
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: gallery/dist
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
args: deploy --dir=gallery/dist --prod
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
+19 -18
View File
@@ -10,9 +10,6 @@ on:
branches:
- dev
permissions:
contents: read
env:
NODE_OPTIONS: --max_old_space_size=6144
@@ -24,27 +21,31 @@ jobs:
if: github.repository == 'home-assistant/frontend' && contains(github.event.pull_request.labels.*.name, 'needs design preview')
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
uses: actions/checkout@v4.1.0
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install --immutable
- name: Build Gallery
uses: ./.github/actions/build
with:
target: build-gallery
github-token: ${{ secrets.GITHUB_TOKEN }}
run: ./node_modules/.bin/gulp build-gallery
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy preview to Netlify
id: deploy
uses: ./.github/actions/netlify-deploy
uses: netlify/actions/cli@master
with:
dir: gallery/dist
alias: deploy-preview-${{ github.event.number }}
auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site-id: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
args: deploy --dir=gallery/dist --alias "deploy-preview-${{ github.event.number }}"
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_GALLERY_SITE_ID }}
- name: Generate summary
run: echo "${{ steps.deploy.outputs.netlify_url }}" >> "$GITHUB_STEP_SUMMARY"
run: |
echo "${{ steps.deploy.outputs.NETLIFY_LIVE_URL || steps.deploy.outputs.NETLIFY_URL }}" >> "$GITHUB_STEP_SUMMARY"
-396
View File
@@ -1,396 +0,0 @@
name: E2E Tests
on:
push:
branches:
- dev
- master
pull_request:
branches:
- dev
- master
workflow_dispatch:
env:
NODE_OPTIONS: --max_old_space_size=6144
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
prepare-dependencies:
name: Prepare dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Prepare dependencies
uses: ./.github/actions/prepare-dependencies
prepare-container-dependencies:
name: Prepare container dependencies
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.64.1-noble
options: --user 1001
defaults:
run:
shell: bash
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Prepare dependencies
uses: ./.github/actions/prepare-dependencies
with:
node-modules-cache-key: node-modules-container-v1
# ── Build the demo once and share it across test jobs via artifact ──────────
build-demo:
name: Build demo
needs: prepare-dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
- name: Build demo
uses: ./.github/actions/build
with:
target: build-demo-e2e
github-token: ${{ secrets.GITHUB_TOKEN }}
is-test: true
- name: Upload demo build
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: demo-dist
path: demo/dist/
if-no-files-found: error
retention-days: 3
# ── Build the e2e test app and share it via artifact ────────────────────────
build-e2e-test-app:
name: Build e2e test app
needs: prepare-dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
- name: Build e2e test app
uses: ./.github/actions/build
with:
target: build-e2e-test-app-e2e
github-token: ${{ secrets.GITHUB_TOKEN }}
is-test: true
- name: Upload e2e test app build
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: e2e-test-app-dist
path: test/e2e/app/dist/
if-no-files-found: error
retention-days: 3
# ── Build the gallery and share it via artifact ─────────────────────────────
build-gallery:
name: Build gallery
needs: prepare-dependencies
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
- name: Build gallery
uses: ./.github/actions/build
with:
target: build-gallery
github-token: ${{ secrets.GITHUB_TOKEN }}
is-test: true
- name: Upload gallery build
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: gallery-dist
path: gallery/dist/
if-no-files-found: error
retention-days: 3
# ── Run Playwright tests against Chromium ──────────────────────────────────
e2e-demo:
name: E2E demo (${{ matrix.shardIndex }}/${{ matrix.shardTotal }})
needs:
- build-demo
- prepare-container-dependencies
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.64.1-noble
options: --user 1001 --ipc=host
defaults:
run:
shell: bash
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shardIndex:
- 1
- 2
shardTotal:
- 2
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
node-modules-cache-key: node-modules-container-v1
- name: Download demo build
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: demo-dist
path: demo/dist/
- name: Run Playwright demo tests
run: pnpm run test:e2e:demo --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload demo blob report
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
if: always()
with:
name: blob-report-demo-${{ matrix.shardIndex }}
path: test/e2e/reports/demo/
if-no-files-found: warn
retention-days: 3
e2e-app:
name: E2E app (${{ matrix.shardIndex }}/${{ matrix.shardTotal }})
needs:
- build-e2e-test-app
- prepare-container-dependencies
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.64.1-noble
options: --user 1001 --ipc=host
defaults:
run:
shell: bash
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shardIndex:
- 1
- 2
- 3
- 4
shardTotal:
- 4
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
node-modules-cache-key: node-modules-container-v1
- name: Download e2e test app build
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: e2e-test-app-dist
path: test/e2e/app/dist/
- name: Run Playwright app tests
run: pnpm run test:e2e:app --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload app blob report
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
if: always()
with:
name: blob-report-app-${{ matrix.shardIndex }}
path: test/e2e/reports/app/
if-no-files-found: warn
retention-days: 3
e2e-gallery:
name: E2E gallery (${{ matrix.shardIndex }}/${{ matrix.shardTotal }})
needs:
- build-gallery
- prepare-container-dependencies
runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.64.1-noble
options: --user 1001 --ipc=host
defaults:
run:
shell: bash
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
shardIndex:
- 1
- 2
- 3
- 4
shardTotal:
- 4
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
node-modules-cache-key: node-modules-container-v1
- name: Download gallery build
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: gallery-dist
path: gallery/dist/
- name: Run Playwright gallery tests
run: pnpm run test:e2e:gallery --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
timeout-minutes: 15
- name: Upload gallery blob report
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
if: always()
with:
name: blob-report-gallery-${{ matrix.shardIndex }}
path: test/e2e/reports/gallery/
if-no-files-found: warn
retention-days: 3
report:
name: Report
needs:
- e2e-demo
- e2e-app
- e2e-gallery
runs-on: ubuntu-latest
if: ${{ always() }}
permissions:
contents: read
pull-requests: write
steps:
- name: Check out files from GitHub
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node with shared dependencies
uses: ./.github/actions/setup
with:
node-modules-cache: true
- name: Download demo blob reports
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
continue-on-error: true
with:
pattern: blob-report-demo-*
path: test/e2e/reports/demo/
- name: Download app blob reports
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
continue-on-error: true
with:
pattern: blob-report-app-*
path: test/e2e/reports/app/
- name: Download gallery blob reports
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
continue-on-error: true
with:
pattern: blob-report-gallery-*
path: test/e2e/reports/gallery/
- name: Stage blobs for merge
run: node test/e2e/collect-blob-reports.mjs
- name: Merge blob reports
run: npx playwright merge-reports -c test/e2e/playwright.merge.config.ts test/e2e/reports/blob
- name: Upload merged HTML report
id: upload-report
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: playwright-report
path: test/e2e/reports/combined/
retention-days: 14
- name: Post report to PR
if: >-
github.event_name == 'pull_request' &&
(needs.e2e-demo.result == 'failure' ||
needs.e2e-app.result == 'failure' ||
needs.e2e-gallery.result == 'failure')
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { default: postReportComment } = await import(
`${process.env.GITHUB_WORKSPACE}/test/e2e/post-report-comment.mjs`
);
await postReportComment({ github, context, core });
- name: Check suite results
run: |
failed=0
for suite in \
"demo:${{ needs.e2e-demo.result }}" \
"app:${{ needs.e2e-app.result }}" \
"gallery:${{ needs.e2e-gallery.result }}"; do
name="${suite%%:*}"
result="${suite#*:}"
echo "E2E ${name}: ${result}"
if [ "$result" != "success" ]; then
failed=1
fi
done
exit "$failed"
+2 -25
View File
@@ -1,11 +1,6 @@
name: "Pull Request Labeler"
on: pull_request_target # zizmor: ignore[dangerous-triggers] -- safe: checks out base repo scripts only and reads PR files through the API, never PR head code
# Runs one at a time per pull request, so an older run can't undo a newer one
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
on: pull_request_target
jobs:
triage:
@@ -15,24 +10,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Apply labels
id: labeler
continue-on-error: true
uses: actions/labeler@bf12e9b00b37c5c0ca2b87b79b2daf7891dbda13 # v7.0.0
uses: actions/[email protected]
with:
sync-labels: true
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Apply content labels
continue-on-error: true
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
env:
LABELER_OUTCOME: ${{ steps.labeler.outcome }}
with:
script: |
const { default: labelContent } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/label-content.mts`
);
await labelContent({ github, context, core });
-24
View File
@@ -1,24 +0,0 @@
name: Lock
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
permissions:
issues: write
pull-requests: write
jobs:
lock:
if: github.repository == 'home-assistant/frontend'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@89ae32b08ed1a541efecbab17912962a5e38981c # v6.0.2
with:
github-token: ${{ github.token }}
process-only: "issues, prs"
issue-inactive-days: "30"
issue-lock-reason: ""
pr-inactive-days: "1"
pr-lock-reason: ""
+20
View File
@@ -0,0 +1,20 @@
name: Lock
# yamllint disable-line rule:truthy
on:
schedule:
- cron: "0 * * * *"
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/[email protected]
with:
github-token: ${{ github.token }}
issue-lock-inactive-days: "30"
issue-exclude-created-before: "2020-10-01T00:00:00Z"
issue-lock-reason: ""
pr-lock-inactive-days: "1"
pr-exclude-created-before: "2020-11-01T00:00:00Z"
pr-lock-reason: ""
+16 -89
View File
@@ -6,7 +6,7 @@ on:
- cron: "0 1 * * *"
env:
PYTHON_VERSION: "3.14"
PYTHON_VERSION: "3.11"
NODE_OPTIONS: --max_old_space_size=6144
permissions:
@@ -14,130 +14,57 @@ permissions:
jobs:
nightly:
if: github.repository == 'home-assistant/frontend'
name: Nightly
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
uses: actions/checkout@v4.1.0
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/setup[email protected]
with:
immutable: false
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install
- name: Download translations
run: ./script/translations_download
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
# The wheel only builds the app (build-app), which does not merge
# backend translations. Skipping the whole-project backend export (as
# the release does) keeps this off the build's critical path; the full
# translations artifact is produced in parallel by the job below.
SKIP_BACKEND_TRANSLATIONS: "1"
- name: Bump version
run: script/version_bump.js nightly
# Warm the shared compression cache so releases reuse it (see release.yaml).
- name: Restore compression cache
id: compress-cache
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .compress-cache
key: compress-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
compress-cache-${{ runner.os }}-
# The nightly writes the rspack persistent cache; CI reads it read-only
# (see ci.yaml). rspack invalidates internally (version + buildDependencies
# + node_modules snapshot), so the cache rolls forward daily and a single
# dependency bump keeps most of it warm instead of dropping the lineage.
- name: Restore rspack cache
id: rspack-cache
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspack-cache
key: rspack-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
rspack-cache-${{ runner.os }}-
run: script/version_bump.cjs nightly
- name: Build nightly Python wheels
env:
COMPRESS_CACHE_DIR: ${{ github.workspace }}/.compress-cache
RSPACK_CACHE: readwrite
run: |
pip install build
pnpm install --frozen-lockfile
yarn install
export SKIP_FETCH_NIGHTLY_TRANSLATIONS=1
script/build_frontend
rm -rf dist home_assistant_frontend.egg-info
python3 -m build
# Not gated on the restore steps: a transient restore failure (they are
# continue-on-error) must not stop us persisting a freshly built cache.
- name: Save compression cache
if: success()
continue-on-error: true
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .compress-cache
key: compress-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
- name: Save rspack cache
if: success()
continue-on-error: true
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .rspack-cache
key: rspack-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
- name: Archive translations
run: tar -czvf translations.tar.gz translations
- name: Upload build artifacts
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/home_assistant_frontend*.whl
if-no-files-found: error
# The full translations (including the slow backend/core export) are only
# needed for the uploaded artifact, not the wheel, so they are downloaded in
# parallel here instead of blocking the build above.
translations:
if: github.repository == 'home-assistant/frontend'
name: Translations
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
with:
immutable: false
- name: Download translations
run: ./script/translations_download
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
- name: Archive translations
run: tar -czvf translations.tar.gz translations
- name: Upload translations
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
uses: actions/upload-artifact@v3
with:
name: translations
path: translations.tar.gz
@@ -1,38 +0,0 @@
name: Pull request standards
on:
pull_request_target: # zizmor: ignore[dangerous-triggers] -- safe: reads PR metadata from event payload only, checks out base repo scripts only, never PR head code
types:
- opened
- edited
- reopened
- ready_for_review
branches:
- dev
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
check:
name: Check pull request follows contribution standards
runs-on: ubuntu-latest
permissions:
pull-requests: write # To label and comment on pull requests
steps:
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Check pull request standards
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { default: checkStandards } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-pull-request-standards.mts`
);
await checkStandards({ github, context, core });
-39
View File
@@ -1,39 +0,0 @@
name: RelativeCI
on:
# zizmor: ignore[dangerous-triggers] -- safe: only downloads artifacts, no PR code checkout
workflow_run:
workflows: [CI]
types:
- completed
permissions:
contents: read
actions: read
jobs:
upload-frontend-modern:
name: Upload stats (frontend/modern)
if: ${{ github.repository == 'home-assistant/frontend' && github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Send bundle stats and build information to RelativeCI
uses: relative-ci/agent-action@711f3a8fa1b928e6afde280011110c9b0a224a60 # v3.2.4
with:
key: ${{ secrets.RELATIVE_CI_KEY_frontend_modern }}
token: ${{ github.token }}
artifactName: frontend-bundle-stats
webpackStatsFile: frontend-modern.json
upload-frontend-legacy:
name: Upload stats (frontend/legacy)
if: ${{ github.repository == 'home-assistant/frontend' && github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Send bundle stats and build information to RelativeCI
uses: relative-ci/agent-action@711f3a8fa1b928e6afde280011110c9b0a224a60 # v3.2.4
with:
key: ${{ secrets.RELATIVE_CI_KEY_frontend_legacy }}
token: ${{ github.token }}
artifactName: frontend-bundle-stats
webpackStatsFile: frontend-legacy.json
+1 -2
View File
@@ -10,7 +10,6 @@ permissions:
jobs:
update_release_draft:
if: github.repository == 'home-assistant/frontend'
permissions:
# write permission for contents is required to create a github release
contents: write
@@ -19,6 +18,6 @@ jobs:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@72967cdc98ddd3160f1fc3dff619de365e137dd0 # v7.9.0
- uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+26 -112
View File
@@ -6,7 +6,7 @@ on:
- published
env:
PYTHON_VERSION: "3.14"
PYTHON_VERSION: "3.11"
NODE_OPTIONS: --max_old_space_size=6144
# Set default workflow permissions
@@ -19,81 +19,47 @@ jobs:
release:
name: Release
runs-on: ubuntu-latest
environment: pypi
permissions:
contents: write # Required to upload release assets
id-token: write # For "Trusted Publisher" to PyPi
if: github.repository_owner == 'home-assistant'
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
uses: actions/checkout@v4.1.0
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@master
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Verify version
uses: home-assistant/actions/helpers/verify-version@cd6f3635a740c84d8a14f6121a90068b8ece6bf6 # master
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Setup Node
uses: actions/[email protected]
with:
immutable: false
cache: false
node-version-file: ".nvmrc"
cache: yarn
- name: Install dependencies
run: yarn install
- name: Download Translations
run: ./script/translations_download
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
# The app fetches core (backend) translations live from HA, so the
# release build does not need Lokalise's backend project.
SKIP_BACKEND_TRANSLATIONS: "1"
# Restore the content-addressed compression cache. Unchanged chunks and
# static assets are then reused instead of re-run through brotli/zopfli.
- name: Restore compression cache
id: compress-cache
continue-on-error: true
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .compress-cache
key: compress-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
compress-cache-${{ runner.os }}-
- name: Build and release package
env:
COMPRESS_CACHE_DIR: ${{ github.workspace }}/.compress-cache
run: |
python3 -m pip install build
python3 -m pip install twine build
export TWINE_USERNAME="__token__"
export TWINE_PASSWORD="${{ secrets.TWINE_TOKEN }}"
export SKIP_FETCH_NIGHTLY_TRANSLATIONS=1
script/release
# The build keeps the cache under its size budget, so saving stays bounded.
# A unique key always writes; restore-keys picks the newest on the next
# run. Not gated on the restore step: a transient restore failure (it is
# continue-on-error) must not stop us persisting a freshly built cache.
- name: Save compression cache
if: success()
continue-on-error: true
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .compress-cache
key: compress-cache-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
with:
skip-existing: true
- name: Upload release assets
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ github.event.release.tag_name }}
run: gh release upload "$TAG_NAME" dist/*.whl dist/*.tar.gz --clobber
uses: softprops/[email protected]
with:
files: |
dist/*.whl
dist/*.tar.gz
wheels-init:
name: Init wheels build
@@ -101,69 +67,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Generate requirements.txt
env:
GITHUB_REF: ${{ github.ref }}
run: |
version=$(echo "$GITHUB_REF" | awk -F"/" '{print $NF}' )
# Wait for the exact wheel to appear on the simple index (the surface
# the wheels build's pip uses). The JSON API can report a version as
# available before it propagates here, which fails the wheels build.
wheel="home_assistant_frontend-${version}-py3-none-any.whl"
echo "Waiting for $wheel to appear on the PyPI simple index..."
for i in $(seq 1 30); do
if curl -sf "https://pypi.org/simple/home-assistant-frontend/" | grep -qF "$wheel"; then
echo "Package is available on the PyPI simple index!"
break
fi
if [ "$i" = "30" ]; then
echo "Timed out waiting for package to appear on PyPI"
exit 1
fi
echo "Not available yet, retrying in 30 seconds... ($i/30)"
sleep 30
done
# Sleep to give pypi time to populate the new version across mirrors
sleep 240
version=$(echo "${{ github.ref }}" | awk -F"/" '{print $NF}' )
echo "home-assistant-frontend==$version" > ./requirements.txt
# home-assistant/wheels doesn't support SHA pinning
- name: Build wheels
uses: home-assistant/wheels@9e17ab1ed5c4c79d8b61e29fa63de25ca2710716 # 2026.07.0
uses: home-assistant/wheels@2023.09.1
with:
abi: cp314
abi: cp311
tag: musllinux_1_2
arch: amd64
wheels-key: ${{ secrets.WHEELS_KEY }}
requirements: "requirements.txt"
release-landing-page:
name: Release landing-page frontend
if: github.repository == 'home-assistant/frontend' && github.event.release.prerelease == false
runs-on: ubuntu-latest
permissions:
contents: write # Required to upload release assets
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
with:
immutable: false
cache: false
- name: Download Translations
run: ./script/translations_download
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
# The landing-page build does not merge backend translations.
SKIP_BACKEND_TRANSLATIONS: "1"
- name: Build landing-page
run: landing-page/script/build_landing_page
- name: Tar folder
env:
TAG_NAME: ${{ github.event.release.tag_name }}
run: tar -czf "landing-page/home_assistant_frontend_landingpage-${TAG_NAME}.tar.gz" -C landing-page/dist .
- name: Upload release asset
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ github.event.release.tag_name }}
run: gh release upload "$TAG_NAME" "landing-page/home_assistant_frontend_landingpage-${TAG_NAME}.tar.gz" --clobber
@@ -1,67 +0,0 @@
name: Restrict task creation
# yamllint disable-line rule:truthy
on:
issues:
types: [opened]
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}
jobs:
add-no-stale:
name: Add no-stale label
runs-on: ubuntu-latest
permissions:
contents: read # To check out workflow scripts
issues: write # To add labels to issues
if: >-
github.event.issue.type.name == 'Task'
|| github.event.issue.type.name == 'Epic'
|| github.event.issue.type.name == 'Opportunity'
steps:
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Add no-stale label
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { withRetry } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/github-retry.mts`
);
await withRetry("no-stale label", () =>
github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['no-stale']
})
);
check-authorization:
name: Check authorization
runs-on: ubuntu-latest
permissions:
contents: read # To check out workflow scripts
issues: write # To comment on, label, and close issues
# Only run if this is a Task issue type (from the issue form)
if: github.event.issue.type.name == 'Task'
steps:
- name: Check out workflow scripts
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: .github/scripts
- name: Check if user is authorized
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const { default: checkTaskAuthorization } = await import(
`${process.env.GITHUB_WORKSPACE}/.github/scripts/check-task-authorization.mts`
);
await checkTaskAuthorization({ github, context, core });
@@ -5,22 +5,15 @@ on:
schedule:
- cron: "0 * * * *"
permissions:
actions: write
issues: write
pull-requests: write
jobs:
stale:
if: github.repository == 'home-assistant/frontend'
runs-on: ubuntu-latest
steps:
- name: Stale policy
uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
- name: 90 days stale policy
uses: actions/stale@v8.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 90
days-before-pr-stale: 60
days-before-stale: 90
days-before-close: 7
operations-per-run: 25
remove-stale-when-updated: true
@@ -1,48 +0,0 @@
name: Sync device class constants
# Mirrors the device class constants for Home Assistant Core's into the
# build-time default in src/data/device_classes.ts and opens a PR
# when it drifts. Reads homeassistant/generated/device_classes.json from core.
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Daily, 04:00 UTC
permissions:
contents: read
jobs:
sync:
if: github.repository == 'home-assistant/frontend'
name: Sync
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Regenerate device class constants
run: ./script/gen_device_classes
- name: Format
run: pnpm exec prettier --write src/data/device_classes.ts
- name: Create pull request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
branch: chore/sync-device-classes
commit-message: Update device class constants
title: Update device class constants
body: |
Regenerated `DOMAIN_DEVICE_CLASSES` from Home Assistant Core's
`homeassistant/generated/device_classes.json`.
Automated by `.github/workflows/sync-device-classes.yaml`.
@@ -1,49 +0,0 @@
name: Sync sensor entity constants
# Mirrors Home Assistant Core's numeric `SensorDeviceClass`, `SensorStateClass`,
# units and related device and state classes arrays into the
# build-time default in src/data/sensor_entity_constants.ts and opens a PR
# when it drifts. Reads homeassistant/generated/sensor.json from core.
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Daily, 04:00 UTC
permissions:
contents: read
jobs:
sync:
if: github.repository == 'home-assistant/frontend'
name: Sync
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup Node and install
uses: ./.github/actions/setup
- name: Regenerate sensor entity constants
run: ./script/gen_sensor_entity_constants
- name: Format
run: pnpm exec prettier --write src/data/sensor_entity_constants.ts
- name: Create pull request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
with:
branch: chore/sync-sensor-entity-constants
commit-message: Update sensor entity constants
title: Update sensor entity constants
body: |
Regenerated the sensor entity constants from Home Assistant Core's
`homeassistant/generated/sensor.json`.
Automated by `.github/workflows/sync-sensor-entity-constants.yaml`.
+4 -12
View File
@@ -1,29 +1,21 @@
name: Translations
on:
workflow_dispatch:
push:
branches:
- dev
paths:
- .github/workflows/translations.yaml
- src/translations/en.json
permissions:
contents: read
jobs:
upload:
name: Upload
if: github.repository == 'home-assistant/frontend'
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
uses: actions/checkout@v4.1.0
- name: Upload Translations
run: ./script/translations_upload_base
env:
LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }}
run: |
export LOKALISE_TOKEN="${{ secrets.LOKALISE_TOKEN }}"
./script/translations_upload_base
+10 -31
View File
@@ -6,15 +6,18 @@ build/
dist/
/hass_frontend/
/translations/
/.compress-cache/
/.rspack-cache/
# Composite action source, not build output
!/.github/actions/build/
# Node
node_modules/
# yarn
.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.pnp.*
/node_modules/
yarn-error.log
npm-debug.log
.pnpm-store/
# Python stuff
*.py[cod]
@@ -44,27 +47,3 @@ src/cast/dev_const.ts
# Home Assistant config
/config/
# Jetbrains
/.idea/
# test coverage
test/coverage/
# Playwright e2e output
test/e2e/reports/
test/e2e/test-results/
# E2E test app build output
test/e2e/app/dist/
# MCP server
.playwright-mcp/
# AI tooling
.claude/*
!.claude/skills
.cursor
.opencode
.serena
test/benchmarks/results/
+4 -1
View File
@@ -1 +1,4 @@
pnpm exec lint-staged --relative
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn run lint-staged --relative --shell "/bin/bash"
+1 -1
View File
@@ -1 +1 @@
24.22.0
18
+1 -3
View File
@@ -1,6 +1,4 @@
CLA.md
CODE_OF_CONDUCT.md
LICENSE.md
PULL_REQUEST_TEMPLATE.md
public/static/map/sprites/*.json
pnpm-lock.yaml
PULL_REQUEST_TEMPLATE.md
+1 -3
View File
@@ -4,8 +4,6 @@
"esbenp.prettier-vscode",
"runem.lit-plugin",
"github.vscode-pull-request-github",
"eamodio.gitlens",
"vitest.explorer",
"yeion7.styled-global-variables-autocomplete"
"eamodio.gitlens"
]
}
+25 -44
View File
@@ -1,42 +1,6 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Develop and serve Frontend",
"type": "shell",
"command": "script/develop_and_serve -c ${input:coreUrl}",
// Sync changes here to other tasks until issue resolved
// https://github.com/Microsoft/vscode/issues/61497
"problemMatcher": {
"owner": "ha-build",
"source": "ha-build",
"fileLocation": "absolute",
"severity": "error",
"pattern": [
{
"regexp": "(SyntaxError): (.+): (.+) \\((\\d+):(\\d+)\\)",
"severity": 1,
"file": 2,
"message": 3,
"line": 4,
"column": 5
}
],
"background": {
"activeOnStart": true,
"beginsPattern": "Changes detected. Starting compilation",
"endsPattern": "Build done @"
}
},
"isBackground": true,
"group": {
"kind": "build",
"isDefault": true
},
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Develop Frontend",
"type": "gulp",
@@ -74,9 +38,9 @@
}
},
{
"label": "Develop Gallery",
"label": "Develop Supervisor panel",
"type": "gulp",
"task": "develop-gallery",
"task": "develop-hassio",
"problemMatcher": {
"owner": "ha-build",
"source": "ha-build",
@@ -98,7 +62,6 @@
"endsPattern": "Build done @"
}
},
"isBackground": true,
"group": "build",
"runOptions": {
@@ -106,9 +69,9 @@
}
},
{
"label": "Develop Landing Page",
"label": "Develop Gallery",
"type": "gulp",
"task": "develop-landing-page",
"task": "develop-gallery",
"problemMatcher": {
"owner": "ha-build",
"source": "ha-build",
@@ -215,6 +178,20 @@
"instanceLimit": 1
}
},
{
"label": "Run HA Core for Supervisor in devcontainer",
"type": "shell",
"command": "SUPERVISOR=${input:supervisorHost} SUPERVISOR_TOKEN=${input:supervisorToken} script/core",
"isBackground": true,
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"runOptions": {
"instanceLimit": 1
}
},
{
"label": "Setup and fetch nightly translations",
"type": "gulp",
@@ -224,10 +201,14 @@
],
"inputs": [
{
"id": "coreUrl",
"id": "supervisorHost",
"type": "promptString",
"description": "The URL of the Home Assistant Core instance",
"default": "http://127.0.0.1:8123"
"description": "The IP of the Supervisor host running the Remote API proxy add-on"
},
{
"id": "supervisorToken",
"type": "promptString",
"description": "The token for the Remote API proxy add-on"
}
]
}
@@ -0,0 +1,34 @@
diff --git a/lib/legacy/class.js b/lib/legacy/class.js
index aee2511be1cd9bf900ee552bc98190c1631c57c0..f2f499d68bf52034cac9c28307c99e8ce6b8417d 100644
--- a/lib/legacy/class.js
+++ b/lib/legacy/class.js
@@ -304,17 +304,23 @@ function GenerateClassFromInfo(info, Base, behaviors) {
// only proceed if the generated class' prototype has not been registered.
const generatedProto = PolymerGenerated.prototype;
if (!generatedProto.hasOwnProperty(JSCompiler_renameProperty('__hasRegisterFinished', generatedProto))) {
- generatedProto.__hasRegisterFinished = true;
+ // make sure legacy lifecycle is called on the *element*'s prototype
+ // and not the generated class prototype; if the element has been
+ // extended, these are *not* the same.
+ const proto = Object.getPrototypeOf(this);
+ // Only set flag when generated prototype itself is registered,
+ // as this element may be extended from, and needs to run `registered`
+ // on all behaviors on the subclass as well.
+ if (proto === generatedProto) {
+ generatedProto.__hasRegisterFinished = true;
+ }
// ensure superclass is registered first.
super._registered();
// copy properties onto the generated class lazily if we're optimizing,
- if (legacyOptimizations) {
+ if (legacyOptimizations && !Object.hasOwnProperty(generatedProto, '__hasCopiedProperties')) {
+ generatedProto.__hasCopiedProperties = true;
copyPropertiesToProto(generatedProto);
}
- // make sure legacy lifecycle is called on the *element*'s prototype
- // and not the generated class prototype; if the element has been
- // extended, these are *not* the same.
- const proto = Object.getPrototypeOf(this);
let list = lifecycle.beforeRegister;
if (list) {
for (let i=0; i < list.length; i++) {
@@ -0,0 +1,13 @@
diff --git a/dist/leaflet.draw.js b/dist/leaflet.draw.js
index 71aeb33b49192dac65f869795716fc3e34969b7e..9be93575809b224c3100fbb9cca72de4bce3faf4 100644
--- a/dist/leaflet.draw.js
+++ b/dist/leaflet.draw.js
@@ -5,6 +5,7 @@
https://github.com/Leaflet/Leaflet.draw
http://leafletjs.com
*/
+var radius;
!function(t,e,i){function o(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}L.drawVersion="1.0.4",L.Draw={},L.drawLocal={draw:{toolbar:{actions:{title:"Cancel drawing",text:"Cancel"},finish:{title:"Finish drawing",text:"Finish"},undo:{title:"Delete last point drawn",text:"Delete last point"},buttons:{polyline:"Draw a polyline",polygon:"Draw a polygon",rectangle:"Draw a rectangle",circle:"Draw a circle",marker:"Draw a marker",circlemarker:"Draw a circlemarker"}},handlers:{circle:{tooltip:{start:"Click and drag to draw circle."},radius:"Radius"},circlemarker:{tooltip:{start:"Click map to place circle marker."}},marker:{tooltip:{start:"Click map to place marker."}},polygon:{tooltip:{start:"Click to start drawing shape.",cont:"Click to continue drawing shape.",end:"Click first point to close this shape."}},polyline:{error:"<strong>Error:</strong> shape edges cannot cross!",tooltip:{start:"Click to start drawing line.",cont:"Click to continue drawing line.",end:"Click last point to finish line."}},rectangle:{tooltip:{start:"Click and drag to draw rectangle."}},simpleshape:{tooltip:{end:"Release mouse to finish drawing."}}}},edit:{toolbar:{actions:{save:{title:"Save changes",text:"Save"},cancel:{title:"Cancel editing, discards all changes",text:"Cancel"},clearAll:{title:"Clear all layers",text:"Clear All"}},buttons:{edit:"Edit layers",editDisabled:"No layers to edit",remove:"Delete layers",removeDisabled:"No layers to delete"}},handlers:{edit:{tooltip:{text:"Drag handles or markers to edit features.",subtext:"Click cancel to undo changes."}},remove:{tooltip:{text:"Click on a feature to remove."}}}}},L.Draw.Event={},L.Draw.Event.CREATED="draw:created",L.Draw.Event.EDITED="draw:edited",L.Draw.Event.DELETED="draw:deleted",L.Draw.Event.DRAWSTART="draw:drawstart",L.Draw.Event.DRAWSTOP="draw:drawstop",L.Draw.Event.DRAWVERTEX="draw:drawvertex",L.Draw.Event.EDITSTART="draw:editstart",L.Draw.Event.EDITMOVE="draw:editmove",L.Draw.Event.EDITRESIZE="draw:editresize",L.Draw.Event.EDITVERTEX="draw:editvertex",L.Draw.Event.EDITSTOP="draw:editstop",L.Draw.Event.DELETESTART="draw:deletestart",L.Draw.Event.DELETESTOP="draw:deletestop",L.Draw.Event.TOOLBAROPENED="draw:toolbaropened",L.Draw.Event.TOOLBARCLOSED="draw:toolbarclosed",L.Draw.Event.MARKERCONTEXT="draw:markercontext",L.Draw=L.Draw||{},L.Draw.Feature=L.Handler.extend({initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e);var i=L.version.split(".");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.Draw.Feature.include(L.Evented.prototype):L.Draw.Feature.include(L.Mixin.Events)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DRAWSTART,{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DRAWSTOP,{layerType:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Draw.Tooltip(this._map),L.DomEvent.on(this._container,"keyup",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,"keyup",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire(L.Draw.Event.CREATED,{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&(this._map.fire("draw:canceled",{layerType:this.type}),this.disable())}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:"polyline"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:"#b00b00",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,feet:!0,nautic:!1,showLength:!0,zIndexOffset:2e3,factor:1,maxPoints:0},initialize:function(t,e){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseM Line truncated
className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"}),touchMoveIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon"}),touchResizeIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon"})},initialize:function(t,e){L.Browser.touch&&(this.options.moveIcon=this.options.touchMoveIcon,this.options.resizeIcon=this.options.touchResizeIcon),this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;this._shape._map&&(this._map=this._shape._map,t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup)))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._unbindMarker(this._resizeMarkers[e]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker.Touch(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._onMarkerDragEnd,this).on("touchstart",this._onTouchStart,this).on("touchmove",this._onTouchMove,this).on("MSPointerMove",this._onTouchMove,this).on("touchend",this._onTouchEnd,this).on("MSPointerUp",this._onTouchEnd,this)},_unbindMarker:function(t){t.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._onMarkerDragEnd,this).off("touchstart",this._onTouchStart,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onTouchEnd,this).off("MSPointerUp",this._onTouchEnd,this)},_onMarkerDragStart:function(t){t.target.setOpacity(0),this._shape.fire("editstart")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire("edit")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),this._shape.fire("editdrag")},_onMarkerDragEnd:function(t){t.target.setOpacity(1),this._fireEdit()},_onTouchStart:function(t){if(L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t),"function"==typeof this._getCorners){var e=this._getCorners(),i=t.target,o=i._cornerIndex;i.setOpacity(0),this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)}this._shape.fire("editstart")},_onTouchMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent.touches[0]),i=this._map.layerPointToLatLng(e);return t.target===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw(),!1},_onTouchEnd:function(t){t.target.setOpacity(1),this.updateMarkers(),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;e<i;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),o=this._shape.getBounds(),a=o.getCenter(),n=[],s=0,r=i.length;s<r;s++)e=[i[s].lat-a.lat,i[s].lng-a.lng],n.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(n),this._repositionCornerMarkers(),this._map.fire(L.Draw.Event.EDITMOVE,{layer:this._shape})},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter()),this._map.fire(L.Draw.Event.EDITRESIZE,{layer:this._shape})},_getCorners:function(){var t=this._shape.getBounds();return[t.getNorthWest(),t.getNorthEast(),t.getSouthEast(),t.getSouthWest()]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;e<i;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for( Line truncated
this._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off("dragend",this._onMarkerDragEnd,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onMarkerDragEnd,this).off("MSPointerUp",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE;var i=L.version.split(".");1===parseInt(i[0],10)&&parseInt(i[1],10)>=2?L.EditToolbar.Delete.include(L.Evented.prototype):L.EditToolbar.Delete.include(L.Mixin.Events)},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document);
\ No newline at end of file
@@ -0,0 +1,39 @@
diff --git a/modular/sortable.complete.esm.js b/modular/sortable.complete.esm.js
index 02e9f2d6bebeb430fe6e7c1cc3f9c3c9df051f14..bb8268b0844a1faa4108cc92c0be2a3dbaf23f83 100644
--- a/modular/sortable.complete.esm.js
+++ b/modular/sortable.complete.esm.js
@@ -1657,7 +1657,7 @@ Sortable.prototype =
target = parent; // store last element
}
/* jshint boss:true */
- while (parent = parent.parentNode);
+ while (parent = parent.parentNode || parent.getRootNode().host);
}
_unhideGhostForTarget();
diff --git a/modular/sortable.core.esm.js b/modular/sortable.core.esm.js
index b04c8b4634f7c6b4ef1aadbb48afe6564306dea9..39a107163c8c336ebd669b5ea8a936af87e1c1e7 100644
--- a/modular/sortable.core.esm.js
+++ b/modular/sortable.core.esm.js
@@ -1657,7 +1657,7 @@ Sortable.prototype =
target = parent; // store last element
}
/* jshint boss:true */
- while (parent = parent.parentNode);
+ while (parent = parent.parentNode || parent.getRootNode().host);
}
_unhideGhostForTarget();
diff --git a/modular/sortable.esm.js b/modular/sortable.esm.js
index 6ec7ed1bb557e21c2578200161e989c65d23150b..0a05475a22904472fac6c13f524c674da76584b0 100644
--- a/modular/sortable.esm.js
+++ b/modular/sortable.esm.js
@@ -1657,7 +1657,7 @@ Sortable.prototype =
target = parent; // store last element
}
/* jshint boss:true */
- while (parent = parent.parentNode);
+ while (parent = parent.parentNode || parent.getRootNode().host);
}
_unhideGhostForTarget();
+541
View File
@@ -0,0 +1,541 @@
/* eslint-disable */
//prettier-ignore
module.exports = {
name: "@yarnpkg/plugin-interactive-tools",
factory: function (require) {
var plugin=(()=>{var jF=Object.create,Ay=Object.defineProperty,zF=Object.defineProperties,HF=Object.getOwnPropertyDescriptor,qF=Object.getOwnPropertyDescriptors,WF=Object.getOwnPropertyNames,__=Object.getOwnPropertySymbols,VF=Object.getPrototypeOf,IE=Object.prototype.hasOwnProperty,O8=Object.prototype.propertyIsEnumerable;var M8=(i,o,a)=>o in i?Ay(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a,Ht=(i,o)=>{for(var a in o||(o={}))IE.call(o,a)&&M8(i,a,o[a]);if(__)for(var a of __(o))O8.call(o,a)&&M8(i,a,o[a]);return i},Zr=(i,o)=>zF(i,qF(o)),GF=i=>Ay(i,"__esModule",{value:!0});var Dl=(i,o)=>{var a={};for(var p in i)IE.call(i,p)&&o.indexOf(p)<0&&(a[p]=i[p]);if(i!=null&&__)for(var p of __(i))o.indexOf(p)<0&&O8.call(i,p)&&(a[p]=i[p]);return a};var tt=(i,o)=>()=>(o||i((o={exports:{}}).exports,o),o.exports),YF=(i,o)=>{for(var a in o)Ay(i,a,{get:o[a],enumerable:!0})},KF=(i,o,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of WF(o))!IE.call(i,p)&&p!=="default"&&Ay(i,p,{get:()=>o[p],enumerable:!(a=HF(o,p))||a.enumerable});return i},vu=i=>KF(GF(Ay(i!=null?jF(VF(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var Oy=tt((tH,k8)=>{"use strict";var N8=Object.getOwnPropertySymbols,XF=Object.prototype.hasOwnProperty,QF=Object.prototype.propertyIsEnumerable;function JF(i){if(i==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(i)}function ZF(){try{if(!Object.assign)return!1;var i=new String("abc");if(i[5]="de",Object.getOwnPropertyNames(i)[0]==="5")return!1;for(var o={},a=0;a<10;a++)o["_"+String.fromCharCode(a)]=a;var p=Object.getOwnPropertyNames(o).map(function(t){return o[t]});if(p.join("")!=="0123456789")return!1;var _={};return"abcdefghijklmnopqrst".split("").forEach(function(t){_[t]=t}),Object.keys(Object.assign({},_)).join("")==="abcdefghijklmnopqrst"}catch(t){return!1}}k8.exports=ZF()?Object.assign:function(i,o){for(var a,p=JF(i),_,t=1;t<arguments.length;t++){a=Object(arguments[t]);for(var k in a)XF.call(a,k)&&(p[k]=a[k]);if(N8){_=N8(a);for(var L=0;L<_.length;L++)QF.call(a,_[L])&&(p[_[L]]=a[_[L]])}}return p}});var W8=tt(_u=>{"use strict";var bE=Oy(),Zf=typeof Symbol=="function"&&Symbol.for,My=Zf?Symbol.for("react.element"):60103,$F=Zf?Symbol.for("react.portal"):60106,eP=Zf?Symbol.for("react.fragment"):60107,tP=Zf?Symbol.for("react.strict_mode"):60108,nP=Zf?Symbol.for("react.profiler"):60114,rP=Zf?Symbol.for("react.provider"):60109,iP=Zf?Symbol.for("react.context"):60110,uP=Zf?Symbol.for("react.forward_ref"):60112,oP=Zf?Symbol.for("react.suspense"):60113,lP=Zf?Symbol.for("react.memo"):60115,sP=Zf?Symbol.for("react.lazy"):60116,L8=typeof Symbol=="function"&&Symbol.iterator;function ky(i){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+i,a=1;a<arguments.length;a++)o+="&args[]="+encodeURIComponent(arguments[a]);return"Minified React error #"+i+"; visit "+o+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var F8={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},P8={};function jv(i,o,a){this.props=i,this.context=o,this.refs=P8,this.updater=a||F8}jv.prototype.isReactComponent={};jv.prototype.setState=function(i,o){if(typeof i!="object"&&typeof i!="function"&&i!=null)throw Error(ky(85));this.updater.enqueueSetState(this,i,o,"setState")};jv.prototype.forceUpdate=function(i){this.updater.enqueueForceUpdate(this,i,"forceUpdate")};function I8(){}I8.prototype=jv.prototype;function BE(i,o,a){this.props=i,this.context=o,this.refs=P8,this.updater=a||F8}var UE=BE.prototype=new I8;UE.constructor=BE;bE(UE,jv.prototype);UE.isPureReactComponent=!0;var jE={current:null},b8=Object.prototype.hasOwnProperty,B8={key:!0,ref:!0,__self:!0,__source:!0};function U8(i,o,a){var p,_={},t=null,k=null;if(o!=null)for(p in o.ref!==void 0&&(k=o.ref),o.key!==void 0&&(t=""+o.key),o)b8.call(o,p)&&!B8.hasOwnProperty(p)&&(_[p]=o[p]);var L=arguments.length-2;if(L===1)_.children=a;else if(1<L){for(var O=Array(L),C=0;C<L;C++)O[C]=arguments[C+2];_.children=O}if(i&&i.defaultProps)for(p in L=i.defaultProps,L)_[p]===void 0&&(_[p]=L[p]);return{$$typeof:My,type:i,key:t,ref:k,props:_,_owner:jE.current}}function aP(i,o){return{$$typeof:My,type:i.type,key:o,ref:i.ref,props:i.props,_owner:i._owner}}function zE(i){return typeof i=="object"&&i!==null&&i.$$typeof===My}function fP(i){var o={"=":"=0",":":"=2"};return"$"+(""+i).replace(/[=:]/g,function(a){return o[a]})}var j8=/\/+/g,E_=[];function z8(i,o,a,p){if(E_.length){var _=E_.pop();return _.result=i,_.keyPrefix=o,_.func=a,_.context=p,_.count=0,_}return{result:i,keyPrefix:o,func:a,context:p,count:0}}function H8(i){i.result=null,i.keyPrefix=null,i.func=null,i.context=null,i.count=0,10>E_.length&&E_.push(i)}function HE(i,o,a,p){var _=typeof i;(_==="undefined"||_==="boolean")&&(i=null);var t=!1;if(i===null)t=!0;else switch(_){case"strinLine truncated
in `+(X||"Unknown")+Ne}var ut=1;function We(X){return X._status===ut?X._result:null}function Ft(X,we,Le){var Ne=we.displayName||we.name||"";return X.displayName||(Ne!==""?Le+"("+Ne+")":Le)}function Jt(X){if(X==null)return null;if(typeof X.tag=="number"&&ct("Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),typeof X=="function")return X.displayName||X.name||null;if(typeof X=="string")return X;switch(X){case k:return"Fragment";case t:return"Portal";case O:return"Profiler";case L:return"StrictMode";case ne:return"Suspense";case m:return"SuspenseList"}if(typeof X=="object")switch(X.$$typeof){case U:return"Context.Consumer";case C:return"Context.Provider";case W:return Ft(X,X.render,"ForwardRef");case he:return Jt(X.type);case ve:return Jt(X.render);case Ee:{var we=X,Le=We(we);if(Le)return Jt(Le);break}}return null}var rt={},Q=null;function fe(X){Q=X}rt.getCurrentStack=null,rt.getStackAddendum=function(){var X="";if(Q){var we=Jt(Q.type),Le=Q._owner;X+=Xe(we,Q._source,Le&&Jt(Le.type))}var Ne=rt.getCurrentStack;return Ne&&(X+=Ne()||""),X};var xe={current:!1},oe={ReactCurrentDispatcher:je,ReactCurrentBatchConfig:qe,ReactCurrentOwner:yt,IsSomeRendererActing:xe,assign:i};i(oe,{ReactDebugCurrentFrame:rt,ReactComponentTreeHook:{}});function ze(X){{for(var we=arguments.length,Le=new Array(we>1?we-1:0),Ne=1;Ne<we;Ne++)Le[Ne-1]=arguments[Ne];Rt("warn",X,Le)}}function ct(X){{for(var we=arguments.length,Le=new Array(we>1?we-1:0),Ne=1;Ne<we;Ne++)Le[Ne-1]=arguments[Ne];Rt("error",X,Le)}}function Rt(X,we,Le){{var Ne=Le.length>0&&typeof Le[Le.length-1]=="string"&&Le[Le.length-1].indexOf(`
in`)===0;if(!Ne){var dt=oe.ReactDebugCurrentFrame,Yn=dt.getStackAddendum();Yn!==""&&(we+="%s",Le=Le.concat([Yn]))}var Cn=Le.map(function(Mu){return""+Mu});Cn.unshift("Warning: "+we),Function.prototype.apply.call(console[X],console,Cn);try{var cr=0,Si="Warning: "+we.replace(/%s/g,function(){return Le[cr++]});throw new Error(Si)}catch(Mu){}}}var nn={};function an(X,we){{var Le=X.constructor,Ne=Le&&(Le.displayName||Le.name)||"ReactClass",dt=Ne+"."+we;if(nn[dt])return;ct("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",we,Ne),nn[dt]=!0}}var Mn={isMounted:function(X){return!1},enqueueForceUpdate:function(X,we,Le){an(X,"forceUpdate")},enqueueReplaceState:function(X,we,Le,Ne){an(X,"replaceState")},enqueueSetState:function(X,we,Le,Ne){an(X,"setState")}},lr={};Object.freeze(lr);function ln(X,we,Le){this.props=X,this.context=we,this.refs=lr,this.updater=Le||Mn}ln.prototype.isReactComponent={},ln.prototype.setState=function(X,we){if(!(typeof X=="object"||typeof X=="function"||X==null))throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,X,we,"setState")},ln.prototype.forceUpdate=function(X){this.updater.enqueueForceUpdate(this,X,"forceUpdate")};{var Vt={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]},Er=function(X,we){Object.defineProperty(ln.prototype,X,{get:function(){ze("%s(...) is deprecated in plain JavaScript React classes. %s",we[0],we[1])}})};for(var w in Vt)Vt.hasOwnProperty(w)&&Er(w,Vt[w])}function jt(){}jt.prototype=ln.prototype;function Xn(X,we,Le){this.props=X,this.context=we,this.refs=lr,this.updater=Le||Mn}var vr=Xn.prototype=new jt;vr.constructor=Xn,i(vr,ln.prototype),vr.isPureReactComponent=!0;function jr(){var X={current:null};return Object.seal(X),X}var fr=Object.prototype.hasOwnProperty,zr={key:!0,ref:!0,__self:!0,__source:!0},Xt,wu,d0;d0={};function Ro(X){if(fr.call(X,"ref")){var we=Object.getOwnPropertyDescriptor(X,"ref").get;if(we&&we.isReactWarning)return!1}return X.ref!==void 0}function Qo(X){if(fr.call(X,"key")){var we=Object.getOwnPropertyDescriptor(X,"key").get;if(we&&we.isReactWarning)return!1}return X.key!==void 0}function Fs(X,we){var Le=function(){Xt||(Xt=!0,ct("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",we))};Le.isReactWarning=!0,Object.defineProperty(X,"key",{get:Le,configurable:!0})}function Jo(X,we){var Le=function(){wu||(wu=!0,ct("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://fb.me/react-special-props)",we))};Le.isReactWarning=!0,Object.defineProperty(X,"ref",{get:Le,configurable:!0})}function Zo(X){if(typeof X.ref=="string"&&yt.current&&X.__self&&yt.current.stateNode!==X.__self){var we=Jt(yt.current.type);d0[we]||(ct('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref',Jt(yt.current.type),X.ref),d0[we]=!0)}}var qt=function(X,we,Le,Ne,dt,Yn,Cn){var cr={$$typeof:_,type:X,key:we,ref:Le,props:Cn,_owner:Yn};return cr._store={},Object.defineProperty(cr._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(cr,"_self",{configurable:!1,enumerable:!1,writable:!1,value:Ne}),Object.defineProperty(cr,"_source",{configurable:!1,enumerable:!1,writable:!1,value:dt}),Object.freeze&&(Object.freeze(cr.props),Object.freeze(cr)),cr};function xi(X,we,Le){var Ne,dt={},Yn=null,Cn=null,cr=null,Si=null;if(we!=null){Ro(we)&&(Cn=we.ref,Zo(we)),Qo(we)&&(Yn=""+we.key),cr=we.__self===void 0?null:we.__self,Si=we.__source===void 0?null:we.__source;for(Ne in we)fr.call(we,Ne)&&!zr.hasOwnProperty(Ne)&&(dt[Ne]=we[Ne])}var Mu=arguments.length-2;if(Mu===1)dt.children=Le;else if(Mu>1){for(var zu=Array(Mu),Hu=0;Hu<Mu;Hu++)zu[Hu]=arguments[Hu+2];Object.freeze&&Object.freeze(zu),dt.children=zu}if(X&&X.defaultProps){var Su=X.defaultProps;for(Ne in Su)dt[Ne]===void 0&&(dt[Ne]=Su[Ne])}if(Yn||Cn){var Ti=typeof X=="function"?X.displayName||X.name||"Unknown":X;Yn&&Fs(dt,Ti),Cn&&Jo(dt,Ti)}return qt(X,Yn,Cn,cr,Si,yt.current,dt)}function lu Line truncated
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.`);return X}function Xl(X,we){var Le=Yi();if(we!==void 0&&ct("useContext() second argument is reserved for future use in React. Passing it is not supported. You passed: %s.%s",we,typeof we=="number"&&Array.isArray(arguments[2])?`
Did you call array.map(useContext)? Calling Hooks inside a loop is not supported. Learn more at https://fb.me/rules-of-hooks`:""),X._context!==void 0){var Ne=X._context;Ne.Consumer===X?ct("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?"):Ne.Provider===X&&ct("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?")}return Le.useContext(X,we)}function Mo(X){var we=Yi();return we.useState(X)}function ai(X,we,Le){var Ne=Yi();return Ne.useReducer(X,we,Le)}function so(X){var we=Yi();return we.useRef(X)}function Ql(X,we){var Le=Yi();return Le.useEffect(X,we)}function ko(X,we){var Le=Yi();return Le.useLayoutEffect(X,we)}function Is(X,we){var Le=Yi();return Le.useCallback(X,we)}function $n(X,we){var Le=Yi();return Le.useMemo(X,we)}function el(X,we,Le){var Ne=Yi();return Ne.useImperativeHandle(X,we,Le)}function ao(X,we){{var Le=Yi();return Le.useDebugValue(X,we)}}var I0;I0=!1;function wl(){if(yt.current){var X=Jt(yt.current.type);if(X)return`
Check the render method of \``+X+"`."}return""}function No(X){if(X!==void 0){var we=X.fileName.replace(/^.*[\\\/]/,""),Le=X.lineNumber;return`
Check your code at `+we+":"+Le+"."}return""}function wt(X){return X!=null?No(X.__source):""}var bt={};function Hn(X){var we=wl();if(!we){var Le=typeof X=="string"?X:X.displayName||X.name;Le&&(we=`
Check the top-level render call using <`+Le+">.")}return we}function qr(X,we){if(!(!X._store||X._store.validated||X.key!=null)){X._store.validated=!0;var Le=Hn(we);if(!bt[Le]){bt[Le]=!0;var Ne="";X&&X._owner&&X._owner!==yt.current&&(Ne=" It was passed a child from "+Jt(X._owner.type)+"."),fe(X),ct('Each child in a list should have a unique "key" prop.%s%s See https://fb.me/react-warning-keys for more information.',Le,Ne),fe(null)}}}function Ki(X,we){if(typeof X=="object"){if(Array.isArray(X))for(var Le=0;Le<X.length;Le++){var Ne=X[Le];Dr(Ne)&&qr(Ne,we)}else if(Dr(X))X._store&&(X._store.validated=!0);else if(X){var dt=Oe(X);if(typeof dt=="function"&&dt!==X.entries)for(var Yn=dt.call(X),Cn;!(Cn=Yn.next()).done;)Dr(Cn.value)&&qr(Cn.value,we)}}}function Qr(X){{var we=X.type;if(we==null||typeof we=="string")return;var Le=Jt(we),Ne;if(typeof we=="function")Ne=we.propTypes;else if(typeof we=="object"&&(we.$$typeof===W||we.$$typeof===he))Ne=we.propTypes;else return;Ne?(fe(X),o(Ne,X.props,"prop",Le,rt.getStackAddendum),fe(null)):we.PropTypes!==void 0&&!I0&&(I0=!0,ct("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",Le||"Unknown")),typeof we.getDefaultProps=="function"&&!we.getDefaultProps.isReactClassApproved&&ct("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ou(X){{fe(X);for(var we=Object.keys(X.props),Le=0;Le<we.length;Le++){var Ne=we[Le];if(Ne!=="children"&&Ne!=="key"){ct("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",Ne);break}}X.ref!==null&&ct("Invalid attribute `ref` supplied to `React.Fragment`."),fe(null)}}function h0(X,we,Le){var Ne=eu(X);if(!Ne){var dt="";(X===void 0||typeof X=="object"&&X!==null&&Object.keys(X).length===0)&&(dt+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var Yn=wt(we);Yn?dt+=Yn:dt+=wl();var Cn;X===null?Cn="null":Array.isArray(X)?Cn="array":X!==void 0&&X.$$typeof===_?(Cn="<"+(Jt(X.type)||"Unknown")+" />",dt=" Did you accidentally export a JSX literal instead of a component?"):Cn=typeof X,ct("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Cn,dt)}var cr=xi.apply(this,arguments);if(cr==null)return cr;if(Ne)for(var Si=2;Si<arguments.length;Si++)Ki(arguments[Si],X);return X===k?Ou(cr):Qr(cr),cr}var Ni=!1;function v0(X){var we=h0.bind(null,X);return we.type=X,Ni||(Ni=!0,ze("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.")),Object.defineProperty(we,"type",{enumerable:!1,get:function(){return ze("Factory.type is deprecated. Access the class directly before passing it to createFactory."),Object.defineProperty(this,"type",{value:X}),X}}),we}function hs(X,we,Le){for(var Ne=mi.apply(this,arguments),dt=2;dt<arguments.length;dt++)Ki(arguments[dt],Ne.type);return Qr(Ne),Ne}try{var Tt=Object.freeze({}),fo=new Map([[Tt,null]]),tl=new Set([Tt]);fo.set(0,0),tl.add(0)}catch(X){}var Jl=h0,ju=hs,vs=v0,b0={map:yi,forEach:Hr,count:en,toArray:bn,only:Ai};Eu.Children=b0,Eu.Component=ln,Eu.Fragment=k,Eu.Profiler=O,Eu.PureComponent=Xn,Eu.StrictMode=L,Eu.Suspense=ne,Eu.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=oe,Eu.cloneElement=ju,Eu.createContext=gi,Eu.createElement=Jl,Eu.createFactory=vs,Eu.createRef=jr,Eu.forwardRef=Au,Eu.isValidElement=Dr,Eu.lazy=Wt,Eu.memo=X0,Eu.useCallback=Is,Eu.useContext=Xl,Eu.useDebugValue=ao,Eu.useEffect=Ql,Eu.useImperativeHandle=el,Eu.useLayoutEffect=ko,Eu.useMemo=$n,Eu.useReducer=ai,Eu.useRef=so,Eu.useState=Mo,Eu.version=a}()});var Mi=tt((oH,KE)=>{"use strict";process.env.NODE_ENV==="production"?KE.exports=W8():KE.exports=J8()});var Z8=tt((zv,Ny)=>{(function(){var i,o="4.17.21",a=200,p="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",_="Expected a function",t="Invalid `variable` option passed into `_.template`",k="__lodash_hash_undefined__",L=500,O="__lodash_placeholder__",C=1,U=2,H=4,W=1,ne=2,m=1,he=2,Ee=4,ve=8,se=16,De=32,pe=64,me=128,ie=256,Oe=512,je=30,qe="...",yt=800,gt=16,Xe=1,ut=2,We=3,Ft=1/0,Jt=9007199254740991,rt=17976931348623157e292,Q=0/0,fe=4294967295,xe=fe-1,oe=fe>>>1,ze=[["ary",me],["bind",m],["bindKey",he],["curry",ve],["curryRight",se],["flip",Oe],["partial",De],["partialRight",pe],["rearg",ie]],ct="[object Arguments]",Rt="[object Array]",nn="[object AsyncFunction]",an="[object Boolean]",Mn="[object Date]",lr="[object DOMException]",ln="[object Error]",Vt="[object Function]",Er="[object GeneratorFunction]",w="[object Map]",jt="[object Number]",Xn="[object Null]",vr="[object Object]",jr="[object Promise]",fr="[object Proxy]",zr="[object RegExp]",Xt="[object Set]",wu="[object String]",d0="[object Symbol]",Ro="[object Undefined]",Qo="[object WeakMap]",Fs="[object Wea Line truncated
/* [wrapped with `+v+`] */
`)}function is(d){return tr(d)||dl(d)||!!(ho&&d&&d[ho])}function Eo(d,v){var x=typeof d;return v=v==null?Jt:v,!!v&&(x=="number"||x!="symbol"&&Is.test(d))&&d>-1&&d%1==0&&d<v}function oo(d,v,x){if(!bu(x))return!1;var P=typeof v;return(P=="number"?pl(x)&&Eo(v,x.length):P=="string"&&v in x)?wo(x[v],d):!1}function Ji(d,v){if(tr(d))return!1;var x=typeof d;return x=="number"||x=="symbol"||x=="boolean"||d==null||bl(d)?!0:Ri.test(d)||!Hr.test(d)||v!=null&&d in xn(v)}function Yr(d){var v=typeof d;return v=="string"||v=="number"||v=="symbol"||v=="boolean"?d!=="__proto__":d===null}function kf(d){var v=Ho(d),x=Y[v];if(typeof x!="function"||!(v in at.prototype))return!1;if(d===x)return!0;var P=qn(x);return!!P&&d===P[0]}function om(d){return!!zs&&zs in d}var Nl=x0?xa:Up;function Nf(d){var v=d&&d.constructor,x=typeof v=="function"&&v.prototype||Rn;return d===x}function Lf(d){return d===d&&!bu(d)}function gd(d,v){return function(x){return x==null?!1:x[d]===v&&(v!==i||d in xn(x))}}function _d(d){var v=Rd(d,function(P){return x.size===L&&x.clear(),P}),x=v.cache;return v}function Dc(d,v){var x=d[1],P=v[1],q=x|P,ee=q<(m|he|me),de=P==me&&x==ve||P==me&&x==ie&&d[7].length<=v[8]||P==(me|ie)&&v[7].length<=v[8]&&x==ve;if(!(ee||de))return d;P&m&&(d[2]=v[2],q|=x&m?0:Ee);var _e=v[3];if(_e){var Ie=d[3];d[3]=Ie?Vs(Ie,_e,v[4]):_e,d[4]=Ie?C0(d[3],O):v[4]}return _e=v[5],_e&&(Ie=d[5],d[5]=Ie?ma(Ie,_e,v[6]):_e,d[6]=Ie?C0(d[5],O):v[6]),_e=v[7],_e&&(d[7]=_e),P&me&&(d[8]=d[8]==null?v[8]:Kn(d[8],v[8])),d[9]==null&&(d[9]=v[9]),d[0]=v[0],d[1]=q,d}function r1(d){var v=[];if(d!=null)for(var x in xn(d))v.push(x);return v}function Xa(d){return Vu.call(d)}function F2(d,v,x){return v=ni(v===i?d.length-1:v,0),function(){for(var P=arguments,q=-1,ee=ni(P.length-v,0),de=Ye(ee);++q<ee;)de[q]=P[v+q];q=-1;for(var _e=Ye(v+1);++q<v;)_e[q]=P[q];return _e[v]=x(de),ue(d,this,_e)}}function Ed(d,v){return v.length<2?d:J(d,ll(v,0,-1))}function i1(d,v){for(var x=d.length,P=Kn(v.length,x),q=iu(d);P--;){var ee=v[P];d[P]=Eo(ee,x)?q[ee]:i}return d}function Ff(d,v){if(!(v==="constructor"&&typeof d[v]=="function")&&v!="__proto__")return d[v]}var u1=Dd(Yc),Qa=gf||function(d,v){return ji.setTimeout(d,v)},o1=Dd(C2);function P2(d,v,x){var P=v+"";return o1(d,cn(P,wh(Mf(P),x)))}function Dd(d){var v=0,x=0;return function(){var P=e0(),q=gt-(P-x);if(x=P,q>0){if(++v>=yt)return arguments[0]}else v=0;return d.apply(i,arguments)}}function wc(d,v){var x=-1,P=d.length,q=P-1;for(v=v===i?P:v;++x<v;){var ee=ad(x,q),de=d[ee];d[ee]=d[x],d[x]=de}return d.length=v,d}var l1=_d(function(d){var v=[];return d.charCodeAt(0)===46&&v.push(""),d.replace(K0,function(x,P,q,ee){v.push(q?ee.replace(Yi,"$1"):P||x)}),v});function Ll(d){if(typeof d=="string"||bl(d))return d;var v=d+"";return v=="0"&&1/d==-Ft?"-0":v}function Ea(d){if(d!=null){try{return Fu.call(d)}catch(v){}try{return d+""}catch(v){}}return""}function wh(d,v){return nt(ze,function(x){var P="_."+x[0];v&x[1]&&!sn(d,P)&&d.push(P)}),d.sort()}function I2(d){if(d instanceof at)return d.clone();var v=new Vr(d.__wrapped__,d.__chain__);return v.__actions__=iu(d.__actions__),v.__index__=d.__index__,v.__values__=d.__values__,v}function b2(d,v,x){(x?oo(d,v,x):v===i)?v=1:v=ni(Mr(v),0);var P=d==null?0:d.length;if(!P||v<1)return[];for(var q=0,ee=0,de=Ye($u(P/v));q<P;)de[ee++]=ll(d,q,q+=v);return de}function Sh(d){for(var v=-1,x=d==null?0:d.length,P=0,q=[];++v<x;){var ee=d[v];ee&&(q[P++]=ee)}return q}function wd(){var d=arguments.length;if(!d)return[];for(var v=Ye(d-1),x=arguments[0],P=d;P--;)v[P-1]=arguments[P];return Dn(tr(x)?iu(x):[x],qi(v,1))}var Th=Ir(function(d,v){return l0(d)?Al(d,qi(v,1,l0,!0)):[]}),Fl=Ir(function(d,v){var x=Pl(v);return l0(x)&&(x=i),l0(d)?Al(d,qi(v,1,l0,!0),Vn(x,2)):[]}),us=Ir(function(d,v){var x=Pl(v);return l0(x)&&(x=i),l0(d)?Al(d,qi(v,1,l0,!0),i,x):[]});function xs(d,v,x){var P=d==null?0:d.length;return P?(v=x||v===i?1:Mr(v),ll(d,v<0?0:v,P)):[]}function Gs(d,v,x){var P=d==null?0:d.length;return P?(v=x||v===i?1:Mr(v),v=P-v,ll(d,0,v<0?0:v)):[]}function B2(d,v){return d&&d.length?hc(d,Vn(v,3),!0,!0):[]}function Ch(d,v){return d&&d.length?hc(d,Vn(v,3),!0):[]}function U2(d,v,x,P){var q=d==null?0:d.length;return q?(x&&typeof x!="number"&&oo(d,v,x)&&(x=0,P=q),pc(d,v,x,P)):[]}function j2(d,v,x){var P=d==null?0:d.length;if(!P)return-1;var q=x==null?0:Mr(x);return q<0&&(q=ni(P+q,0)),it(d,Vn(v,3),q)}function s1(d,v,x){var P=d==null?0:d.length;if(!P)return-1;var q=P-1;return x!==i&&(q=Mr(x),q=x<0?ni(P+q,0):Kn(q,P-1)),it(d,Vn(v,3),q,!0)}function a1(d){var v=d==null?0:d.length;return v?qi(d,1):[]}function xh(d){var v=d==null?0:d.length;return v?qi(d,Ft):[]}function z2(d,v){var x=d==null?0:d.length;return x?(v=v===i?1:Mr(v),qi(d,v)):[]}function H2(d){for(var v=-1,x=d==null?0:d.length,P={};++v<x;){var q=d[v];P[q[0]]=q[1]}return P}function Rs(d){return d&&d.length?d[0]:i}function Ja(d,v,x){var P=d==null?0:d.length;if(!P)return-1;var q=x==null?0:Mr(x);return q<0&&(q=ni(P+q,0)),Dt(d,v,q)}function Rh(d){var v=d==null?0:d.length;return v?ll(d,0,-1):[]}va Line truncated
`;d.replace(on,function(ar,ui,di,jl,Zi,lo){return di||(di=jl),At+=d.slice(Et,lo).replace(ao,js),ui&&(_e=!0,At+=`' +
__e(`+ui+`) +
'`),Zi&&(Ie=!0,At+=`';
`+Zi+`;
__p += '`),di&&(At+=`' +
((__t = (`+di+`)) == null ? '' : __t) +
'`),Et=lo+ar.length,ar}),At+=`';
`;var rr=li.call(v,"variable")&&v.variable;if(!rr)At=`with (obj) {
`+At+`
}
`;else if(X0.test(rr))throw new Kt(t);At=(Ie?At.replace(Xr,""):At).replace(Ao,"$1").replace(Oo,"$1;"),At="function("+(rr||"obj")+`) {
`+(rr?"":`obj || (obj = {});
`)+"var __t, __p = ''"+(_e?", __e = _.escape":"")+(Ie?`, __j = Array.prototype.join;
function print() { __p += __j.call(arguments, '') }
`:`;
`)+At+`return __p
}`;var br=_v(function(){return pr(ee,kn+"return "+At).apply(i,de)});if(br.source=At,gp(br))throw br;return br}function hv(d){return Ui(d).toLowerCase()}function Yd(d){return Ui(d).toUpperCase()}function Kd(d,v,x){if(d=Ui(d),d&&(x||v===i))return Lu(d);if(!d||!(v=sl(v)))return d;var P=ei(d),q=ei(v),ee=hf(P,q),de=Sl(P,q)+1;return va(P,ee,de).join("")}function Op(d,v,x){if(d=Ui(d),d&&(x||v===i))return d.slice(0,po(d)+1);if(!d||!(v=sl(v)))return d;var P=ei(d),q=Sl(P,ei(v))+1;return va(P,0,q).join("")}function vv(d,v,x){if(d=Ui(d),d&&(x||v===i))return d.replace(bn,"");if(!d||!(v=sl(v)))return d;var P=ei(d),q=hf(P,ei(v));return va(P,q).join("")}function Xd(d,v){var x=je,P=qe;if(bu(v)){var q="separator"in v?v.separator:q;x="length"in v?Mr(v.length):x,P="omission"in v?sl(v.omission):P}d=Ui(d);var ee=d.length;if(bo(d)){var de=ei(d);ee=de.length}if(x>=ee)return d;var _e=x-tu(P);if(_e<1)return P;var Ie=de?va(de,0,_e).join(""):d.slice(0,_e);if(q===i)return Ie+P;if(de&&(_e+=Ie.length-_e),D1(q)){if(d.slice(_e).search(q)){var Et,St=Ie;for(q.global||(q=yu(q.source,Ui(Mo.exec(q))+"g")),q.lastIndex=0;Et=q.exec(St);)var At=Et.index;Ie=Ie.slice(0,At===i?_e:At)}}else if(d.indexOf(sl(q),_e)!=_e){var on=Ie.lastIndexOf(q);on>-1&&(Ie=Ie.slice(0,on))}return Ie+P}function mv(d){return d=Ui(d),d&&ki.test(d)?d.replace(F0,Bi):d}var yv=Cf(function(d,v,x){return d+(x?" ":"")+v.toUpperCase()}),Mp=_h("toUpperCase");function gv(d,v,x){return d=Ui(d),v=x?i:v,v===i?gs(d)?yf(d):g0(d):d.match(v)||[]}var _v=Ir(function(d,v){try{return ue(d,i,v)}catch(x){return gp(x)?x:new Kt(x)}}),Gm=fl(function(d,v){return nt(v,function(x){x=Ll(x),Gu(d,x,E1(d[x],d))}),d});function Ev(d){var v=d==null?0:d.length,x=Vn();return d=v?Lt(d,function(P){if(typeof P[1]!="function")throw new ti(_);return[x(P[0]),P[1]]}):[],Ir(function(P){for(var q=-1;++q<v;){var ee=d[q];if(ue(ee[0],this,P))return ue(ee[1],this,P)}})}function Ym(d){return Df(j0(d,C))}function Qd(d){return function(){return d}}function Dv(d,v){return d==null||d!==d?v:d}var kp=e1(),Km=e1(!0);function s0(d){return d}function Np(d){return Cu(typeof d=="function"?d:j0(d,C))}function Xm(d){return S2(j0(d,C))}function Qm(d,v){return wf(d,j0(v,C))}var Lp=Ir(function(d,v){return function(x){return Ol(x,d,v)}}),tf=Ir(function(d,v){return function(x){return Ol(d,x,v)}});function Fp(d,v,x){var P=N0(v),q=b(v,P);x==null&&!(bu(v)&&(q.length||!P.length))&&(x=v,v=d,d=this,q=b(v,N0(v)));var ee=!(bu(x)&&"chain"in x)||!!x.chain,de=xa(d);return nt(q,function(_e){var Ie=v[_e];d[_e]=Ie,de&&(d.prototype[_e]=function(){var Et=this.__chain__;if(ee||Et){var St=d(this.__wrapped__),At=St.__actions__=iu(this.__actions__);return At.push({func:Ie,args:arguments,thisArg:d}),St.__chain__=Et,St}return Ie.apply(d,Dn([this.value()],arguments))})}),d}function Pp(){return ji._===this&&(ji._=Xi),this}function Ip(){}function Jm(d){return d=Mr(d),Ir(function(v){return Vc(v,d)})}var Zm=Fr(Lt),wv=Fr(Mt),Hf=Fr(Cr);function bp(d){return Ji(d)?fn(Ll(d)):go(d)}function Sv(d){return function(v){return d==null?i:J(d,v)}}var $m=t1(),ey=t1(!0);function Bp(){return[]}function Up(){return!1}function ty(){return{}}function ny(){return""}function Tv(){return!0}function jp(d,v){if(d=Mr(d),d<1||d>Jt)return[];var x=fe,P=Kn(d,fe);v=Vn(v),d-=fe;for(var q=T0(P,v);++x<d;)v(x);return q}function zp(d){return tr(d)?Lt(d,Ll):bl(d)?[d]:iu(l1(Ui(d)))}function Jd(d){var v=++Tl;return Ui(d)+v}var ry=vd(function(d,v){return d+v},0),k1=L2("ceil"),iy=vd(function(d,v){return d/v},1),Cv=L2("floor");function xv(d){return d&&d.length?pa(d,s0,xt):i}function uy(d,v){return d&&d.length?pa(d,Vn(v,2),xt):i}function qf(d){return un(d,s0)}function Hp(d,v){return un(d,Vn(v,2))}function Rv(d){return d&&d.length?pa(d,s0,od):i}function oy(d,v){return d&&d.length?pa(d,Vn(v,2),od):i}var ly=vd(function(d,v){return d*v},1),qp=L2("round"),sy=vd(function(d,v){return d-v},0);function Zs(d){return d&&d.length?Nu(d,s0):0}function ay(d,v){return d&&d.length?Nu(d,Vn(v,2)):0}return Y.after=sp,Y.ary=Yh,Y.assign=Sp,Y.assignIn=bd,Y.assignInWith=So,Y.assignWith=As,Y.at=bf,Y.before=xd,Y.bind=E1,Y.bindAll=Gm,Y.bindKey=Kh,Y.castArray=$h,Y.chain=Bh,Y.chunk=b2,Y.compact=Sh,Y.concat=wd,Y.cond=Ev,Y.conforms=Ym,Y.constant=Qd,Y.countBy=Td,Y.create=Bd,Y.curry=ap,Y.curryRight=Xh,Y.debounce=fp,Y.defaults=Tp,Y.defaultsDeep=T1,Y.defer=Qh,Y.delay=Jh,Y.difference=Th,Y.differenceBy=Fl,Y.differenceWith=us,Y.drop=xs,Y.dropRight=Gs,Y.dropRightWhile=B2,Y.dropWhile=Ch,Y.fill=U2,Y.filter=ep,Y.flatMap=Hh,Y.flatMapDeep=np,Y.flatMapDepth=qh,Y.flatten=a1,Y.flattenDeep=xh,Y.flattenDepth=z2,Y.flip=cp,Y.flow=kp,Y.flowRight=Km,Y.fromPairs=H2,Y.functions=k0,Y.functionsIn=Ud,Y.groupBy=vm,Y.initial=Rh,Y.intersection=du,Y.intersectionBy=f1,Y.intersectionWith=Ah,Y.invert=Rc,Y.invertBy=jd,Y.invokeMap=ym,Y.iteratee=Np,Y.keyBy=Vh,Y.keys=N0,Y.keysIn=dn,Y.map=g1,Y.mapKeys=zd,Y.mapValues=Hd,Y.matches=Xm,Y.matchesProperty=Qm,Y.memoize=Rd,Y.merge=Ac,Y.mergeWith=Oc,Y.method=Lp,Y.methodOf=tf,Y.mixin=Fp,Y.negate=Ad,Y.nthArg=Jm,Y.omit=Mc,Y.omitBy=R1,Y.once Line truncated
`;L!==p&&(p=L,i.write(fS.default.eraseLines(a)+L),a=L.split(`
`).length)};return t.clear=()=>{i.write(fS.default.eraseLines(a)),p="",a=0},t.done=()=>{p="",a=0,o||(cS.default.show(),_=!1)},t};by.default={create:SP}});var hS=tt((vH,pS)=>{pS.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var yS=tt(Fa=>{"use strict";var vS=hS(),Uc=process.env;Object.defineProperty(Fa,"_vendors",{value:vS.map(function(i){return i.constant})});Fa.name=null;Fa.isPR=null;vS.forEach(function(i){var o=Array.isArray(i.env)?i.env:[i.env],a=o.every(function(p){return mS(p)});if(Fa[i.constant]=a,a)switch(Fa.name=i.name,typeof i.pr){case"string":Fa.isPR=!!Uc[i.pr];break;case"object":"env"in i.pr?Fa.isPR=i.pr.env in Uc&&Uc[i.pr.env]!==i.pr.ne:"any"in i.pr?Fa.isPR=i.pr.any.some(function(p){return!!Uc[p]}):Fa.isPR=mS(i.pr);break;default:Fa.isPR=null}});Fa.isCI=!!(Uc.CI||Uc.CONTINUOUS_INTEGRATION||Uc.BUILD_NUMBER||Uc.RUN_ID||Fa.name);function mS(i){return typeof i=="string"?!!Uc[i]:Object.keys(i).every(function(o){return Uc[o]===i[o]})}});var _S=tt((yH,gS)=>{"use strict";gS.exports=yS().isCI});var DS=tt((gH,ES)=>{"use strict";var TP=i=>{let o=new Set;do for(let a of Reflect.ownKeys(i))o.add([i,a]);while((i=Reflect.getPrototypeOf(i))&&i!==Object.prototype);return o};ES.exports=(i,{include:o,exclude:a}={})=>{let p=_=>{let t=k=>typeof k=="string"?_===k:k.test(_);return o?o.some(t):a?!a.some(t):!0};for(let[_,t]of TP(i.constructor.prototype)){if(t==="constructor"||!p(t))continue;let k=Reflect.getOwnPropertyDescriptor(_,t);k&&typeof k.value=="function"&&(i[t]=i[t].bind(i))}return i}});var AS=tt(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});var Vv,By,A_,O_,rD;typeof window=="undefined"||typeof MessageChannel!="function"?(Gv=null,iD=null,uD=function(){if(Gv!==null)try{var i=ou.unstable_now();Gv(!0,i),Gv=null}catch(o){throw setTimeout(uD,0),o}},wS=Date.now(),ou.unstable_now=function(){return Date.now()-wS},Vv=function(i){Gv!==null?setTimeout(Vv,0,i):(Gv=i,setTimeout(uD,0))},By=function(i,o){iD=setTimeout(i,o)},A_=function(){clearTimeout(iD)},O_=function(){return!1},rD=ou.unstable_forceFrameRate=function(){}):(M_=window.performance,oD=window.Date,SS=window.setTimeout,TS=window.clearTimeout,typeof console!="undefined"&&(CS=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),typeof CS!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof M_=="object"&&typeof M_.now=="function"?ou.unstable_now=function(){return M_.now()}:(xS=oD.now(),ou.unstable_now=function(){return oD.now()-xS}),Uy=!1,jy=null,k_=-1,lD=5,sD=0,O_=function(){return ou.unstable_now()>=sD},rD=function(){},ou.unstable_forceFrameRate=function(i){0>i||125<i?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsup Line truncated
in `+(F||"Unknown")+J}y+=R,g=g.return}while(g);return y}new Set;var Ri=[],K0=-1;function yi(g){0>K0||(g.current=Ri[K0],Ri[K0]=null,K0--)}function en(g,y){K0++,Ri[K0]=g.current,g.current=y}var bn={},Ai={current:bn},gi={current:!1},Wt=bn;function Au(g,y){var R=g.type.contextTypes;if(!R)return bn;var F=g.stateNode;if(F&&F.__reactInternalMemoizedUnmaskedChildContext===y)return F.__reactInternalMemoizedMaskedChildContext;var b={},J;for(J in R)b[J]=y[J];return F&&(g=g.stateNode,g.__reactInternalMemoizedUnmaskedChildContext=y,g.__reactInternalMemoizedMaskedChildContext=b),b}function eu(g){return g=g.childContextTypes,g!=null}function X0(g){yi(gi,g),yi(Ai,g)}function Yi(g){yi(gi,g),yi(Ai,g)}function Xl(g,y,R){if(Ai.current!==bn)throw Error(t(168));en(Ai,y,g),en(gi,R,g)}function Mo(g,y,R){var F=g.stateNode;if(g=y.childContextTypes,typeof F.getChildContext!="function")return R;F=F.getChildContext();for(var b in F)if(!(b in g))throw Error(t(108,je(y)||"Unknown",b));return a({},R,{},F)}function ai(g){var y=g.stateNode;return y=y&&y.__reactInternalMemoizedMergedChildContext||bn,Wt=Ai.current,en(Ai,y,g),en(gi,gi.current,g),!0}function so(g,y,R){var F=g.stateNode;if(!F)throw Error(t(169));R?(y=Mo(g,y,Wt),F.__reactInternalMemoizedMergedChildContext=y,yi(gi,g),yi(Ai,g),en(Ai,y,g)):yi(gi,g),en(gi,R,g)}var Ql=_.unstable_runWithPriority,ko=_.unstable_scheduleCallback,Is=_.unstable_cancelCallback,$n=_.unstable_shouldYield,el=_.unstable_requestPaint,ao=_.unstable_now,I0=_.unstable_getCurrentPriorityLevel,wl=_.unstable_ImmediatePriority,No=_.unstable_UserBlockingPriority,wt=_.unstable_NormalPriority,bt=_.unstable_LowPriority,Hn=_.unstable_IdlePriority,qr={},Ki=el!==void 0?el:function(){},Qr=null,Ou=null,h0=!1,Ni=ao(),v0=1e4>Ni?ao:function(){return ao()-Ni};function hs(){switch(I0()){case wl:return 99;case No:return 98;case wt:return 97;case bt:return 96;case Hn:return 95;default:throw Error(t(332))}}function Tt(g){switch(g){case 99:return wl;case 98:return No;case 97:return wt;case 96:return bt;case 95:return Hn;default:throw Error(t(332))}}function fo(g,y){return g=Tt(g),Ql(g,y)}function tl(g,y,R){return g=Tt(g),ko(g,y,R)}function Jl(g){return Qr===null?(Qr=[g],Ou=ko(wl,vs)):Qr.push(g),qr}function ju(){if(Ou!==null){var g=Ou;Ou=null,Is(g)}vs()}function vs(){if(!h0&&Qr!==null){h0=!0;var g=0;try{var y=Qr;fo(99,function(){for(;g<y.length;g++){var R=y[g];do R=R(!0);while(R!==null)}}),Qr=null}catch(R){throw Qr!==null&&(Qr=Qr.slice(g+1)),ko(wl,ju),R}finally{h0=!1}}}var b0=3;function X(g,y,R){return R/=10,1073741821-(((1073741821-g+y/10)/R|0)+1)*R}function we(g,y){return g===y&&(g!==0||1/g==1/y)||g!==g&&y!==y}var Le=typeof Object.is=="function"?Object.is:we,Ne=Object.prototype.hasOwnProperty;function dt(g,y){if(Le(g,y))return!0;if(typeof g!="object"||g===null||typeof y!="object"||y===null)return!1;var R=Object.keys(g),F=Object.keys(y);if(R.length!==F.length)return!1;for(F=0;F<R.length;F++)if(!Ne.call(y,R[F])||!Le(g[R[F]],y[R[F]]))return!1;return!0}function Yn(g,y){if(g&&g.defaultProps){y=a({},y),g=g.defaultProps;for(var R in g)y[R]===void 0&&(y[R]=g[R])}return y}var Cn={current:null},cr=null,Si=null,Mu=null;function zu(){Mu=Si=cr=null}function Hu(g,y){var R=g.type._context;ln?(en(Cn,R._currentValue,g),R._currentValue=y):(en(Cn,R._currentValue2,g),R._currentValue2=y)}function Su(g){var y=Cn.current;yi(Cn,g),g=g.type._context,ln?g._currentValue=y:g._currentValue2=y}function Ti(g,y){for(;g!==null;){var R=g.alternate;if(g.childExpirationTime<y)g.childExpirationTime=y,R!==null&&R.childExpirationTime<y&&(R.childExpirationTime=y);else if(R!==null&&R.childExpirationTime<y)R.childExpirationTime=y;else break;g=g.return}}function Lo(g,y){cr=g,Mu=Si=null,g=g.dependencies,g!==null&&g.firstContext!==null&&(g.expirationTime>=y&&(po=!0),g.firstContext=null)}function ku(g,y){if(Mu!==g&&y!==!1&&y!==0)if((typeof y!="number"||y===1073741823)&&(Mu=g,y=1073741823),y={context:g,observedBits:y,next:null},Si===null){if(cr===null)throw Error(t(308));Si=y,cr.dependencies={expirationTime:0,firstContext:y,responders:null}}else Si=Si.next=y;return ln?g._currentValue:g._currentValue2}var co=!1;function qu(g){return{baseState:g,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Pa(g){return{baseState:g.baseState,firstUpdate:g.firstUpdate,lastUpdate:g.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function m0(g,y){return{expirationTime:g,suspenseConfig:y,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function ia(g,y){g.lastUpdate===null?g.firstUpdate=g.lastUpdate=y:(g.lastUpdate.next=y,g.lastUpdate=y)}function Q0(g,y){var R=g.alternate;if(R===null){var F=g.updateQueue,b=null;F===null&&(F=g.updateQueue=qu(g.memoizedState))}else F=g.updateQueue,b=R.updateQueue,F===null?b===null?(F=g.updateQueue=qu(g.memoizedState),b=R.updateQueue=qu(R.me Line truncated
Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+Hr(b))}Ae!==E0&&(Ae=Kn),J=Tl(J,b),xt=F;do{switch(xt.tag){case 3:ce=J,xt.effectTag|=4096,xt.expirationTime=y;var Ue=_s(xt,ce,y);ua(xt,Ue);break e;case 1:ce=J;var lt=xt.type,$t=xt.stateNode;if((xt.effectTag&64)==0&&(typeof lt.getDerivedStateFromError=="function"||$t!==null&&typeof $t.componentDidCatch=="function"&&(mr===null||!mr.has($t)))){xt.effectTag|=4096,xt.expirationTime=y;var Wn=aa(xt,ce,y);ua(xt,Wn);break e}}xt=xt.return}while(xt!==null)}re=mo(re)}catch(si){y=si;continue}break}while(1)}function U0(){var g=$u.current;return $u.current=Io,g===null?Io:g}function cc(g,y){g<vt&&2<g&&(vt=g),y!==null&&g<Qt&&2<g&&(Qt=g,On=y)}function Ua(g){g>Sn&&(Sn=g)}function E2(){for(;re!==null;)re=rd(re)}function nd(){for(;re!==null&&!$n();)re=rd(re)}function rd(g){var y=Ha(g.alternate,g,Fe);return g.memoizedProps=g.pendingProps,y===null&&(y=mo(g)),Es.current=null,y}function mo(g){re=g;do{var y=re.alternate;if(g=re.return,(re.effectTag&2048)==0){e:{var R=y;y=re;var F=Fe,b=y.pendingProps;switch(y.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:eu(y.type)&&X0(y);break;case 3:Qe(y),Yi(y),b=y.stateNode,b.pendingContext&&(b.context=b.pendingContext,b.pendingContext=null),(R===null||R.child===null)&&$l(y)&&Ju(y),Jr(y);break;case 5:ue(y);var J=Z(Re.current);if(F=y.type,R!==null&&y.stateNode!=null)Wu(R,y,F,b,J),R.ref!==y.ref&&(y.effectTag|=128);else if(b){if(R=Z(Te.current),$l(y)){if(b=y,!w)throw Error(t(175));R=su(b.stateNode,b.type,b.memoizedProps,J,R,b),b.updateQueue=R,R=R!==null,R&&Ju(y)}else{var ce=fe(F,b,J,R,y);ti(ce,y,!1,!1),y.stateNode=ce,oe(ce,F,b,J,R)&&Ju(y)}y.ref!==null&&(y.effectTag|=128)}else if(y.stateNode===null)throw Error(t(166));break;case 6:if(R&&y.stateNode!=null)Rn(R,y,R.memoizedProps,b);else{if(typeof b!="string"&&y.stateNode===null)throw Error(t(166));if(R=Z(Re.current),J=Z(Te.current),$l(y)){if(R=y,!w)throw Error(t(176));(R=ki(R.stateNode,R.memoizedProps,R))&&Ju(y)}else y.stateNode=nn(b,R,J,y)}break;case 11:break;case 13:if(yi(He,y),b=y.memoizedState,(y.effectTag&64)!=0){y.expirationTime=F;break e}b=b!==null,J=!1,R===null?y.memoizedProps.fallback!==void 0&&$l(y):(F=R.memoizedState,J=F!==null,b||F===null||(F=R.child.sibling,F!==null&&(ce=y.firstEffect,ce!==null?(y.firstEffect=F,F.nextEffect=ce):(y.firstEffect=y.lastEffect=F,F.nextEffect=null),F.effectTag=8))),b&&!J&&(y.mode&2)!=0&&(R===null&&y.memoizedProps.unstable_avoidThisFallback!==!0||(He.current&1)!=0?Ae===Li&&(Ae=e0):((Ae===Li||Ae===e0)&&(Ae=_0),Sn!==0&&ae!==null&&(Al(ae,Fe),Ts(ae,Sn)))),Er&&b&&(y.effectTag|=4),Vt&&(b||J)&&(y.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:Qe(y),Jr(y);break;case 10:Su(y);break;case 9:break;case 14:break;case 17:eu(y.type)&&X0(y);break;case 19:if(yi(He,y),b=y.memoizedState,b===null)break;if(J=(y.effectTag&64)!=0,ce=b.rendering,ce===null){if(J)Fu(b,!1);else if(Ae!==Li||R!==null&&(R.effectTag&64)!=0)for(R=y.child;R!==null;){if(ce=nt(R),ce!==null){for(y.effectTag|=64,Fu(b,!1),R=ce.updateQueue,R!==null&&(y.updateQueue=R,y.effectTag|=4),b.lastEffect===null&&(y.firstEffect=null),y.lastEffect=b.lastEffect,R=F,b=y.child;b!==null;)J=b,F=R,J.effectTag&=2,J.nextEffect=null,J.firstEffect=null,J.lastEffect=null,ce=J.alternate,ce===null?(J.childExpirationTime=0,J.expirationTime=F,J.child=null,J.memoizedProps=null,J.memoizedState=null,J.updateQueue=null,J.dependencies=null):(J.childExpirationTime=ce.childExpirationTime,J.expirationTime=ce.expirationTime,J.child=ce.child,J.memoizedProps=ce.memoizedProps,J.memoizedState=ce.memoizedState,J.updateQueue=ce.updateQueue,F=ce.dependencies,J.dependencies=F===null?null:{expirationTime:F.expirationTime,firstContext:F.firstContext,responders:F.responders}),b=b.sibling;en(He,He.current&1|2,y),y=y.child;break e}R=R.sibling}}else{if(!J)if(R=nt(ce),R!==null){if(y.effectTag|=64,J=!0,R=R.updateQueue,R!==null&&(y.updateQueue=R,y.effectTag|=4),Fu(b,!0),b.tail===null&&b.tailMode==="hidden"&&!ce.alternate){y=y.lastEffect=b.lastEffect,y!==null&&(y.nextEffect=null);break}}else v0()>b.tailExpiration&&1<F&&(y.effectTag|=64,J=!0,Fu(b,!1),y.expirationTime=y.childExpirationTime=F-1);b.isBackwards?(ce.sibling=y.child,y.child=ce):(R=b.last,R!==null?R.sibling=ce:y.child=ce,b.last=ce)}if(b.tail!==null){b.tailExpiration===0&&(b.tailExpiration=v0()+500),R=b.tail,b.rendering=R,b.tail=R.sibling,b.lastEffect=y.lastEffect,R.sibling=null,b=He.current,b=J?b&1|2:b&1,en(He,b,y),y=R;break e}break;case 20:break;case 21:break;default:throw Error(t(156,y.tag))}y=null}if(R=re,Fe===1||R.childExpirationTime!==1){for(b=0,J=R.child;J!==null;)F=J.expirationTime,ce=J.childExpirationTime,F>b&&(b=F),ce>b&&(b=ce),J=J.sibling;R.childExpirationTime=b}if(y!==null)return y;g!==null&&(g.effectTag&2048)==0&&(g.firstEffect===null&&(g.firstEffect=re.firstEffect),re.lastEffect!==null&&(g.lastEffect!==null&&(g.lastEffect.nextEffect=re.firstEffect),g.lastEffect=re.lastEffect),1<re.effectTag&&(g.lastEff Line truncated
Your code should look like:
const MyComponent = lazy(() => import('./MyComponent'))`,T),f._status=Ro,f._result=A}},function(T){f._status===d0&&(f._status=Qo,f._result=T)})}}function Zo(f,c,E){var T=c.displayName||c.name||"";return f.displayName||(T!==""?E+"("+T+")":E)}function qt(f){if(f==null)return null;if(typeof f.tag=="number"&&We(!1,"Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),typeof f=="function")return f.displayName||f.name||null;if(typeof f=="string")return f;switch(f){case oe:return"Fragment";case xe:return"Portal";case ct:return"Profiler";case ze:return"StrictMode";case lr:return"Suspense";case ln:return"SuspenseList"}if(typeof f=="object")switch(f.$$typeof){case nn:return"Context.Consumer";case Rt:return"Context.Provider";case Mn:return Zo(f,f.render,"ForwardRef");case Vt:return qt(f.type);case Er:{var c=f,E=Fs(c);if(E)return qt(E);break}}return null}var xi=0,lu=1,mi=2,Dr=4,$o=6,G0=8,Uu=16,Y0=32,Xr=64,Ao=128,Oo=256,F0=512,su=1024,ki=1028,Ps=932,Kl=2047,P0=2048,p0=4096,Hr=!0,Ri=!0,K0=!0,yi=!0,en=!0,bn=!0,Ai=!1,gi=!1,Wt=!1,Au=!1,eu=!1,X0=!0,Yi=!1,Xl=!1,Mo=!1,ai=!1,so=!1,Ql=rt.ReactCurrentOwner;function ko(f){var c=f,E=f;if(f.alternate)for(;c.return;)c=c.return;else{var T=c;do c=T,(c.effectTag&(mi|su))!==xi&&(E=c.return),T=c.return;while(T)}return c.tag===U?E:null}function Is(f){return ko(f)===f}function $n(f){{var c=Ql.current;if(c!==null&&c.tag===O){var E=c,T=E.stateNode;T._warnedAboutRefsInRender||We(!1,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",qt(E.type)||"A component"),T._warnedAboutRefsInRender=!0}}var A=Ft(f);return A?ko(A)===A:!1}function el(f){if(ko(f)!==f)throw Error("Unable to find node on an unmounted component.")}function ao(f){var c=f.alternate;if(!c){var E=ko(f);if(E===null)throw Error("Unable to find node on an unmounted component.");return E!==f?null:f}for(var T=f,A=c;;){var j=T.return;if(j===null)break;var V=j.alternate;if(V===null){var te=j.return;if(te!==null){T=A=te;continue}break}if(j.child===V.child){for(var le=j.child;le;){if(le===T)return el(j),f;if(le===A)return el(j),c;le=le.sibling}throw Error("Unable to find node on an unmounted component.")}if(T.return!==A.return)T=j,A=V;else{for(var Be=!1,Ke=j.child;Ke;){if(Ke===T){Be=!0,T=j,A=V;break}if(Ke===A){Be=!0,A=j,T=V;break}Ke=Ke.sibling}if(!Be){for(Ke=V.child;Ke;){if(Ke===T){Be=!0,T=V,A=j;break}if(Ke===A){Be=!0,A=V,T=j;break}Ke=Ke.sibling}if(!Be)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(T.alternate!==A)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(T.tag!==U)throw Error("Unable to find node on an unmounted component.");return T.stateNode.current===T?f:c}function I0(f){var c=ao(f);if(!c)return null;for(var E=c;;){if(E.tag===W||E.tag===ne)return E;if(E.child){E.child.return=E,E=E.child;continue}if(E===c)return null;for(;!E.sibling;){if(!E.return||E.return===c)return null;E=E.return}E.sibling.return=E.return,E=E.sibling}return null}function wl(f){var c=ao(f);if(!c)return null;for(var E=c;;){if(E.tag===W||E.tag===ne||Wt&&E.tag===gt)return E;if(E.child&&E.tag!==H){E.child.return=E,E=E.child;continue}if(E===c)return null;for(;!E.sibling;){if(!E.return||E.return===c)return null;E=E.return}E.sibling.return=E.return,E=E.sibling}return null}var No=o.getPublicInstance,wt=o.getRootHostContext,bt=o.getChildHostContext,Hn=o.prepareForCommit,qr=o.resetAfterCommit,Ki=o.createInstance,Qr=o.appendInitialChild,Ou=o.finalizeInitialChildren,h0=o.prepareUpdate,Ni=o.shouldSetTextContent,v0=o.shouldDeprioritizeSubtree,hs=o.createTextInstance,Tt=o.setTimeout,fo=o.clearTimeout,tl=o.noTimeout,Jl=o.now,ju=o.isPrimaryRenderer,vs=o.warnsIfNotActing,b0=o.supportsMutation,X=o.supportsPersistence,we=o.supportsHydration,Le=o.mountResponderInstance,Ne=o.unmountResponderInstance,dt=o.getFundamentalComponentInstance,Yn=o.mountFundamentalComponent,Cn=o.shouldUpdateFundamentalComponent,cr=o.getInstanceFromNode,Si=o.appendChild,Mu=o.appendChildToContainer,zu=o.commitTextUpdate,Hu=o.commitMount,Su=o.commitUpdate,Ti=o.insertBefore,Lo=o.insertInContainerBefore,ku=o.removeChild,co=o.removeChildFromContainer,qu=o.resetTextContent,Pa=o.hideInstance,m0=o.hideTextInstance,ia=o.unhideInstance,Q0=o.unhideTextInstance,ua=o.updateFundamentalComponent,Ia=o.unmountFundamentalComponent,ms=o.cloneInstance,S0=o.createContainerChildSet,Qn=o.appendChildToContainerChildSet,ac=o.finalizeContainerChildren,fi=o.replaceContainerChildren,$r=o.cloneHiddenInstance,Zl=o.cloneHiddenTextInstance,oa=o.cloneInstance,pf=o.canHydrateInstance,bs=o.canHydrateTextInstance,ba=o.canHydrateSuspenseInstance,Bs=o.isSuspenseInstancePending,y0 Line truncated
in `+(f||"Unknown")+T},dr=rt.ReactDebugCurrentFrame;function er(f){switch(f.tag){case U:case H:case ne:case m:case ve:case Ee:return"";default:var c=f._debugOwner,E=f._debugSource,T=qt(f.type),A=null;return c&&(A=qt(c.type)),Dn(T,E,A)}}function Cr(f){var c="",E=f;do c+=er(E),E=E.return;while(E);return c}var An=null,Nr=null;function g0(){{if(An===null)return null;var f=An._debugOwner;if(f!==null&&typeof f!="undefined")return qt(f.type)}return null}function Lr(){return An===null?"":Cr(An)}function it(){dr.getCurrentStack=null,An=null,Nr=null}function Dt(f){dr.getCurrentStack=Lr,An=f,Nr=null}function $e(f){Nr=f}var Pt="\u269B",un="\u26D4",fn=typeof performance!="undefined"&&typeof performance.mark=="function"&&typeof performance.clearMarks=="function"&&typeof performance.measure=="function"&&typeof performance.clearMeasures=="function",Jn=null,wr=null,au=null,Nu=!1,T0=!1,J0=!1,Lu=0,_i=0,Fo=new Set,nl=function(f){return Pt+" "+f},hf=function(f,c){var E=c?un+" ":Pt+" ",T=c?" Warning: "+c:"";return""+E+f+T},Sl=function(f){performance.mark(nl(f))},vf=function(f){performance.clearMarks(nl(f))},Po=function(f,c,E){var T=nl(c),A=hf(f,E);try{performance.measure(A,T)}catch(j){}performance.clearMarks(T),performance.clearMeasures(A)},ys=function(f,c){return f+" (#"+c+")"},js=function(f,c,E){return E===null?f+" ["+(c?"update":"mount")+"]":f+"."+E},Io=function(f,c){var E=qt(f.type)||"Unknown",T=f._debugID,A=f.alternate!==null,j=js(E,A,c);if(Nu&&Fo.has(j))return!1;Fo.add(j);var V=ys(j,T);return Sl(V),!0},bo=function(f,c){var E=qt(f.type)||"Unknown",T=f._debugID,A=f.alternate!==null,j=js(E,A,c),V=ys(j,T);vf(V)},gs=function(f,c,E){var T=qt(f.type)||"Unknown",A=f._debugID,j=f.alternate!==null,V=js(T,j,c),te=ys(V,A);Po(V,te,E)},Qu=function(f){switch(f.tag){case U:case W:case ne:case H:case m:case ve:case Ee:case he:return!0;default:return!1}},Tu=function(){wr!==null&&au!==null&&bo(au,wr),au=null,wr=null,J0=!1},Ei=function(){for(var f=Jn;f;)f._debugIsCurrentlyTiming&&gs(f,null,null),f=f.return},C0=function(f){f.return!==null&&C0(f.return),f._debugIsCurrentlyTiming&&Io(f,null)},Z0=function(){Jn!==null&&C0(Jn)};function Bo(){Hr&&_i++}function la(){Hr&&(Nu&&(T0=!0),wr!==null&&wr!=="componentWillMount"&&wr!=="componentWillReceiveProps"&&(J0=!0))}function $l(f){if(Hr){if(!fn||Qu(f)||(Jn=f,!Io(f,null)))return;f._debugIsCurrentlyTiming=!0}}function tu(f){if(Hr){if(!fn||Qu(f))return;f._debugIsCurrentlyTiming=!1,bo(f,null)}}function ei(f){if(Hr){if(!fn||Qu(f)||(Jn=f.return,!f._debugIsCurrentlyTiming))return;f._debugIsCurrentlyTiming=!1,gs(f,null,null)}}function po(f){if(Hr){if(!fn||Qu(f)||(Jn=f.return,!f._debugIsCurrentlyTiming))return;f._debugIsCurrentlyTiming=!1;var c=f.tag===pe?"Rendering was suspended":"An error was thrown inside this error boundary";gs(f,null,c)}}function Bi(f,c){if(Hr){if(!fn||(Tu(),!Io(f,c)))return;au=f,wr=c}}function Ci(){if(Hr){if(!fn)return;if(wr!==null&&au!==null){var f=J0?"Scheduled a cascading update":null;gs(au,wr,f)}wr=null,au=null}}function mf(f){if(Hr){if(Jn=f,!fn)return;Lu=0,Sl("(React Tree Reconciliation)"),Z0()}}function yf(f,c){if(Hr){if(!fn)return;var E=null;if(f!==null)if(f.tag===U)E="A top-level update interrupted the previous render";else{var T=qt(f.type)||"Unknown";E="An update to "+T+" interrupted the previous render"}else Lu>1&&(E="There were cascading updates");Lu=0;var A=c?"(React Tree Reconciliation: Completed Root)":"(React Tree Reconciliation: Yielded)";Ei(),Po(A,"(React Tree Reconciliation)",E)}}function $0(){if(Hr){if(!fn)return;Nu=!0,T0=!1,Fo.clear(),Sl("(Committing Changes)")}}function eo(){if(Hr){if(!fn)return;var f=null;T0?f="Lifecycle hook scheduled a cascading update":Lu>0&&(f="Caused by a cascading update in earlier commit"),T0=!1,Lu++,Nu=!1,Fo.clear(),Po("(Committing Changes)","(Committing Changes)",f)}}function Ce(){if(Hr){if(!fn)return;_i=0,Sl("(Committing Snapshot Effects)")}}function et(){if(Hr){if(!fn)return;var f=_i;_i=0,Po("(Committing Snapshot Effects: "+f+" Total)","(Committing Snapshot Effects)",null)}}function Ye(){if(Hr){if(!fn)return;_i=0,Sl("(Committing Host Effects)")}}function Yt(){if(Hr){if(!fn)return;var f=_i;_i=0,Po("(Committing Host Effects: "+f+" Total)","(Committing Host Effects)",null)}}function Kt(){if(Hr){if(!fn)return;_i=0,Sl("(Calling Lifecycle Methods)")}}function pr(){if(Hr){if(!fn)return;var f=_i;_i=0,Po("(Calling Lifecycle Methods: "+f+" Total)","(Calling Lifecycle Methods)",null)}}var Wr=[],xn;xn=[];var yu=-1;function Ju(f){return{current:f}}function ti(f,c){if(yu<0){We(!1,"Unexpected pop.");return}c!==xn[yu]&&We(!1,"Unexpected Fiber popped."),f.current=Wr[yu],Wr[yu]=null,xn[yu]=null,yu--}function Jr(f,c,E){yu++,Wr[yu]=f.current,xn[yu]=E,f.current=c}var Wu;Wu={};var Rn={};Object.freeze(Rn);var x0=Ju(Rn),Fu=Ju(!1),li=Rn;function Tl(f,c,E){return ai?Rn:E&&Xi(c)?li:x0.current}function zs(f,c,E){if(!ai){var T=f.stateNode;T.__reactInternalMemoizedUnmaskedChildContext=c,T.__reactInternalMemoizedMaskedChildContext=E}}function Vu(f,c){if(ai)return Rn; Line truncated
* Move code with side effects to componentDidMount, and set initial state in the constructor.
Please update the following components: %s`,V)}if(T.size>0){var te=jo(T);We(!1,`Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://fb.me/react-unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state
Please update the following components: %s`,te)}if(j.size>0){var le=jo(j);We(!1,`Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://fb.me/react-unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
Please update the following components: %s`,le)}if(f.size>0){var Be=jo(f);qs(!1,`componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.
* Move code with side effects to componentDidMount, and set initial state in the constructor.
* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,Be)}if(E.size>0){var Ke=jo(E);qs(!1,`componentWillReceiveProps has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,Ke)}if(A.size>0){var pt=jo(A);qs(!1,`componentWillUpdate has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,pt)}};var zo=new Map,Ef=new Set;Rl.recordLegacyContextWarning=function(f,c){var E=id(f);if(E===null){We(!1,"Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue.");return}if(!Ef.has(f.type)){var T=zo.get(E);(f.type.contextTypes!=null||f.type.childContextTypes!=null||c!==null&&typeof c.getChildContext=="function")&&(T===void 0&&(T=[],zo.set(E,T)),T.push(f))}},Rl.flushLegacyContextWarning=function(){zo.forEach(function(f,c){var E=new Set;f.forEach(function(j){E.add(qt(j.type)||"Component"),Ef.add(j.type)});var T=jo(E),A=Cr(c);We(!1,`Legacy context API has been detected within a strict-mode tree.
The old API will be supported in all 16.x releases, but applications using it should migrate to the new version.
Please update the following components: %s
Learn more about this warning here: https://fb.me/react-legacy-context%s`,T,A)})},Rl.discardPendingWarnings=function(){ja=[],za=[],Ha=[],ca=[],ws=[],Ss=[],zo=new Map}}var ul=null,Gu=null,qa=function(f){ul=f};function r0(f){{if(ul===null)return f;var c=ul(f);return c===void 0?f:c.current}}function j0(f){return r0(f)}function Df(f){{if(ul===null)return f;var c=ul(f);if(c===void 0){if(f!=null&&typeof f.render=="function"){var E=r0(f.render);if(f.render!==E){var T={$$typeof:Mn,render:E};return f.displayName!==void 0&&(T.displayName=f.displayName),T}}return f}return c.current}}function qc(f,c){{if(ul===null)return!1;var E=f.elementType,T=c.type,A=!1,j=typeof T=="object"&&T!==null?T.$$typeof:null;switch(f.tag){case O:{typeof T=="function"&&(A=!0);break}case L:{(typeof T=="function"||j===Er)&&(A=!0);break}case se:{(j===Mn||j===Er)&&(A=!0);break}case me:case ie:{(j===Vt||j===Er)&&(A=!0);break}default:return!1}if(A){var V=ul(E);if(V!==void 0&&V===ul(T))return!0}return!1}}function dc(f){{if(ul===null||typeof WeakSet!="function")return;Gu===null&&(Gu=new WeakSet),Gu.add(f)}}var Al=function(f,c){{if(ul===null)return;var E=c.staleFamilies,T=c.updatedFamilies;tf(),Ap(function(){da(f.current,T,E)})}},Ts=function(f,c){{if(f.context!==Rn)return;tf(),fv(function(){Yg(c,f,null,null)})}};function da(f,c,E){{var T=f.alternate,A=f.child,j=f.sibling,V=f.tag,te=f.type,le=null;switch(V){case L:case ie:case O:le=te;break;case se:le=te.render;break;default:break}if(ul===null)throw new Error("Expected resolveFamily to be set during hot reload.");var Be=!1,Ke=!1;if(le!==null){var pt=ul(le);pt!==void 0&&(E.has(pt)?Ke=!0:c.has(pt)&&(V===O?Ke=!0:Be=!0))}Gu!==null&&(Gu.has(f)||T!==null&&Gu.has(T))&&(Ke=!0),Ke&&(f._debugNeedsRemount=!0),(Ke||Be)&&ml(f,Un),A!==null&&!Ke&&da(A,c,E),j!==null&&da(j,c,E)}}var ud=function(f,c){{var E=new Set,T=new Set(c.map(function(A){return A.current}));return pa(f.current,T,E),E}};function pa(f,c,E){{var T=f.child,A=f.sibling,j=f.tag,V=f.type,te=null;switch(j){case L:case ie:case O:te=V;break;case se:te=V.render;break;default:break}var le=!1;te!==null&&c.has(te)&&(le=!0),le?pc(f,E):T!==null&&pa(T,c,E),A!==null&&pa(A,c,E)}}function pc(f,c){{var E=Wc(f,c);if(E)return;for(var T=f;;){switch(T.tag){case W:c.add(T.stateNode);return;case H:c.add(T.stateNode.containerInfo);return;case U:c.add(T.stateNode.containerInfo);return}if(T.return===null)throw new Error("Expected to reach root first.");T=T.return}}}function Wc(f,c){for(var E=f,T=!1;;){if(E.tag===W)T=!0,c.add(E.stateNode);else if(E.child!==null){E.child.return=E,E=E.child;continue}if(E===f)return T;for(;E.sibling===null;){if(E.return===null||E.return===f)return T;E=E.return}E.sibling.return=E.return,E=E.sibling}return!1}function qi(f,c){if(f&&f.defaultProps){var E=a({},c),T=f.defaultProps;for(var A in T)E[A]===void 0&&(E[A]=T[A]);return E}return c}function g(f){if(Jo(f),f._status!==Ro)throw f._result;return f._result}var y=Ju(null),R;R={};var F=null,b=null,J=null,ce=!1;function mt(){F=null,b=null,J=null,ce=!1}function xt(){ce=!0}function kt(){ce=!1}function xr(f,c){var E=f.type._context;ju?(Jr(y,E._currentValue,f),E._currentValue=c,E._currentRenderer===void 0||E._currentRenderer===null||E._currentRenderer===R||We(!1,"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported."),E._currentRenderer=R):(Jr(y,E._currentValue2,f),E._currentValue2=c,E._currentRenderer2===void 0||E._currentRenderer2===null||E._currentRenderer2===R||We(!1,"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported."),E._currentRenderer2=R)}function i0(f){var c=y.current;ti(y,f);var E=f.type._context;ju?E._currentValue=c:E._currentValue2=c}function cu(f,c,E){if(mo(E,c))return 0;var T=typeof f._calculateChangedBits=="function"?f._calculateChangedBits(E,c):Vr;return(T&Vr)!==T&&Xt(!1,"calculateChangedBits: Expected the return value to be a 31-bit integer. Instead received: %s",T),T|0}function z0(f,c){for(var E=f;E!==null;){var T=E.alternate;if(E.childExpirationTime<c)E.childExpirationTime=c,T!==null&&T.childExpirationTime<c&&(T.childExpirationTime=c);else if(T!==null&&T.childExpirationTime<c)T.childExpirationTime=c;else break;E=E.return}}function Ol(f,c,E,T){var A=f.child;for(A!==null&&(A.return=f);A!==null;){var j=void 0,V=A.dependencies;if(V!==null){j=A.child;for(var te=V.firstContext;te!==null;){if(te.context===c&&(te.observedBits&E)!=0){if(A.tag===O){var le=Cu(T,null);le.tag=$t,Va(A,le)}A.expirationTime<T&&(A.expirationTime=T);var Be=A.alternate;Be!==null&&Be.expirationTime<T&&(Be.expirationTime=T),z0(A.return,T),V.expirationTime<T&&(V.expirationTime=T);break}te=te.next}}else if(A.tag===ve)j=A.type===f.type?null:A.child;else if(Ai&&A.tag===qe){var Ke=A.return;if(Ke===null)throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");Ke.expirationTime<T&&(Ke.expirationTime=T);var pt=Ke.alternate;pt!==null&&pt.expirationTime<T&&(pt.expirationTime=T),z0(Ke,T) Line truncated
%s uses %s but also contains the following legacy lifecycles:%s%s%s
The above lifecycles should be removed. Learn more about this warning here:
https://fb.me/react-unsafe-component-lifecycles`,oi,Oi,zt!==null?`
`+zt:"",yn!==null?`
`+yn:"",kr!==null?`
`+kr:""))}}}return A&&zs(f,j,V),pt}function R2(f,c){Bi(f,"componentWillMount");var E=c.state;typeof c.componentWillMount=="function"&&c.componentWillMount(),typeof c.UNSAFE_componentWillMount=="function"&&c.UNSAFE_componentWillMount(),Ci(),E!==c.state&&(We(!1,"%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",qt(f.type)||"Component"),Kc.enqueueReplaceState(c,c.state,null))}function A2(f,c,E,T){var A=c.state;if(Bi(f,"componentWillReceiveProps"),typeof c.componentWillReceiveProps=="function"&&c.componentWillReceiveProps(E,T),typeof c.UNSAFE_componentWillReceiveProps=="function"&&c.UNSAFE_componentWillReceiveProps(E,T),Ci(),c.state!==A){{var j=qt(f.type)||"Component";T2.has(j)||(T2.add(j),We(!1,"%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",j))}Kc.enqueueReplaceState(c,c.state,null)}}function hc(f,c,E,T){vh(f,c,E);var A=f.stateNode;A.props=E,A.state=f.memoizedState,A.refs=ad;var j=c.contextType;if(typeof j=="object"&&j!==null)A.context=Ve(j);else if(ai)A.context=Rn;else{var V=Tl(f,c,!0);A.context=Vu(f,V)}{if(A.state===E){var te=qt(c)||"Component";C2.has(te)||(C2.add(te),We(!1,"%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.",te))}f.mode&mr&&Rl.recordLegacyContextWarning(f,A),yi&&Rl.recordUnsafeLifecycleWarnings(f,A)}var le=f.updateQueue;le!==null&&(wf(f,le,E,A,T),A.state=f.memoizedState);var Be=c.getDerivedStateFromProps;typeof Be=="function"&&(Sf(f,c,Be,E),A.state=f.memoizedState),typeof c.getDerivedStateFromProps!="function"&&typeof A.getSnapshotBeforeUpdate!="function"&&(typeof A.UNSAFE_componentWillMount=="function"||typeof A.componentWillMount=="function")&&(R2(f,A),le=f.updateQueue,le!==null&&(wf(f,le,E,A,T),A.state=f.memoizedState)),typeof A.componentDidMount=="function"&&(f.effectTag|=Dr)}function mh(f,c,E,T){var A=f.stateNode,j=f.memoizedProps;A.props=j;var V=A.context,te=c.contextType,le=Rn;if(typeof te=="object"&&te!==null)le=Ve(te);else if(!ai){var Be=Tl(f,c,!0);le=Vu(f,Be)}var Ke=c.getDerivedStateFromProps,pt=typeof Ke=="function"||typeof A.getSnapshotBeforeUpdate=="function";!pt&&(typeof A.UNSAFE_componentWillReceiveProps=="function"||typeof A.componentWillReceiveProps=="function")&&(j!==E||V!==le)&&A2(f,A,E,le),ch();var Nt=f.memoizedState,Gt=A.state=Nt,zt=f.updateQueue;if(zt!==null&&(wf(f,zt,E,A,T),Gt=f.memoizedState),j===E&&Nt===Gt&&!sa()&&!Vc())return typeof A.componentDidMount=="function"&&(f.effectTag|=Dr),!1;typeof Ke=="function"&&(Sf(f,c,Ke,E),Gt=f.memoizedState);var yn=Vc()||x2(f,c,j,E,Nt,Gt,le);return yn?(!pt&&(typeof A.UNSAFE_componentWillMount=="function"||typeof A.componentWillMount=="function")&&(Bi(f,"componentWillMount"),typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount(),Ci()),typeof A.componentDidMount=="function"&&(f.effectTag|=Dr)):(typeof A.componentDidMount=="function"&&(f.effectTag|=Dr),f.memoizedProps=E,f.memoizedState=Gt),A.props=E,A.state=Gt,A.context=le,yn}function O2(f,c,E,T,A){var j=c.stateNode,V=c.memoizedProps;j.props=c.type===c.elementType?V:qi(c.type,V);var te=j.context,le=E.contextType,Be=Rn;if(typeof le=="object"&&le!==null)Be=Ve(le);else if(!ai){var Ke=Tl(c,E,!0);Be=Vu(c,Ke)}var pt=E.getDerivedStateFromProps,Nt=typeof pt=="function"||typeof j.getSnapshotBeforeUpdate=="function";!Nt&&(typeof j.UNSAFE_componentWillReceiveProps=="function"||typeof j.componentWillReceiveProps=="function")&&(V!==T||te!==Be)&&A2(c,j,T,Be),ch();var Gt=c.memoizedState,zt=j.state=Gt,yn=c.updateQueue;if(yn!==null&&(wf(c,yn,T,j,A),zt=c.memoizedState),V===T&&Gt===zt&&!sa()&&!Vc())return typeof j.componentDidUpdate=="function"&&(V!==f.memoizedProps||Gt!==f.memoizedState)&&(c.effectTag|=Dr),typeof j.getSnapshotBeforeUpdate=="function"&&(V!==f.memoizedProps||Gt!==f.memoizedState)&&(c.effectTag|=Oo),!1;typeof pt=="function"&&(Sf(c,E,pt,T),zt=c.memoizedState);var kr=Vc()||x2(c,E,V,T,Gt,zt,Be);return kr?(!Nt&&(typeof j.UNSAFE_componentWillUpdate=="function"||typeof j.componentWillUpdate=="function")&&(Bi(c,"componentWillUpdate"),typeof j.componentWillUpdate=="function"&&j.componentWillUpdate(T,zt,Be),typeof j.UNSAFE_componentWillUpdate=="function"&&j.UNSAFE_componentWillUpdate(T,zt,Be),Ci()),typeof j.componentDidUpdate=="function"&&(c.effectTag|=Dr),typeof j.getSnapshotBeforeUpdate=="function"&&(c.effectTag|=Oo)):(typeof j.componentDidUpdate=="function"&&(V!==f.memoizedProps||Gt!==f.memoizedState)&&(c.effectTag|=Dr),typeof j.getSnapshotBeforeUpdate=="function"&&(V!==f.memoizedProps||Gt!==f.memoizedState)&&(c.effectTag|=Oo),c.memoizedProps=T,c.memoizedState=zt),j.props=T,j.state=zt,j.context=Be,kr}var dd,Xc,Qc,Ws,M2,va=function(f){};dd=!1,Xc=!1,Qc={},Ws={},M2={},va=function(f){if(!(f===null||typeof f!="objec Line truncated
1. You may be adding a ref to a function component
2. You may be adding a ref to a component that was not created inside a component's render method
3. You have multiple copies of React loaded
See https://fb.me/react-refs-must-have-owner for more information.`)}}return T}function mc(f,c){if(f.type!=="textarea"){var E="";throw E=" If you meant to render a collection of children, use an array instead."+Lr(),Error("Objects are not valid as a React child (found: "+(Object.prototype.toString.call(c)==="[object Object]"?"object with keys {"+Object.keys(c).join(", ")+"}":c)+")."+E)}}function pd(){var f="Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it."+Lr();M2[f]||(M2[f]=!0,Xt(!1,"Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it."))}function yh(f){function c(ot,Ot){if(!!f){var Ze=ot.lastEffect;Ze!==null?(Ze.nextEffect=Ot,ot.lastEffect=Ot):ot.firstEffect=ot.lastEffect=Ot,Ot.nextEffect=null,Ot.effectTag=G0}}function E(ot,Ot){if(!f)return null;for(var Ze=Ot;Ze!==null;)c(ot,Ze),Ze=Ze.sibling;return null}function T(ot,Ot){for(var Ze=new Map,Ut=Ot;Ut!==null;)Ut.key!==null?Ze.set(Ut.key,Ut):Ze.set(Ut.index,Ut),Ut=Ut.sibling;return Ze}function A(ot,Ot,Ze){var Ut=To(ot,Ot,Ze);return Ut.index=0,Ut.sibling=null,Ut}function j(ot,Ot,Ze){if(ot.index=Ze,!f)return Ot;var Ut=ot.alternate;if(Ut!==null){var Pn=Ut.index;return Pn<Ot?(ot.effectTag=mi,Ot):Pn}else return ot.effectTag=mi,Ot}function V(ot){return f&&ot.alternate===null&&(ot.effectTag=mi),ot}function te(ot,Ot,Ze,Ut){if(Ot===null||Ot.tag!==ne){var Pn=dy(Ze,ot.mode,Ut);return Pn.return=ot,Pn}else{var vn=A(Ot,Ze,Ut);return vn.return=ot,vn}}function le(ot,Ot,Ze,Ut){if(Ot!==null&&(Ot.elementType===Ze.type||qc(Ot,Ze))){var Pn=A(Ot,Ze.props,Ut);return Pn.ref=vc(ot,Ot,Ze),Pn.return=ot,Pn._debugSource=Ze._source,Pn._debugOwner=Ze._owner,Pn}else{var vn=cy(Ze,ot.mode,Ut);return vn.ref=vc(ot,Ot,Ze),vn.return=ot,vn}}function Be(ot,Ot,Ze,Ut){if(Ot===null||Ot.tag!==H||Ot.stateNode.containerInfo!==Ze.containerInfo||Ot.stateNode.implementation!==Ze.implementation){var Pn=py(Ze,ot.mode,Ut);return Pn.return=ot,Pn}else{var vn=A(Ot,Ze.children||[],Ut);return vn.return=ot,vn}}function Ke(ot,Ot,Ze,Ut,Pn){if(Ot===null||Ot.tag!==m){var vn=nf(Ze,ot.mode,Ut,Pn);return vn.return=ot,vn}else{var Wi=A(Ot,Ze,Ut);return Wi.return=ot,Wi}}function pt(ot,Ot,Ze){if(typeof Ot=="string"||typeof Ot=="number"){var Ut=dy(""+Ot,ot.mode,Ze);return Ut.return=ot,Ut}if(typeof Ot=="object"&&Ot!==null){switch(Ot.$$typeof){case fe:{var Pn=cy(Ot,ot.mode,Ze);return Pn.ref=vc(ot,null,Ot),Pn.return=ot,Pn}case xe:{var vn=py(Ot,ot.mode,Ze);return vn.return=ot,vn}}if(Jc(Ot)||fr(Ot)){var Wi=nf(Ot,ot.mode,Ze,null);return Wi.return=ot,Wi}mc(ot,Ot)}return typeof Ot=="function"&&pd(),null}function Nt(ot,Ot,Ze,Ut){var Pn=Ot!==null?Ot.key:null;if(typeof Ze=="string"||typeof Ze=="number")return Pn!==null?null:te(ot,Ot,""+Ze,Ut);if(typeof Ze=="object"&&Ze!==null){switch(Ze.$$typeof){case fe:return Ze.key===Pn?Ze.type===oe?Ke(ot,Ot,Ze.props.children,Ut,Pn):le(ot,Ot,Ze,Ut):null;case xe:return Ze.key===Pn?Be(ot,Ot,Ze,Ut):null}if(Jc(Ze)||fr(Ze))return Pn!==null?null:Ke(ot,Ot,Ze,Ut,null);mc(ot,Ze)}return typeof Ze=="function"&&pd(),null}function Gt(ot,Ot,Ze,Ut,Pn){if(typeof Ut=="string"||typeof Ut=="number"){var vn=ot.get(Ze)||null;return te(Ot,vn,""+Ut,Pn)}if(typeof Ut=="object"&&Ut!==null){switch(Ut.$$typeof){case fe:{var Wi=ot.get(Ut.key===null?Ze:Ut.key)||null;return Ut.type===oe?Ke(Ot,Wi,Ut.props.children,Pn,Ut.key):le(Ot,Wi,Ut,Pn)}case xe:{var pi=ot.get(Ut.key===null?Ze:Ut.key)||null;return Be(Ot,pi,Ut,Pn)}}if(Jc(Ut)||fr(Ut)){var Ku=ot.get(Ze)||null;return Ke(Ot,Ku,Ut,Pn,null)}mc(Ot,Ut)}return typeof Ut=="function"&&pd(),null}function zt(ot,Ot){{if(typeof ot!="object"||ot===null)return Ot;switch(ot.$$typeof){case fe:case xe:va(ot);var Ze=ot.key;if(typeof Ze!="string")break;if(Ot===null){Ot=new Set,Ot.add(Ze);break}if(!Ot.has(Ze)){Ot.add(Ze);break}Xt(!1,"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted \u2014 the behavior is unsupported and could change in a future version.",Ze);break;default:break}}return Ot}function yn(ot,Ot,Ze,Ut){for(var Pn=null,vn=0;vn<Ze.length;vn++){var Wi=Ze[vn];Pn=zt(Wi,Pn)}for(var pi=null,Ku=null,hr=Ot,pu=0,Kr=0,xu=null;hr!==null&&Kr<Ze.length;Kr++){hr.index>Kr?(xu=hr,hr=null):xu=hr.sibling;var w0=Nt(ot,hr,Ze[Kr],Ut);if(w0===null){hr===null&&(hr=xu);break}f&&hr&&w0.alternate===null&&c(ot,hr),pu=j(w0,pu,Kr),Ku===null?pi=w0:Ku.sibling=w0,Ku=w0,hr=xu}if(Kr===Ze.length)return E(ot,hr),pi;if(hr===null){for(;Kr<Ze.length;Kr++){var W0=pt(ot,Ze[Kr],Ut);W0!==null&&(pu=j(W0,pu,Kr),Ku===null?pi=W0:Ku.sibling=W0,Ku=W0)}return pi}for(var Ms=T(ot,hr);Kr<Ze.length;Kr++){var Xu=Gt(Ms,ot,Kr,Ze[Kr],Ut);Xu!==null&&(f&&Xu.alternate!==null&&Ms.delete(Xu.key===null?Kr:Xu.key),pu=j(Xu,pu,Kr),Ku===null?pi=Xu: Line truncated
`,E+=te}Xt(!1,`React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks
Previous render Next render
------------------------------------------------------
%s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`,c,E)}}}function Nl(){throw Error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.`)}function Nf(f,c){if(oo)return!1;if(c===null)return Xt(!1,"%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.",cn),!1;f.length!==c.length&&Xt(!1,`The final argument passed to %s changed size between renders. The order and size of this array must remain constant.
Previous: %s
Incoming: %s`,cn,"["+c.join(", ")+"]","["+f.join(", ")+"]");for(var E=0;E<c.length&&E<f.length;E++)if(!mo(f[E],c[E]))return!1;return!0}function Lf(f,c,E,T,A,j){Vn=j,cl=c,_o=f!==null?f.memoizedState:null,is=f!==null?f._debugHookTypes:null,Eo=-1,oo=f!==null&&f.type!==c.type,_o!==null?qn.current=H2:is!==null?qn.current=z2:qn.current=xh;var V=E(T,A);if(_c){do _c=!1,Ec+=1,oo=!1,_o=f!==null?f.memoizedState:null,Ka=gc,jn=null,uo=null,rs=null,Eo=-1,qn.current=H2,V=E(T,A);while(_c);Cs=null,Ec=0}qn.current=a1;var te=cl;te.memoizedState=gc,te.expirationTime=Iu,te.updateQueue=rs,te.effectTag|=Mf,te._debugHookTypes=is;var le=jn!==null&&jn.next!==null;if(Vn=at,cl=null,jn=null,_o=null,gc=null,uo=null,Ka=null,cn=null,is=null,Eo=-1,Iu=at,rs=null,Mf=0,le)throw Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");return V}function gd(f,c,E){c.updateQueue=f.updateQueue,c.effectTag&=~(F0|Dr),f.expirationTime<=E&&(f.expirationTime=at)}function _d(){qn.current=a1,Vn=at,cl=null,jn=null,_o=null,gc=null,uo=null,Ka=null,is=null,Eo=-1,cn=null,Iu=at,rs=null,Mf=0,_c=!1,Cs=null,Ec=0}function Dc(){var f={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return uo===null?gc=uo=f:uo=uo.next=f,uo}function r1(){if(Ka!==null)uo=Ka,Ka=uo.next,jn=_o,_o=jn!==null?jn.next:null;else{if(_o===null)throw Error("Rendered more hooks than during the previous render.");jn=_o;var f={memoizedState:jn.memoizedState,baseState:jn.baseState,queue:jn.queue,baseUpdate:jn.baseUpdate,next:null};uo===null?uo=gc=f:uo=uo.next=f,_o=jn.next}return uo}function Xa(){return{lastEffect:null}}function F2(f,c){return typeof c=="function"?c(f):c}function Ed(f,c,E){var T=Dc(),A;E!==void 0?A=E(c):A=c,T.memoizedState=T.baseState=A;var j=T.queue={last:null,dispatch:null,lastRenderedReducer:f,lastRenderedState:A},V=j.dispatch=s1.bind(null,cl,j);return[T.memoizedState,V]}function i1(f,c,E){var T=r1(),A=T.queue;if(A===null)throw Error("Should have a queue. This is likely a bug in React. Please file an issue.");if(A.lastRenderedReducer=f,Ec>0){var j=A.dispatch;if(Cs!==null){var V=Cs.get(A);if(V!==void 0){Cs.delete(A);var te=T.memoizedState,le=V;do{var Be=le.action;te=f(te,Be),le=le.next}while(le!==null);return mo(te,T.memoizedState)||lp(),T.memoizedState=te,T.baseUpdate===A.last&&(T.baseState=te),A.lastRenderedState=te,[te,j]}}return[T.memoizedState,j]}var Ke=A.last,pt=T.baseUpdate,Nt=T.baseState,Gt;if(pt!==null?(Ke!==null&&(Ke.next=null),Gt=pt.next):Gt=Ke!==null?Ke.next:null,Gt!==null){var zt=Nt,yn=null,kr=null,oi=pt,Oi=Gt,L0=!1;do{var $i=Oi.expirationTime;if($i<Vn)L0||(L0=!0,kr=oi,yn=zt),$i>Iu&&(Iu=$i,Xd(Iu));else if(vv($i,Oi.suspenseConfig),Oi.eagerReducer===f)zt=Oi.eagerState;else{var ot=Oi.action;zt=f(zt,ot)}oi=Oi,Oi=Oi.next}while(Oi!==null&&Oi!==Gt);L0||(kr=oi,yn=zt),mo(zt,T.memoizedState)||lp(),T.memoizedState=zt,T.baseUpdate=kr,T.baseState=yn,A.lastRenderedState=zt}var Ot=A.dispatch;return[T.memoizedState,Ot]}function Ff(f){var c=Dc();typeof f=="function"&&(f=f()),c.memoizedState=c.baseState=f;var E=c.queue={last:null,dispatch:null,lastRenderedReducer:F2,lastRenderedState:f},T=E.dispatch=s1.bind(null,cl,E);return[c.memoizedState,T]}function u1(f){return i1(F2,f)}function Qa(f,c,E,T){var A={tag:f,create:c,destroy:E,deps:T,next:null};if(rs===null)rs=Xa(),rs.lastEffect=A.next=A;else{var j=rs.lastEffect;if(j===null)rs.lastEffect=A.next=A;else{var V=j.next;j.next=A,A.next=V,rs.lastEffect=A}}return A}function o1(f){var c=Dc(),E={current:f};return Object.seal(E),c.memoizedState=E,E}function P2(f){var c=r1();return c.memoizedState}function Dd(f,c,E,T){var A=Dc(),j=T===void 0?null:T;Mf|=f,A.memoizedState=Qa(c,E,void 0,j)}function wc(f,c,E,T){var A=r1(),j=T===void 0?null:T,V=void 0;if(jn!==null){var te=jn.memoizedState;if(V=te.destroy,j!==null){var le=te.deps;if(Nf(j,le)){Qa(Af,E,V,j);return}}}Mf|=f,A.memoizedState=Qa(c,E,V,j)}function l1(f,c){return typeof jest!="undefined"&&Rv(cl),Dd(Dr|F0,sr|n1,f,c)}function Ll(f,c){return typeof jest!="undefined"&&Rv(cl),wc(Dr|F0,sr|n1,f,c)}function Ea(f,c){return Dd(Dr,Of|fl,f,c)}function wh(f,c){return wc(Dr,Of|fl,f,c)}function I2(f,c){if(typeof c=="function"){var E=c,T=f();return E(T),function(){E(null)}}else if(c!=null){var A=c;A.hasOwnProperty("current")||Xt(!1,"Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.","an object with keys {"+Object.keys(A).join(", ")+"}");var j=f();return A.current=j,function(){A.current=null}}}function b2(f,c,E){typeof c!="function"&&Xt(!1,"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",c!==null?typeof c:"null");var T=E!=null?E.concat([f]):null;return Dd(Dr,Of|fl,I2.bind(null,c,f),T)}function Sh(f,c,E){typeof c!="function"&&Xt(!1,"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",c!==null?typeof c:"null");var T=E!=null?E.concat([f]):null;return wc( Line truncated
Check the render method of \``+T+"`.");var A=T||f._debugID||"",j=f._debugSource;j&&(A=j.fileName+":"+j.lineNumber),Q2[A]||(Q2[A]=!0,Xt(!1,"Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?%s",E))}if(Xl&&c.defaultProps!==void 0){var V=qt(c)||"Unknown";J2[V]||(We(!1,"%s: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.",V),J2[V]=!0)}if(typeof c.getDerivedStateFromProps=="function"){var te=qt(c)||"Unknown";Xs[te]||(We(!1,"%s: Function components do not support getDerivedStateFromProps.",te),Xs[te]=!0)}if(typeof c.contextType=="object"&&c.contextType!==null){var le=qt(c)||"Unknown";Ks[le]||(We(!1,"%s: Function components do not support contextType.",le),Ks[le]=!0)}}var Cd={dehydrated:null,retryTime:at};function tp(f,c,E){return e1(f,$c)&&(c===null||c.memoizedState!==null)}function Hh(f,c,E){var T=c.mode,A=c.pendingProps;Xg(c)&&(c.effectTag|=Xr);var j=kl.current,V=!1,te=(c.effectTag&Xr)!==xi;if(te||tp(j,f,c)?(V=!0,c.effectTag&=~Xr):(f===null||f.memoizedState!==null)&&A.fallback!==void 0&&A.unstable_avoidThisFallback!==!0&&(j=vd(j,xf)),j=ya(j),Fr(c,j),"maxDuration"in A&&(m1||(m1=!0,Xt(!1,"maxDuration has been removed from React. Remove the maxDuration prop."))),f===null){if(A.fallback!==void 0&&(Y2(c),Ai)){var le=c.memoizedState;if(le!==null){var Be=le.dehydrated;if(Be!==null)return qh(c,Be,E)}}if(V){var Ke=A.fallback,pt=nf(null,T,at,null);if(pt.return=c,(c.mode&Y)===Ar){var Nt=c.memoizedState,Gt=Nt!==null?c.child.child:c.child;pt.child=Gt;for(var zt=Gt;zt!==null;)zt.return=pt,zt=zt.sibling}var yn=nf(Ke,T,E,null);return yn.return=c,pt.sibling=yn,c.memoizedState=Cd,c.child=pt,yn}else{var kr=A.children;return c.memoizedState=null,c.child=Zc(c,null,kr,E)}}else{var oi=f.memoizedState;if(oi!==null){if(Ai){var Oi=oi.dehydrated;if(Oi!==null)if(te){if(c.memoizedState!==null)return c.child=f.child,c.effectTag|=Xr,null;var L0=A.fallback,$i=nf(null,T,at,null);if($i.return=c,$i.child=null,(c.mode&Y)===Ar)for(var ot=$i.child=c.child;ot!==null;)ot.return=$i,ot=ot.sibling;else Tf(c,f.child,null,E);if(en&&c.mode&ii){for(var Ot=0,Ze=$i.child;Ze!==null;)Ot+=Ze.treeBaseDuration,Ze=Ze.sibling;$i.treeBaseDuration=Ot}var Ut=nf(L0,T,E,null);return Ut.return=c,$i.sibling=Ut,Ut.effectTag|=mi,$i.childExpirationTime=at,c.memoizedState=Cd,c.child=$i,Ut}else return Wh(f,c,Oi,oi,E)}var Pn=f.child,vn=Pn.sibling;if(V){var Wi=A.fallback,pi=To(Pn,Pn.pendingProps,at);if(pi.return=c,(c.mode&Y)===Ar){var Ku=c.memoizedState,hr=Ku!==null?c.child.child:c.child;if(hr!==Pn.child){pi.child=hr;for(var pu=hr;pu!==null;)pu.return=pi,pu=pu.sibling}}if(en&&c.mode&ii){for(var Kr=0,xu=pi.child;xu!==null;)Kr+=xu.treeBaseDuration,xu=xu.sibling;pi.treeBaseDuration=Kr}var w0=To(vn,Wi,vn.expirationTime);return w0.return=c,pi.sibling=w0,pi.childExpirationTime=at,c.memoizedState=Cd,c.child=pi,w0}else{var W0=A.children,Ms=Pn.child,Xu=Tf(c,Ms,W0,E);return c.memoizedState=null,c.child=Xu}}else{var yl=f.child;if(V){var rf=A.fallback,Wo=nf(null,T,at,null);if(Wo.return=c,Wo.child=yl,yl!==null&&(yl.return=Wo),(c.mode&Y)===Ar){var ks=c.memoizedState,Zd=ks!==null?c.child.child:c.child;Wo.child=Zd;for(var Vf=Zd;Vf!==null;)Vf.return=Wo,Vf=Vf.sibling}if(en&&c.mode&ii){for(var Lc=0,zl=Wo.child;zl!==null;)Lc+=zl.treeBaseDuration,zl=zl.sibling;Wo.treeBaseDuration=Lc}var Vo=nf(rf,T,E,null);return Vo.return=c,Wo.sibling=Vo,Vo.effectTag|=mi,Wo.childExpirationTime=at,c.memoizedState=Cd,c.child=Wo,Vo}else{c.memoizedState=null;var N1=A.children;return c.child=Tf(c,yl,N1,E)}}}}function np(f,c,E){c.memoizedState=null;var T=c.pendingProps,A=T.children;return Do(f,c,A,E),c.child}function qh(f,c,E){if((f.mode&Y)===Ar)Xt(!1,"Cannot hydrate Suspense in legacy mode. Switch from ReactDOM.hydrate(element, container) to ReactDOM.createBlockingRoot(container, { hydrate: true }).render(element) or remove the Suspense components from the server rendered components."),f.expirationTime=Un;else if(y0(c)){var T=Ul(),A=Ds(T);bn&&x(A),f.expirationTime=A}else f.expirationTime=Di,bn&&x(Di);return null}function Wh(f,c,E,T,A){if(W2(),(c.mode&Y)===Ar||y0(E))return np(f,c,A);var j=f.childExpirationTime>=A;if(wa||j){if(A<Un&&T.retryTime<=A){var V=A+1;T.retryTime=V,ml(f,V)}return yv(),np(f,c,A)}else{if(Bs(E))return c.effectTag|=Xr,c.child=f.child,Us(E,$m.bind(null,f)),null;lm(c,E);for(var te=c.pendingProps,le=te.children,Be=Zc(c,null,le,A),Ke=Be;Ke;)Ke.effectTag|=su,Ke=Ke.sibling;return c.child=Be,c.child}}function rp(f,c){f.expirationTime<c&&(f.expirationTime=c);var E=f.alternate;E!==null&&E.expirationTime<c&&(E.expirationTime=c),z0(f.return,c)}function vm(f,c,E){for(var T=c;T!==null;){if(T.tag===pe){var A=T.memoizedState;A!==null&&rp(T,E)}else if(T.tag===yt)rp(T,E);else if(T.child!==null){T.child.return=T,T=T.child;continue}if(T===f)return;for(;T.sibling===null;){if(T.return===null||T.return===f)return;T=T.return}T.sibling.return=T.return,T=T.sibling}}functioLine truncated
Recreating the tree from scratch failed so React will unmount the tree.`:Be=`Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://fb.me/react-error-boundaries to learn more about error boundaries.`;var Ke=""+le+A+`
`+(""+Be);console.error(Ke)}}}var ev=null;ev=new Set;var Js=typeof WeakSet=="function"?WeakSet:Set;function mp(f,c){var E=c.source,T=c.stack;T===null&&E!==null&&(T=Cr(E));var A={componentName:E!==null?qt(E.type):null,componentStack:T!==null?T:"",error:c.value,errorBoundary:null,errorBoundaryName:null,errorBoundaryFound:!1,willRetry:!1};f!==null&&f.tag===O&&(A.errorBoundary=f.stateNode,A.errorBoundaryName=qt(f.type),A.errorBoundaryFound=!0,A.willRetry=!0);try{l0(A)}catch(j){setTimeout(function(){throw j})}}var Rm=function(f,c){Bi(f,"componentWillUnmount"),c.props=f.memoizedProps,c.state=f.memoizedState,c.componentWillUnmount(),Ci()};function tv(f,c){if(dl(null,Rm,null,f,c),tr()){var E=Qs();Hf(f,E)}}function yp(f){var c=f.ref;if(c!==null)if(typeof c=="function"){if(dl(null,c,null,null),tr()){var E=Qs();Hf(f,E)}}else c.current=null}function Am(f,c){if(dl(null,c,null),tr()){var E=Qs();Hf(f,E)}}function gp(f,c){switch(c.tag){case L:case se:case ie:{Tc(im,Af,c);return}case O:{if(c.effectTag&Oo&&f!==null){var E=f.memoizedProps,T=f.memoizedState;Bi(c,"getSnapshotBeforeUpdate");var A=c.stateNode;c.type===c.elementType&&!Sa&&(A.props!==c.memoizedProps&&Xt(!1,"Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(c.type)||"instance"),A.state!==c.memoizedState&&Xt(!1,"Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(c.type)||"instance"));var j=A.getSnapshotBeforeUpdate(c.elementType===c.type?E:qi(c.type,E),T);{var V=ev;j===void 0&&!V.has(c.type)&&(V.add(c.type),We(!1,"%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.",qt(c.type)))}A.__reactInternalSnapshotBeforeUpdate=j,Ci()}return}case U:case W:case ne:case H:case je:return;default:throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}function Tc(f,c,E){var T=E.updateQueue,A=T!==null?T.lastEffect:null;if(A!==null){var j=A.next,V=j;do{if((V.tag&f)!==Af){var te=V.destroy;V.destroy=void 0,te!==void 0&&te()}if((V.tag&c)!==Af){var le=V.create;V.destroy=le();{var Be=V.destroy;if(Be!==void 0&&typeof Be!="function"){var Ke=void 0;Be===null?Ke=" You returned null. If your effect does not require clean up, return undefined (or nothing).":typeof Be.then=="function"?Ke=`
It looks like you wrote useEffect(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:
useEffect(() => {
async function fetchData() {
// You can await here
const response = await MyAPI.getData(someId);
// ...
}
fetchData();
}, [someId]); // Or [] if effect doesn't need props or state
Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching`:Ke=" You returned: "+Be,We(!1,"An effect function must not return anything besides a function, which is used for clean-up.%s%s",Ke,Cr(E))}}}V=V.next}while(V!==j)}}function xa(f){if((f.effectTag&F0)!==xi)switch(f.tag){case L:case se:case ie:{Tc(sr,Af,f),Tc(Af,n1,f);break}default:break}}function _p(f,c,E,T){switch(E.tag){case L:case se:case ie:{Tc(um,fl,E);break}case O:{var A=E.stateNode;if(E.effectTag&Dr)if(c===null)Bi(E,"componentDidMount"),E.type===E.elementType&&!Sa&&(A.props!==E.memoizedProps&&Xt(!1,"Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance"),A.state!==E.memoizedState&&Xt(!1,"Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance")),A.componentDidMount(),Ci();else{var j=E.elementType===E.type?c.memoizedProps:qi(E.type,c.memoizedProps),V=c.memoizedState;Bi(E,"componentDidUpdate"),E.type===E.elementType&&!Sa&&(A.props!==E.memoizedProps&&Xt(!1,"Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance"),A.state!==E.memoizedState&&Xt(!1,"Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance")),A.componentDidUpdate(j,V,A.__reactInternalSnapshotBeforeUpdate),Ci()}var te=E.updateQueue;te!==null&&(E.type===E.elementType&&!Sa&&(A.props!==E.memoizedProps&&Xt(!1,"Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance"),A.state!==E.memoizedState&&Xt(!1,"Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",qt(E.type)||"instance")),yo(E,te,A,T));return}case U:{var le=E.updateQueue;if(le!==null){var Be=null;if(E.child!==null)switch(E.child.tag){case W:Be=No(E.child.stateNode);break;case O:Be=E.child.stateNode;break}yo(E,le,Be,T)}return}case W:{var Ke=E.stateNode;if(c===null&&E.effectTag&Dr){var pt=E.type,Nt=E.memoizedProps;Hu(Ke,pt,Nt,E)}return}case ne:return;case H:return;case De:{if(en){var Gt=E.memoizedProps.onRender;typeof Gt=="function"&&(bn?Gt(E.memoizedProps.id,c===null?"mount":"update",E.actualDuration,E.treeBaseDuration,E.actualStartTime,Pl(),f.memoizedInteractions):Gt(E.memoizedProps.id,c===null?"mount":"update",E.actualDuration,E.treeBaseDuration,E.actualStartTime,Pl()))}return}case pe:{bl(f,E);return}case yt:case je:case gt:case Xe:return;default:throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}function Fd(f,c){if(b0)for(var E=f;;){if(E.tag===W){var T=E.stateNode;c?Pa(T):ia(E.stateNode,E.memoizedProps)}else if(E.tag===ne){var A=E.stateNode;c?m0(A):Q0(A,E.memoizedProps)}else if(E.tag===pe&&E.memoizedState!==null&&E.memoizedState.dehydrated===null){var j=E.child.sibling;j.return=E,E=j;continue}else if(E.child!==null){E.child.return=E,E=E.child;continue}if(E===f)return;for(;E.sibling===null;){if(E.return===null||E.return===f)return;E=E.return}E.sibling.return=E.return,E=E.sibling}}function bu(f){var c=f.ref;if(c!==null){var E=f.stateNode,T;switch(f.tag){case W:T=No(E);break;default:T=E}Au&&f.tag===Xe&&(T=E.methods),typeof c=="function"?c(T):(c.hasOwnProperty("current")||We(!1,"Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().%s",qt(f.type),Cr(f)),c.current=T)}}function Yu(f){var c=f.ref;c!==null&&(typeof c=="function"?c(null):c.current=null)}function Ep(f,c,E){switch(kn(c),c.tag){case L:case se:case me:case ie:{var T=c.updateQueue;if(T!==null){var A=T.lastEffect;if(A!==null){var j=A.next,V=E>Kn?Kn:E;Sn(V,function(){var oi=j;do{var Oi=oi.destroy;Oi!==void 0&&Am(c,Oi),oi=oi.next}while(oi!==j)})}}break}case O:{yp(c);var te=c.stateNode;typeof te.componentWillUnmount=="function"&&tv(c,te);return}case W:{if(gi){var le=c.dependencies;if(le!==null){var Be=le.responders;if(Be!==null){for(var Ke=Array.from(Be.values()),pt=0,Nt=Ke.length;pt<Nt;pt++){var Gt=Ke[pt];Ne(Gt)}le.responders=null}}}yp(c);return}case H:{b0?D1(f,c,E):X&&Om(c);return}case gt:{if(Wt){var zt=c.stateNode;zt!==null&&(Ia(zt),c.stateNode=null)}return}case qe:{if(Yi){var yn=f.hydrationCallbacks;if(yn!==null){var kr=yn.onDeleted;kr&&kr(c.stateNode)}}return}case Xe:Au&&yp(c)}}functio Line truncated
Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+Cr(E))}Mp(),T=pp(T,E);var Nt=c;do{switch(Nt.tag){case U:{var Gt=T;Nt.effectTag|=p0,Nt.expirationTime=A;var zt=uv(Nt,Gt,A);od(Nt,zt);return}case O:var yn=T,kr=Nt.type,oi=Nt.stateNode;if((Nt.effectTag&Xr)===xi&&(typeof kr.getDerivedStateFromError=="function"||oi!==null&&typeof oi.componentDidCatch=="function"&&!Pp(oi))){Nt.effectTag|=p0,Nt.expirationTime=A;var Oi=ov(Nt,yn,A);od(Nt,Oi);return}break;default:break}Nt=Nt.return}while(Nt!==null)}var Aa=Math.ceil,Mr=rt.ReactCurrentDispatcher,wp=rt.ReactCurrentOwner,hl=rt.IsSomeRendererActing,gu=0,S1=1,Ui=2,Sp=4,bd=8,So=16,As=32,bf=0,Bd=1,Tp=2,T1=3,C1=4,Cp=5,nr=gu,vl=null,Gn=null,q0=at,k0=bf,Ud=null,Bl=Un,x1=Un,xc=null,Rc=at,jd=!1,xp=0,N0=500,dn=null,zd=!1,Hd=null,Ac=null,Oc=!1,Mc=null,R1=E0,Rp=at,ef=null,Pm=50,kc=0,qd=null,sv=50,A1=0,Bf=null,Uf=null,O1=at;function Ul(){return(nr&(So|As))!==gu?n0(vt()):(O1!==at||(O1=n0(vt())),O1)}function Nc(){return n0(vt())}function jf(f,c,E){var T=c.mode;if((T&Y)===Ar)return Un;var A=Qt();if((T&ri)===Ar)return A===Li?Un:t0;if((nr&So)!==gu)return q0;var j;if(E!==null)j=fa(f,E.timeoutMs|0||_f);else switch(A){case Li:j=Un;break;case ni:j=Ua(f);break;case Kn:case e0:j=Ds(f);break;case _0:j=ru;break;default:throw Error("Expected a valid priority level")}return vl!==null&&j===q0&&(j-=1),j}function Im(f,c){ty(),uy(f);var E=Wd(f,c);if(E===null){ry(f);return}zp(f,c),la();var T=Qt();if(c===Un?(nr&bd)!==gu&&(nr&(So|As))===gu?(q(E,c),M1(E)):(qo(E),q(E,c),nr===gu&&Bt()):(qo(E),q(E,c)),(nr&Sp)!==gu&&(T===ni||T===Li))if(ef===null)ef=new Map([[E,c]]);else{var A=ef.get(E);(A===void 0||A>c)&&ef.set(E,c)}}var ml=Im;function Wd(f,c){f.expirationTime<c&&(f.expirationTime=c);var E=f.alternate;E!==null&&E.expirationTime<c&&(E.expirationTime=c);var T=f.return,A=null;if(T===null&&f.tag===U)A=f.stateNode;else for(;T!==null;){if(E=T.alternate,T.childExpirationTime<c&&(T.childExpirationTime=c),E!==null&&E.childExpirationTime<c&&(E.childExpirationTime=c),T.return===null&&T.tag===U){A=T.stateNode;break}T=T.return}return A!==null&&(vl===A&&(Xd(c),k0===C1&&Wf(A,q0)),Gg(A,c)),A}function Vd(f){var c=f.lastExpiredTime;if(c!==at)return c;var E=f.firstPendingTime;if(!Vg(f,E))return E;var T=f.lastPingedTime,A=f.nextKnownPendingLevel;return T>A?T:A}function qo(f){var c=f.lastExpiredTime;if(c!==at){f.callbackExpirationTime=Un,f.callbackPriority=Li,f.callbackNode=Tn(M1.bind(null,f));return}var E=Vd(f),T=f.callbackNode;if(E===at){T!==null&&(f.callbackNode=null,f.callbackExpirationTime=at,f.callbackPriority=E0);return}var A=Ul(),j=nd(A,E);if(T!==null){var V=f.callbackPriority,te=f.callbackExpirationTime;if(te===E&&V>=j)return;ir(T)}f.callbackExpirationTime=E,f.callbackPriority=j;var le;E===Un?le=Tn(M1.bind(null,f)):so?le=_n(j,Gd.bind(null,f)):le=_n(j,Gd.bind(null,f),{timeout:Uo(E)-vt()}),f.callbackNode=le}function Gd(f,c){if(O1=at,c){var E=Ul();return Wp(f,E),qo(f),null}var T=Vd(f);if(T!==at){var A=f.callbackNode;if((nr&(So|As))!==gu)throw Error("Should not already be working.");if(tf(),(f!==vl||T!==q0)&&(zf(f,T),ee(f,T)),Gn!==null){var j=nr;nr|=So;var V=pv(f),te=Yd(f);mf(Gn);do try{Ym();break}catch(Ke){dv(f,Ke)}while(!0);if(mt(),nr=j,hv(V),bn&&Kd(te),k0===Bd){var le=Ud;throw jp(),zf(f,T),Wf(f,T),qo(f),le}if(Gn!==null)jp();else{Tv();var Be=f.finishedWork=f.current.alternate;f.finishedExpirationTime=T,bm(f,Be,k0,T)}if(qo(f),f.callbackNode===A)return Gd.bind(null,f)}}return null}function bm(f,c,E,T){switch(vl=null,E){case bf:case Bd:throw Error("Root did not complete. This is a bug in React.");case Tp:{Wp(f,T>ru?ru:T);break}case T1:{Wf(f,T);var A=f.lastSuspendedTime;T===A&&(f.nextKnownPendingLevel=kp(c)),d();var j=Bl===Un;if(j&&!(X0&&qf.current)){var V=xp+N0-vt();if(V>10){if(jd){var te=f.lastPingedTime;if(te===at||te>=T){f.lastPingedTime=T,zf(f,T);break}}var le=Vd(f);if(le!==at&&le!==T)break;if(A!==at&&A!==T){f.lastPingedTime=A;break}f.timeoutHandle=Tt(s0.bind(null,f),V);break}}s0(f);break}case C1:{Wf(f,T);var Be=f.lastSuspendedTime;if(T===Be&&(f.nextKnownPendingLevel=kp(c)),d(),!(X0&&qf.current)){if(jd){var Ke=f.lastPingedTime;if(Ke===at||Ke>=T){f.lastPingedTime=T,zf(f,T);break}}var pt=Vd(f);if(pt!==at&&pt!==T)break;if(Be!==at&&Be!==T){f.lastPingedTime=Be;break}var Nt;if(x1!==Un)Nt=Uo(x1)-vt();else if(Bl===Un)Nt=0;else{var Gt=_v(Bl),zt=vt(),yn=Uo(T)-zt,kr=zt-Gt;kr<0&&(kr=0),Nt=Bp(kr)-kr,yn<Nt&&(Nt=yn)}if(Nt>10){f.timeoutHandle=Tt(s0.bind(null,f),Nt);break}}s0(f);break}case Cp:{if(!(X0&&qf.current)&&Bl!==Un&&xc!==null){var oi=Up(Bl,T,xc);if(oi>10){Wf(f,T),f.timeoutHandle=Tt(s0.bind(null,f),oi);break}}s0(f);break}default:throw Error("Unknown root exit status.")}}function M1(f){var c=f.lastExpiredTime,E=c!==at?c:Un;if(f.finishedExpirationTime===E)s0(f);else{if((nr&(So|As))!==gu)throw Error("Should not already be working.");if(tf(),(f!==vl||E!==q0)&&(zf(f,E),ee(f,E)),Gn!==null){var T=nr;nr|=So;var A=pv(f),j=Yd(f);mf(Gn);do try{Ev();break}catch(te){dv(f,te)}whi Line truncated
Be sure to use the matching version of act() corresponding to your renderer:
// for react-dom:
import {act} from 'react-dom/test-utils';
// ...
act(() => ...);
// for react-test-renderer:
import TestRenderer from 'react-test-renderer';
const {act} = TestRenderer;
// ...
act(() => ...);%s`,Cr(f))}function Rv(f){vs===!0&&(f.mode&mr)!==Ar&&hl.current===!1&&qf.current===!1&&We(!1,`An update to %s ran an effect, but was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act%s`,qt(f.type),Cr(f))}function oy(f){vs===!0&&nr===gu&&hl.current===!1&&qf.current===!1&&We(!1,`An update to %s inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tests-with-act%s`,qt(f.type),Cr(f))}var ly=oy,qp=!1;function sy(f){qp===!1&&t.unstable_flushAllWithoutAsserting===void 0&&(f.mode&Y||f.mode&ri?(qp=!0,We(!1,`In Concurrent or Sync modes, the "scheduler" module needs to be mocked to guarantee consistent behaviour across tests and browsers. For example, with jest:
jest.mock('scheduler', () => require('scheduler/unstable_mock'));
For more info, visit https://fb.me/react-mock-scheduler`)):eu===!0&&(qp=!0,We(!1,`Starting from React v17, the "scheduler" module will need to be mocked to guarantee consistent behaviour across tests and browsers. For example, with jest:
jest.mock('scheduler', () => require('scheduler/unstable_mock'));
For more info, visit https://fb.me/react-mock-scheduler`)))}var Zs=null;function ay(f){{var c=Qt();if((f.mode&ri)!==xi&&(c===ni||c===Li))for(var E=f;E!==null;){var T=E.alternate;if(T!==null)switch(E.tag){case O:var A=T.updateQueue;if(A!==null)for(var j=A.firstUpdate;j!==null;){var V=j.priority;if(V===ni||V===Li){Zs===null?Zs=new Set([qt(E.type)]):Zs.add(qt(E.type));break}j=j.next}break;case L:case se:case ie:if(E.memoizedState!==null&&E.memoizedState.baseUpdate!==null)for(var te=E.memoizedState.baseUpdate;te!==null;){var le=te.priority;if(le===ni||le===Li){Zs===null?Zs=new Set([qt(E.type)]):Zs.add(qt(E.type));break}if(te.next===E.memoizedState.baseUpdate)break;te=te.next}break;default:break}E=E.return}}}function d(){if(Zs!==null){var f=[];Zs.forEach(function(c){return f.push(c)}),Zs=null,f.length>0&&We(!1,`%s triggered a user-blocking update that suspended.
The fix is to split the update into multiple parts: a user-blocking update to provide immediate feedback, and another update that triggers the bulk of the changes.
Refer to the documentation for useTransition to learn how to implement this pattern.`,f.sort().join(", "))}}function v(f,c){return c*1e3+f.interactionThreadID}function x(f){!bn||(Uf===null?Uf=[f]:Uf.push(f))}function P(f,c,E){if(!!bn&&E.size>0){var T=f.pendingInteractionMap,A=T.get(c);A!=null?E.forEach(function(te){A.has(te)||te.__count++,A.add(te)}):(T.set(c,new Set(E)),E.forEach(function(te){te.__count++}));var j=k.__subscriberRef.current;if(j!==null){var V=v(f,c);j.onWorkScheduled(E,V)}}}function q(f,c){!bn||P(f,c,k.__interactionsRef.current)}function ee(f,c){if(!!bn){var E=new Set;if(f.pendingInteractionMap.forEach(function(j,V){V>=c&&j.forEach(function(te){return E.add(te)})}),f.memoizedInteractions=E,E.size>0){var T=k.__subscriberRef.current;if(T!==null){var A=v(f,c);try{T.onWorkStarted(E,A)}catch(j){_n(Li,function(){throw j})}}}}}function de(f,c){if(!!bn){var E=f.firstPendingTime,T;try{if(T=k.__subscriberRef.current,T!==null&&f.memoizedInteractions.size>0){var A=v(f,c);T.onWorkStopped(f.memoizedInteractions,A)}}catch(V){_n(Li,function(){throw V})}finally{var j=f.pendingInteractionMap;j.forEach(function(V,te){te>E&&(j.delete(te),V.forEach(function(le){if(le.__count--,T!==null&&le.__count===0)try{T.onInteractionScheduledWorkCompleted(le)}catch(Be){_n(Li,function(){throw Be})}}))})}}}var _e=null,Ie=null,Et=!1,St=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__!="undefined";function At(f){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined")return!1;var c=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(c.isDisabled)return!0;if(!c.supportsFiber)return We(!1,"The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://fb.me/react-devtools"),!0;try{var E=c.inject(f);_e=function(T,A){try{var j=(T.current.effectTag&Xr)===Xr;if(en){var V=Nc(),te=nd(V,A);c.onCommitFiberRoot(E,T,te,j)}else c.onCommitFiberRoot(E,T,void 0,j)}catch(le){Et||(Et=!0,We(!1,"React DevTools encountered an error: %s",le))}},Ie=function(T){try{c.onCommitFiberUnmount(E,T)}catch(A){Et||(Et=!0,We(!1,"React DevTools encountered an error: %s",A))}}}catch(T){We(!1,"React DevTools encountered an error: %s.",T)}return!0}function on(f,c){typeof _e=="function"&&_e(f,c)}function kn(f){typeof Ie=="function"&&Ie(f)}var rr;{rr=!1;try{var br=Object.preventExtensions({}),ar=new Map([[br,null]]),ui=new Set([br]);ar.set(0,0),ui.add(0)}catch(f){rr=!0}}var di=1;function jl(f,c,E,T){this.tag=f,this.key=E,this.elementType=null,this.type=null,this.stateNode=null,this.return=null,this.child=null,this.sibling=null,this.index=0,this.ref=null,this.pendingProps=c,this.memoizedProps=null,this.updateQueue=null,this.memoizedState=null,this.dependencies=null,this.mode=T,this.effectTag=xi,this.nextEffect=null,this.firstEffect=null,this.lastEffect=null,this.expirationTime=at,this.childExpirationTime=at,this.alternate=null,en&&(this.actualDuration=Number.NaN,this.actualStartTime=Number.NaN,this.selfBaseDuration=Number.NaN,this.treeBaseDuration=Number.NaN,this.actualDuration=0,this.actualStartTime=-1,this.selfBaseDuration=0,this.treeBaseDuration=0),Hr&&(this._debugID=di++,this._debugIsCurrentlyTiming=!1),this._debugSource=null,this._debugOwner=null,this._debugNeedsRemount=!1,this._debugHookTypes=null,!rr&&typeof Object.preventExtensions=="function"&&Object.preventExtensions(this)}var Zi=function(f,c,E,T){return new jl(f,c,E,T)};function lo(f){var c=f.prototype;return!!(c&&c.isReactComponent)}function a0(f){return typeof f=="function"&&!lo(f)&&f.defaultProps===void 0}function Os(f){if(typeof f=="function")return lo(f)?O:L;if(f!=null){var c=f.$$typeof;if(c===Mn)return se;if(c===Vt)return me}return C}function To(f,c,E){var T=f.alternate;T===null?(T=Zi(f.tag,c,f.key,f.mode),T.elementType=f.elementType,T.type=f.type,T.stateNode=f.stateNode,T._debugID=f._debugID,T._debugSource=f._debugSource,T._debugOwner=f._debugOwner,T._debugHookTypes=f._debugHookTypes,T.alternate=f,f.alternate=T):(T.pendingProps=c,T.effectTag=xi,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null,en&&(T.actualDuration=0,T.actualStartTime=-1)),T.childExpirationTime=f.childExpirationTime,T.expirationTime=f.expirationTime,T.child=f.child,T.memoizedProps=f.memoizedProps,T.memoizedState=f.memoizedState,T.updateQueue=f.updateQueue;var A=f.dependencies;switch(T.dependencies=A===null?null:{expirationTime:A.expirationTime,firstContext:A.firstContext,responders:A.responders},T.sibling=f.sibling,T.index=f.index,T.ref=f.ref,en&&(T.selfBaseDuration=f.selfBaseDuration,T.treeBaseDuration=f.treeBaseDuration),T._debugNeedsRemount=f._debugNeedsRemount,T.tag){case C:case L:case ie:T.type=r0(f.type);break;case O:T.type=j0(f.type);break;case se:T.type=Df(f.type);break;default:break}return T}function Av(f,c){f.effectTag&=mi,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null;var E=f.alternate;if(E===null)f.childExpirationTime=at,f.expirationTime=c,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,en&&(f.selfBaseDuration=0,f.t Line truncated
Check the render method of \``+Ke+"`.")}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(f==null?f:typeof f)+"."+Be)}}}return V=Zi(te,E,c,A),V.elementType=f,V.type=le,V.expirationTime=j,V}function cy(f,c,E){var T=null;T=f._owner;var A=f.type,j=f.key,V=f.props,te=fy(A,j,V,T,c,E);return te._debugSource=f._source,te._debugOwner=f._owner,te}function nf(f,c,E,T){var A=Zi(m,f,T,c);return A.expirationTime=E,A}function qg(f,c,E,T,A){var j=Zi(gt,c,A,E);return j.elementType=f,j.type=f,j.expirationTime=T,j}function N4(f,c,E,T,A){var j=Zi(Xe,c,A,E);return j.type=f,j.elementType=f,j.expirationTime=T,j}function L4(f,c,E,T){(typeof f.id!="string"||typeof f.onRender!="function")&&We(!1,'Profiler must specify an "id" string and "onRender" function as props');var A=Zi(De,f,T,c|ii);return A.elementType=ct,A.type=ct,A.expirationTime=E,A}function F4(f,c,E,T){var A=Zi(pe,f,T,c);return A.type=lr,A.elementType=lr,A.expirationTime=E,A}function P4(f,c,E,T){var A=Zi(yt,f,T,c);return A.type=ln,A.elementType=ln,A.expirationTime=E,A}function dy(f,c,E){var T=Zi(ne,f,null,c);return T.expirationTime=E,T}function I4(){var f=Zi(W,null,null,Ar);return f.elementType="DELETED",f.type="DELETED",f}function b4(f){var c=Zi(qe,null,null,Ar);return c.stateNode=f,c}function py(f,c,E){var T=f.children!==null?f.children:[],A=Zi(H,T,f.key,c);return A.expirationTime=E,A.stateNode={containerInfo:f.containerInfo,pendingChildren:null,implementation:f.implementation},A}function Wg(f,c){return f===null&&(f=Zi(C,null,null,Ar)),f.tag=c.tag,f.key=c.key,f.elementType=c.elementType,f.type=c.type,f.stateNode=c.stateNode,f.return=c.return,f.child=c.child,f.sibling=c.sibling,f.index=c.index,f.ref=c.ref,f.pendingProps=c.pendingProps,f.memoizedProps=c.memoizedProps,f.updateQueue=c.updateQueue,f.memoizedState=c.memoizedState,f.dependencies=c.dependencies,f.mode=c.mode,f.effectTag=c.effectTag,f.nextEffect=c.nextEffect,f.firstEffect=c.firstEffect,f.lastEffect=c.lastEffect,f.expirationTime=c.expirationTime,f.childExpirationTime=c.childExpirationTime,f.alternate=c.alternate,en&&(f.actualDuration=c.actualDuration,f.actualStartTime=c.actualStartTime,f.selfBaseDuration=c.selfBaseDuration,f.treeBaseDuration=c.treeBaseDuration),f._debugID=c._debugID,f._debugSource=c._debugSource,f._debugOwner=c._debugOwner,f._debugIsCurrentlyTiming=c._debugIsCurrentlyTiming,f._debugNeedsRemount=c._debugNeedsRemount,f._debugHookTypes=c._debugHookTypes,f}function B4(f,c,E){this.tag=c,this.current=null,this.containerInfo=f,this.pendingChildren=null,this.pingCache=null,this.finishedExpirationTime=at,this.finishedWork=null,this.timeoutHandle=tl,this.context=null,this.pendingContext=null,this.hydrate=E,this.callbackNode=null,this.callbackPriority=E0,this.firstPendingTime=at,this.firstSuspendedTime=at,this.lastSuspendedTime=at,this.nextKnownPendingLevel=at,this.lastPingedTime=at,this.lastExpiredTime=at,bn&&(this.interactionThreadID=k.unstable_getThreadID(),this.memoizedInteractions=new Set,this.pendingInteractionMap=new Map),Yi&&(this.hydrationCallbacks=null)}function U4(f,c,E,T){var A=new B4(f,c,E);Yi&&(A.hydrationCallbacks=T);var j=k4(c);return A.current=j,j.stateNode=A,A}function Vg(f,c){var E=f.firstSuspendedTime,T=f.lastSuspendedTime;return E!==at&&E>=c&&T<=c}function Wf(f,c){var E=f.firstSuspendedTime,T=f.lastSuspendedTime;E<c&&(f.firstSuspendedTime=c),(T>c||E===at)&&(f.lastSuspendedTime=c),c<=f.lastPingedTime&&(f.lastPingedTime=at),c<=f.lastExpiredTime&&(f.lastExpiredTime=at)}function Gg(f,c){var E=f.firstPendingTime;c>E&&(f.firstPendingTime=c);var T=f.firstSuspendedTime;T!==at&&(c>=T?f.firstSuspendedTime=f.lastSuspendedTime=f.nextKnownPendingLevel=at:c>=f.lastSuspendedTime&&(f.lastSuspendedTime=c+1),c>f.nextKnownPendingLevel&&(f.nextKnownPendingLevel=c))}function j4(f,c,E){f.firstPendingTime=E,c<=f.lastSuspendedTime?f.firstSuspendedTime=f.lastSuspendedTime=f.nextKnownPendingLevel=at:c<=f.firstSuspendedTime&&(f.firstSuspendedTime=c-1),c<=f.lastPingedTime&&(f.lastPingedTime=at),c<=f.lastExpiredTime&&(f.lastExpiredTime=at)}function Wp(f,c){var E=f.lastExpiredTime;(E===at||E>c)&&(f.lastExpiredTime=c)}var z4={debugTool:null},Ov=z4,hy,vy;hy=!1,vy={};function H4(f){if(!f)return Rn;var c=Ft(f),E=Cl(c);if(c.tag===O){var T=c.type;if(Xi(T))return A0(c,T,E)}return E}function my(f){var c=Ft(f);if(c===void 0)throw typeof f.render=="function"?Error("Unable to find node on an unmounted component."):Error("Argument appears to not be a ReactComponent. Keys: "+Object.keys(f));var E=I0(c);return E===null?null:E.stateNode}function q4(f,c){{var E=Ft(f);if(E===void 0)throw typeof f.render=="function"?Error("Unable to find node on an unmounted component."):Error("Argument appears to not be a ReactComponent. Keys: "+Object.keys(f));var T=I0(E);if(T===null)return null;if(T.mode&mr){var A=qt(E.type)||"Component";vy[A]||(vy[A]=!0,E.mode&mr?We(!1,"%s is deprecated in StrictMode. %s was passed an instance of %s which is inside StrictLine truncated
Check the render method of %s.`,qt(An.type)||"Unknown"));var Be=Cu(te,V);return Be.payload={element:f},T=T===void 0?null:T,T!==null&&(typeof T!="function"&&We(!1,"render(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",T),Be.callback=T),Va(A,Be),ml(A,te),te}function V4(f){var c=f.current;if(!c.child)return null;switch(c.child.tag){case W:return No(c.child.stateNode);default:return c.child.stateNode}}function G4(f){switch(f.tag){case U:var c=f.stateNode;c.hydrate&&Um(c,c.firstPendingTime);break;case pe:Ap(function(){return ml(f,Un)});var E=Ua(Ul());Mv(f,E);break}}function Kg(f,c){var E=f.memoizedState;E!==null&&E.dehydrated!==null&&E.retryTime<c&&(E.retryTime=c)}function Mv(f,c){Kg(f,c);var E=f.alternate;E&&Kg(E,c)}function Y4(f){if(f.tag===pe){var c=Ua(Ul());ml(f,c),Mv(f,c)}}function yy(f){if(f.tag===pe){var c=E2(Ul());ml(f,c),Mv(f,c)}}function K4(f){if(f.tag===pe){var c=Ul(),E=jf(c,f,null);ml(f,E),Mv(f,E)}}function X4(f){var c=wl(f);return c===null?null:c.tag===gt?c.stateNode.instance:c.stateNode}var gy=function(f){return!1};function Xg(f){return gy(f)}var Qg=null,Jg=null,Zg=null,$g=null;{var _y=function(f,c,E,T){if(E>=c.length)return T;var A=c[E],j=Array.isArray(f)?f.slice():a({},f);return j[A]=_y(f[A],c,E+1,T),j},e_=function(f,c,E){return _y(f,c,0,E)};Qg=function(f,c,E,T){for(var A=f.memoizedState;A!==null&&c>0;)A=A.next,c--;if(A!==null){var j=e_(A.memoizedState,E,T);A.memoizedState=j,A.baseState=j,f.memoizedProps=a({},f.memoizedProps),ml(f,Un)}},Jg=function(f,c,E){f.pendingProps=e_(f.memoizedProps,c,E),f.alternate&&(f.alternate.pendingProps=f.pendingProps),ml(f,Un)},Zg=function(f){ml(f,Un)},$g=function(f){gy=f}}function Q4(f){var c=f.findFiberByHostInstance,E=rt.ReactCurrentDispatcher;return At(a({},f,{overrideHookState:Qg,overrideProps:Jg,setSuspenseHandler:$g,scheduleUpdate:Zg,currentDispatcherRef:E,findHostInstanceByFiber:function(T){var A=I0(T);return A===null?null:A.stateNode},findFiberByHostInstance:function(T){return c?c(T):null},findHostInstancesForRefresh:ud,scheduleRefresh:Al,scheduleRoot:Ts,setRefreshHandler:qa,getCurrentFiber:function(){return An}}))}var t_=Object.freeze({createContainer:W4,updateContainer:Yg,batchedEventUpdates:qm,batchedUpdates:Hm,unbatchedUpdates:Wm,deferredUpdates:jm,syncUpdates:fv,discreteUpdates:cv,flushDiscreteUpdates:av,flushControlled:Vm,flushSync:Ap,flushPassiveEffects:tf,IsThisRendererActing:qf,getPublicRootInstance:V4,attemptSynchronousHydration:G4,attemptUserBlockingHydration:Y4,attemptContinuousHydration:yy,attemptHydrationAtCurrentPriority:K4,findHostInstance:my,findHostInstanceWithWarning:q4,findHostInstanceWithNoPortals:X4,shouldSuspend:Xg,injectIntoDevTools:Q4}),J4=t_.default||t_;qy.exports=J4;var Z4=qy.exports;return qy.exports=i,Z4})});var IS=tt((RH,vD)=>{"use strict";process.env.NODE_ENV==="production"?vD.exports=MS():vD.exports=PS()});var BS=tt((AH,bS)=>{"use strict";var AP={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};bS.exports=AP});var HS=tt((OH,US)=>{"use strict";var OP=Object.assign||function(i){for(var o=1;o<arguments.length;o++){var a=arguments[o];for(var p in a)Object.prototype.hasOwnProperty.call(a,p)&&(i[p]=a[p])}return i},B_=function(){function i(o,a){for(var p=0;p<a.length;p++){var _=a[p];_.enumerable=_.enumerable||!1,_.configurable=!0,"value"in _&&(_.writable=!0),Object.defineProperty(o,_.key,_)}}return function(o,a,p){return a&&i(o.prototype,a),p&&i(o,p),o}}();function mD(i,o,a){return o in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i}function yD(i,o){if(!(i instanceof o))throw new Type Line truncated
`+Module.extraStackTrace()),demangleAll(i)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(i){for(;i.length>0;){var o=i.shift();if(typeof o=="function"){o();continue}var a=o.func;typeof a=="number"?o.arg===void 0?Module.dynCall_v(a):Module.dynCall_vi(a,o.arg):a(o.arg===void 0?null:o.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(i){__ATPRERUN__.unshift(i)}Module.addOnPreRun=addOnPreRun;function addOnInit(i){__ATINIT__.unshift(i)}Module.addOnInit=addOnInit;function addOnPreMain(i){__ATMAIN__.unshift(i)}Module.addOnPreMain=addOnPreMain;function addOnExit(i){__ATEXIT__.unshift(i)}Module.addOnExit=addOnExit;function addOnPostRun(i){__ATPOSTRUN__.unshift(i)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(i,o,a){var p=a>0?a:lengthBytesUTF8(i)+1,_=new Array(p),t=stringToUTF8Array(i,_,0,_.length);return o&&(_.length=t),_}Module.intArrayFromString=intArrayFromString;function intArrayToString(i){for(var o=[],a=0;a<i.length;a++){var p=i[a];p>255&&(p&=255),o.push(String.fromCharCode(p))}return o.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(i,o,a){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var p,_;a&&(_=o+lengthBytesUTF8(i),p=HEAP8[_]),stringToUTF8(i,o,Infinity),a&&(HEAP8[_]=p)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(i,o){HEAP8.set(i,o)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(i,o,a){for(var p=0;p<i.length;++p)HEAP8[o++>>0]=i.charCodeAt(p);a||(HEAP8[o>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function(o,a){var p=o>>>16,_=o&65535,t=a>>>16,k=a&65535;return _*k+(p*k+_*t<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(i){return froundBuffer[0]=i,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(i){i=i>>>0;for(var o=0;o<32;o++)if(i&1<<31-o)return o;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(i){return i<0?Math.ceil(i):Math.floor(i)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math. Line truncated
If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,a="abort("+i+") at "+stackTrace()+o;throw abortDecorators&&abortDecorators.forEach(function(p){a=p(a,i)}),a}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var $p=tt((MH,WS)=>{"use strict";var kP=HS(),NP=qS(),gD=!1,_D=null;NP({},function(i,o){if(!gD){if(gD=!0,i)throw i;_D=o}});if(!gD)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");WS.exports=kP(_D.bind,_D.lib)});var GS=tt((kH,VS)=>{"use strict";VS.exports=({onlyFirst:i=!1}={})=>{let o=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(o,i?void 0:"g")}});var ED=tt((NH,YS)=>{"use strict";var LP=GS();YS.exports=i=>typeof i=="string"?i.replace(LP(),""):i});var wD=tt((LH,DD)=>{"use strict";var KS=i=>Number.isNaN(i)?!1:i>=4352&&(i<=4447||i===9001||i===9002||11904<=i&&i<=12871&&i!==12351||12880<=i&&i<=19903||19968<=i&&i<=42182||43360<=i&&i<=43388||44032<=i&&i<=55203||63744<=i&&i<=64255||65040<=i&&i<=65049||65072<=i&&i<=65131||65281<=i&&i<=65376||65504<=i&&i<=65510||110592<=i&&i<=110593||127488<=i&&i<=127569||131072<=i&&i<=262141);DD.exports=KS;DD.exports.default=KS});var QS=tt((FH,XS)=>{"use strict";XS.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF Line truncated
`))o=Math.max(o,bP(a));return o};TD.exports=ZS;TD.exports.default=ZS});var $S=tt(Wy=>{"use strict";var BP=Wy&&Wy.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Wy,"__esModule",{value:!0});var UP=BP(CD()),xD={};Wy.default=i=>{if(i.length===0)return{width:0,height:0};if(xD[i])return xD[i];let o=UP.default(i),a=i.split(`
`).length;return xD[i]={width:o,height:a},{width:o,height:a}}});var eT=tt(Vy=>{"use strict";var jP=Vy&&Vy.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Vy,"__esModule",{value:!0});var Vi=jP($p()),zP=(i,o)=>{"position"in o&&i.setPositionType(o.position==="absolute"?Vi.default.POSITION_TYPE_ABSOLUTE:Vi.default.POSITION_TYPE_RELATIVE)},HP=(i,o)=>{"marginLeft"in o&&i.setMargin(Vi.default.EDGE_START,o.marginLeft||0),"marginRight"in o&&i.setMargin(Vi.default.EDGE_END,o.marginRight||0),"marginTop"in o&&i.setMargin(Vi.default.EDGE_TOP,o.marginTop||0),"marginBottom"in o&&i.setMargin(Vi.default.EDGE_BOTTOM,o.marginBottom||0)},qP=(i,o)=>{"paddingLeft"in o&&i.setPadding(Vi.default.EDGE_LEFT,o.paddingLeft||0),"paddingRight"in o&&i.setPadding(Vi.default.EDGE_RIGHT,o.paddingRight||0),"paddingTop"in o&&i.setPadding(Vi.default.EDGE_TOP,o.paddingTop||0),"paddingBottom"in o&&i.setPadding(Vi.default.EDGE_BOTTOM,o.paddingBottom||0)},WP=(i,o)=>{var a;"flexGrow"in o&&i.setFlexGrow((a=o.flexGrow)!==null&&a!==void 0?a:0),"flexShrink"in o&&i.setFlexShrink(typeof o.flexShrink=="number"?o.flexShrink:1),"flexDirection"in o&&(o.flexDirection==="row"&&i.setFlexDirection(Vi.default.FLEX_DIRECTION_ROW),o.flexDirection==="row-reverse"&&i.setFlexDirection(Vi.default.FLEX_DIRECTION_ROW_REVERSE),o.flexDirection==="column"&&i.setFlexDirection(Vi.default.FLEX_DIRECTION_COLUMN),o.flexDirection==="column-reverse"&&i.setFlexDirection(Vi.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in o&&(typeof o.flexBasis=="number"?i.setFlexBasis(o.flexBasis):typeof o.flexBasis=="string"?i.setFlexBasisPercent(Number.parseInt(o.flexBasis,10)):i.setFlexBasis(NaN)),"alignItems"in o&&((o.alignItems==="stretch"||!o.alignItems)&&i.setAlignItems(Vi.default.ALIGN_STRETCH),o.alignItems==="flex-start"&&i.setAlignItems(Vi.default.ALIGN_FLEX_START),o.alignItems==="center"&&i.setAlignItems(Vi.default.ALIGN_CENTER),o.alignItems==="flex-end"&&i.setAlignItems(Vi.default.ALIGN_FLEX_END)),"alignSelf"in o&&((o.alignSelf==="auto"||!o.alignSelf)&&i.setAlignSelf(Vi.default.ALIGN_AUTO),o.alignSelf==="flex-start"&&i.setAlignSelf(Vi.default.ALIGN_FLEX_START),o.alignSelf==="center"&&i.setAlignSelf(Vi.default.ALIGN_CENTER),o.alignSelf==="flex-end"&&i.setAlignSelf(Vi.default.ALIGN_FLEX_END)),"justifyContent"in o&&((o.justifyContent==="flex-start"||!o.justifyContent)&&i.setJustifyContent(Vi.default.JUSTIFY_FLEX_START),o.justifyContent==="center"&&i.setJustifyContent(Vi.default.JUSTIFY_CENTER),o.justifyContent==="flex-end"&&i.setJustifyContent(Vi.default.JUSTIFY_FLEX_END),o.justifyContent==="space-between"&&i.setJustifyContent(Vi.default.JUSTIFY_SPACE_BETWEEN),o.justifyContent==="space-around"&&i.setJustifyContent(Vi.default.JUSTIFY_SPACE_AROUND))},VP=(i,o)=>{var a,p;"width"in o&&(typeof o.width=="number"?i.setWidth(o.width):typeof o.width=="string"?i.setWidthPercent(Number.parseInt(o.width,10)):i.setWidthAuto()),"height"in o&&(typeof o.height=="number"?i.setHeight(o.height):typeof o.height=="string"?i.setHeightPercent(Number.parseInt(o.height,10)):i.setHeightAuto()),"minWidth"in o&&(typeof o.minWidth=="string"?i.setMinWidthPercent(Number.parseInt(o.minWidth,10)):i.setMinWidth((a=o.minWidth)!==null&&a!==void 0?a:0)),"minHeight"in o&&(typeof o.minHeight=="string"?i.setMinHeightPercent(Number.parseInt(o.minHeight,10)):i.setMinHeight((p=o.minHeight)!==null&&p!==void 0?p:0))},GP=(i,o)=>{"display"in o&&i.setDisplay(o.display==="flex"?Vi.default.DISPLAY_FLEX:Vi.default.DISPLAY_NONE)},YP=(i,o)=>{if("borderStyle"in o){let a=typeof o.borderStyle=="string"?1:0;i.setBorder(Vi.default.EDGE_TOP,a),i.setBorder(Vi.default.EDGE_BOTTOM,a),i.setBorder(Vi.default.EDGE_LEFT,a),i.setBorder(Vi.default.EDGE_RIGHT,a)}};Vy.default=(i,o={})=>{zP(i,o),HP(i,o),qP(i,o),WP(i,o),VP(i,o),GP(i,o),YP(i,o)}});var nT=tt((UH,tT)=>{"use strict";tT.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[ Line truncated
`);for(let[O,C]of[...p].entries()){if(_+=C,MD.has(C)){let H=parseFloat(/\d[^m]*/.exec(p.slice(O,O+4)));t=H===oI?null:H}let U=uI.codes.get(Number(t));t&&U&&(p[O+1]===`
`?_+=vT(U):C===`
`&&(_+=vT(t)))}return _};hT.exports=(i,o,a)=>String(i).normalize().replace(/\r\n/g,`
`).split(`
`).map(p=>aI(p,o,a)).join(`
`)});var _T=tt((VH,yT)=>{"use strict";var gT="[\uD800-\uDBFF][\uDC00-\uDFFF]",fI=i=>i&&i.exact?new RegExp(`^${gT}$`):new RegExp(gT,"g");yT.exports=fI});var ND=tt((GH,ET)=>{"use strict";var cI=wD(),dI=_T(),DT=H_(),wT=["","\x9B"],q_=i=>`${wT[0]}[${i}m`,ST=(i,o,a)=>{let p=[];i=[...i];for(let _ of i){let t=_;_.match(";")&&(_=_.split(";")[0][0]+"0");let k=DT.codes.get(parseInt(_,10));if(k){let L=i.indexOf(k.toString());L>=0?i.splice(L,1):p.push(q_(o?k:t))}else if(o){p.push(q_(0));break}else p.push(q_(t))}if(o&&(p=p.filter((_,t)=>p.indexOf(_)===t),a!==void 0)){let _=q_(DT.codes.get(parseInt(a,10)));p=p.reduce((t,k)=>k===_?[k,...t]:[...t,k],[])}return p.join("")};ET.exports=(i,o,a)=>{let p=[...i.normalize()],_=[];a=typeof a=="number"?a:p.length;let t=!1,k,L=0,O="";for(let[C,U]of p.entries()){let H=!1;if(wT.includes(U)){let W=/\d[^m]*/.exec(i.slice(C,C+18));k=W&&W.length>0?W[0]:void 0,L<a&&(t=!0,k!==void 0&&_.push(k))}else t&&U==="m"&&(t=!1,H=!0);if(!t&&!H&&++L,!dI({exact:!0}).test(U)&&cI(U.codePointAt())&&++L,L>o&&L<=a)O+=U;else if(L===o&&!t&&k!==void 0)O=ST(_);else if(L>=a){O+=ST(_,!0,k);break}}return O}});var CT=tt((YH,TT)=>{"use strict";var d2=ND(),pI=U_();function W_(i,o,a){if(i.charAt(o)===" ")return o;for(let p=1;p<=3;p++)if(a){if(i.charAt(o+p)===" ")return o+p}else if(i.charAt(o-p)===" ")return o-p;return o}TT.exports=(i,o,a)=>{a=Ht({position:"end",preferTruncationOnSpace:!1},a);let{position:p,space:_,preferTruncationOnSpace:t}=a,k="\u2026",L=1;if(typeof i!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof i}`);if(typeof o!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof o}`);if(o<1)return"";if(o===1)return k;let O=pI(i);if(O<=o)return i;if(p==="start"){if(t){let C=W_(i,O-o+1,!0);return k+d2(i,C,O).trim()}return _===!0&&(k+=" ",L=2),k+d2(i,O-o+L,O)}if(p==="middle"){_===!0&&(k=" "+k+" ",L=3);let C=Math.floor(o/2);if(t){let U=W_(i,C),H=W_(i,O-(o-C)+1,!0);return d2(i,0,U)+k+d2(i,H,O).trim()}return d2(i,0,C)+k+d2(i,O-(o-C)+L,O)}if(p==="end"){if(t){let C=W_(i,o-1);return d2(i,0,C)+k}return _===!0&&(k=" "+k,L=2),d2(i,0,o-L)+k}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${p}`)}});var FD=tt(Ky=>{"use strict";var xT=Ky&&Ky.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Ky,"__esModule",{value:!0});var hI=xT(mT()),vI=xT(CT()),LD={};Ky.default=(i,o,a)=>{let p=i+String(o)+String(a);if(LD[p])return LD[p];let _=i;if(a==="wrap"&&(_=hI.default(i,o,{trim:!1,hard:!0})),a.startsWith("truncate")){let t="end";a==="truncate-middle"&&(t="middle"),a==="truncate-start"&&(t="start"),_=vI.default(i,o,{position:t})}return LD[p]=_,_}});var ID=tt(PD=>{"use strict";Object.defineProperty(PD,"__esModule",{value:!0});var RT=i=>{let o="";if(i.childNodes.length>0)for(let a of i.childNodes){let p="";a.nodeName==="#text"?p=a.nodeValue:((a.nodeName==="ink-text"||a.nodeName==="ink-virtual-text")&&(p=RT(a)),p.length>0&&typeof a.internal_transform=="function"&&(p=a.internal_transform(p))),o+=p}return o};PD.default=RT});var bD=tt(c0=>{"use strict";var Xy=c0&&c0.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(c0,"__esModule",{value:!0});c0.setTextNodeValue=c0.createTextNode=c0.setStyle=c0.setAttribute=c0.removeChildNode=c0.insertBeforeNode=c0.appendChildNode=c0.createNode=c0.TEXT_NAME=void 0;var mI=Xy($p()),AT=Xy($S()),yI=Xy(eT()),gI=Xy(FD()),_I=Xy(ID());c0.TEXT_NAME="#text";c0.createNode=i=>{var o;let a={nodeName:i,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:i==="ink-virtual-text"?void 0:mI.default.Node.create()};return i==="ink-text"&&((o=a.yogaNode)===null||o===void 0||o.setMeasureFunc(EI.bind(null,a))),a};c0.appendChildNode=(i,o)=>{var a;o.parentNode&&c0.removeChildNode(o.parentNode,o),o.parentNode=i,i.childNodes.push(o),o.yogaNode&&((a=i.yogaNode)===null||a===void 0||a.insertChild(o.yogaNode,i.yogaNode.getChildCount())),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&V_(i)};c0.insertBeforeNode=(i,o,a)=>{var p,_;o.parentNode&&c0.removeChildNode(o.parentNode,o),o.parentNode=i;let t=i.childNodes.indexOf(a);if(t>=0){i.childNodes.splice(t,0,o),o.yogaNode&&((p=i.yogaNode)===null||p===void 0||p.insertChild(o.yogaNode,t));return}i.childNodes.push(o),o.yogaNode&&((_=i.yogaNode)===null||_===void 0||_.insertChild(o.yogaNode,i.yogaNode.getChildCount())),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&V_(i)};c0.removeChildNode=(i,o)=>{var a,p;o.yogaNode&&((p=(a=o.parentNode)===null||a===void 0?void 0:a.yogaNode)===null||p===void 0||p.removeChild(o.yogaNode)),o.parentNode=null;let _=i.childNodes.indexOf(o);_>=0&&i.childNodes.splice(_,1),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&V_(i)};c0.setAttribute=(i,o,a)=>{i.attributes[o]=a};c0.setStyle=(i,o)=>{i.style=o,i.yogaNode&&yI.default(i.yogaNode,o)};c0.createTextNode=i=>{let o={nodeName:"#text",nodeValue:i,yogaNode:void 0,parentNode:null,style:{}};return c0.seLine truncated
`).join(`\r
`)),_.removeListener("error",e3),C.setSocket(_,t,this.options.maxPayload),this.clients&&(this.clients.add(C),C.on("close",()=>this.clients.delete(C))),k(C,p)}};SC.exports=TC;function Tb(i,o){for(let a of Object.keys(o))i.on(a,o[a]);return function(){for(let p of Object.keys(o))i.removeListener(p,o[p])}}function Cb(i){i.emit("close")}function e3(){this.destroy()}function Q_(i,o,a,p){i.writable&&(a=a||$D[o],p=Ht({Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(a)},p),i.write(`HTTP/1.1 ${o} ${$D[o]}\r
`+Object.keys(p).map(_=>`${_}: ${p[_]}`).join(`\r
`)+`\r
\r
`+a)),i.removeListener("error",e3),i.destroy()}function xb(i){return i.trim()}});var RC=tt((aq,xC)=>{"use strict";var rg=ZD();rg.createWebSocketStream=wC();rg.Server=CC();rg.Receiver=VD();rg.Sender=GD();xC.exports=rg});var AC=tt(J_=>{"use strict";var Rb=J_&&J_.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(J_,"__esModule",{value:!0});var Ab=Rb(RC()),ig=global;ig.WebSocket||(ig.WebSocket=Ab.default);ig.window||(ig.window=global);ig.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var OC=tt((Z_,t3)=>{(function(i,o){typeof Z_=="object"&&typeof t3=="object"?t3.exports=o():typeof define=="function"&&define.amd?define([],o):typeof Z_=="object"?Z_.ReactDevToolsBackend=o():i.ReactDevToolsBackend=o()})(window,function(){return function(i){var o={};function a(p){if(o[p])return o[p].exports;var _=o[p]={i:p,l:!1,exports:{}};return i[p].call(_.exports,_,_.exports,a),_.l=!0,_.exports}return a.m=i,a.c=o,a.d=function(p,_,t){a.o(p,_)||Object.defineProperty(p,_,{enumerable:!0,get:t})},a.r=function(p){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(p,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(p,"__esModule",{value:!0})},a.t=function(p,_){if(1&_&&(p=a(p)),8&_||4&_&&typeof p=="object"&&p&&p.__esModule)return p;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:p}),2&_&&typeof p!="string")for(var k in p)a.d(t,k,function(L){return p[L]}.bind(null,k));return t},a.n=function(p){var _=p&&p.__esModule?function(){return p.default}:function(){return p};return a.d(_,"a",_),_},a.o=function(p,_){return Object.prototype.hasOwnProperty.call(p,_)},a.p="",a(a.s=20)}([function(i,o,a){"use strict";i.exports=a(12)},function(i,o,a){"use strict";var p=Object.getOwnPropertySymbols,_=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable;function k(L){if(L==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(L)}i.exports=function(){try{if(!Object.assign)return!1;var L=new String("abc");if(L[5]="de",Object.getOwnPropertyNames(L)[0]==="5")return!1;for(var O={},C=0;C<10;C++)O["_"+String.fromCharCode(C)]=C;if(Object.getOwnPropertyNames(O).map(function(H){return O[H]}).join("")!=="0123456789")return!1;var U={};return"abcdefghijklmnopqrst".split("").forEach(function(H){U[H]=H}),Object.keys(Object.assign({},U)).join("")==="abcdefghijklmnopqrst"}catch(H){return!1}}()?Object.assign:function(L,O){for(var C,U,H=k(L),W=1;W<arguments.length;W++){for(var ne in C=Object(arguments[W]))_.call(C,ne)&&(H[ne]=C[ne]);if(p){U=p(C);for(var m=0;m<U.length;m++)t.call(C,U[m])&&(H[U[m]]=C[U[m]])}}return H}},function(i,o,a){(function(p){function _(me){return(_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(ie){return typeof ie}:function(ie){return ie&&typeof Symbol=="function"&&ie.constructor===Symbol&&ie!==Symbol.prototype?"symbol":typeof ie})(me)}var t=/^\s+|\s+$/g,k=/^[-+]0x[0-9a-f]+$/i,L=/^0b[01]+$/i,O=/^0o[0-7]+$/i,C=parseInt,U=(p===void 0?"undefined":_(p))=="object"&&p&&p.Object===Object&&p,H=(typeof self=="undefined"?"undefined":_(self))=="object"&&self&&self.Object===Object&&self,W=U||H||Function("return this")(),ne=Object.prototype.toString,m=Math.max,he=Math.min,Ee=function(){return W.Date.now()};function ve(me,ie,Oe){var je,qe,yt,gt,Xe,ut,We=0,Ft=!1,Jt=!1,rt=!0;if(typeof me!="function")throw new TypeError("Expected a function");function Q(Rt){var nn=je,an=qe;return je=qe=void 0,We=Rt,gt=me.apply(an,nn)}function fe(Rt){return We=Rt,Xe=setTimeout(oe,ie),Ft?Q(Rt):gt}function xe(Rt){var nn=Rt-ut;return ut===void 0||nn>=ie||nn<0||Jt&&Rt-We>=yt}function oe(){var Rt=Ee();if(xe(Rt))return ze(Rt);Xe=setTimeout(oe,function(nn){var an=ie-(nn-ut);return Jt?he(an,yt-(nn-We)):an}(Rt))}function ze(Rt){return Xe=void 0,rt&&je?Q(Rt):(je=qe=void 0,gt)}function ct(){var Rt=Ee(),nn=xe(Rt);if(je=arguments,qe=this,ut=Rt,nn){if(Xe===void 0)return fe(ut);if(Jt)return Xe=setTimeout(oe,ie),Q(ut)}return Xe===void 0&&(Xe=setTimeout(oe,ie)),gt}return ie=pe(ie)||0,se(Oe)&&(Ft=!!Oe.leading,yt=(Jt="maxWait"in Oe)?m(pe(Oe.maxWait)||0,ie):yt,rt="trailing"in Oe?!!Oe.trailing:rt),ct.cancel=function(){Xe!==void 0&&clearTimeout(Xe),We=0,je=ut=qe=Xe=void 0},ct.flush=function(){return Xe===void 0?gt:ze(Ee())},ct}function se(me){var ie=_(me);return!!me&&(ie=="object"||ie=="function")}function De(me){return _(me)=="symbol"||function(ie){return!!ie&&_(ie)=="object"}(me)&&ne.call(me)=="[object Symbol]"}function pe(me){if(typeof me=="number")return me;if(De(me))return NaN;if(se(me)){var ie=typeof me.valueOf=="function"?me.val Line truncated
/**
* IMPORTANT: When new theme variables are added below\u2013 also add them to SettingsContext updateThemeVariables()
*/
/* Light theme */
--light-color-attribute-name: #ef6632;
--light-color-attribute-name-not-editable: #23272f;
--light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7);
--light-color-attribute-value: #1a1aa6;
--light-color-attribute-value-inverted: #ffffff;
--light-color-attribute-editable-value: #1a1aa6;
--light-color-background: #ffffff;
--light-color-background-hover: rgba(0, 136, 250, 0.1);
--light-color-background-inactive: #e5e5e5;
--light-color-background-invalid: #fff0f0;
--light-color-background-selected: #0088fa;
--light-color-button-background: #ffffff;
--light-color-button-background-focus: #ededed;
--light-color-button: #5f6673;
--light-color-button-disabled: #cfd1d5;
--light-color-button-active: #0088fa;
--light-color-button-focus: #23272f;
--light-color-button-hover: #23272f;
--light-color-border: #eeeeee;
--light-color-commit-did-not-render-fill: #cfd1d5;
--light-color-commit-did-not-render-fill-text: #000000;
--light-color-commit-did-not-render-pattern: #cfd1d5;
--light-color-commit-did-not-render-pattern-text: #333333;
--light-color-commit-gradient-0: #37afa9;
--light-color-commit-gradient-1: #63b19e;
--light-color-commit-gradient-2: #80b393;
--light-color-commit-gradient-3: #97b488;
--light-color-commit-gradient-4: #abb67d;
--light-color-commit-gradient-5: #beb771;
--light-color-commit-gradient-6: #cfb965;
--light-color-commit-gradient-7: #dfba57;
--light-color-commit-gradient-8: #efbb49;
--light-color-commit-gradient-9: #febc38;
--light-color-commit-gradient-text: #000000;
--light-color-component-name: #6a51b2;
--light-color-component-name-inverted: #ffffff;
--light-color-component-badge-background: rgba(0, 0, 0, 0.1);
--light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25);
--light-color-component-badge-count: #777d88;
--light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);
--light-color-context-background: rgba(0,0,0,.9);
--light-color-context-background-hover: rgba(255, 255, 255, 0.1);
--light-color-context-background-selected: #178fb9;
--light-color-context-border: #3d424a;
--light-color-context-text: #ffffff;
--light-color-context-text-selected: #ffffff;
--light-color-dim: #777d88;
--light-color-dimmer: #cfd1d5;
--light-color-dimmest: #eff0f1;
--light-color-error-background: hsl(0, 100%, 97%);
--light-color-error-border: hsl(0, 100%, 92%);
--light-color-error-text: #ff0000;
--light-color-expand-collapse-toggle: #777d88;
--light-color-link: #0000ff;
--light-color-modal-background: rgba(255, 255, 255, 0.75);
--light-color-record-active: #fc3a4b;
--light-color-record-hover: #3578e5;
--light-color-record-inactive: #0088fa;
--light-color-scroll-thumb: #c2c2c2;
--light-color-scroll-track: #fafafa;
--light-color-search-match: yellow;
--light-color-search-match-current: #f7923b;
--light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1);
--light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05);
--light-color-shadow: rgba(0, 0, 0, 0.25);
--light-color-tab-selected-border: #0088fa;
--light-color-text: #000000;
--light-color-text-invalid: #ff0000;
--light-color-text-selected: #ffffff;
--light-color-toggle-background-invalid: #fc3a4b;
--light-color-toggle-background-on: #0088fa;
--light-color-toggle-background-off: #cfd1d5;
--light-color-toggle-text: #ffffff;
--light-color-tooltip-background: rgba(0, 0, 0, 0.9);
--light-color-tooltip-text: #ffffff;
/* Dark theme */
--dark-color-attribute-name: #9d87d2;
--dark-color-attribute-name-not-editable: #ededed;
--dark-color-attribute-name-inverted: #282828;
--dark-color-attribute-value: #cedae0;
--dark-color-attribute-value-inverted: #ffffff;
--dark-color-attribute-editable-value: yellow;
--dark-color-background: #282c34;
--dark-color-background-hover: rgba(255, 255, 255, 0.1);
--dark-color-background-inactive: #3d424a;
--dark-color-background-invalid: #5c0000;
--dark-color-background-selected: #178fb9;
--dark-color-button-background: #282c34;
--dark-color-button-background-focus: #3d424a;
--dark-color-button: #afb3b9;
--dark-color-button-active: #61dafb;
--dark-color-button-disabled: #4f5766;
--dark-color-button-focus: #a2e9fc;
--dark-color-button-hover: #ededed;
--dark-color-border: #3d424a;
--dark-color-commit-did-not-render-fill: #777d88;
--dark-color-commit-did-not-render-fill-text: #000000;
--dark-color-commit-did-not-render-pattern: #666c77;
--dark-color-commit-did-not-render-pattern-text: #ffffff;
--dark-color-commit-gradient-0: #37afa9;
--dark-color-commit-gradient-1: #63b19e;
--dark-color-commit-gradient-2: #80b393;
--dark-color-commit-gradient-3: #97b488;
--dark-color-commit-gradient-4: #abb67d;
--dark-color-commit-gradient-5: #beb771;
--dark-color-commit-gradient-6: #cfb965;
--dark-color-commit-gradient-7: #dfba57;
--dark-color-commit-gradient-8: #efbb49;
--dark-color-commit-gradient-9: #febc38;
--dark-color-commit-gradient-text: #000000;
--dark-color-component-name: #61dafb;
--dark-color-component-name-inverted: #282828;
--dark-color-component-badge-background: rgba(255, 255, 255, 0.25);
--dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25);
--dark-color-component-badge-count: #8f949d;
--dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);
--dark-color-context-background: rgba(255,255,255,.9);
--dark-color-context-background-hover: rgba(0, 136, 250, 0.1);
--dark-color-context-background-selected: #0088fa;
--dark-color-context-border: #eeeeee;
--dark-color-context-text: #000000;
--dark-color-context-text-selected: #ffffff;
--dark-color-dim: #8f949d;
--dark-color-dimmer: #777d88;
--dark-color-dimmest: #4f5766;
--dark-color-error-background: #200;
--dark-color-error-border: #900;
--dark-color-error-text: #f55;
--dark-color-expand-collapse-toggle: #8f949d;
--dark-color-link: #61dafb;
--dark-color-modal-background: rgba(0, 0, 0, 0.75);
--dark-color-record-active: #fc3a4b;
--dark-color-record-hover: #a2e9fc;
--dark-color-record-inactive: #61dafb;
--dark-color-scroll-thumb: #afb3b9;
--dark-color-scroll-track: #313640;
--dark-color-search-match: yellow;
--dark-color-search-match-current: #f7923b;
--dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15);
--dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05);
--dark-color-shadow: rgba(0, 0, 0, 0.5);
--dark-color-tab-selected-border: #178fb9;
--dark-color-text: #ffffff;
--dark-color-text-invalid: #ff8080;
--dark-color-text-selected: #ffffff;
--dark-color-toggle-background-invalid: #fc3a4b;
--dark-color-toggle-background-on: #178fb9;
--dark-color-toggle-background-off: #777d88;
--dark-color-toggle-text: #ffffff;
--dark-color-tooltip-background: rgba(255, 255, 255, 0.9);
--dark-color-tooltip-text: #000000;
/* Font smoothing */
--light-font-smoothing: auto;
--dark-font-smoothing: antialiased;
--font-smoothing: auto;
/* Compact density */
--compact-font-size-monospace-small: 9px;
--compact-font-size-monospace-normal: 11px;
--compact-font-size-monospace-large: 15px;
--compact-font-size-sans-small: 10px;
--compact-font-size-sans-normal: 12px;
--compact-font-size-sans-large: 14px;
--compact-line-height-data: 18px;
--compact-root-font-size: 16px;
/* Comfortable density */
--comfortable-font-size-monospace-small: 10px;
--comfortable-font-size-monospace-normal: 13px;
--comfortable-font-size-monospace-large: 17px;
--comfortable-font-size-sans-small: 12px;
--comfortable-font-size-sans-normal: 14px;
--comfortable-font-size-sans-large: 16px;
--comfortable-line-height-data: 22px;
--comfortable-root-font-size: 20px;
/* GitHub.com system fonts */
--font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,
Courier, monospace;
--font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,
Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
/* Constant values shared between JS and CSS */
--interaction-commit-size: 10px;
--interaction-label-width: 200px;
}
`},function(i,o,a){"use strict";function p(O){var C=this;if(C instanceof p||(C=new p),C.tail=null,C.head=null,C.length=0,O&&typeof O.forEach=="function")O.forEach(function(W){C.push(W)});else if(arguments.length>0)for(var U=0,H=arguments.length;U<H;U++)C.push(arguments[U]);return C}function _(O,C,U){var H=C===O.head?new L(U,null,C,O):new L(U,C,C.next,O);return H.next===null&&(O.tail=H),H.prev===null&&(O.head=H),O.length++,H}function t(O,C){O.tail=new L(C,O.tail,null,O),O.head||(O.head=O.tail),O.length++}function k(O,C){O.head=new L(C,null,O.head,O),O.tail||(O.tail=O.head),O.length++}function L(O,C,U,H){if(!(this instanceof L))return new L(O,C,U,H);this.list=H,this.value=O,C?(C.next=this,this.prev=C):this.prev=null,U?(U.prev=this,this.next=U):this.next=null}i.exports=p,p.Node=L,p.create=p,p.prototype.removeNode=function(O){if(O.list!==this)throw new Error("removing node which does not belong to this list");var C=O.next,U=O.prev;return C&&(C.prev=U),U&&(U.next=C),O===this.head&&(this.head=C),O===this.tail&&(this.tail=U),O.list.length--,O.next=null,O.prev=null,O.list=null,C},p.prototype.unshiftNode=function(O){if(O!==this.head){O.list&&O.list.removeNode(O);var C=this.head;O.list=this,O.next=C,C&&(C.prev=O),this.head=O,this.tail||(this.tail=O),this.length++}},p.prototype.pushNode=function(O){if(O!==this.tail){O.list&&O.list.removeNode(O);var C=this.tail;O.list=this,O.prev=C,C&&(C.next=O),this.tail=O,this.head||(this.head=O),this.length++}},p.prototype.push=function(){for(var O=0,C=arguments.length;O<C;O++)t(this,arguments[O]);return this.length},p.prototype.unshift=function(){for(var O=0,C=arguments.length;O<C;O++)k(this,arguments[O]);return this.length},p.prototype.pop=function(){if(this.tail){var O=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,O}},p.prototype.shift=function(){if(this.head){var O=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,O}},p.prototype.forEach=function(O,C){C=C||this;for(var U=this.head,H=0;U!==null;H++)O.call(C,U.value,H,this),U=U.next},p.prototype.forEachReverse=function(O,C){C=C||this;for(var U=this.tail,H=this.length-1;U!==null;H--)O.call(C,U.value,H,this),U=U.prev},p.prototype.get=function(O){for(var C=0,U=this.head;U!==null&&C<O;C++)U=U.next;if(C===O&&U!==null)return U.value},p.prototype.getReverse=function(O){for(var C=0,U=this.tail;U!==null&&C<O;C++)U=U.prev;if(C===O&&U!==null)return U.value},p.prototype.map=function(O,C){C=C||this;for(var U=new p,H=this.head;H!==null;)U.push(O.call(C,H.value,this)),H=H.next;return U},p.prototype.mapReverse=function(O,C){C=C||this;for(var U=new p,H=this.tail;H!==null;)U.push(O.call(C,H.value,this)),H=H.prev;return U},p.prototype.reduce=function(O,C){var U,H=this.head;if(arguments.length>1)U=C;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");H=this.head.next,U=this.head.value}for(var W=0;H!==null;W++)U=O(U,H.value,W),H=H.next;return U},p.prototype.reduceReverse=function(O,C){var U,H=this.tail;if(arguments.length>1)U=C;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");H=this.tail.prev,U=this.tail.value}for(var W=this.length-1;H!==null;W--)U=O(U,H.value,W),H=H.prev;return U},p.prototype.toArray=function(){for(var O=new Array(this.length),C=0,U=this.head;U!==null;C++)O[C]=U.value,U=U.next;return O},p.prototype.toArrayReverse=function(){for(var O=new Array(this.length),C=0,U=this.tail;U!==null;C++)O[C]=U.value,U=U.prev;return O},p.prototype.slice=function(O,C){(C=C||this.length)<0&&(C+=this.length),(O=O||0)<0&&(O+=this.length);var U=new p;if(C<O||C<0)return U;O<0&&(O=0),C>this.length&&(C=this.length);for(var H=0,W=this.head;W!==null&&H<O;H++)W=W.next;for(;W!==null&&H<C;H++,W=W.next)U.push(W.value);return U},p.prototype.sliceReverse=function(O,C){(C=C||this.length)<0&&(C+=this.length),(O=O||0)<0&&(O+=this.length);var U=new p;if(C<O||C<0)return U;O<0&&(O=0),C>this.length&&(C=this.length);for(var H=this.length,W=this.tail;W!==null&&H>C;H--)W=W.prev;for(;W!==null&&H>O;H--,W=W.prev)U.push(W.value);return U},p.prototype.splice=function(O,C){O>this.length&&(O=this.length-1),O<0&&(O=this.length+O);for(var U=0,H=this.head;H!==null&&U<O;U++)H=H.next;var W=[];for(U=0;H&&U<C;U++)W.push(H.value),H=this.removeNode(H);for(H===null&&(H=this.tail),H!==this.head&&H!==this.tail&&(H=H.prev),U=2;U<arguments.length;U++)H=_(this,H,arguments[U]);return W},p.prototype.reverse=function(){for(var O=this.head,C=this.tail,U=O;U!==null;U=U.prev){var H=U.prev;U.prev=U.next,U.next=H}return this.head=C,this.tail=O,this};try{a(11)(p)}catch(O){}},function(i,o,a){"use strict";i.exports=function(p){p.prototype[Symbol.iterator]=regeneratorRuntime.mark(function _(){var t;return regeneratorRuntime.wrap(function(k){for(;;)switch(k.prev=k.next){case 0:t=this.head;case 1:if(!t){k.next=7;break}return k.next=4,t.value;case 4:t=t.next,k.next=1;break;case 7:case"end":return k.stop()}},_,this)})}},function(i, Line truncated
`).filter(function(ne){return!!ne.match(U)},this).map(function(ne){ne.indexOf("(eval ")>-1&&(ne=ne.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var m=ne.replace(/^\s+/,"").replace(/\(eval code/g,"("),he=m.match(/ (\((.+):(\d+):(\d+)\)$)/),Ee=(m=he?m.replace(he[0],""):m).split(/\s+/).slice(1),ve=this.extractLocation(he?he[1]:Ee.pop()),se=Ee.join(" ")||void 0,De=["eval","<anonymous>"].indexOf(ve[0])>-1?void 0:ve[0];return new O({functionName:se,fileName:De,lineNumber:ve[1],columnNumber:ve[2],source:ne})},this)},parseFFOrSafari:function(W){return W.stack.split(`
`).filter(function(ne){return!ne.match(H)},this).map(function(ne){if(ne.indexOf(" > eval")>-1&&(ne=ne.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),ne.indexOf("@")===-1&&ne.indexOf(":")===-1)return new O({functionName:ne});var m=/((.*".+"[^@]*)?[^@]*)(?:@)/,he=ne.match(m),Ee=he&&he[1]?he[1]:void 0,ve=this.extractLocation(ne.replace(m,""));return new O({functionName:Ee,fileName:ve[0],lineNumber:ve[1],columnNumber:ve[2],source:ne})},this)},parseOpera:function(W){return!W.stacktrace||W.message.indexOf(`
`)>-1&&W.message.split(`
`).length>W.stacktrace.split(`
`).length?this.parseOpera9(W):W.stack?this.parseOpera11(W):this.parseOpera10(W)},parseOpera9:function(W){for(var ne=/Line (\d+).*script (?:in )?(\S+)/i,m=W.message.split(`
`),he=[],Ee=2,ve=m.length;Ee<ve;Ee+=2){var se=ne.exec(m[Ee]);se&&he.push(new O({fileName:se[2],lineNumber:se[1],source:m[Ee]}))}return he},parseOpera10:function(W){for(var ne=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,m=W.stacktrace.split(`
`),he=[],Ee=0,ve=m.length;Ee<ve;Ee+=2){var se=ne.exec(m[Ee]);se&&he.push(new O({functionName:se[3]||void 0,fileName:se[2],lineNumber:se[1],source:m[Ee]}))}return he},parseOpera11:function(W){return W.stack.split(`
`).filter(function(ne){return!!ne.match(C)&&!ne.match(/^Error created at/)},this).map(function(ne){var m,he=ne.split("@"),Ee=this.extractLocation(he.pop()),ve=he.shift()||"",se=ve.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0;ve.match(/\(([^)]*)\)/)&&(m=ve.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var De=m===void 0||m==="[arguments not available]"?void 0:m.split(",");return new O({functionName:se,args:De,fileName:Ee[0],lineNumber:Ee[1],columnNumber:Ee[2],source:ne})},this)}}})=="function"?p.apply(o,_):p)===void 0||(i.exports=t)})()},function(i,o,a){var p,_,t;(function(k,L){"use strict";_=[],(t=typeof(p=function(){function O(se){return se.charAt(0).toUpperCase()+se.substring(1)}function C(se){return function(){return this[se]}}var U=["isConstructor","isEval","isNative","isToplevel"],H=["columnNumber","lineNumber"],W=["fileName","functionName","source"],ne=U.concat(H,W,["args"]);function m(se){if(se)for(var De=0;De<ne.length;De++)se[ne[De]]!==void 0&&this["set"+O(ne[De])](se[ne[De]])}m.prototype={getArgs:function(){return this.args},setArgs:function(se){if(Object.prototype.toString.call(se)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=se},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(se){if(se instanceof m)this.evalOrigin=se;else{if(!(se instanceof Object))throw new TypeError("Eval Origin must be an Object or StackFrame");this.evalOrigin=new m(se)}},toString:function(){var se=this.getFileName()||"",De=this.getLineNumber()||"",pe=this.getColumnNumber()||"",me=this.getFunctionName()||"";return this.getIsEval()?se?"[eval] ("+se+":"+De+":"+pe+")":"[eval]:"+De+":"+pe:me?me+" ("+se+":"+De+":"+pe+")":se+":"+De+":"+pe}},m.fromString=function(se){var De=se.indexOf("("),pe=se.lastIndexOf(")"),me=se.substring(0,De),ie=se.substring(De+1,pe).split(","),Oe=se.substring(pe+1);if(Oe.indexOf("@")===0)var je=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(Oe,""),qe=je[1],yt=je[2],gt=je[3];return new m({functionName:me,args:ie||void 0,fileName:qe,lineNumber:yt||void 0,columnNumber:gt||void 0})};for(var he=0;he<U.length;he++)m.prototype["get"+O(U[he])]=C(U[he]),m.prototype["set"+O(U[he])]=function(se){return function(De){this[se]=Boolean(De)}}(U[he]);for(var Ee=0;Ee<H.length;Ee++)m.prototype["get"+O(H[Ee])]=C(H[Ee]),m.prototype["set"+O(H[Ee])]=function(se){return function(De){if(pe=De,isNaN(parseFloat(pe))||!isFinite(pe))throw new TypeError(se+" must be a Number");var pe;this[se]=Number(De)}}(H[Ee]);for(var ve=0;ve<W.length;ve++)m.prototype["get"+O(W[ve])]=C(W[ve]),m.prototype["set"+O(W[ve])]=function(se){return function(De){this[se]=String(De)}}(W[ve]);return m})=="function"?p.apply(o,_):p)===void 0||(i.exports=t)})()},function(i,o,a){"use strict";i.exports=a(19)},function(i,o,a){"use strict";function p(oe){return(p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(ze){return typeof ze}:function(ze){return ze&&typeof Symbol=="function"&&ze.constructor===Symbol&&ze!==Symbol.prototype?"symbol":typeof ze})(oe)}var _=a(1),t=60103,k=60106;o.Fragment=60107,o.StrictMode=60108,o.Profiler=60114;var L=60109,O=60110,C=60112;o.Suspense=60113,o.unstable_SuspenseList=60120;var U=60115,H=60116,W=60121;if(o.unstable_DebugTracingMode=60129,o.unstable_LegacyHidden=60131,typeof Symbol=="function"&&Symbol.for){var ne=Symbol.for;t=ne("react.element"),k=ne("react.portal"),o.Fragment=ne("react.fragment"),o.StrictMode=ne("react.strict_mode"),o.Profiler=ne("react.profiler"),L=ne("react.provider"),O=ne("react.context"),C=ne("react.forward_ref"),o.Suspense=ne("react.suspense"),o.unstable_SuspenseList=ne("react.suspense_list"),U=ne("react.memo"),H=ne("react.lazy"),W=ne("react.block"),o.unstable_DebugTracingMode=ne("react.debug_trace_mode"),o.unstable_LegacyHidden=ne("react.legacy_hidden")}var m=typeof Symbol=="function"&&Symbol.iterator;function he(oe){for(var ze="https://reactjs.org/docs/error-decoder.html?invariant="+oe,ct=1;ct<arguments.length;ct++)ze+="&args[]="+encodeURIComponent(arguments[ct]);return"Minified React error #"+oe+"; visit "+ze+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var Ee={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ve={};function se(oe,ze,ct){this.props=oe,this.context=ze,this.refs=ve,this.updater=ct||Ee}function De(){}function pe(oe,ze,ct){this.props=oe,this.context=ze,this.refs=ve,this.updater=ct||Ee}se.prototype.isReactComponent={},se.prototype.setState=function(oe,ze){if(p(oe)!=="object"&&typeof oe!="function"&&oe!=null)throw Error(he(85));this.updater.enqueueSetState(this,oe,ze,"setState")},se.prototype.forceUpdate=function(oe){this.updater.enqueueForceUpdate(this,oe,"forceUpdate")},De.prototype=se.prototype;var me=pe.prototype=new De;me.constructor=pe,_(me,se.prototype),me.isPureReactComponent=!0;var ie={current:null},Oe=Object.prototype.hasOwnProperty,je={key:!0,ref:!0,__self:!0,__sou Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ge,Re=!0,Z=!1;return{s:function(){G=B[Symbol.iterator]()},n:function(){var ke=G.next();return Re=ke.done,ke},e:function(ke){Z=!0,ge=ke},f:function(){try{Re||G.return==null||G.return()}finally{if(Z)throw ge}}}}function ie(B,z){(z==null||z>B.length)&&(z=B.length);for(var G=0,$=new Array(z);G<z;G++)$[G]=B[G];return $}function Oe(B,z){if(!(B instanceof z))throw new TypeError("Cannot call a class as a function")}function je(B,z){for(var G=0;G<z.length;G++){var $=z[G];$.enumerable=$.enumerable||!1,$.configurable=!0,"value"in $&&($.writable=!0),Object.defineProperty(B,$.key,$)}}function qe(B,z,G){return z&&je(B.prototype,z),G&&je(B,G),B}var yt=function(){function B(z,G){Oe(this,B),this.node=z.createElement("div"),this.border=z.createElement("div"),this.padding=z.createElement("div"),this.content=z.createElement("div"),this.border.style.borderColor=We.border,this.padding.style.borderColor=We.padding,this.content.style.backgroundColor=We.background,m()(this.node.style,{borderColor:We.margin,pointerEvents:"none",position:"fixed"}),this.node.style.zIndex="10000000",this.node.appendChild(this.border),this.border.appendChild(this.padding),this.padding.appendChild(this.content),G.appendChild(this.node)}return qe(B,[{key:"remove",value:function(){this.node.parentNode&&this.node.parentNode.removeChild(this.node)}},{key:"update",value:function(z,G){ut(G,"margin",this.node),ut(G,"border",this.border),ut(G,"padding",this.padding),m()(this.content.style,{height:z.height-G.borderTop-G.borderBottom-G.paddingTop-G.paddingBottom+"px",width:z.width-G.borderLeft-G.borderRight-G.paddingLeft-G.paddingRight+"px"}),m()(this.node.style,{top:z.top-G.marginTop+"px",left:z.left-G.marginLeft+"px"})}}]),B}(),gt=function(){function B(z,G){Oe(this,B),this.tip=z.createElement("div"),m()(this.tip.style,{display:"flex",flexFlow:"row nowrap",backgroundColor:"#333740",borderRadius:"2px",fontFamily:'"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace',fontWeight:"bold",padding:"3px 5px",pointerEvents:"none",position:"fixed",fontSize:"12px",whiteSpace:"nowrap"}),this.nameSpan=z.createElement("span"),this.tip.appendChild(this.nameSpan),m()(this.nameSpan.style,{color:"#ee78e6",borderRight:"1px solid #aaaaaa",paddingRight:"0.5rem",marginRight:"0.5rem"}),this.dimSpan=z.createElement("span"),this.tip.appendChild(this.dimSpan),m()(this.dimSpan.style,{color:"#d7d7d7"}),this.tip.style.zIndex="10000000",G.appendChild(this.tip)}return qe(B,[{key:"remove",value:function(){this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip)}},{key:"updateText",value:function(z,G,$){this.nameSpan.textContent=z,this.dimSpan.textContent=Math.round(G)+"px \xD7 "+Math.round($)+"px"}},{key:"updatePosition",value:function(z,G){var $=this.tip.getBoundingClientRect(),Te=function(ge,Re,Z){var ke,Qe=Math.max(Z.height,20),ht=Math.max(Z.width,60);ke=ge.top+ge.height+Qe<=Re.top+Re.height?ge.top+ge.height<Re.top+0?Re.top+5:ge.top+ge.height+5:ge.top-Qe<=Re.top+Re.height?ge.top-Qe-5<Re.top+5?Re.top+5:ge.top-Qe-5:Re.top+Re.height-Qe-5;var ue=ge.left+5;return ge.left<Re.left&&(ue=Re.left+5),ge.left+ht>Re.left+Re.width&&(ue=Re.left+Re.width-ht-5),{style:{top:ke+="px",left:ue+="px"}}}(z,G,{width:$.width,height:$.height});m()(this.tip.style,Te.style)}}]),B}(),Xe=function(){function B(){Oe(this,B);var z=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.window=z;var G=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.tipBoundsWindow=G;var $=z.document;this.container=$.createElement("div"),this.container.style.zIndex="10000000",this.tip=new gt($,this.container),this.rects=[],$.body.appendChild(this.container)}return qe(B,[{key:"remove",value:function(){this.tip.remove(),this.rects.forEach(function(z){z.remove()}),this.rects.length=0,this.container.parentNode&&this.container.parentNode.removeChild(this.container)}},{key:"inspect",value:function(z,G){for(var $=this,Te=z.filter(function(Ct){return Ct.nodeType===Node.ELEMENT_NODE});this.rects.length>Te.length;)this.rects.pop().remove();if(Te.length!==0){for(;this.rects.length<Te.length;)this.rects.push(new yt(this.window.document,this.container));var ge={top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,left:Number.POSITIVE_INFINITY};if(Te.forEach(function(Ct,Mt){var It=De(Ct,$.window),sn=pe(Ct);ge.top=Math.min(ge.top,It.top-sn.marginTop),ge.right=Math.max(ge.right,It.left+It.width+sn.marginRight),ge.bottom=Math.max(ge.bottom,It.top+It.height+sn.marginBottom),ge.left=Math.min(ge.left,It.left-sn.marginLeft),$.rects[Mt].update(It,sn)}),!G){G=Te[0].nodeName.toLowerCase();var Re=Te[0],Z=Re.ownerDocument.defaultView.__REACT_DEVTOOLS_GLOBAL_HOOK__;if(Z!=null&&Z.rendererInterfaces!=null){var ke,Qe=null,ht=me(Z.rendererInterfaces.values());try{for(ht.s();!(ke=ht.n()).done;){var ue=ke.value,He=ue.getFiberIDForNative(Re,!0);if(He!==null){Qe=ue.getDisplayNameForFiberID(He,!0);break}}}catch(Ct){ht.e(Ct) Line truncated
xx-background-color: red;
xx-opacity: 0.5;
bottom: 0;
left: 0;
pointer-events: none;
position: fixed;
right: 0;
top: 0;
z-index: 1000000000;
`;var $=window.document.documentElement;$.insertBefore(ze,$.firstChild)}();var z=ze;z.width=window.innerWidth,z.height=window.innerHeight;var G=z.getContext("2d");G.clearRect(0,0,z.width,z.height),B.forEach(function($){var Te=$.count,ge=$.rect;if(ge!==null){var Re=Math.min(oe.length-1,Te-1);(function(Z,ke,Qe){var ht=ke.height,ue=ke.left,He=ke.top,nt=ke.width;Z.lineWidth=1,Z.strokeStyle="#f0f0f0",Z.strokeRect(ue-1,He-1,nt+2,ht+2),Z.lineWidth=1,Z.strokeStyle="#f0f0f0",Z.strokeRect(ue+1,He+1,nt-1,ht-1),Z.strokeStyle=Qe,Z.setLineDash([0]),Z.lineWidth=1,Z.strokeRect(ue,He,nt-1,ht-1),Z.setLineDash([0])})(G,ge,oe[Re])}})}function Rt(B){return(Rt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(z){return typeof z}:function(z){return z&&typeof Symbol=="function"&&z.constructor===Symbol&&z!==Symbol.prototype?"symbol":typeof z})(B)}var nn=(typeof performance=="undefined"?"undefined":Rt(performance))==="object"&&typeof performance.now=="function"?function(){return performance.now()}:function(){return Date.now()},an=new Map,Mn=null,lr=!1,ln=null;function Vt(B){(lr=B)||(an.clear(),Mn!==null&&(cancelAnimationFrame(Mn),Mn=null),ln!==null&&(clearTimeout(ln),ln=null),ze!==null&&(ze.parentNode!=null&&ze.parentNode.removeChild(ze),ze=null))}function Er(B){lr&&(B.forEach(function(z){var G=an.get(z),$=nn(),Te=G!=null?G.lastMeasuredAt:0,ge=G!=null?G.rect:null;(ge===null||Te+250<$)&&(Te=$,ge=function(Re){if(!Re||typeof Re.getBoundingClientRect!="function")return null;var Z=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;return De(Re,Z)}(z)),an.set(z,{count:G!=null?G.count+1:1,expirationTime:G!=null?Math.min($+3e3,G.expirationTime+250):$+250,lastMeasuredAt:Te,rect:ge})}),ln!==null&&(clearTimeout(ln),ln=null),Mn===null&&(Mn=requestAnimationFrame(w)))}function w(){Mn=null,ln=null;var B=nn(),z=Number.MAX_VALUE;an.forEach(function(G,$){G.expirationTime<B?an.delete($):z=Math.min(z,G.expirationTime)}),ct(an),z!==Number.MAX_VALUE&&(ln=setTimeout(w,z-B))}var jt=a(3),Xn=a(6),vr=a.n(Xn),jr=a(0),fr=60120;if(typeof Symbol=="function"&&Symbol.for){var zr=Symbol.for;zr("react.element"),zr("react.portal"),zr("react.fragment"),zr("react.strict_mode"),zr("react.profiler"),zr("react.provider"),zr("react.context"),zr("react.forward_ref"),zr("react.suspense"),fr=zr("react.suspense_list"),zr("react.memo"),zr("react.lazy"),zr("react.block"),zr("react.server.block"),zr("react.fundamental"),zr("react.scope"),zr("react.opaque.id"),zr("react.debug_trace_mode"),zr("react.offscreen"),zr("react.legacy_hidden")}typeof Symbol=="function"&&Symbol.iterator;function Xt(B){return(Xt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(z){return typeof z}:function(z){return z&&typeof Symbol=="function"&&z.constructor===Symbol&&z!==Symbol.prototype?"symbol":typeof z})(B)}var wu={inspectable:Symbol("inspectable"),inspected:Symbol("inspected"),name:Symbol("name"),preview_long:Symbol("preview_long"),preview_short:Symbol("preview_short"),readonly:Symbol("readonly"),size:Symbol("size"),type:Symbol("type"),unserializable:Symbol("unserializable")};function d0(B,z,G,$,Te){$.push(Te);var ge={inspectable:z,type:B,preview_long:ki(G,!0),preview_short:ki(G,!1),name:G.constructor&&G.constructor.name!=="Object"?G.constructor.name:""};return B==="array"||B==="typed_array"?ge.size=G.length:B==="object"&&(ge.size=Object.keys(G).length),B!=="iterator"&&B!=="typed_array"||(ge.readonly=!0),ge}function Ro(B,z,G,$,Te){var ge,Re=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,Z=Oo(B);switch(Z){case"html_element":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:B.tagName,type:Z};case"function":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:typeof B.name!="function"&&B.name?B.name:"function",type:Z};case"string":return B.length<=500?B:B.slice(0,500)+"...";case"bigint":case"symbol":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:B.toString(),type:Z};case"react_element":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:F0(B)||"Unknown",type:Z};case"array_buffer":case"data_view":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:Z==="data_view"?"DataView":"ArrayBuffer",size:B.byteLength,type:Z};case"array":return ge=Te($),Re>=2&&!ge?d0(Z,!0,B,z,$):B.map(function(ht,ue){return Ro(ht,z,G,$.concat([ue]),Te,ge?1:Re+1)});case"html_all_collection":case"typed_array":case"iterator":if(ge=Te($),Re>=2&&!ge)return d0(Z,!0,B,z,$);var ke={unserializable:!0,type:Z,readonly:!0,size:Z==="typed_array"?B.length:void 0,preview_short:ki(B,!1),preview_long:ki(B,!0),name:B.constructor&&B.constructor.name!=="Object"?B.constructor.name:""};return Xt(B[Symbol.iterator])&&Array.from(B).forEach(function(ht,ue){return ke[ue]=Ro(ht,z,G,$.concat([ue]),Te,ge?1:Re+1)}),G.push($),ke;case"opaque_iterator":return z.push($),{inspectable:!1,preview_short:ki(B,!1),preview_long:ki(B,!0),name:B[Symbol.toStringTag],type:Z} Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Jo(B,z){(z==null||z>B.length)&&(z=B.length);for(var G=0,$=new Array(z);G<z;G++)$[G]=B[G];return $}var Zo=new WeakMap,qt=new vr.a({max:1e3});function xi(B,z){return B.toString()>z.toString()?1:z.toString()>B.toString()?-1:0}function lu(B){for(var z=[],G=B,$=function(){var Te=[].concat(Fs(Object.keys(G)),Fs(Object.getOwnPropertySymbols(G))),ge=Object.getOwnPropertyDescriptors(G);Te.forEach(function(Re){ge[Re].enumerable&&z.push(Re)}),G=Object.getPrototypeOf(G)};G!=null;)$();return z}function mi(B){var z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Anonymous",G=Zo.get(B);if(G!=null)return G;var $=z;return typeof B.displayName=="string"?$=B.displayName:typeof B.name=="string"&&B.name!==""&&($=B.name),Zo.set(B,$),$}var Dr=0;function $o(){return++Dr}function G0(B){var z=qt.get(B);if(z!==void 0)return z;for(var G=new Array(B.length),$=0;$<B.length;$++)G[$]=B.codePointAt($);return qt.set(B,G),G}function Uu(B,z){return z.reduce(function(G,$){if(G){if(hasOwnProperty.call(G,$))return G[$];if(typeof G[Symbol.iterator]=="function")return Array.from(G)[$]}return null},B)}function Y0(B,z){var G=z.length,$=z[G-1];if(B!=null){var Te=Uu(B,z.slice(0,G-1));Te&&(Array.isArray(Te)?Te.splice($,1):delete Te[$])}}function Xr(B,z,G){var $=z.length;if(B!=null){var Te=Uu(B,z.slice(0,$-1));if(Te){var ge=z[$-1];Te[G[$-1]]=Te[ge],Array.isArray(Te)?Te.splice(ge,1):delete Te[ge]}}}function Ao(B,z,G){var $=z.length,Te=z[$-1];if(B!=null){var ge=Uu(B,z.slice(0,$-1));ge&&(ge[Te]=G)}}function Oo(B){if(B===null)return"null";if(B===void 0)return"undefined";if(Object(jr.isElement)(B))return"react_element";if(typeof HTMLElement!="undefined"&&B instanceof HTMLElement)return"html_element";switch(Qo(B)){case"bigint":return"bigint";case"boolean":return"boolean";case"function":return"function";case"number":return Number.isNaN(B)?"nan":Number.isFinite(B)?"number":"infinity";case"object":if(Array.isArray(B))return"array";if(ArrayBuffer.isView(B))return hasOwnProperty.call(B.constructor,"BYTES_PER_ELEMENT")?"typed_array":"data_view";if(B.constructor&&B.constructor.name==="ArrayBuffer")return"array_buffer";if(typeof B[Symbol.iterator]=="function")return B[Symbol.iterator]()===B?"opaque_iterator":"iterator";if(B.constructor&&B.constructor.name==="RegExp")return"regexp";var z=Object.prototype.toString.call(B);return z==="[object Date]"?"date":z==="[object HTMLAllCollection]"?"html_all_collection":"object";case"string":return"string";case"symbol":return"symbol";case"undefined":return Object.prototype.toString.call(B)==="[object HTMLAllCollection]"?"html_all_collection":"undefined";default:return"unknown"}}function F0(B){switch(Object(jr.typeOf)(B)){case jr.ContextConsumer:return"ContextConsumer";case jr.ContextProvider:return"ContextProvider";case jr.ForwardRef:return"ForwardRef";case jr.Fragment:return"Fragment";case jr.Lazy:return"Lazy";case jr.Memo:return"Memo";case jr.Portal:return"Portal";case jr.Profiler:return"Profiler";case jr.StrictMode:return"StrictMode";case jr.Suspense:return"Suspense";case fr:return"SuspenseList";default:var z=B.type;return typeof z=="string"?z:typeof z=="function"?mi(z,"Anonymous"):z!=null?"NotImplementedInDevtools":"Element"}}function su(B){var z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:50;return B.length>z?B.substr(0,z)+"\u2026":B}function ki(B,z){if(B!=null&&hasOwnProperty.call(B,wu.type))return z?B[wu.preview_long]:B[wu.preview_short];switch(Oo(B)){case"html_element":return"<".concat(su(B.tagName.toLowerCase())," />");case"function":return su("\u0192 ".concat(typeof B.name=="function"?"":B.name,"() {}"));case"string":return'"'.concat(B,'"');case"bigint":return su(B.toString()+"n");case"regexp":case"symbol":return su(B.toString());case"react_element":return"<".concat(su(F0(B)||"Unknown")," />");case"array_buffer":return"ArrayBuffer(".concat(B.byteLength,")");case"data_view":return"DataView(".concat(B.buffer.byteLength,")");case"array":if(z){for(var G="",$=0;$<B.length&&($>0&&(G+=", "),!((G+=ki(B[$],!1)).length>50));$++);return"[".concat(su(G),"]")}var Te=hasOwnProperty.call(B,wu.size)?B[wu.size]:B.length;return"Array(".concat(Te,")");case"typed_array":var ge="".concat(B.constructor.name,"(").concat(B.length,")");if(z){for(var Re="",Z=0;Z<B.length&&(Z>0&&(Re+=", "),!((Re+=B[Z]).length>50));Z++);return"".concat(ge," [").concat(su(Re),"]")}return ge;case"iterator":var ke=B.constructor.name;if(z){for(var Qe=Array.from(B),ht="",ue=0;ue<Qe.length;ue++){var He=Qe[ue];if(ue>0&&(ht+=", "),Array.isArray(He)){var nt=ki(He[0],!0),Ct=ki(He[1],!1);ht+="".concat(nt," => ").concat(Ct)}else ht+=ki(He,!1);if(ht.length>50)break}return"".concat(ke,"(").concat(B.size,") {").concat(su(ht),"}")}return"".concat(ke,"(").concat(B.size,")");case"opaque_iterator":return B[Symbol.toStringTag];case"date":return B.toString();case"object":if(z){for(var Mt=lu(B).sort(xi),It="",sn=0;sn<Mt.length;sn++){var rn=Mt[sn];if(sn>0&&(It+=", "),(It+ Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function X0(B,z){return function(G){if(Array.isArray(G))return G}(B)||function(G,$){if(!(typeof Symbol=="undefined"||!(Symbol.iterator in Object(G)))){var Te=[],ge=!0,Re=!1,Z=void 0;try{for(var ke,Qe=G[Symbol.iterator]();!(ge=(ke=Qe.next()).done)&&(Te.push(ke.value),!$||Te.length!==$);ge=!0);}catch(ht){Re=!0,Z=ht}finally{try{ge||Qe.return==null||Qe.return()}finally{if(Re)throw Z}}return Te}}(B,z)||Xl(B,z)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Yi(B,z){var G;if(typeof Symbol=="undefined"||B[Symbol.iterator]==null){if(Array.isArray(B)||(G=Xl(B))||z&&B&&typeof B.length=="number"){G&&(B=G);var $=0,Te=function(){};return{s:Te,n:function(){return $>=B.length?{done:!0}:{done:!1,value:B[$++]}},e:function(ke){throw ke},f:Te}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ge,Re=!0,Z=!1;return{s:function(){G=B[Symbol.iterator]()},n:function(){var ke=G.next();return Re=ke.done,ke},e:function(ke){Z=!0,ge=ke},f:function(){try{Re||G.return==null||G.return()}finally{if(Z)throw ge}}}}function Xl(B,z){if(B){if(typeof B=="string")return Mo(B,z);var G=Object.prototype.toString.call(B).slice(8,-1);return G==="Object"&&B.constructor&&(G=B.constructor.name),G==="Map"||G==="Set"?Array.from(B):G==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(G)?Mo(B,z):void 0}}function Mo(B,z){(z==null||z>B.length)&&(z=B.length);for(var G=0,$=new Array(z);G<z;G++)$[G]=B[G];return $}function ai(B){return(ai=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(z){return typeof z}:function(z){return z&&typeof Symbol=="function"&&z.constructor===Symbol&&z!==Symbol.prototype?"symbol":typeof z})(B)}function so(B){return B.flags!==void 0?B.flags:B.effectTag}var Ql=(typeof performance=="undefined"?"undefined":ai(performance))==="object"&&typeof performance.now=="function"?function(){return performance.now()}:function(){return Date.now()};function ko(B){var z=null;function G(rn){var Lt=ai(rn)==="object"&&rn!==null?rn.$$typeof:rn;return ai(Lt)==="symbol"?Lt.toString():Lt}var $=z=Object(jt.gte)(B,"17.0.0-alpha")?{Block:22,ClassComponent:1,ContextConsumer:9,ContextProvider:10,CoroutineComponent:-1,CoroutineHandlerPhase:-1,DehydratedSuspenseComponent:18,ForwardRef:11,Fragment:7,FunctionComponent:0,HostComponent:5,HostPortal:4,HostRoot:3,HostText:6,IncompleteClassComponent:17,IndeterminateComponent:2,LazyComponent:16,MemoComponent:14,Mode:8,OffscreenComponent:23,Profiler:12,SimpleMemoComponent:15,SuspenseComponent:13,SuspenseListComponent:19,YieldComponent:-1}:Object(jt.gte)(B,"16.6.0-beta.0")?{Block:22,ClassComponent:1,ContextConsumer:9,ContextProvider:10,CoroutineComponent:-1,CoroutineHandlerPhase:-1,DehydratedSuspenseComponent:18,ForwardRef:11,Fragment:7,FunctionComponent:0,HostComponent:5,HostPortal:4,HostRoot:3,HostText:6,IncompleteClassComponent:17,IndeterminateComponent:2,LazyComponent:16,MemoComponent:14,Mode:8,OffscreenComponent:-1,Profiler:12,SimpleMemoComponent:15,SuspenseComponent:13,SuspenseListComponent:19,YieldComponent:-1}:Object(jt.gte)(B,"16.4.3-alpha")?{Block:-1,ClassComponent:2,ContextConsumer:11,ContextProvider:12,CoroutineComponent:-1,CoroutineHandlerPhase:-1,DehydratedSuspenseComponent:-1,ForwardRef:13,Fragment:9,FunctionComponent:0,HostComponent:7,HostPortal:6,HostRoot:5,HostText:8,IncompleteClassComponent:-1,IndeterminateComponent:4,LazyComponent:-1,MemoComponent:-1,Mode:10,OffscreenComponent:-1,Profiler:15,SimpleMemoComponent:-1,SuspenseComponent:16,SuspenseListComponent:-1,YieldComponent:-1}:{Block:-1,ClassComponent:2,ContextConsumer:12,ContextProvider:13,CoroutineComponent:7,CoroutineHandlerPhase:8,DehydratedSuspenseComponent:-1,ForwardRef:14,Fragment:10,FunctionComponent:1,HostComponent:5,HostPortal:4,HostRoot:3,HostText:6,IncompleteClassComponent:-1,IndeterminateComponent:0,LazyComponent:-1,MemoComponent:-1,Mode:11,OffscreenComponent:-1,Profiler:15,SimpleMemoComponent:-1,SuspenseComponent:16,SuspenseListComponent:-1,YieldComponent:9},Te=$.ClassComponent,ge=$.IncompleteClassComponent,Re=$.FunctionComponent,Z=$.IndeterminateComponent,ke=$.ForwardRef,Qe=$.HostRoot,ht=$.HostComponent,ue=$.HostPortal,He=$.HostText,nt=$.Fragment,Ct=$.MemoComponent,Mt=$.SimpleMemoComponent,It=$.SuspenseComponent,sn=$.SuspenseListComponent;return{getDisplayNameForFiber:function(rn){var Lt=rn.type,Dn=rn.tag,dr=Lt;ai(Lt)==="object"&&Lt!==null&&(dr=function Cr(An){switch(G(An)){case 60115:case"Symbol(react.memo)":return Cr(An.type);case 60112:case"Symbol(react.forward_ref)":return An.render;default:return An}}(Lt));var er=null;switch(Dn){case Te:case ge:return mi(dr);case Re:case Z:return mi(dr);case ke:return Lt&&Lt.displayName||mi(dr,"Anonymous");case Qe:return null;case ht:return Lt;case ue:case He:case nt:return null;case Ct:case Mt:return mi(dr,"Anonymous");case It:return"Suspense";case sn:return"SuspenseList";default:switch(G(Lt)){case 60111:case"Symbol(react.concurrent_mode)":case"Symbol(react.async_mode)":return null;case 60109:case"Symbol(react.provider)":return er=rn.type._context||rn.type.context,"".concat(er.displayName||"Context",".Provider");case 60110:case"Symbol(react.context)":return er=rn.type._context||rn.type,"".concat(er.displayName||"Context",".Consumer");case 60108:case"Symbol(react.strict_mode)":return null;case 60114:case"Symbol(react.profiler)":return"Profiler(".concat(rn.memoizedProps.id,")");case 60119:case"Symbol(react.scope)":return"Scope";default:return null}}},getTypeSymbol:G,ReactPriorityLevels:{ImmediatePriority:99,UserBlockingPriority:98,NormalPriority:97,LowPriority:96,IdlePriority:95,NoPriority:90},ReactTypeOfWork:z,ReactTypeOfSideEffect:{NoFlags:0,PerformedWork:1,Placement:2}}}function Is(B,z,G,$){var Te=ko(G.version),ge=Te.getDisplayNameForFiber,Re=Te.getTypeS Line truncated
`+$n+B}var I0=!1;function wl(B,z,G){if(!B||I0)return"";var $,Te=Error.prepareStackTrace;Error.prepareStackTrace=void 0,I0=!0;var ge=G.current;G.current=null;try{if(z){var Re=function(){throw Error()};if(Object.defineProperty(Re.prototype,"props",{set:function(){throw Error()}}),(typeof Reflect=="undefined"?"undefined":el(Reflect))==="object"&&Reflect.construct){try{Reflect.construct(Re,[])}catch(He){$=He}Reflect.construct(B,[],Re)}else{try{Re.call()}catch(He){$=He}B.call(Re.prototype)}}else{try{throw Error()}catch(He){$=He}B()}}catch(He){if(He&&$&&typeof He.stack=="string"){for(var Z=He.stack.split(`
`),ke=$.stack.split(`
`),Qe=Z.length-1,ht=ke.length-1;Qe>=1&&ht>=0&&Z[Qe]!==ke[ht];)ht--;for(;Qe>=1&&ht>=0;Qe--,ht--)if(Z[Qe]!==ke[ht]){if(Qe!==1||ht!==1)do if(Qe--,--ht<0||Z[Qe]!==ke[ht])return`
`+Z[Qe].replace(" at new "," at ");while(Qe>=1&&ht>=0);break}}}finally{I0=!1,Error.prepareStackTrace=Te,G.current=ge}var ue=B?B.displayName||B.name:"";return ue?ao(ue):""}function No(B,z,G,$){return wl(B,!1,$)}function wt(B,z,G){var $=B.HostComponent,Te=B.LazyComponent,ge=B.SuspenseComponent,Re=B.SuspenseListComponent,Z=B.FunctionComponent,ke=B.IndeterminateComponent,Qe=B.SimpleMemoComponent,ht=B.ForwardRef,ue=B.Block,He=B.ClassComponent;switch(z.tag){case $:return ao(z.type);case Te:return ao("Lazy");case ge:return ao("Suspense");case Re:return ao("SuspenseList");case Z:case ke:case Qe:return No(z.type,0,0,G);case ht:return No(z.type.render,0,0,G);case ue:return No(z.type._render,0,0,G);case He:return function(nt,Ct,Mt,It){return wl(nt,!0,It)}(z.type,0,0,G);default:return""}}function bt(B,z,G){try{var $="",Te=z;do $+=wt(B,Te,G),Te=Te.return;while(Te);return $}catch(ge){return`
Error generating stack: `+ge.message+`
`+ge.stack}}function Hn(B,z){var G;if(typeof Symbol=="undefined"||B[Symbol.iterator]==null){if(Array.isArray(B)||(G=function(ke,Qe){if(!!ke){if(typeof ke=="string")return qr(ke,Qe);var ht=Object.prototype.toString.call(ke).slice(8,-1);if(ht==="Object"&&ke.constructor&&(ht=ke.constructor.name),ht==="Map"||ht==="Set")return Array.from(ke);if(ht==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(ht))return qr(ke,Qe)}}(B))||z&&B&&typeof B.length=="number"){G&&(B=G);var $=0,Te=function(){};return{s:Te,n:function(){return $>=B.length?{done:!0}:{done:!1,value:B[$++]}},e:function(ke){throw ke},f:Te}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ge,Re=!0,Z=!1;return{s:function(){G=B[Symbol.iterator]()},n:function(){var ke=G.next();return Re=ke.done,ke},e:function(ke){Z=!0,ge=ke},f:function(){try{Re||G.return==null||G.return()}finally{if(Z)throw ge}}}}function qr(B,z){(z==null||z>B.length)&&(z=B.length);for(var G=0,$=new Array(z);G<z;G++)$[G]=B[G];return $}var Ki=["error","trace","warn"],Qr=/\s{4}(in|at)\s{1}/,Ou=/:\d+:\d+(\n|$)/,h0=new Map,Ni=console,v0={};for(var hs in console)v0[hs]=console[hs];var Tt=null;function fo(B){var z=B.currentDispatcherRef,G=B.getCurrentFiber,$=B.findFiberByHostInstance,Te=B.version;if(typeof $=="function"&&z!=null&&typeof G=="function"){var ge=ko(Te).ReactTypeOfWork;h0.set(B,{currentDispatcherRef:z,getCurrentFiber:G,workTagMap:ge})}}var tl={appendComponentStack:!1,breakOnConsoleErrors:!1};function Jl(B){var z=B.appendComponentStack,G=B.breakOnConsoleErrors;if(tl.appendComponentStack=z,tl.breakOnConsoleErrors=G,Tt===null){var $={};Tt=function(){for(var Te in $)try{Ni[Te]=$[Te]}catch(ge){}},Ki.forEach(function(Te){try{var ge=$[Te]=Ni[Te],Re=function(){for(var Z=tl.appendComponentStack,ke=(tl.breakOnConsoleErrors,arguments.length),Qe=new Array(ke),ht=0;ht<ke;ht++)Qe[ht]=arguments[ht];if(Z)try{var ue=Qe.length>0?Qe[Qe.length-1]:null,He=ue!==null&&(Qr.test(ue)||Ou.test(ue));if(!He){var nt,Ct=Hn(h0.values());try{for(Ct.s();!(nt=Ct.n()).done;){var Mt=nt.value,It=Mt.currentDispatcherRef,sn=Mt.getCurrentFiber,rn=Mt.workTagMap,Lt=sn();if(Lt!=null){var Dn=bt(rn,Lt,It);Dn!==""&&Qe.push(Dn);break}}}catch(dr){Ct.e(dr)}finally{Ct.f()}}}catch(dr){}ge.apply(void 0,Qe)};Re.__REACT_DEVTOOLS_ORIGINAL_METHOD__=ge,Ni[Te]=Re}catch(Z){}})}}function ju(B){return(ju=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(z){return typeof z}:function(z){return z&&typeof Symbol=="function"&&z.constructor===Symbol&&z!==Symbol.prototype?"symbol":typeof z})(B)}function vs(B,z){for(var G=0;G<z.length;G++){var $=z[G];$.enumerable=$.enumerable||!1,$.configurable=!0,"value"in $&&($.writable=!0),Object.defineProperty(B,$.key,$)}}function b0(B,z){return(b0=Object.setPrototypeOf||function(G,$){return G.__proto__=$,G})(B,z)}function X(B){var z=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(G){return!1}}();return function(){var G,$=Ne(B);if(z){var Te=Ne(this).constructor;G=Reflect.construct($,arguments,Te)}else G=$.apply(this,arguments);return we(this,G)}}function we(B,z){return!z||ju(z)!=="object"&&typeof z!="function"?Le(B):z}function Le(B){if(B===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return B}function Ne(B){return(Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(z){return z.__proto__||Object.getPrototypeOf(z)})(B)}function dt(B,z,G){return z in B?Object.defineProperty(B,z,{value:G,enumerable:!0,configurable:!0,writable:!0}):B[z]=G,B}var Yn=function(B){(function(Re,Z){if(typeof Z!="function"&&Z!==null)throw new TypeError("Super expression must either be null or a function");Re.prototype=Object.create(Z&&Z.prototype,{constructor:{value:Re,writable:!0,configurable:!0}}),Z&&b0(Re,Z)})(ge,B);var z,G,$,Te=X(ge);function ge(Re){var Z;(function(ue,He){if(!(ue instanceof He))throw new TypeError("Cannot call a class as a function")})(this,ge),dt(Le(Z=Te.call(this)),"_isProfiling",!1),dt(Le(Z),"_recordChangeDescriptions",!1),dt(Le(Z),"_rendererInterfaces",{}),dt(Le(Z),"_persistedSelection",null),dt(Le(Z),"_persistedSelectionMatch",null),dt(Le(Z),"_traceUpdatesEnabled",!1),dt(Le(Z),"copyElementPath",function(ue){var He=ue.id,nt=ue.path,Ct=ue.rendererID,Mt=Z._rendererInterfaces[Ct];Mt==null?console.warn('Invalid renderer id "'.concat(Ct,'" for element "').concat(He,'"')):Mt.copyElementPath(He,nt)}),dt(Le(Z),"deletePath",function(ue){var He=ue.hookID,nt=ue.id,Ct=ue.path,Mt=ue.rendererID,It=ue.type,sn=Z._rendererInterfaces[Mt];sn==null?console.warn('Invalid renderer id "'.concat(Mt,'" for element "').concat(nt,'"')):sn.deletePath(It,nt,He,Ct)}),dt(Le(Z),"getProfilingData",function(ue){var He=ue.rendererID,nt=Z._rendererInterfaces[He];nt==null&&console.warn('Invalid renderer id "'.concat(He,'"')),Z._bridge.send("profilingData",nt.getProfilingData())}),dt(Le(Z),"getProfilingStatus",function(){Z._bridge.send("profilingStatus",Z._isProfiling)}),dt(Le(Z),"getOwnersList",function(ue){var He=ue.id,nt=ue.rendererID,Ct=Z._rendererInterfaces[nt];if(Ct==null)console.warn('Invalid renderer id "'.concat(nt,'" for element "').concat(He,'"'));else{var Mt=Ct.getOwnersList(He);Z._bridge.send("ownersList",{id:He,owners:Mt})}}),dt(Le(Z),"inspectElement",function(ue){var He=ue.id,nt=ue.path,Ct=ue.rendererID,Mt=Z._rendererInterfaces[Ct];Mt==null?console.warn('Invalid renderer id "'.concat(Ct,'" for element "').concat(He,'"')):(Z._bridge.send("inspectedEleme Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Si(B,z){(z==null||z>B.length)&&(z=B.length);for(var G=0,$=new Array(z);G<z;G++)$[G]=B[G];return $}function Mu(B,z){for(var G=0;G<z.length;G++){var $=z[G];$.enumerable=$.enumerable||!1,$.configurable=!0,"value"in $&&($.writable=!0),Object.defineProperty(B,$.key,$)}}function zu(B,z){return(zu=Object.setPrototypeOf||function(G,$){return G.__proto__=$,G})(B,z)}function Hu(B){var z=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(G){return!1}}();return function(){var G,$=Lo(B);if(z){var Te=Lo(this).constructor;G=Reflect.construct($,arguments,Te)}else G=$.apply(this,arguments);return Su(this,G)}}function Su(B,z){return!z||Cn(z)!=="object"&&typeof z!="function"?Ti(B):z}function Ti(B){if(B===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return B}function Lo(B){return(Lo=Object.setPrototypeOf?Object.getPrototypeOf:function(z){return z.__proto__||Object.getPrototypeOf(z)})(B)}function ku(B,z,G){return z in B?Object.defineProperty(B,z,{value:G,enumerable:!0,configurable:!0,writable:!0}):B[z]=G,B}var co=function(B){(function(Re,Z){if(typeof Z!="function"&&Z!==null)throw new TypeError("Super expression must either be null or a function");Re.prototype=Object.create(Z&&Z.prototype,{constructor:{value:Re,writable:!0,configurable:!0}}),Z&&zu(Re,Z)})(ge,B);var z,G,$,Te=Hu(ge);function ge(Re){var Z;return function(ke,Qe){if(!(ke instanceof Qe))throw new TypeError("Cannot call a class as a function")}(this,ge),ku(Ti(Z=Te.call(this)),"_isShutdown",!1),ku(Ti(Z),"_messageQueue",[]),ku(Ti(Z),"_timeoutID",null),ku(Ti(Z),"_wallUnlisten",null),ku(Ti(Z),"_flush",function(){if(Z._timeoutID!==null&&(clearTimeout(Z._timeoutID),Z._timeoutID=null),Z._messageQueue.length){for(var ke=0;ke<Z._messageQueue.length;ke+=2){var Qe;(Qe=Z._wall).send.apply(Qe,[Z._messageQueue[ke]].concat(cr(Z._messageQueue[ke+1])))}Z._messageQueue.length=0,Z._timeoutID=setTimeout(Z._flush,100)}}),ku(Ti(Z),"overrideValueAtPath",function(ke){var Qe=ke.id,ht=ke.path,ue=ke.rendererID,He=ke.type,nt=ke.value;switch(He){case"context":Z.send("overrideContext",{id:Qe,path:ht,rendererID:ue,wasForwarded:!0,value:nt});break;case"hooks":Z.send("overrideHookState",{id:Qe,path:ht,rendererID:ue,wasForwarded:!0,value:nt});break;case"props":Z.send("overrideProps",{id:Qe,path:ht,rendererID:ue,wasForwarded:!0,value:nt});break;case"state":Z.send("overrideState",{id:Qe,path:ht,rendererID:ue,wasForwarded:!0,value:nt})}}),Z._wall=Re,Z._wallUnlisten=Re.listen(function(ke){Ti(Z).emit(ke.event,ke.payload)})||null,Z.addListener("overrideValueAtPath",Z.overrideValueAtPath),Z}return z=ge,(G=[{key:"send",value:function(Re){if(this._isShutdown)console.warn('Cannot send message "'.concat(Re,'" through a Bridge that has been shutdown.'));else{for(var Z=arguments.length,ke=new Array(Z>1?Z-1:0),Qe=1;Qe<Z;Qe++)ke[Qe-1]=arguments[Qe];this._messageQueue.push(Re,ke),this._timeoutID||(this._timeoutID=setTimeout(this._flush,0))}}},{key:"shutdown",value:function(){if(this._isShutdown)console.warn("Bridge was already shutdown.");else{this.send("shutdown"),this._isShutdown=!0,this.addListener=function(){},this.emit=function(){},this.removeAllListeners();var Re=this._wallUnlisten;Re&&Re();do this._flush();while(this._messageQueue.length);this._timeoutID!==null&&(clearTimeout(this._timeoutID),this._timeoutID=null)}}},{key:"wall",get:function(){return this._wall}}])&&Mu(z.prototype,G),$&&Mu(z,$),ge}(_);function qu(B,z,G){var $=B[z];return B[z]=function(Te){return G.call(this,$,arguments)},$}function Pa(B,z){for(var G in z)B[G]=z[G]}function m0(B){typeof B.forceUpdate=="function"?B.forceUpdate():B.updater!=null&&typeof B.updater.enqueueForceUpdate=="function"&&B.updater.enqueueForceUpdate(this,function(){},"forceUpdate")}function ia(B,z){var G=Object.keys(B);if(Object.getOwnPropertySymbols){var $=Object.getOwnPropertySymbols(B);z&&($=$.filter(function(Te){return Object.getOwnPropertyDescriptor(B,Te).enumerable})),G.push.apply(G,$)}return G}function Q0(B){for(var z=1;z<arguments.length;z++){var G=arguments[z]!=null?arguments[z]:{};z%2?ia(Object(G),!0).forEach(function($){ua(B,$,G[$])}):Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(G)):ia(Object(G)).forEach(function($){Object.defineProperty(B,$,Object.getOwnPropertyDescriptor(G,$))})}return B}function ua(B,z,G){return z in B?Object.defineProperty(B,z,{value:G,enumerable:!0,configurable:!0,writable:!0}):B[z]=G,B}function Ia(B){return(Ia=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(z){return typeof z}:function(z){return z&&typeof Symbol=="function"&&z.constructor===Symbol&&z!==Symbol.prototype?"symbol":typeof z})(B)}function ms(B){var z=null,G=null;if(B._currentElement!=null){B._currentE Line truncated
`:`
`)+a,_=p+1,p=i.indexOf(`
`,_)}while(p!==-1);return t+=i.substr(_),t};XC.exports={stringReplaceAll:Fb,stringEncaseCRLFWithFirstIndex:Pb}});var t6=tt((Eq,JC)=>{"use strict";var Ib=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,ZC=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,bb=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Bb=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Ub=new Map([["n",`
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function $C(i){let o=i[0]==="u",a=i[1]==="{";return o&&!a&&i.length===5||i[0]==="x"&&i.length===3?String.fromCharCode(parseInt(i.slice(1),16)):o&&a?String.fromCodePoint(parseInt(i.slice(2,-1),16)):Ub.get(i)||i}function jb(i,o){let a=[],p=o.trim().split(/\s*,\s*/g),_;for(let t of p){let k=Number(t);if(!Number.isNaN(k))a.push(k);else if(_=t.match(bb))a.push(_[2].replace(Bb,(L,O,C)=>O?$C(O):C));else throw new Error(`Invalid Chalk template style argument: ${t} (in style '${i}')`)}return a}function zb(i){ZC.lastIndex=0;let o=[],a;for(;(a=ZC.exec(i))!==null;){let p=a[1];if(a[2]){let _=jb(p,a[2]);o.push([p].concat(_))}else o.push([p])}return o}function e6(i,o){let a={};for(let _ of o)for(let t of _.styles)a[t[0]]=_.inverse?null:t.slice(1);let p=i;for(let[_,t]of Object.entries(a))if(!!Array.isArray(t)){if(!(_ in p))throw new Error(`Unknown Chalk style: ${_}`);p=t.length>0?p[_](...t):p[_]}return p}JC.exports=(i,o)=>{let a=[],p=[],_=[];if(o.replace(Ib,(t,k,L,O,C,U)=>{if(k)_.push($C(k));else if(O){let H=_.join("");_=[],p.push(a.length===0?H:e6(i,a)(H)),a.push({inverse:L,styles:zb(O)})}else if(C){if(a.length===0)throw new Error("Found extraneous } in Chalk template literal");p.push(e6(i,a)(_.join(""))),_=[],a.pop()}else _.push(U)}),p.push(_.join("")),a.length>0){let t=`Chalk template literal is missing ${a.length} closing bracket${a.length===1?"":"s"} (\`}\`)`;throw new Error(t)}return p.join("")}});var i4=tt((Dq,n6)=>{"use strict";var lg=H_(),{stdout:u3,stderr:o3}=KC(),{stringReplaceAll:Hb,stringEncaseCRLFWithFirstIndex:qb}=QC(),{isArray:e4}=Array,r6=["ansi","ansi","ansi256","ansi16m"],Qv=Object.create(null),Wb=(i,o={})=>{if(o.level&&!(Number.isInteger(o.level)&&o.level>=0&&o.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let a=u3?u3.level:0;i.level=o.level===void 0?a:o.level},i6=class{constructor(o){return u6(o)}},u6=i=>{let o={};return Wb(o,i),o.template=(...a)=>o6(o.template,...a),Object.setPrototypeOf(o,t4.prototype),Object.setPrototypeOf(o.template,o),o.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},o.template.Instance=i6,o.template};function t4(i){return u6(i)}for(let[i,o]of Object.entries(lg))Qv[i]={get(){let a=n4(this,l3(o.open,o.close,this._styler),this._isEmpty);return Object.defineProperty(this,i,{value:a}),a}};Qv.visible={get(){let i=n4(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:i}),i}};var l6=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let i of l6)Qv[i]={get(){let{level:o}=this;return function(...a){let p=l3(lg.color[r6[o]][i](...a),lg.color.close,this._styler);return n4(this,p,this._isEmpty)}}};for(let i of l6){let o="bg"+i[0].toUpperCase()+i.slice(1);Qv[o]={get(){let{level:a}=this;return function(...p){let _=l3(lg.bgColor[r6[a]][i](...p),lg.bgColor.close,this._styler);return n4(this,_,this._isEmpty)}}}}var Vb=Object.defineProperties(()=>{},Zr(Ht({},Qv),{level:{enumerable:!0,get(){return this._generator.level},set(i){this._generator.level=i}}})),l3=(i,o,a)=>{let p,_;return a===void 0?(p=i,_=o):(p=a.openAll+i,_=o+a.closeAll),{open:i,close:o,openAll:p,closeAll:_,parent:a}},n4=(i,o,a)=>{let p=(..._)=>e4(_[0])&&e4(_[0].raw)?s6(p,o6(p,..._)):s6(p,_.length===1?""+_[0]:_.join(" "));return Object.setPrototypeOf(p,Vb),p._generator=i,p._styler=o,p._isEmpty=a,p},s6=(i,o)=>{if(i.level<=0||!o)return i._isEmpty?"":o;let a=i._styler;if(a===void 0)return o;let{openAll:p,closeAll:_}=a;if(o.indexOf("")!==-1)for(;a!==void 0;)o=Hb(o,a.close,a.open),a=a.parent;let t=o.indexOf(`
`);return t!==-1&&(o=qb(o,_,p,t)),p+o+_},s3,o6=(i,...o)=>{let[a]=o;if(!e4(a)||!e4(a.raw))return o.join(" ");let p=o.slice(1),_=[a.raw[0]];for(let t=1;t<a.length;t++)_.push(String(p[t-1]).replace(/[{}\\]/g,"\\$&"),String(a.raw[t]));return s3===void 0&&(s3=t6()),s3(i,_.join(""))};Object.defineProperties(t4.prototype,Qv);var r4=t4();r4.supportsColor=u3;r4.stderr=t4({level:o3?o3.level:0});r4.stderr.supportsColor=o3;n6.exports=r4});var a3=tt(sg=>{"use strict";var Gb=sg&&sg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(sg,"__esModule",{value:!0});var ag=Gb(i4()),Yb=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Kb=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,u4=(i,o)=>o==="foreground"?i:"bg"+i[0].toUpperCase()+i.slice(1);sg.default=(i,o,a)=>{if(!o)return i;if(o in ag.default){let _=u4(o,a);return ag.default[_](i)}if(o.startsWith("#")){let _=u4("hex",a);return ag.default[_](o)(i)}if(o.startsWith("ansi")){let _=Kb.exec(o);if(!_)return i;let t=u4(_[1],a),k=Number(_[2]);return ag.default[t](k)(i)}if(o.startsWith("rgb")||o.startsWith("hsl")||o.startsWith("hsv")||o.startsWith("hwb")){let _=Yb.exec(o);if(!_)return i;let t=u4(_[1],a),k=Number(_[2]),L=Number(_[3]),O=Number(_[4]);return ag.default[t](k,L,O)(i)}return i}});var f6=tt(fg=>{"use strict";var a6=fg&&fg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(fg,"__esModule",{value:!0});var Xb=a6(qC()),f3=a6(a3());fg.default=(i,o,a,p)=>{if(typeof a.style.borderStyle=="string"){let _=a.yogaNode.getComputedWidth(),t=a.yogaNode.getComputedHeight(),k=a.style.borderColor,L=Xb.default[a.style.borderStyle],O=f3.default(L.topLeft+L.horizontal.repeat(_-2)+L.topRight,k,"foreground"),C=(f3.default(L.vertical,k,"foreground")+`
`).repeat(t-2),U=f3.default(L.bottomLeft+L.horizontal.repeat(_-2)+L.bottomRight,k,"foreground");p.write(i,o,O,{transformers:[]}),p.write(i,o+1,C,{transformers:[]}),p.write(i+_-1,o+1,C,{transformers:[]}),p.write(i,o+t-1,U,{transformers:[]})}}});var d6=tt(cg=>{"use strict";var rh=cg&&cg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(cg,"__esModule",{value:!0});var Qb=rh($p()),Jb=rh(CD()),Zb=rh(BC()),$b=rh(FD()),eB=rh(UC()),tB=rh(ID()),nB=rh(f6()),rB=(i,o)=>{var a;let p=(a=i.childNodes[0])===null||a===void 0?void 0:a.yogaNode;if(p){let _=p.getComputedLeft(),t=p.getComputedTop();o=`
`.repeat(t)+Zb.default(o,_)}return o},c6=(i,o,a)=>{var p;let{offsetX:_=0,offsetY:t=0,transformers:k=[],skipStaticElements:L}=a;if(L&&i.internal_static)return;let{yogaNode:O}=i;if(O){if(O.getDisplay()===Qb.default.DISPLAY_NONE)return;let C=_+O.getComputedLeft(),U=t+O.getComputedTop(),H=k;if(typeof i.internal_transform=="function"&&(H=[i.internal_transform,...k]),i.nodeName==="ink-text"){let W=tB.default(i);if(W.length>0){let ne=Jb.default(W),m=eB.default(O);if(ne>m){let he=(p=i.style.textWrap)!==null&&p!==void 0?p:"wrap";W=$b.default(W,m,he)}W=rB(i,W),o.write(C,U,W,{transformers:H})}return}if(i.nodeName==="ink-box"&&nB.default(C,U,i,o),i.nodeName==="ink-root"||i.nodeName==="ink-box")for(let W of i.childNodes)c6(W,o,{offsetX:C,offsetY:U,transformers:H,skipStaticElements:L})}};cg.default=c6});var h6=tt((Cq,p6)=>{"use strict";p6.exports=i=>{i=Object.assign({onlyFirst:!1},i);let o=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(o,i.onlyFirst?void 0:"g")}});var m6=tt((xq,c3)=>{"use strict";var iB=h6(),v6=i=>typeof i=="string"?i.replace(iB(),""):i;c3.exports=v6;c3.exports.default=v6});var _6=tt((Rq,y6)=>{"use strict";var g6="[\uD800-\uDBFF][\uDC00-\uDFFF]";y6.exports=i=>i&&i.exact?new RegExp(`^${g6}$`):new RegExp(g6,"g")});var D6=tt((Aq,d3)=>{"use strict";var uB=m6(),oB=_6(),E6=i=>uB(i).replace(oB()," ").length;d3.exports=E6;d3.exports.default=E6});var C6=tt(dg=>{"use strict";var w6=dg&&dg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(dg,"__esModule",{value:!0});var S6=w6(ND()),lB=w6(D6()),T6=class{constructor(o){this.writes=[];let{width:a,height:p}=o;this.width=a,this.height=p}write(o,a,p,_){let{transformers:t}=_;!p||this.writes.push({x:o,y:a,text:p,transformers:t})}get(){let o=[];for(let p=0;p<this.height;p++)o.push(" ".repeat(this.width));for(let p of this.writes){let{x:_,y:t,text:k,transformers:L}=p,O=k.split(`
`),C=0;for(let U of O){let H=o[t+C];if(!H)continue;let W=lB.default(U);for(let ne of L)U=ne(U);o[t+C]=S6.default(H,0,_)+U+S6.default(H,_+W),C++}}return{output:o.map(p=>p.trimRight()).join(`
`),height:o.length}}};dg.default=T6});var A6=tt(pg=>{"use strict";var p3=pg&&pg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(pg,"__esModule",{value:!0});var sB=p3($p()),x6=p3(d6()),R6=p3(C6());pg.default=(i,o)=>{var a;if(i.yogaNode.setWidth(o),i.yogaNode){i.yogaNode.calculateLayout(void 0,void 0,sB.default.DIRECTION_LTR);let p=new R6.default({width:i.yogaNode.getComputedWidth(),height:i.yogaNode.getComputedHeight()});x6.default(i,p,{skipStaticElements:!0});let _;((a=i.staticNode)===null||a===void 0?void 0:a.yogaNode)&&(_=new R6.default({width:i.staticNode.yogaNode.getComputedWidth(),height:i.staticNode.yogaNode.getComputedHeight()}),x6.default(i.staticNode,_,{skipStaticElements:!1}));let{output:t,height:k}=p.get();return{output:t,outputHeight:k,staticOutput:_?`${_.get().output}
`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var N6=tt((kq,O6)=>{"use strict";var M6=require("stream"),k6=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],h3={},aB=i=>{let o=new M6.PassThrough,a=new M6.PassThrough;o.write=_=>i("stdout",_),a.write=_=>i("stderr",_);let p=new console.Console(o,a);for(let _ of k6)h3[_]=console[_],console[_]=p[_];return()=>{for(let _ of k6)console[_]=h3[_];h3={}}};O6.exports=aB});var m3=tt(v3=>{"use strict";Object.defineProperty(v3,"__esModule",{value:!0});v3.default=new WeakMap});var g3=tt(y3=>{"use strict";Object.defineProperty(y3,"__esModule",{value:!0});var fB=Mi(),L6=fB.createContext({exit:()=>{}});L6.displayName="InternalAppContext";y3.default=L6});var E3=tt(_3=>{"use strict";Object.defineProperty(_3,"__esModule",{value:!0});var cB=Mi(),F6=cB.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});F6.displayName="InternalStdinContext";_3.default=F6});var w3=tt(D3=>{"use strict";Object.defineProperty(D3,"__esModule",{value:!0});var dB=Mi(),P6=dB.createContext({stdout:void 0,write:()=>{}});P6.displayName="InternalStdoutContext";D3.default=P6});var T3=tt(S3=>{"use strict";Object.defineProperty(S3,"__esModule",{value:!0});var pB=Mi(),I6=pB.createContext({stderr:void 0,write:()=>{}});I6.displayName="InternalStderrContext";S3.default=I6});var o4=tt(C3=>{"use strict";Object.defineProperty(C3,"__esModule",{value:!0});var hB=Mi(),b6=hB.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});b6.displayName="InternalFocusContext";C3.default=b6});var U6=tt((Bq,B6)=>{"use strict";var vB=/[|\\{}()[\]^$+*?.-]/g;B6.exports=i=>{if(typeof i!="string")throw new TypeError("Expected a string");return i.replace(vB,"\\$&")}});var q6=tt((Uq,j6)=>{"use strict";var mB=U6(),z6=[].concat(require("module").builtinModules,"bootstrap_node","node").map(i=>new RegExp(`(?:\\(${i}\\.js:\\d+:\\d+\\)$|^\\s*at ${i}\\.js:\\d+:\\d+$)`));z6.push(/\(internal\/[^:]+:\d+:\d+\)$/,/\s*at internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var l4=class{constructor(o){o=Ht({ignoredPackages:[]},o),"internals"in o||(o.internals=l4.nodeInternals()),"cwd"in o||(o.cwd=process.cwd()),this._cwd=o.cwd.replace(/\\/g,"/"),this._internals=[].concat(o.internals,yB(o.ignoredPackages)),this._wrapCallSite=o.wrapCallSite||!1}static nodeInternals(){return[...z6]}clean(o,a=0){a=" ".repeat(a),Array.isArray(o)||(o=o.split(`
`)),!/^\s*at /.test(o[0])&&/^\s*at /.test(o[1])&&(o=o.slice(1));let p=!1,_=null,t=[];return o.forEach(k=>{if(k=k.replace(/\\/g,"/"),this._internals.some(O=>O.test(k)))return;let L=/^\s*at /.test(k);p?k=k.trimEnd().replace(/^(\s+)at /,"$1"):(k=k.trim(),L&&(k=k.slice(3))),k=k.replace(`${this._cwd}/`,""),k&&(L?(_&&(t.push(_),_=null),t.push(k)):(p=!0,_=k))}),t.map(k=>`${a}${k}
`).join("")}captureString(o,a=this.captureString){typeof o=="function"&&(a=o,o=Infinity);let{stackTraceLimit:p}=Error;o&&(Error.stackTraceLimit=o);let _={};Error.captureStackTrace(_,a);let{stack:t}=_;return Error.stackTraceLimit=p,this.clean(t)}capture(o,a=this.capture){typeof o=="function"&&(a=o,o=Infinity);let{prepareStackTrace:p,stackTraceLimit:_}=Error;Error.prepareStackTrace=(L,O)=>this._wrapCallSite?O.map(this._wrapCallSite):O,o&&(Error.stackTraceLimit=o);let t={};Error.captureStackTrace(t,a);let{stack:k}=t;return Object.assign(Error,{prepareStackTrace:p,stackTraceLimit:_}),k}at(o=this.at){let[a]=this.capture(1,o);if(!a)return{};let p={line:a.getLineNumber(),column:a.getColumnNumber()};H6(p,a.getFileName(),this._cwd),a.isConstructor()&&(p.constructor=!0),a.isEval()&&(p.evalOrigin=a.getEvalOrigin()),a.isNative()&&(p.native=!0);let _;try{_=a.getTypeName()}catch(L){}_&&_!=="Object"&&_!=="[object Object]"&&(p.type=_);let t=a.getFunctionName();t&&(p.function=t);let k=a.getMethodName();return k&&t!==k&&(p.method=k),p}parseLine(o){let a=o&&o.match(gB);if(!a)return null;let p=a[1]==="new",_=a[2],t=a[3],k=a[4],L=Number(a[5]),O=Number(a[6]),C=a[7],U=a[8],H=a[9],W=a[10]==="native",ne=a[11]===")",m,he={};if(U&&(he.line=Number(U)),H&&(he.column=Number(H)),ne&&C){let Ee=0;for(let ve=C.length-1;ve>0;ve--)if(C.charAt(ve)===")")Ee++;else if(C.charAt(ve)==="("&&C.charAt(ve-1)===" "&&(Ee--,Ee===-1&&C.charAt(ve-1)===" ")){let se=C.slice(0,ve-1);C=C.slice(ve+1),_+=` (${se}`;break}}if(_){let Ee=_.match(_B);Ee&&(_=Ee[1],m=Ee[2])}return H6(he,C,this._cwd),p&&(he.constructor=!0),t&&(he.evalOrigin=t,he.evalLine=L,he.evalColumn=O,he.evalFile=k&&k.replace(/\\/g,"/")),W&&(he.native=!0),_&&(he.function=_),m&&_!==m&&(he.method=m),he}};function H6(i,o,a){o&&(o=o.replace(/\\/g,"/"),o.startsWith(`${a}/`)&&(o=o.slice(a.length+1)),i.file=o)}function yB(i){if(i.length===0)return[];let o=i.map(a=>mB(a));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${o.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var gB=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),_B=/^(.*?) \[as (.*?)\]$/;j6.exports=l4});var V6=tt((jq,W6)=>{"use strict";W6.exports=(i,o)=>i.replace(/^\t+/gm,a=>" ".repeat(a.length*(o||2)))});var Y6=tt((zq,G6)=>{"use strict";var EB=V6(),DB=(i,o)=>{let a=[],p=i-o,_=i+o;for(let t=p;t<=_;t++)a.push(t);return a};G6.exports=(i,o,a)=>{if(typeof i!="string")throw new TypeError("Source code is missing.");if(!o||o<1)throw new TypeError("Line number must start from `1`.");if(i=EB(i).split(/\r?\n/),!(o>i.length))return a=Ht({around:3},a),DB(o,a.around).filter(p=>i[p-1]!==void 0).map(p=>({line:p,value:i[p-1]}))}});var s4=tt(nc=>{"use strict";var wB=nc&&nc.__createBinding||(Object.create?function(i,o,a,p){p===void 0&&(p=a),Object.defineProperty(i,p,{enumerable:!0,get:function(){return o[a]}})}:function(i,o,a,p){p===void 0&&(p=a),i[p]=o[a]}),SB=nc&&nc.__setModuleDefault||(Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o}),TB=nc&&nc.__importStar||function(i){if(i&&i.__esModule)return i;var o={};if(i!=null)for(var a in i)a!=="default"&&Object.hasOwnProperty.call(i,a)&&wB(o,i,a);return SB(o,i),o},CB=nc&&nc.__rest||function(i,o){var a={};for(var p in i)Object.prototype.hasOwnProperty.call(i,p)&&o.indexOf(p)<0&&(a[p]=i[p]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var _=0,p=Object.getOwnPropertySymbols(i);_<p.length;_++)o.indexOf(p[_])<0&&Object.prototype.propertyIsEnumerable.call(i,p[_])&&(a[p[_]]=i[p[_]]);return a};Object.defineProperty(nc,"__esModule",{value:!0});var K6=TB(Mi()),x3=K6.forwardRef((i,o)=>{var{children:a}=i,p=CB(i,["children"]);let _=Object.assign(Object.assign({},p),{marginLeft:p.marginLeft||p.marginX||p.margin||0,marginRight:p.marginRight||p.marginX||p.margin||0,marginTop:p.marginTop||p.marginY||p.margin||0,marginBottom:p.marginBottom||p.marginY||p.margin||0,paddingLeft:p.paddingLeft||p.paddingX||p.padding||0,paddingRight:p.paddingRight||p.paddingX||p.padding||0,paddingTop:p.paddingTop||p.paddingY||p.padding||0,paddingBottom:p.paddingBottom||p.paddingY||p.padding||0});return K6.default.createElement("ink-box",{ref:o,style:_},a)});x3.displayName="Box";x3.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};nc.default=x3});var O3=tt(hg=>{"use strict";var R3=hg&&hg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(hg,"__esModule",{value:!0});var xB=R3(Mi()),Jv=R3(i4()),X6=R3(a3()),A3=({color:i,backgroundColor:o,dimColor:a,bold:p,italic:_,underline:t,strikethrough:k,inverse:L,wrap:O,children:C})=>{if(C==null)return null;let U=H=>(a&&(H=Jv.default.dim(H)),i&&(H=X6.default(H,i,"foreground")),o&&(H=X6.default(H,o,"background")),p&&(H=Jv.default.bold(H)),_&&(H=Jv.default.italic(H)),t&&(H=Jv.default.underline(H)),k&&(H=Jv.default.strikethrough(H)),L&&(H=Jv.default.inverse(H)),H);return xB.default.createElement("ink-text",{style:{fleLine truncated
`).slice(1):void 0,a=o?Z6.parseLine(o[0]):void 0,p,_=0;if((a==null?void 0:a.file)&&(a==null?void 0:a.line)&&Q6.existsSync(a.file)){let t=Q6.readFileSync(a.file,"utf8");if(p=MB.default(t,a.line),p)for(let{line:k}of p)_=Math.max(_,String(k).length)}return Xo.default.createElement(Z1.default,{flexDirection:"column",padding:1},Xo.default.createElement(Z1.default,null,Xo.default.createElement(zc.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Xo.default.createElement(zc.default,null," ",i.message)),a&&Xo.default.createElement(Z1.default,{marginTop:1},Xo.default.createElement(zc.default,{dimColor:!0},a.file,":",a.line,":",a.column)),a&&p&&Xo.default.createElement(Z1.default,{marginTop:1,flexDirection:"column"},p.map(({line:t,value:k})=>Xo.default.createElement(Z1.default,{key:t},Xo.default.createElement(Z1.default,{width:_+1},Xo.default.createElement(zc.default,{dimColor:t!==a.line,backgroundColor:t===a.line?"red":void 0,color:t===a.line?"white":void 0},String(t).padStart(_," "),":")),Xo.default.createElement(zc.default,{key:t,backgroundColor:t===a.line?"red":void 0,color:t===a.line?"white":void 0}," "+k)))),i.stack&&Xo.default.createElement(Z1.default,{marginTop:1,flexDirection:"column"},i.stack.split(`
`).slice(1).map(t=>{let k=Z6.parseLine(t);return k?Xo.default.createElement(Z1.default,{key:t},Xo.default.createElement(zc.default,{dimColor:!0},"- "),Xo.default.createElement(zc.default,{dimColor:!0,bold:!0},k.function),Xo.default.createElement(zc.default,{dimColor:!0,color:"gray"}," ","(",k.file,":",k.line,":",k.column,")")):Xo.default.createElement(Z1.default,{key:t},Xo.default.createElement(zc.default,{dimColor:!0},"- "),Xo.default.createElement(zc.default,{dimColor:!0,bold:!0},t))})))};rc.default=kB});var tx=tt(ic=>{"use strict";var NB=ic&&ic.__createBinding||(Object.create?function(i,o,a,p){p===void 0&&(p=a),Object.defineProperty(i,p,{enumerable:!0,get:function(){return o[a]}})}:function(i,o,a,p){p===void 0&&(p=a),i[p]=o[a]}),LB=ic&&ic.__setModuleDefault||(Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o}),FB=ic&&ic.__importStar||function(i){if(i&&i.__esModule)return i;var o={};if(i!=null)for(var a in i)a!=="default"&&Object.hasOwnProperty.call(i,a)&&NB(o,i,a);return LB(o,i),o},ih=ic&&ic.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(ic,"__esModule",{value:!0});var uh=FB(Mi()),ex=ih(nD()),PB=ih(g3()),IB=ih(E3()),bB=ih(w3()),BB=ih(T3()),UB=ih(o4()),jB=ih($6()),zB=" ",HB="",qB="",M3=class extends uh.PureComponent{constructor(){super(...arguments);this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=o=>{let{stdin:a}=this.props;if(!this.isRawModeSupported())throw a===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(a.setEncoding("utf8"),o){this.rawModeEnabledCount===0&&(a.addListener("data",this.handleInput),a.resume(),a.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount==0&&(a.setRawMode(!1),a.removeListener("data",this.handleInput),a.pause())},this.handleInput=o=>{o===""&&this.props.exitOnCtrlC&&this.handleExit(),o===qB&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(o===zB&&this.focusNext(),o===HB&&this.focusPrevious())},this.handleExit=o=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(o)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(o=>{let a=o.focusables[0].id;return{activeFocusId:this.findNextFocusable(o)||a}})},this.focusPrevious=()=>{this.setState(o=>{let a=o.focusables[o.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(o)||a}})},this.addFocusable=(o,{autoFocus:a})=>{this.setState(p=>{let _=p.activeFocusId;return!_&&a&&(_=o),{activeFocusId:_,focusables:[...p.focusables,{id:o,isActive:!0}]}})},this.removeFocusable=o=>{this.setState(a=>({activeFocusId:a.activeFocusId===o?void 0:a.activeFocusId,focusables:a.focusables.filter(p=>p.id!==o)}))},this.activateFocusable=o=>{this.setState(a=>({focusables:a.focusables.map(p=>p.id!==o?p:{id:o,isActive:!0})}))},this.deactivateFocusable=o=>{this.setState(a=>({activeFocusId:a.activeFocusId===o?void 0:a.activeFocusId,focusables:a.focusables.map(p=>p.id!==o?p:{id:o,isActive:!1})}))},this.findNextFocusable=o=>{let a=o.focusables.findIndex(p=>p.id===o.activeFocusId);for(let p=a+1;p<o.focusables.length;p++)if(o.focusables[p].isActive)return o.focusables[p].id},this.findPreviousFocusable=o=>{let a=o.focusables.findIndex(p=>p.id===o.activeFocusId);for(let p=a-1;p>=0;p--)if(o.focusables[p].isActive)return o.focusables[p].id}}static getDerivedStateFromError(o){return{error:o}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return uh.default.createElement(PB.default.Provider,{value:{exit:this.handleExit}},uh.default.createElement(IB.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},uh.default.createElement(bB.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},uh.default.createElement(BB.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},uh.default.createElement(UB.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?uh.default.createElement(jB.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){ex.default.hide(this.props.stdout)}componentWillUnmount(){ex.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(o){this.handleExit(o)}};ic.default=M3;M3.displayName="InternalApp"});var ux=tt(uc=>{"use strict";var WB=uc&&uc.__createBinding||(Object.create?function(i,o,a,p){p===void 0&&(p=a),Object.defineProperty(i,p,{enumerable:!0,get:function(){return o[a]}})}:function(i,o,a,p){p===void 0&&(p=a),i[p]=o[a]}),VB=uc&&uc.__setModuleDefault||(Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o}),GB=uc&&uc.__importStar||function(i){if(i&&i.__esModule)return i;var o={};if(i!=null)for(var a in i)a!=="default"&&Object.hasOwnProperty.call(i,a)&&WB(o,i,a);return VB(o,i),o},oc=uc&&uc.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(uc,"__esModule",{value:!0});var YB=oc(Mi()),nx=Z8(),KB=oc(dS()),XB=oc(QE()),QB=oc(_S()),JB=oc(DS()),a4=oc(IC()),ZB=oc(A6()),$B=oc(tD()),eU=oc(N6()),tU=GB(bD()),nU=oc(m3()),rU=oc(tx()),Zv=process.env.CI==="false"?!1:QB.default,rx=()=>{},ix=class{constructor(o){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:a,outputHeight:p,staticOutput:_}=ZB.default(this.rootNode,this.options.stdout.columns||80),t=_&&_!==`
`;if(this.options.debug){t&&(this.fullStaticOutput+=_),this.options.stdout.write(this.fullStaticOutput+a);return}if(Zv){t&&this.options.stdout.write(_),this.lastOutput=a;return}if(t&&(this.fullStaticOutput+=_),p>=this.options.stdout.rows){this.options.stdout.write(XB.default.clearTerminal+this.fullStaticOutput+a),this.lastOutput=a;return}t&&(this.log.clear(),this.options.stdout.write(_),this.log(a)),!t&&a!==this.lastOutput&&this.throttledLog(a),this.lastOutput=a},JB.default(this),this.options=o,this.rootNode=tU.createNode("ink-root"),this.rootNode.onRender=o.debug?this.onRender:nx.throttle(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=KB.default.create(o.stdout),this.throttledLog=o.debug?this.log:nx.throttle(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=a4.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=$B.default(this.unmount,{alwaysLast:!1}),process.env.DEV==="true"&&a4.default.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),o.patchConsole&&this.patchConsole(),Zv||(o.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{o.stdout.off("resize",this.onRender)})}render(o){let a=YB.default.createElement(rU.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},o);a4.default.updateContainer(a,this.container,null,rx)}writeToStdout(o){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(o+this.fullStaticOutput+this.lastOutput);return}if(Zv){this.options.stdout.write(o);return}this.log.clear(),this.options.stdout.write(o),this.log(this.lastOutput)}}writeToStderr(o){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(o),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(Zv){this.options.stderr.write(o);return}this.log.clear(),this.options.stderr.write(o),this.log(this.lastOutput)}}unmount(o){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),Zv?this.options.stdout.write(this.lastOutput+`
`):this.options.debug||this.log.done(),this.isUnmounted=!0,a4.default.updateContainer(null,this.container,null,rx),nU.default.delete(this.options.stdout),o instanceof Error?this.rejectExitPromise(o):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((o,a)=>{this.resolveExitPromise=o,this.rejectExitPromise=a})),this.exitPromise}clear(){!Zv&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=eU.default((o,a)=>{o==="stdout"&&this.writeToStdout(a),o==="stderr"&&(a.startsWith("The above error occurred")||this.writeToStderr(a))}))}};uc.default=ix});var lx=tt(mg=>{"use strict";var ox=mg&&mg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(mg,"__esModule",{value:!0});var iU=ox(ux()),f4=ox(m3()),uU=require("stream"),sU=(i,o)=>{let a=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},oU(o)),p=lU(a.stdout,()=>new iU.default(a));return p.render(i),{rerender:p.render,unmount:()=>p.unmount(),waitUntilExit:p.waitUntilExit,cleanup:()=>f4.default.delete(a.stdout),clear:p.clear}};mg.default=sU;var oU=(i={})=>i instanceof uU.Stream?{stdout:i,stdin:process.stdin}:i,lU=(i,o)=>{let a;return f4.default.has(i)?a=f4.default.get(i):(a=o(),f4.default.set(i,a)),a}});var ax=tt($1=>{"use strict";var aU=$1&&$1.__createBinding||(Object.create?function(i,o,a,p){p===void 0&&(p=a),Object.defineProperty(i,p,{enumerable:!0,get:function(){return o[a]}})}:function(i,o,a,p){p===void 0&&(p=a),i[p]=o[a]}),fU=$1&&$1.__setModuleDefault||(Object.create?function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}:function(i,o){i.default=o}),cU=$1&&$1.__importStar||function(i){if(i&&i.__esModule)return i;var o={};if(i!=null)for(var a in i)a!=="default"&&Object.hasOwnProperty.call(i,a)&&aU(o,i,a);return fU(o,i),o};Object.defineProperty($1,"__esModule",{value:!0});var yg=cU(Mi()),sx=i=>{let{items:o,children:a,style:p}=i,[_,t]=yg.useState(0),k=yg.useMemo(()=>o.slice(_),[o,_]);yg.useLayoutEffect(()=>{t(o.length)},[o.length]);let L=k.map((C,U)=>a(C,_+U)),O=yg.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},p),[p]);return yg.default.createElement("ink-box",{internal_static:!0,style:O},L)};sx.displayName="Static";$1.default=sx});var cx=tt(gg=>{"use strict";var dU=gg&&gg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(gg,"__esModule",{value:!0});var pU=dU(Mi()),fx=({children:i,transform:o})=>i==null?null:pU.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:o},i);fx.displayName="Transform";gg.default=fx});var px=tt(_g=>{"use strict";var hU=_g&&_g.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(_g,"__esModule",{value:!0});var vU=hU(Mi()),dx=({count:i=1})=>vU.default.createElement("ink-text",null,`
`.repeat(i));dx.displayName="Newline";_g.default=dx});var mx=tt(Eg=>{"use strict";var hx=Eg&&Eg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Eg,"__esModule",{value:!0});var mU=hx(Mi()),yU=hx(s4()),vx=()=>mU.default.createElement(yU.default,{flexGrow:1});vx.displayName="Spacer";Eg.default=vx});var c4=tt(Dg=>{"use strict";var gU=Dg&&Dg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Dg,"__esModule",{value:!0});var _U=Mi(),EU=gU(E3()),DU=()=>_U.useContext(EU.default);Dg.default=DU});var gx=tt(wg=>{"use strict";var wU=wg&&wg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(wg,"__esModule",{value:!0});var yx=Mi(),SU=wU(c4()),TU=(i,o={})=>{let{stdin:a,setRawMode:p,internal_exitOnCtrlC:_}=SU.default();yx.useEffect(()=>{if(o.isActive!==!1)return p(!0),()=>{p(!1)}},[o.isActive,p]),yx.useEffect(()=>{if(o.isActive===!1)return;let t=k=>{let L=String(k),O={upArrow:L==="",downArrow:L==="",leftArrow:L==="",rightArrow:L==="",pageDown:L==="[6~",pageUp:L==="[5~",return:L==="\r",escape:L==="",ctrl:!1,shift:!1,tab:L===" "||L==="",backspace:L==="\b",delete:L==="\x7F"||L==="[3~",meta:!1};L<=""&&!O.return&&(L=String.fromCharCode(L.charCodeAt(0)+"a".charCodeAt(0)-1),O.ctrl=!0),L.startsWith("")&&(L=L.slice(1),O.meta=!0);let C=L>="A"&&L<="Z",U=L>="\u0410"&&L<="\u042F";L.length===1&&(C||U)&&(O.shift=!0),O.tab&&L==="[Z"&&(O.shift=!0),(O.tab||O.backspace||O.delete)&&(L=""),(!(L==="c"&&O.ctrl)||!_)&&i(L,O)};return a==null||a.on("data",t),()=>{a==null||a.off("data",t)}},[o.isActive,a,_,i])};wg.default=TU});var _x=tt(Sg=>{"use strict";var CU=Sg&&Sg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Sg,"__esModule",{value:!0});var xU=Mi(),RU=CU(g3()),AU=()=>xU.useContext(RU.default);Sg.default=AU});var Ex=tt(Tg=>{"use strict";var OU=Tg&&Tg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Tg,"__esModule",{value:!0});var MU=Mi(),kU=OU(w3()),NU=()=>MU.useContext(kU.default);Tg.default=NU});var Dx=tt(Cg=>{"use strict";var LU=Cg&&Cg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Cg,"__esModule",{value:!0});var FU=Mi(),PU=LU(T3()),IU=()=>FU.useContext(PU.default);Cg.default=IU});var Sx=tt(xg=>{"use strict";var wx=xg&&xg.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(xg,"__esModule",{value:!0});var Rg=Mi(),bU=wx(o4()),BU=wx(c4()),UU=({isActive:i=!0,autoFocus:o=!1}={})=>{let{isRawModeSupported:a,setRawMode:p}=BU.default(),{activeId:_,add:t,remove:k,activate:L,deactivate:O}=Rg.useContext(bU.default),C=Rg.useMemo(()=>Math.random().toString().slice(2,7),[]);return Rg.useEffect(()=>(t(C,{autoFocus:o}),()=>{k(C)}),[C,o]),Rg.useEffect(()=>{i?L(C):O(C)},[i,C]),Rg.useEffect(()=>{if(!(!a||!i))return p(!0),()=>{p(!1)}},[i]),{isFocused:Boolean(C)&&_===C}};xg.default=UU});var Tx=tt(Ag=>{"use strict";var jU=Ag&&Ag.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Ag,"__esModule",{value:!0});var zU=Mi(),HU=jU(o4()),qU=()=>{let i=zU.useContext(HU.default);return{enableFocus:i.enableFocus,disableFocus:i.disableFocus,focusNext:i.focusNext,focusPrevious:i.focusPrevious}};Ag.default=qU});var Cx=tt(k3=>{"use strict";Object.defineProperty(k3,"__esModule",{value:!0});k3.default=i=>{var o,a,p,_;return{width:(a=(o=i.yogaNode)===null||o===void 0?void 0:o.getComputedWidth())!==null&&a!==void 0?a:0,height:(_=(p=i.yogaNode)===null||p===void 0?void 0:p.getComputedHeight())!==null&&_!==void 0?_:0}}});var lc=tt(Yl=>{"use strict";Object.defineProperty(Yl,"__esModule",{value:!0});var WU=lx();Object.defineProperty(Yl,"render",{enumerable:!0,get:function(){return WU.default}});var VU=s4();Object.defineProperty(Yl,"Box",{enumerable:!0,get:function(){return VU.default}});var GU=O3();Object.defineProperty(Yl,"Text",{enumerable:!0,get:function(){return GU.default}});var YU=ax();Object.defineProperty(Yl,"Static",{enumerable:!0,get:function(){return YU.default}});var KU=cx();Object.defineProperty(Yl,"Transform",{enumerable:!0,get:function(){return KU.default}});var XU=px();Object.defineProperty(Yl,"Newline",{enumerable:!0,get:function(){return XU.default}});var QU=mx();Object.defineProperty(Yl,"Spacer",{enumerable:!0,get:function(){return QU.default}});var JU=gx();Object.defineProperty(Yl,"useInput",{enumerable:!0,get:function(){return JU.default}});var ZU=_x();Object.defineProperty(Yl,"useApp",{enumerable:!0,get:function(){return ZU.default}});var $U=c4();Object.defineProperty(Yl,"useStdin",{enumerable:!0,get:function(){return $U.default}});var ej=Ex();Object.defineProperty(Yl,"useStdout",{enumerable:!0,get:function(){return ej.default}});var tj=Dx();Object.defineProperty(Yl,"useStderr",{enumerable:!0,get:function(){return tj.default}});var nj=Sx();Object.defineProperty(Yl,"useFocus",{enumerable:!0,get:function(){return nj.default}});var rj=Tx() Line truncated
This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.
`,examples:[["Open the search window","yarn search"]]});var Q5=Ug;var O4=vu(require("@yarnpkg/cli")),xo=vu(require("@yarnpkg/core"));var jg=vu(lc()),_2=vu(Mi());var J5=vu(lc()),Z5=vu(Mi()),R4=({length:i,active:o})=>{if(i===0)return null;let a=i>1?` ${"-".repeat(i-1)}`:" ";return Z5.default.createElement(J5.Text,{dimColor:!o},a)};var $5=function({active:i,skewer:o,options:a,value:p,onChange:_,sizes:t=[]}){let k=a.filter(({label:O})=>!!O).map(({value:O})=>O),L=a.findIndex(O=>O.value===p&&O.label!="");return v4(p,k,{active:i,minus:"left",plus:"right",set:_}),_2.default.createElement(_2.default.Fragment,null,a.map(({label:O},C)=>{let U=C===L,H=t[C]-1||0,W=O.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),ne=Math.max(0,H-W.length-2);return O?_2.default.createElement(jg.Box,{key:O,width:H,marginLeft:1},_2.default.createElement(jg.Text,{wrap:"truncate"},_2.default.createElement(d4,{active:U})," ",O),o?_2.default.createElement(R4,{active:i,length:ne}):null):_2.default.createElement(jg.Box,{key:`spacer-${C}`,width:H,marginLeft:1})}))};var i9=vu(require("@yarnpkg/plugin-essentials")),M4=vu(require("clipanion"));function td(){}td.prototype={diff:function(o,a){var p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=p.callback;typeof p=="function"&&(_=p,p={}),this.options=p;var t=this;function k(he){return _?(setTimeout(function(){_(void 0,he)},0),!0):he}o=this.castInput(o),a=this.castInput(a),o=this.removeEmpty(this.tokenize(o)),a=this.removeEmpty(this.tokenize(a));var L=a.length,O=o.length,C=1,U=L+O;p.maxEditLength&&(U=Math.min(U,p.maxEditLength));var H=[{newPos:-1,components:[]}],W=this.extractCommon(H[0],a,o,0);if(H[0].newPos+1>=L&&W+1>=O)return k([{value:this.join(a),count:a.length}]);function ne(){for(var he=-1*C;he<=C;he+=2){var Ee=void 0,ve=H[he-1],se=H[he+1],De=(se?se.newPos:0)-he;ve&&(H[he-1]=void 0);var pe=ve&&ve.newPos+1<L,me=se&&0<=De&&De<O;if(!pe&&!me){H[he]=void 0;continue}if(!pe||me&&ve.newPos<se.newPos?(Ee=Gz(se),t.pushComponent(Ee.components,void 0,!0)):(Ee=ve,Ee.newPos++,t.pushComponent(Ee.components,!0,void 0)),De=t.extractCommon(Ee,a,o,he),Ee.newPos+1>=L&&De+1>=O)return k(Vz(t,Ee.components,a,o,t.useLongestToken));H[he]=Ee}C++}if(_)(function he(){setTimeout(function(){if(C>U)return _();ne()||he()},0)})();else for(;C<=U;){var m=ne();if(m)return m}},pushComponent:function(o,a,p){var _=o[o.length-1];_&&_.added===a&&_.removed===p?o[o.length-1]={count:_.count+1,added:a,removed:p}:o.push({count:1,added:a,removed:p})},extractCommon:function(o,a,p,_){for(var t=a.length,k=p.length,L=o.newPos,O=L-_,C=0;L+1<t&&O+1<k&&this.equals(a[L+1],p[O+1]);)L++,O++,C++;return C&&o.components.push({count:C}),o.newPos=L,O},equals:function(o,a){return this.options.comparator?this.options.comparator(o,a):o===a||this.options.ignoreCase&&o.toLowerCase()===a.toLowerCase()},removeEmpty:function(o){for(var a=[],p=0;p<o.length;p++)o[p]&&a.push(o[p]);return a},castInput:function(o){return o},tokenize:function(o){return o.split("")},join:function(o){return o.join("")}};function Vz(i,o,a,p,_){for(var t=0,k=o.length,L=0,O=0;t<k;t++){var C=o[t];if(C.removed){if(C.value=i.join(p.slice(O,O+C.count)),O+=C.count,t&&o[t-1].added){var H=o[t-1];o[t-1]=o[t],o[t]=H}}else{if(!C.added&&_){var U=a.slice(L,L+C.count);U=U.map(function(ne,m){var he=p[O+m];return he.length>ne.length?he:ne}),C.value=i.join(U)}else C.value=i.join(a.slice(L,L+C.count));L+=C.count,C.added||(O+=C.count)}}var W=o[k-1];return k>1&&typeof W.value=="string"&&(W.added||W.removed)&&i.equals("",W.value)&&(o[k-2].value+=W.value,o.pop()),o}function Gz(i){return{newPos:i.newPos,components:i.components.slice(0)}}var aV=new td;function Yz(i,o){if(typeof i=="function")o.callback=i;else if(i)for(var a in i)i.hasOwnProperty(a)&&(o[a]=i[a]);return o}var e9=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,t9=/\S/,$3=new td;$3.equals=function(i,o){return this.options.ignoreCase&&(i=i.toLowerCase(),o=o.toLowerCase()),i===o||this.options.ignoreWhitespace&&!t9.test(i)&&!t9.test(o)};$3.tokenize=function(i){for(var o=i.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),a=0;a<o.length-1;a++)!o[a+1]&&o[a+2]&&e9.test(o[a])&&e9.test(o[a+2])&&(o[a]+=o[a+2],o.splice(a+1,2),a--);return o};function n9(i,o,a){return a=Yz(a,{ignoreWhitespace:!0}),$3.diff(i,o,a)}var r9=new td;r9.tokenize=function(i){var o=[],a=i.split(/(\n|\r\n)/);a[a.length-1]||a.pop();for(var p=0;p<a.length;p++){var _=a[p];p%2&&!this.options.newlineIsToken?o[o.length-1]+=_:(this.options.ignoreWhitespace&&(_=_.trim()),o.push(_))}return o};var Kz=new td;Kz.tokenize=function(i){return i.split(/(\S.+?[.!?])(?=\s+|$)/)};var Xz=new td;Xz.tokenize=function(i){return i.split(/([{}:;,]|\s+)/)};function A4(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?A4=function(o){return typeof o}:A4=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},A4(i)}var Qz=Object.prototype.toString,zg=new td;zg.useLongestToken=! Line truncated
This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.
`,examples:[["Open the upgrade window","yarn upgrade-interactive"]]});var s9=Hg;var Zz={commands:[Q5,s9]},$z=Zz;return Jz;})();
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/** @license React v0.0.0-experimental-51a3aa6af
* react-debug-tools.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.0.0-experimental-51a3aa6af
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.0.0-experimental-51a3aa6af
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.18.0
* scheduler-tracing.development.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.18.0
* scheduler-tracing.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.18.0
* scheduler.development.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.18.0
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.24.0
* react-reconciler.development.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v0.24.0
* react-reconciler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react.development.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
return plugin;
}
};
+9
View File
@@ -0,0 +1,9 @@
/* eslint-disable */
//prettier-ignore
module.exports = {
name: "@yarnpkg/plugin-typescript",
factory: function (require) {
var plugin=(()=>{var Ft=Object.create,H=Object.defineProperty,Bt=Object.defineProperties,Kt=Object.getOwnPropertyDescriptor,zt=Object.getOwnPropertyDescriptors,Gt=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,$t=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable;var Re=(e,t,r)=>t in e?H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,u=(e,t)=>{for(var r in t||(t={}))ne.call(t,r)&&Re(e,r,t[r]);if(Q)for(var r of Q(t))De.call(t,r)&&Re(e,r,t[r]);return e},g=(e,t)=>Bt(e,zt(t)),Lt=e=>H(e,"__esModule",{value:!0});var R=(e,t)=>{var r={};for(var s in e)ne.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&Q)for(var s of Q(e))t.indexOf(s)<0&&De.call(e,s)&&(r[s]=e[s]);return r};var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vt=(e,t)=>{for(var r in t)H(e,r,{get:t[r],enumerable:!0})},Qt=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Gt(t))!ne.call(e,s)&&s!=="default"&&H(e,s,{get:()=>t[s],enumerable:!(r=Kt(t,s))||r.enumerable});return e},C=e=>Qt(Lt(H(e!=null?Ft($t(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var xe=I(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});function _(e){let t=[...e.caches],r=t.shift();return r===void 0?ve():{get(s,n,a={miss:()=>Promise.resolve()}){return r.get(s,n,a).catch(()=>_({caches:t}).get(s,n,a))},set(s,n){return r.set(s,n).catch(()=>_({caches:t}).set(s,n))},delete(s){return r.delete(s).catch(()=>_({caches:t}).delete(s))},clear(){return r.clear().catch(()=>_({caches:t}).clear())}}}function ve(){return{get(e,t,r={miss:()=>Promise.resolve()}){return t().then(n=>Promise.all([n,r.miss(n)])).then(([n])=>n)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}J.createFallbackableCache=_;J.createNullCache=ve});var Ee=I(($s,qe)=>{qe.exports=xe()});var Te=I(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});function Jt(e={serializable:!0}){let t={};return{get(r,s,n={miss:()=>Promise.resolve()}){let a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);let o=s(),d=n&&n.miss||(()=>Promise.resolve());return o.then(y=>d(y)).then(()=>o)},set(r,s){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete t[JSON.stringify(r)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}ae.createInMemoryCache=Jt});var we=I((Vs,Me)=>{Me.exports=Te()});var Ce=I(M=>{"use strict";Object.defineProperty(M,"__esModule",{value:!0});function Xt(e,t,r){let s={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===oe.WithinHeaders?s:{}},queryParameters(){return e===oe.WithinQueryParameters?s:{}}}}function Yt(e){let t=0,r=()=>(t++,new Promise(s=>{setTimeout(()=>{s(e(r))},Math.min(100*t,1e3))}));return e(r)}function ke(e,t=(r,s)=>Promise.resolve()){return Object.assign(e,{wait(r){return ke(e.then(s=>Promise.all([t(s,r),s])).then(s=>s[1]))}})}function Zt(e){let t=e.length-1;for(t;t>0;t--){let r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}return e}function er(e,t){return Object.keys(t!==void 0?t:{}).forEach(r=>{e[r]=t[r](e)}),e}function tr(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}var rr="4.2.0",sr=e=>()=>e.transporter.requester.destroy(),oe={WithinQueryParameters:0,WithinHeaders:1};M.AuthMode=oe;M.addMethods=er;M.createAuth=Xt;M.createRetryablePromise=Yt;M.createWaitablePromise=ke;M.destroy=sr;M.encode=tr;M.shuffle=Zt;M.version=rr});var F=I((Js,Ue)=>{Ue.exports=Ce()});var Ne=I(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});var nr={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};ie.MethodEnum=nr});var B=I((Ys,We)=>{We.exports=Ne()});var Ze=I(A=>{"use strict";Object.defineProperty(A,"__esModule",{value:!0});var He=B();function ce(e,t){let r=e||{},s=r.data||{};return Object.keys(r).forEach(n=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(n)===-1&&(s[n]=r[n])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var X={Read:1,Write:2,Any:3},U={Up:1,Down:2,Timeouted:3},_e=2*60*1e3;function ue(e,t=U.Up){return g(u({},e),{status:t,lastUpdate:Date.now()})}function Fe(e){return e.status===U.Up||Date.now()-e.lastUpdate>_e}function Be(e){return e.status===U.Timeouted&&Date.now()-e.lastUpdate<=_e}function le(e){return{protocol:e.protocol||"https",url:e.url,accept:e.accept||X.Any}}function ar(e,t){return Promise.all(t.map(r=>e.get(r,()=>Promise.resolve(ue(r))))).then(r=>{let s=r.filter(d=>Fe(d)),n=r.filter(d=>Be(d)),a=[...s,...n],o=a.length>0?a.map(d=>le(d)):t;return{getTimeout(d,y){return(n.length===0&&d===0?1:n.length+3+d)*y},statelessHosts:o}})}var or=({isTimedOut:e,status:t})=>!e&&~~t==0,ir=e=>{let t=e.status;return e.isTimedOut||or(e)||~~(t/100)!=2&&~~(t/100)!=4},cr=({status:e})=>~Line truncated
return plugin;
}
};
+874
View File
@@ -0,0 +1,874 @@
#!/usr/bin/env node
/* eslint-disable */
//prettier-ignore
(()=>{var Dge=Object.create;var lS=Object.defineProperty;var kge=Object.getOwnPropertyDescriptor;var Rge=Object.getOwnPropertyNames;var Fge=Object.getPrototypeOf,Nge=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Tge=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)lS(r,t,{get:e[t],enumerable:!0})},Lge=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Rge(e))!Nge.call(r,n)&&n!==t&&lS(r,n,{get:()=>e[n],enumerable:!(i=kge(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Dge(Fge(r)):{},Lge(e||!r||!r.__esModule?lS(t,"default",{value:r,enumerable:!0}):t,r));var PK=w((z7e,xK)=>{xK.exports=vK;vK.sync=ife;var QK=J("fs");function rfe(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i<t.length;i++){var n=t[i].toLowerCase();if(n&&r.substr(-n.length).toLowerCase()===n)return!0}return!1}function SK(r,e,t){return!r.isSymbolicLink()&&!r.isFile()?!1:rfe(e,t)}function vK(r,e,t){QK.stat(r,function(i,n){t(i,i?!1:SK(n,r,e))})}function ife(r,e){return SK(QK.statSync(r),r,e)}});var NK=w((V7e,FK)=>{FK.exports=kK;kK.sync=nfe;var DK=J("fs");function kK(r,e,t){DK.stat(r,function(i,n){t(i,i?!1:RK(n,e))})}function nfe(r,e){return RK(DK.statSync(r),e)}function RK(r,e){return r.isFile()&&sfe(r,e)}function sfe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var LK=w((Z7e,TK)=>{var X7e=J("fs"),lI;process.platform==="win32"||global.TESTING_WINDOWS?lI=PK():lI=NK();TK.exports=SS;SS.sync=ofe;function SS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){SS(r,e||{},function(s,o){s?n(s):i(o)})})}lI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function ofe(r,e){try{return lI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var YK=w((_7e,GK)=>{var Dg=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",MK=J("path"),afe=Dg?";":":",OK=LK(),KK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),UK=(r,e)=>{let t=e.colon||afe,i=r.match(/\//)||Dg&&r.match(/\\/)?[""]:[...Dg?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Dg?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Dg?n.split(t):[""];return Dg&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},HK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=UK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(KK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=MK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];OK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},Afe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=UK(r,e),s=[];for(let o=0;o<t.length;o++){let a=t[o],l=/^".*"$/.test(a)?a.slice(1,-1):a,c=MK.join(l,r),u=!l&&/^\.[\\\/]/.test(r)?r.slice(0,2)+c:c;for(let g=0;g<i.length;g++){let f=u+i[g];try{if(OK.sync(f,{pathExt:n}))if(e.all)s.push(f);else return f}catch{}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw KK(r)};GK.exports=HK;HK.sync=Afe});var qK=w(($7e,vS)=>{"use strict";var jK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};vS.exports=jK;vS.exports.default=jK});var VK=w((eZe,zK)=>{"use strict";var JK=J("path"),lfe=YK(),cfe=qK();function WK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=lfe.sync(r.command,{path:t[cfe({env:t})],pathExt:e?JK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=JK.resolve(n?r.options.cwd:"",o)),o}function ufe(r){return WK(r)||WK(r,!0)}zK.exports=ufe});var XK=w((tZe,PS)=>{"use strict";var xS=/([()\][%!^"`<>&|;, *?])/g;function gfe(r){return r=r.replace(xS,"^$1"),r}function ffe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(xS,"^$1"),e&&(r=r.replace(xS,"^$1")),r}PS.exports.command=gfe;PS.exports.argument=ffe});var _K=w((rZe,ZK)=>{"use strict";ZK.exports=/^#!(.*)/});var eU=w((iZe,$K)=Line truncated
`,Nn=me(`\\
`,!1),ns=function(){return""},ss="\\",gt=me("\\",!1),Bo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),ln=function(m){return m},S="\\a",Lt=me("\\a",!1),hg=function(){return"a"},Ml="\\b",Qp=me("\\b",!1),Sp=function(){return"\b"},vp=/^[Ee]/,xp=Je(["E","e"],!1,!1),Pp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),IA=function(){return"\f"},zi="\\n",Ol=me("\\n",!1),Xe=function(){return`
`},pa="\\r",pg=me("\\r",!1),ME=function(){return"\r"},Dp="\\t",OE=me("\\t",!1),ar=function(){return" "},Tn="\\v",Kl=me("\\v",!1),kp=function(){return"\v"},Us=/^[\\'"?]/,da=Je(["\\","'",'"',"?"],!1,!1),cn=function(m){return String.fromCharCode(parseInt(m,16))},Le="\\x",dg=me("\\x",!1),Ul="\\u",Hs=me("\\u",!1),Hl="\\U",yA=me("\\U",!1),Cg=function(m){return String.fromCodePoint(parseInt(m,16))},mg=/^[0-7]/,Ca=Je([["0","7"]],!1,!1),ma=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),bo=nt(),wA="-",Gl=me("-",!1),Gs="+",Yl=me("+",!1),KE=".",Rp=me(".",!1),Eg=function(m,Q,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(Q.join("")+"."+N.join(""))}},Fp=function(m,Q){return{type:"number",value:(m==="-"?-1:1)*parseInt(Q.join(""))}},UE=function(m){return{type:"variable",...m}},jl=function(m){return{type:"variable",name:m}},HE=function(m){return m},Ig="*",BA=me("*",!1),Rr="/",GE=me("/",!1),Ys=function(m,Q,N){return{type:Q==="*"?"multiplication":"division",right:N}},js=function(m,Q){return Q.reduce((N,U)=>({left:N,...U}),m)},yg=function(m,Q,N){return{type:Q==="+"?"addition":"subtraction",right:N}},bA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Ln=me("${",!1),JQ=":-",k1=me(":-",!1),R1=function(m,Q){return{name:m,defaultValue:Q}},WQ=":-}",F1=me(":-}",!1),N1=function(m){return{name:m,defaultValue:[]}},zQ=":+",T1=me(":+",!1),L1=function(m,Q){return{name:m,alternativeValue:Q}},VQ=":+}",M1=me(":+}",!1),O1=function(m){return{name:m,alternativeValue:[]}},XQ=function(m){return{name:m}},K1="$",U1=me("$",!1),H1=function(m){return e.isGlobPattern(m)},G1=function(m){return m},ZQ=/^[a-zA-Z0-9_]/,_Q=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),$Q=function(){return L()},eS=/^[$@*?#a-zA-Z0-9_\-]/,tS=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),Y1=/^[(){}<>$|&; \t"']/,wg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),rS=/^[<>&; \t"']/,iS=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),YE=/^[ \t]/,jE=Je([" "," "],!1,!1),b=0,Oe=0,QA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function L(){return r.substring(Oe,b)}function Z(){return Et(Oe,b)}function te(m,Q){throw Q=Q!==void 0?Q:Et(Oe,b),Ri([lt(m)],r.substring(Oe,b),Q)}function we(m,Q){throw Q=Q!==void 0?Q:Et(Oe,b),Mn(m,Q)}function me(m,Q){return{type:"literal",text:m,ignoreCase:Q}}function Je(m,Q,N){return{type:"class",parts:m,inverted:Q,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var Q=QA[m],N;if(Q)return Q;for(N=m-1;!QA[N];)N--;for(Q=QA[N],Q={line:Q.line,column:Q.column};N<m;)r.charCodeAt(N)===10?(Q.line++,Q.column=1):Q.column++,N++;return QA[m]=Q,Q}function Et(m,Q){var N=it(m),U=it(Q);return{start:{offset:m,line:N.line,column:N.column},end:{offset:Q,line:U.line,column:U.column}}}function be(m){b<d||(b>d&&(d=b,E=[]),E.push(m))}function Mn(m,Q){return new Zl(m,null,null,Q)}function Ri(m,Q,N){return new Zl(Zl.buildMessage(m,Q),m,Q,N)}function SA(){var m,Q;return m=b,Q=Or(),Q===t&&(Q=null),Q!==t&&(Oe=m,Q=s(Q)),m=Q,m}function Or(){var m,Q,N,U,ce;if(m=b,Q=Kr(),Q!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=Ea(),U!==t?(ce=os(),ce===t&&(ce=null),ce!==t?(Oe=m,Q=o(Q,U,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;if(m===t)if(m=b,Q=Kr(),Q!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=Ea(),U===t&&(U=null),U!==t?(Oe=m,Q=a(Q,U),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function os(){var m,Q,N,U,ce;for(m=b,Q=[],N=He();N!==t;)Q.push(N),N=He();if(Q!==t)if(N=Or(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Oe=m,Q=l(N),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function Ea(){var m;return r.charCodeAt(b)===59?(m=c,b++):(m=t,I===0&&be(u)),m===t&&(r.charCodeAt(b)===38?(m=g,b++):(m=t,I===0&&be(f))),m}function Kr(){var m,Q,N;return m=b,Q=j1(),Q!==t?(N=fge(),N===t&&(N=null),N!==t?(Oe=m,Q=h(Q,N),m=Q):(b=m,m=t)):(b=m,m=t),m}function fge(){var m,Q,N,U,ce,Se,ht;for(m=b,Q=[],N=He();N!==t;)Q.push(N),N=He();if(Q!==t)if(N=hge(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Oe=m,Q=p(N,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function hge(){var m;return r.substr(b,2)===C?(m=C,b+=2):(m=t,I===0&&be(y)),m===t&&(r.substr(b,2)===B?(m=B,b+=2):(m=t,I===0&&be(v))),m}function j1(){var m,Q,N;return m=b,Q=Cge(),Q!==t?(N=pge(),N===t&&(N=null),N!==t?(Oe=m,Q=D(Q,N),m=Q):(b=m,m=t)):(b=m,m=t),m}function pge(){var m,Q,N,U,ce,Se,ht;for(m=b,Q=[],N=He();N!==t;)Q.push(N),N=He();if(Q!==t)if(N=dge(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=j1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Oe=m,Q=T(N,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;retLine truncated
\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;o<this.buffer.length&&`\0\r
\x85\u2028\u2029`.indexOf(this.buffer.charAt(o))===-1;)if(o+=1,o-this.position>t/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),IU.repeat(" ",e)+i+a+s+`
`+IU.repeat(" ",e+this.position-n+i.length)+"^"};HS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`:
`+t)),i};yU.exports=HS});var si=w((vZe,bU)=>{"use strict";var BU=Ng(),Mfe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ofe=["scalar","sequence","mapping"];function Kfe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Ufe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(Mfe.indexOf(t)===-1)throw new BU('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Kfe(e.styleAliases||null),Ofe.indexOf(this.kind)===-1)throw new BU('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}bU.exports=Ufe});var rc=w((xZe,SU)=>{"use strict";var QU=tc(),dI=Ng(),Hfe=si();function GS(r,e,t){var i=[];return r.include.forEach(function(n){t=GS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Gfe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e<t;e+=1)arguments[e].forEach(i);return r}function Tg(r){this.include=r.include||[],this.implicit=r.implicit||[],this.explicit=r.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!=="scalar")throw new dI("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=GS(this,"implicit",[]),this.compiledExplicit=GS(this,"explicit",[]),this.compiledTypeMap=Gfe(this.compiledImplicit,this.compiledExplicit)}Tg.DEFAULT=null;Tg.create=function(){var e,t;switch(arguments.length){case 1:e=Tg.DEFAULT,t=arguments[0];break;case 2:e=arguments[0],t=arguments[1];break;default:throw new dI("Wrong number of arguments for Schema.create function")}if(e=QU.toArray(e),t=QU.toArray(t),!e.every(function(i){return i instanceof Tg}))throw new dI("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!t.every(function(i){return i instanceof Hfe}))throw new dI("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new Tg({include:e,explicit:t})};SU.exports=Tg});var xU=w((PZe,vU)=>{"use strict";var Yfe=si();vU.exports=new Yfe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var DU=w((DZe,PU)=>{"use strict";var jfe=si();PU.exports=new jfe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var RU=w((kZe,kU)=>{"use strict";var qfe=si();kU.exports=new qfe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var CI=w((RZe,FU)=>{"use strict";var Jfe=rc();FU.exports=new Jfe({explicit:[xU(),DU(),RU()]})});var TU=w((FZe,NU)=>{"use strict";var Wfe=si();function zfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function Vfe(){return null}function Xfe(r){return r===null}NU.exports=new Wfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:zfe,construct:Vfe,predicate:Xfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var MU=w((NZe,LU)=>{"use strict";var Zfe=si();function _fe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function $fe(r){return r==="true"||r==="True"||r==="TRUE"}function ehe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}LU.exports=new Zfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:_fe,construct:$fe,predicate:ehe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var KU=w((TZe,OU)=>{"use strict";var the=tc(),rhe=si();function ihe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function nhe(r){return 48<=r&&r<=55}function she(r){return 48<=r&&r<=57}function ohe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t<e;t++)if(n=r[t],n!=="_"){if(n!=="0"&&n!=="1")return!1;i=!0}return i&&n!=="_"}if(n==="x"){for(t++;t<e;t++)if(n=r[t],n!=="_"){if(!ihe(r.charCodeAt(t)))return!1;i=!0}return i&&n!=="_"}for(;t<e;t++)if(n=r[t],n!=="_"){if(!nhe(r.charCodeAt(t)))return!1;i=!0}return i&&n!=="_"}if(n==="_")return!1;for(;t<e;t++)if(n=r[t],n!=="_"){if(n===":")break;if(!she(r.charCodeAt(t)))return!1;i=!0}return!i||n==="_"?!1:n!==":"?!0:/^(:[0-5]?[0-9])+$/.test(r.slice(t)) Line truncated
\r`;function Qhe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=qS;for(t=0;t<n;t++)if(e=s.indexOf(r.charAt(t)),!(e>64)){if(e<0)return!1;i+=6}return i%8===0}function She(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=qS,o=0,a=[];for(e=0;e<n;e++)e%4===0&&e&&(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),ic?ic.from?ic.from(a):new ic(a):a}function vhe(r){var e="",t=0,i,n,s=r.length,o=qS;for(i=0;i<s;i++)i%3===0&&i&&(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function xhe(r){return ic&&ic.isBuffer(r)}_U.exports=new bhe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Qhe,construct:She,predicate:xhe,represent:vhe})});var t2=w((YZe,e2)=>{"use strict";var Phe=si(),Dhe=Object.prototype.hasOwnProperty,khe=Object.prototype.toString;function Rhe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t<i;t+=1){if(n=a[t],o=!1,khe.call(n)!=="[object Object]")return!1;for(s in n)if(Dhe.call(n,s))if(!o)o=!0;else return!1;if(!o)return!1;if(e.indexOf(s)===-1)e.push(s);else return!1}return!0}function Fhe(r){return r!==null?r:[]}e2.exports=new Phe("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Rhe,construct:Fhe})});var i2=w((jZe,r2)=>{"use strict";var Nhe=si(),The=Object.prototype.toString;function Lhe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e<t;e+=1){if(i=o[e],The.call(i)!=="[object Object]"||(n=Object.keys(i),n.length!==1))return!1;s[e]=[n[0],i[n[0]]]}return!0}function Mhe(r){if(r===null)return[];var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e<t;e+=1)i=o[e],n=Object.keys(i),s[e]=[n[0],i[n[0]]];return s}r2.exports=new Nhe("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Lhe,construct:Mhe})});var s2=w((qZe,n2)=>{"use strict";var Ohe=si(),Khe=Object.prototype.hasOwnProperty;function Uhe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Khe.call(t,e)&&t[e]!==null)return!1;return!0}function Hhe(r){return r!==null?r:{}}n2.exports=new Ohe("tag:yaml.org,2002:set",{kind:"mapping",resolve:Uhe,construct:Hhe})});var Lg=w((JZe,o2)=>{"use strict";var Ghe=rc();o2.exports=new Ghe({include:[jS()],implicit:[zU(),XU()],explicit:[$U(),t2(),i2(),s2()]})});var A2=w((WZe,a2)=>{"use strict";var Yhe=si();function jhe(){return!0}function qhe(){}function Jhe(){return""}function Whe(r){return typeof r>"u"}a2.exports=new Yhe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:jhe,construct:qhe,predicate:Whe,represent:Jhe})});var c2=w((zZe,l2)=>{"use strict";var zhe=si();function Vhe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function Xhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Zhe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function _he(r){return Object.prototype.toString.call(r)==="[object RegExp]"}l2.exports=new zhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Vhe,construct:Xhe,predicate:_he,represent:Zhe})});var f2=w((VZe,g2)=>{"use strict";var mI;try{u2=J,mI=u2("esprima")}catch{typeof window<"u"&&(mI=window.esprima)}var u2,$he=si();function epe(r){if(r===null)return!1;try{var e="("+r+")",t=mI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function tpe(r){var e="("+r+")",t=mI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function rpe(r){return r.toString()}function ipe(r){return Object.prototype.toString.call(r)==="[object Function]"}g2.exports=new $he("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:epe,construct:tpe,predicate:ipe,represent:rpe})});var Xp=w((ZZe,p2)=>{"use strict";var h2=rc();p2.exports=h2.DEFAULT=new h2({include:[Lg()],explicit:[A2(),c2(),f2()]})});var N2=w((_Ze,Zp)=>{"use strict";var Ba=tc(),w2=Ng(),npe=wU(),B2=Lg(),spe=Xp(),kA=Object.prototype.hasOwnProperty,EI=1,b2=2,Q2=3,II=4,JS=1,ope=2,d2=3,ape=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC Line truncated
`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function fpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var x2=new Array(256),P2=new Array(256);for(nc=0;nc<256;nc++)x2[nc]=m2(nc)?1:0,P2[nc]=m2(nc);var nc;function hpe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||spe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function D2(r,e){return new w2(e,new npe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw D2(r,e)}function yI(r,e){r.onWarning&&r.onWarning.call(null,D2(r,e))}var E2={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&yI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],S2.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),kA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),v2.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function DA(r,e,t,i){var n,s,o,a;if(e<t){if(a=r.input.slice(e,t),i)for(n=0,s=a.length;n<s;n+=1)o=a.charCodeAt(n),o===9||32<=o&&o<=1114111||ft(r,"expected valid JSON character");else ape.test(a)&&ft(r,"the stream contains non-printable characters");r.result+=a}}function I2(r,e,t,i){var n,s,o,a;for(Ba.isObject(t)||ft(r,"cannot merge mappings; the provided source object is unacceptable"),n=Object.keys(t),o=0,a=n.length;o<a;o+=1)s=n[o],kA.call(e,s)||(e[s]=t[s],i[s]=!0)}function Og(r,e,t,i,n,s,o,a){var l,c;if(Array.isArray(n))for(n=Array.prototype.slice.call(n),l=0,c=n.length;l<c;l+=1)Array.isArray(n[l])&&ft(r,"nested arrays are not supported inside keys"),typeof n=="object"&&C2(n[l])==="[object Object]"&&(n[l]="[object Object]");if(typeof n=="object"&&C2(n)==="[object Object]"&&(n="[object Object]"),n=String(n),e===null&&(e={}),i==="tag:yaml.org,2002:merge")if(Array.isArray(s))for(l=0,c=s.length;l<c;l+=1)I2(r,e,s[l],t);else I2(r,e,s,t);else!r.json&&!kA.call(t,n)&&kA.call(e,n)&&(r.line=o||r.line,r.position=a||r.position,ft(r,"duplicated mapping key")),e[n]=s,delete t[n];return e}function WS(r){var e;e=r.input.charCodeAt(r.position),e===10?r.position++:e===13?(r.position++,r.input.charCodeAt(r.position)===10&&r.position++):ft(r,"a line break is expected"),r.line+=1,r.lineStart=r.position}function zr(r,e,t){for(var i=0,n=r.input.charCodeAt(r.position);n!==0;){for(;sc(n);)n=r.input.charCodeAt(++r.position);if(e&&n===35)do n=r.input.charCodeAt(++r.position);while(n!==10&&n!==13&&n!==0);if(xo(n))for(WS(r),n=r.input.charCodeAt(r.position),i++,r.lineIndent=0;n===32;)r.lineIndent++,n=r.input.charCodeAt(++r.position);else break}return t!==-1&&i!==0&&r.lineIndent<t&&yI(r,"deficient indentation"),i}function wI(r){var e=r.position,t;return t=r.input.charCodeAt(e),!!((t===45||t===46)&&t===r.input.charCodeAt(e+1)&&t===r.input.charCodeAt(e+2)&&(e+=3,t=r.input.charCodeAt(e),t===0||fn(t)))}function zS(r,e){e===1?r.result+=" ":e>1&&(r.result+=Ba.repeat(`
`,e-1))}function ppe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),fn(h)||Mg(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),fn(n)||t&&Mg(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),fn(n)||t&&Mg(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),fn(i))break}else{if(r.position===r.lineStart&&wI(r)||t&&Mg(h))break;if(xo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(DA(r,s,o,!1),zS(r,r.line-l),s=o=r.position,a=!1),sc(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return DA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function dpe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(DA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else xo(t)?(DA(r,i,n,!0),zS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&wI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function Cpe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return DA(r,t,r.position,!0),r.position++,!0;if(a===92){if(DA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),xo(a))zr(r,!1,e);else if(a<256&&x2[a])r.result+=P2[a],r.position++;else if((o=upe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=cpe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=fpe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else xo(a)?(DA(r,t,i,!0),zS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&wI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function mpe(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),fn(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Kg(r,e,EI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Kg(r,e,EI,!1,!0),C=r.result),g?Og(r,s,f,p,h,C):c?s.push(Og(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function Epe(r,e){var t,i,n=JS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)JS===n?n=g===43?d2:ope:ft(r,"repeat of a chomping mode identifier");else if((u=gpe(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(sc(g)){do g=r.input.charCodeAt(++r.position);while(sc(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!xo(g)&&g!==0)}for(;g!==0;){for(WS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndent<a)&&g===32;)r.lineIndent++,g=r.input.charCodeAt(++r.position);if(!o&&r.lineIndent>a&&(a=r.lineIndent),xo(g)){l++;continue}if(r.lineIndent<a){n===d2?r.result+=Ba.repeat(`
`,s?1+l:l):n===JS&&s&&(r.result+=`
`);break}for(i?sc(g)?(c=!0,r.result+=Ba.repeat(`
`,s?1+l:l)):c?(c=!1,r.result+=Ba.repeat(`
`,l+1)):l===0?s&&(r.result+=" "):r.result+=Ba.repeat(`
`,l):r.result+=Ba.repeat(`
`,s?1+l:l),s=!0,o=!0,l=0,t=r.position;!xo(g)&&g!==0;)g=r.input.charCodeAt(++r.position);DA(r,t,r.position,!1)}return!0}function y2(r,e){var t,i=r.tag,n=r.anchor,s=[],o,a=!1,l;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),l=r.input.charCodeAt(r.position);l!==0&&!(l!==45||(o=r.input.charCodeAt(r.position+1),!fn(o)));){if(a=!0,r.position++,zr(r,!0,-1)&&r.lineIndent<=e){s.push(null),l=r.input.charCodeAt(r.position);continue}if(t=r.line,Kg(r,e,Q2,!1,!0),s.push(r.result),zr(r,!0,-1),l=r.input.charCodeAt(r.position),(r.line===t||r.lineIndent>e)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndent<e)break}return a?(r.tag=i,r.anchor=n,r.kind="sequence",r.result=s,!0):!1}function Ipe(r,e,t){var i,n,s,o,a=r.tag,l=r.anchor,c={},u={},g=null,f=null,h=null,p=!1,C=!1,y;for(r.anchor!==null&&(r.anchorMap[r.anchor]=c),y=r.input.charCodeAt(r.position);y!==0;){if(i=r.input.charCodeAt(r.position+1),s=r.line,o=r.position,(y===63||y===58)&&fn(i))y===63?(p&&(Og(r,c,u,g,f,null),g=f=h=null),C=!0,p=!0,n=!0):p?(p=!1,n=!0):ft(r,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),r.position+=1,y=i;else if(Kg(r,t,b2,!1,!0))if(r.line===s){for(y=r.input.charCodeAt(r.position);sc(y);)y=r.input.charCodeAt(++r.position);if(y===58)y=r.input.charCodeAt(++r.position),fn(y)||ft(r,"a whitespace character is expected after the key-value separator within a block mapping"),p&&(Og(r,c,u,g,f,null),g=f=h=null),C=!0,p=!1,n=!1,g=r.tag,f=r.result;else if(C)ft(r,"can not read an implicit mapping pair; a colon is missed");else return r.tag=a,r.anchor=l,!0}else if(C)ft(r,"can not read a block mapping entry; a multiline key may not be an implicit key");else return r.tag=a,r.anchor=l,!0;else break;if((r.line===s||r.lineIndent>e)&&(Kg(r,e,II,!0,n)&&(p?f=r.result:h=r.result),p||(Og(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndent<e)break}return p&&Og(r,c,u,g,f,null),C&&(r.tag=a,r.anchor=l,r.kind="mapping",r.result=c),C}function ype(r){var e,t=!1,i=!1,n,s,o;if(o=r.input.charCodeAt(r.position),o!==33)return!1;if(r.tag!==null&&ft(r,"duplication of a tag property"),o=r.input.charCodeAt(++r.position),o===60?(t=!0,o=r.input.charCodeAt(++r.position)):o===33?(i=!0,n="!!",o=r.input.charCodeAt(++r.position)):n="!",e=r.position,t){do o=r.input.charCodeAt(++r.position);while(o!==0&&o!==62);r.position<r.length?(s=r.input.slice(e,r.position),o=r.input.charCodeAt(++r.position)):ft(r,"unexpected end of the stream within a verbatim tag")}else{for(;o!==0&&!fn(o);)o===33&&(i?ft(r,"tag suffix cannot contain exclamation marks"):(n=r.input.slice(e-1,r.position+1),S2.test(n)||ft(r,"named tag handle cannot contain such characters"),i=!0,e=r.position+1)),o=r.input.charCodeAt(++r.position);s=r.input.slice(e,r.position),lpe.test(s)&&ft(r,"tag suffix cannot contain flow indicator characters")}return s&&!v2.test(s)&&ft(r,"tag name cannot contain such characters: "+s),t?r.tag=s:kA.call(r.tagMap,n)?r.tag=r.tagMap[n]+s:n==="!"?r.tag="!"+s:n==="!!"?r.tag="tag:yaml.org,2002:"+s:ft(r,'undeclared tag handle "'+n+'"'),!0}function wpe(r){var e,t;if(t=r.input.charCodeAt(r.position),t!==38)return!1;for(r.anchor!==null&&ft(r,"duplication of an anchor property"),t=r.input.charCodeAt(++r.position),e=r.position;t!==0&&!fn(t)&&!Mg(t);)t=r.input.charCodeAt(++r.position);return r.position===e&&ft(r,"name of an anchor node must contain at least one character"),r.anchor=r.input.slice(e,r.position),!0}function Bpe(r){var e,t,i;if(i=r.input.charCodeAt(r.position),i!==42)return!1;for(i=r.input.charCodeAt(++r.position),e=r.position;i!==0&&!fn(i)&&!Mg(i);)i=r.input.charCodeAt(++r.position);return r.position===e&&ft(r,"name of an alias node must contain at least one character"),t=r.input.slice(e,r.position),kA.call(r.anchorMap,t)||ft(r,'unidentified alias "'+t+'"'),r.result=r.anchorMap[t],zr(r,!0,-1),!0}function Kg(r,e,t,i,n){var s,o,a,l=1,c=!1,u=!1,g,f,h,p,C;if(r.listener!==null&&r.listener("open",r),r.tag=null,r.anchor=null,r.kind=null,r.result=null,s=o=a=II===t||Q2===t,i&&zr(r,!0,-1)&&(c=!0,r.lineIndent>e?l=1:r.lineIndent===e?l=0:r.lineIndent<e&&(l=-1)),l===1)for(;ype(r)||wpe(r);)zr(r,!0,-1)?(c=!0,a=s,r.lineIndent>e?l=1:r.lineIndent===e?l=0:r.lineIndent<e&&(l=-1)):a=!1;if(a&&(a=c||n),(l===1||II===t)&&(EI===t||b2===t?p=e:p=e+1,C=r.position-r.lineStart,l===1?a&&(y2(r,C)||Ipe(r,C,p))||mpe(r,p)?u=!0:(o&&Epe(r,p)||dpe(r,p)||Cpe(r,p)?u=!0:Bpe(r)?(u=!0,(r.tag!==null||r.anchor!==null)&&ft(r,"alias node should not have any properties")):ppe(r,p,EI===t)&&(u=!0,r.tag===null&&(r.tag="?")),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):l===0&&(u=a&&y2(r,C))),r.tag!==null&&r.tag!=="!")if(r.tag==="?"){for(r.result!==null&&r.kind!=="scalar"&&ft(r,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g<f;g+=1)if(h=r.implicitTypes[g],h.resolve(r.result)){r.result=h.construct(r.result),r.tag=h.tag Line truncated
`),r.charCodeAt(0)===65279&&(r=r.slice(1)));var t=new hpe(r,e),i=r.indexOf("\0");for(i!==-1&&(t.position=i,ft(t,"null byte is not allowed in input")),t.input+="\0";t.input.charCodeAt(t.position)===32;)t.lineIndent+=1,t.position+=1;for(;t.position<t.length-1;)bpe(t);return t.documents}function R2(r,e,t){e!==null&&typeof e=="object"&&typeof t>"u"&&(t=e,e=null);var i=k2(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n<s;n+=1)e(i[n])}function F2(r,e){var t=k2(r,e);if(t.length!==0){if(t.length===1)return t[0];throw new w2("expected a single document in the stream, but found more")}}function Qpe(r,e,t){return typeof e=="object"&&e!==null&&typeof t>"u"&&(t=e,e=null),R2(r,e,Ba.extend({schema:B2},t))}function Spe(r,e){return F2(r,Ba.extend({schema:B2},e))}Zp.exports.loadAll=R2;Zp.exports.load=F2;Zp.exports.safeLoadAll=Qpe;Zp.exports.safeLoad=Spe});var iH=w(($Ze,_S)=>{"use strict";var $p=tc(),ed=Ng(),vpe=Xp(),xpe=Lg(),G2=Object.prototype.toString,Y2=Object.prototype.hasOwnProperty,Ppe=9,_p=10,Dpe=13,kpe=32,Rpe=33,Fpe=34,j2=35,Npe=37,Tpe=38,Lpe=39,Mpe=42,q2=44,Ope=45,J2=58,Kpe=61,Upe=62,Hpe=63,Gpe=64,W2=91,z2=93,Ype=96,V2=123,jpe=124,X2=125,Ni={};Ni[0]="\\0";Ni[7]="\\a";Ni[8]="\\b";Ni[9]="\\t";Ni[10]="\\n";Ni[11]="\\v";Ni[12]="\\f";Ni[13]="\\r";Ni[27]="\\e";Ni[34]='\\"';Ni[92]="\\\\";Ni[133]="\\N";Ni[160]="\\_";Ni[8232]="\\L";Ni[8233]="\\P";var qpe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function Jpe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n<s;n+=1)o=i[n],a=String(e[o]),o.slice(0,2)==="!!"&&(o="tag:yaml.org,2002:"+o.slice(2)),l=r.compiledTypeMap.fallback[o],l&&Y2.call(l.styleAliases,a)&&(a=l.styleAliases[a]),t[o]=a;return t}function T2(r){var e,t,i;if(e=r.toString(16).toUpperCase(),r<=255)t="x",i=2;else if(r<=65535)t="u",i=4;else if(r<=4294967295)t="U",i=8;else throw new ed("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+t+$p.repeat("0",i-e.length)+e}function Wpe(r){this.schema=r.schema||vpe,this.indent=Math.max(1,r.indent||2),this.noArrayIndent=r.noArrayIndent||!1,this.skipInvalid=r.skipInvalid||!1,this.flowLevel=$p.isNothing(r.flowLevel)?-1:r.flowLevel,this.styleMap=Jpe(this.schema,r.styles||null),this.sortKeys=r.sortKeys||!1,this.lineWidth=r.lineWidth||80,this.noRefs=r.noRefs||!1,this.noCompatMode=r.noCompatMode||!1,this.condenseFlow=r.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function L2(r,e){for(var t=$p.repeat(" ",e),i=0,n=-1,s="",o,a=r.length;i<a;)n=r.indexOf(`
`,i),n===-1?(o=r.slice(i),i=a):(o=r.slice(i,n+1),i=n+1),o.length&&o!==`
`&&(s+=t),s+=o;return s}function VS(r,e){return`
`+$p.repeat(" ",r.indent*e)}function zpe(r,e){var t,i,n;for(t=0,i=r.implicitTypes.length;t<i;t+=1)if(n=r.implicitTypes[t],n.resolve(e))return!0;return!1}function ZS(r){return r===kpe||r===Ppe}function Ug(r){return 32<=r&&r<=126||161<=r&&r<=55295&&r!==8232&&r!==8233||57344<=r&&r<=65533&&r!==65279||65536<=r&&r<=1114111}function Vpe(r){return Ug(r)&&!ZS(r)&&r!==65279&&r!==Dpe&&r!==_p}function M2(r,e){return Ug(r)&&r!==65279&&r!==q2&&r!==W2&&r!==z2&&r!==V2&&r!==X2&&r!==J2&&(r!==j2||e&&Vpe(e))}function Xpe(r){return Ug(r)&&r!==65279&&!ZS(r)&&r!==Ope&&r!==Hpe&&r!==J2&&r!==q2&&r!==W2&&r!==z2&&r!==V2&&r!==X2&&r!==j2&&r!==Tpe&&r!==Mpe&&r!==Rpe&&r!==jpe&&r!==Kpe&&r!==Upe&&r!==Lpe&&r!==Fpe&&r!==Npe&&r!==Gpe&&r!==Ype}function Z2(r){var e=/^\n* /;return e.test(r)}var _2=1,$2=2,eH=3,tH=4,BI=5;function Zpe(r,e,t,i,n){var s,o,a,l=!1,c=!1,u=i!==-1,g=-1,f=Xpe(r.charCodeAt(0))&&!ZS(r.charCodeAt(r.length-1));if(e)for(s=0;s<r.length;s++){if(o=r.charCodeAt(s),!Ug(o))return BI;a=s>0?r.charCodeAt(s-1):null,f=f&&M2(o,a)}else{for(s=0;s<r.length;s++){if(o=r.charCodeAt(s),o===_p)l=!0,u&&(c=c||s-g-1>i&&r[g+1]!==" ",g=s);else if(!Ug(o))return BI;a=s>0?r.charCodeAt(s-1):null,f=f&&M2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?_2:$2:t>9&&Z2(r)?BI:c?tH:eH}function _pe(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&qpe.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return zpe(r,l)}switch(Zpe(e,o,r.indent,s,a)){case _2:return e;case $2:return"'"+e.replace(/'/g,"''")+"'";case eH:return"|"+O2(e,r.indent)+K2(L2(e,n));case tH:return">"+O2(e,r.indent)+K2(L2($pe(e,s),n));case BI:return'"'+ede(e,s)+'"';default:throw new ed("impossible error: invalid scalar style")}}()}function O2(r,e){var t=Z2(r)?String(e):"",i=r[r.length-1]===`
`,n=i&&(r[r.length-2]===`
`||r===`
`),s=n?"+":i?"":"-";return t+s+`
`}function K2(r){return r[r.length-1]===`
`?r.slice(0,-1):r}function $pe(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(`
`);return c=c!==-1?c:r.length,t.lastIndex=c,U2(r.slice(0,c),e)}(),n=r[0]===`
`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?`
`:"")+U2(l,e),n=s}return i}function U2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=`
`+r.slice(n,s),n=s+1),o=a;return l+=`
`,r.length-n>e&&o>n?l+=r.slice(n,o)+`
`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function ede(r){for(var e="",t,i,n,s=0;s<r.length;s++){if(t=r.charCodeAt(s),t>=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=T2((t-55296)*1024+i-56320+65536),s++;continue}n=Ni[t],e+=!n&&Ug(t)?r[s]:n||T2(t)}return e}function tde(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s<o;s+=1)oc(r,e,t[s],!1,!1)&&(s!==0&&(i+=","+(r.condenseFlow?"":" ")),i+=r.dump);r.tag=n,r.dump="["+i+"]"}function rde(r,e,t,i){var n="",s=r.tag,o,a;for(o=0,a=t.length;o<a;o+=1)oc(r,e+1,t[o],!0,!0)&&((!i||o!==0)&&(n+=VS(r,e)),r.dump&&_p===r.dump.charCodeAt(0)?n+="-":n+="- ",n+=r.dump);r.tag=s,r.dump=n||"[]"}function ide(r,e,t){var i="",n=r.tag,s=Object.keys(t),o,a,l,c,u;for(o=0,a=s.length;o<a;o+=1)u="",o!==0&&(u+=", "),r.condenseFlow&&(u+='"'),l=s[o],c=t[l],oc(r,e,l,!1,!1)&&(r.dump.length>1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),oc(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function nde(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new ed("sortKeys must be a boolean or a function");for(a=0,l=o.length;a<l;a+=1)f="",(!i||a!==0)&&(f+=VS(r,e)),c=o[a],u=t[c],oc(r,e+1,c,!0,!0,!0)&&(g=r.tag!==null&&r.tag!=="?"||r.dump&&r.dump.length>1024,g&&(r.dump&&_p===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=VS(r,e)),oc(r,e+1,u,!0,g)&&(r.dump&&_p===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function H2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s<o;s+=1)if(a=n[s],(a.instanceOf||a.predicate)&&(!a.instanceOf||typeof e=="object"&&e instanceof a.instanceOf)&&(!a.predicate||a.predicate(e))){if(r.tag=t?a.tag:"?",a.represent){if(l=r.styleMap[a.tag]||a.defaultStyle,G2.call(a.represent)==="[object Function]")i=a.represent(e,l);else if(Y2.call(a.represent,l))i=a.represent[l](e,l);else throw new ed("!<"+a.tag+'> tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function oc(r,e,t,i,n,s){r.tag=null,r.dump=t,H2(r,t,!1)||H2(r,t,!0);var o=G2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(nde(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(ide(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(rde(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(tde(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&_pe(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new ed("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function sde(r,e){var t=[],i=[],n,s;for(XS(r,t,i),n=0,s=i.length;n<s;n+=1)e.duplicates.push(t[i[n]]);e.usedDuplicates=new Array(s)}function XS(r,e,t){var i,n,s;if(r!==null&&typeof r=="object")if(n=e.indexOf(r),n!==-1)t.indexOf(n)===-1&&t.push(n);else if(e.push(r),Array.isArray(r))for(n=0,s=r.length;n<s;n+=1)XS(r[n],e,t);else for(i=Object.keys(r),n=0,s=i.length;n<s;n+=1)XS(r[i[n]],e,t)}function rH(r,e){e=e||{};var t=new Wpe(e);return t.noRefs||sde(r,t),oc(t,0,r,!0,!0)?t.dump+`
`:""}function ode(r,e){return rH(r,$p.extend({schema:xpe},e))}_S.exports.dump=rH;_S.exports.safeDump=ode});var sH=w((e_e,Fr)=>{"use strict";var bI=N2(),nH=iH();function QI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=rc();Fr.exports.FAILSAFE_SCHEMA=CI();Fr.exports.JSON_SCHEMA=YS();Fr.exports.CORE_SCHEMA=jS();Fr.exports.DEFAULT_SAFE_SCHEMA=Lg();Fr.exports.DEFAULT_FULL_SCHEMA=Xp();Fr.exports.load=bI.load;Fr.exports.loadAll=bI.loadAll;Fr.exports.safeLoad=bI.safeLoad;Fr.exports.safeLoadAll=bI.safeLoadAll;Fr.exports.dump=nH.dump;Fr.exports.safeDump=nH.safeDump;Fr.exports.YAMLException=Ng();Fr.exports.MINIMAL_SCHEMA=CI();Fr.exports.SAFE_SCHEMA=Lg();Fr.exports.DEFAULT_SCHEMA=Xp();Fr.exports.scan=QI("scan");Fr.exports.parse=QI("parse");Fr.exports.compose=QI("compose");Fr.exports.addConstructor=QI("addConstructor")});var aH=w((t_e,oH)=>{"use strict";var ade=sH();oH.exports=ade});var lH=w((r_e,AH)=>{"use strict";function Ade(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function ac(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ac)}Ade(ac,Error);ac.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g<c.parts.length;g++)u+=c.parts[g]instanceof Array?s(c.parts[g][0])+"-"+s(c.parts[g][1]):s(c.parts[g]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function i(c){return c.charCodeAt(0).toString(16).toUpperCase()}function n(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+i(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+i(u)})}function s(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+i(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+i(u)})}function o(c){return t[c.type](c)}function a(c){var u=new Array(c.length),g,f;for(g=0;g<c.length;g++)u[g]=o(c[g]);if(u.sort(),u.length>0){for(g=1,f=1;g<u.length;g++)u[g-1]!==u[g]&&(u[f]=u[g],f++);u.length=f}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+n(c)+'"':"end of input"}return"Expected "+a(r)+" but "+l(e)+" found."};function lde(r,e){e=e!==void 0?e:{};var t={},i={Start:Hs},n=Hs,s=function(R){return[].concat(...R)},o="-",a=ar("-",!1),l=function(R){return R},c=function(R){return Object.assign({},...R)},u="#",g=ar("#",!1),f=Kl(),h=function(){return{}},p=":",C=ar(":",!1),y=function(R,q){return{[R]:q}},B=",",v=ar(",",!1),D=function(R,q){return q},T=function(R,q,Ce){return Object.assign({},...[R].concat(q).map(Ke=>({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Us("correct indentation"),V=" ",W=ar(" ",!1),_=function(R){return R.length===bA*yg},A=function(R){return R.length===(bA+1)*yg},Ae=function(){return bA++,!0},ge=function(){return bA--,!0},re=function(){return pg()},M=Us("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Tn(["\r",`
`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,ke=Tn(["\r",`
`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return pg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,Be=Tn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,ae=Tn(["\r",`
`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},he="true",ie=ar("true",!1),de=function(){return!0},_e="false",Pt=ar("false",!1),It=function(){return!1},Mr=Us("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Ks=/^[^"\\\0-\x1F\x7F]/,pr=Tn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ii='\\"',rs=ar('\\"',!1),fa=function(){return'"'},dA="\\\\",cg=ar("\\\\",!1),is=function(){return"\\"},CA="\\/",ha=ar("\\/",!1),wp=function(){return"/"},mA="\\b",EA=ar("\\b",!1),wr=function(){return"\b"},Tl="\\f",ug=ar("\\f",!1),yo=function(){return"\f"},gg="\\n",Bp=ar("\\n",!1),bp=function(){return`
`},vr="\\r",se=ar("\\r",!1),wo=function(){return"\r"},Fn="\\t",fg=ar("\\t",!1),bt=function(){return" "},Ll="\\u",Nn=ar("\\u",!1),ns=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},ss=/^[0-9a-fA-F]/,gt=Tn([["0","9"],["a","f"],["A","F"]],!1,!1),Bo=Us("blank space"),At=/^[ \t]/,ln=Tn([" "," "],!1,!1),S=Us("white space"),Lt=/^[ \t\n\r]/,hg=Tn([" "," ",`
`,"\r"],!1,!1),Ml=`\r
`,Qp=ar(`\r
`,!1),Sp=`
`,vp=ar(`
`,!1),xp="\r",Pp=ar("\r",!1),G=0,yt=0,IA=[{line:1,column:1}],zi=0,Ol=[],Xe=0,pa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function pg(){return r.substring(yt,G)}function ME(){return cn(yt,G)}function Dp(R,q){throw q=q!==void 0?q:cn(yt,G),Ul([Us(R)],r.substring(yt,G),q)}function OE(R,q){throw q=q!==void 0?q:cn(yt,G),dg(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Tn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Kl(){return{type:"any"}}function kp(){return{type:"end"}}function Us(R){return{type:"other",description:R}}function da(R){var q=IA[R],Ce;if(q)return q;for(Ce=R-1;!IA[Ce];)Ce--;for(q=IA[Ce],q={line:q.line,column:q.column};Ce<R;)r.charCodeAt(Ce)===10?(q.line++,q.column=1):q.column++,Ce++;return IA[R]=q,q}function cn(R,q){var Ce=da(R),Ke=da(q);return{start:{offset:R,line:Ce.line,column:Ce.column},end:{offset:q,line:Ke.line,column:Ke.column}}}function Le(R){G<zi||(G>zi&&(zi=G,Ol=[]),Ol.push(R))}function dg(R,q){return new ac(R,null,null,q)}function Ul(R,q,Ce){return new ac(ac.buildMessage(R,q),R,q,Ce)}function Hs(){var R;return R=Cg(),R}function Hl(){var R,q,Ce;for(R=G,q=[],Ce=yA();Ce!==t;)q.push(Ce),Ce=yA();return q!==t&&(yt=R,q=s(q)),R=q,R}function yA(){var R,q,Ce,Ke,Re;return R=G,q=ma(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Le(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=Ca(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Cg(){var R,q,Ce;for(R=G,q=[],Ce=mg();Ce!==t;)q.push(Ce),Ce=mg();return q!==t&&(yt=R,q=c(q)),R=q,R}function mg(){var R,q,Ce,Ke,Re,ze,dt,Ft,Ln;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Le(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=js(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Le(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=js(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Le(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Ys(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Ys();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=ma(),q!==t?(Ce=Gl(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Le(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=Ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=ma(),q!==t?(Ce=Gs(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Le(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=Ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=ma(),q!==t)if(Ce=Gs(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=KE(),Re!==t){if(ze=[],dt=Ys(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ys();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=ma(),q!==t)if(Ce=Gs(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Le(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Ln=Gs(),Ln!==t?(yt=Re,ze=D(Ce,Ln),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Le(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Ln=Gs(),Ln!==t?(yt=Re,ze=D(Ce,Ln),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Le(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=Ca(),Ft!==t?(yt=R,q=T(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function Ca(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=js(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Le(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ys(),Ce!==t?(Ke=bo(),Ke!==t?(Re=Hl(),Re!==t?(ze=wA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=js(),q!==t?(Ce=bo(),Ce!==t?(Ke=Cg(),Ke!==t?(Re=wA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Yl(),q!==t){if(Ce=[],Ke=Ys(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Ys();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function ma(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Le(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Le(W));return q!==t?(yt=G,Ce=_(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Le($)),R}function rt(){var R,q,Ce;for(RLine truncated
`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(`
`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case`
`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value<y.value)throw Error("Range out of order in character class");p.push({from:y.value,to:v.value})}else s(y.value,p),p.push(n("-")),s(v.value,p)}else s(y.value,p)}return this.consumeChar("]"),{type:"Set",complement:C,value:p}},r.prototype.classAtom=function(){switch(this.peekChar()){case"]":case`
`:case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}},r.prototype.classEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:n("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.group=function(){var p=!0;switch(this.consumeChar("("),this.peekChar(0)){case"?":this.consumeChar("?"),this.consumeChar(":"),p=!1;break;default:this.groupIdx++;break}var C=this.disjunction();this.consumeChar(")");var y={type:"Group",capturing:p,value:C};return p&&(y.idx=this.groupIdx),y},r.prototype.positiveInteger=function(){var p=this.popChar();if(i.test(p)===!1)throw Error("Expecting a positive integer");for(;t.test(this.peekChar(0));)p+=this.popChar();return parseInt(p,10)},r.prototype.integerIncludingZero=function(){var p=this.popChar();if(t.test(p)===!1)throw Error("Expecting an integer");for(;t.test(this.peekChar(0));)p+=this.popChar();return parseInt(p,10)},r.prototype.patternCharacter=function(){var p=this.popChar();switch(p){case`
`:case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:n(p)}}},r.prototype.isRegExpFlag=function(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}},r.prototype.isRangeDash=function(){return this.peekChar()==="-"&&this.isClassAtom(1)},r.prototype.isDigit=function(){return t.test(this.peekChar(0))},r.prototype.isClassAtom=function(p){switch(p===void 0&&(p=0),this.peekChar(p)){case"]":case`
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}},r.prototype.isTerm=function(){return this.isAtom()||this.isAssertion()},r.prototype.isAtom=function(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}},r.prototype.isAssertion=function(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return this.peekChar(1)==="?"&&(this.peekChar(2)==="="||this.peekChar(2)==="!");default:return!1}},r.prototype.isQuantifier=function(){var p=this.saveState();try{return this.quantifier(!0)!==void 0}catch{return!1}finally{this.restoreState(p)}},r.prototype.isPatternCharacter=function(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case`
`:case"\r":case"\u2028":case"\u2029":return!1;default:return!0}},r.prototype.parseHexDigits=function(p){for(var C="",y=0;y<p;y++){var B=this.popChar();if(e.test(B)===!1)throw Error("Expecting a HexDecimal digits");C+=B}var v=parseInt(C,16);return{type:"Character",value:v}},r.prototype.peekChar=function(p){return p===void 0&&(p=0),this.input[this.idx+p]},r.prototype.popChar=function(){var p=this.peekChar(0);return this.consumeChar(),p},r.prototype.consumeChar=function(p){if(p!==void 0&&this.input[this.idx]!==p)throw Error("Expected: '"+p+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(`
`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ty=w(Xg=>{"use strict";Object.defineProperty(Xg,"__esModule",{value:!0});Xg.clearRegExpParserCache=Xg.getRegExpAst=void 0;var IEe=$I(),ey={},yEe=new IEe.RegExpParser;function wEe(r){var e=r.toString();if(ey.hasOwnProperty(e))return ey[e];var t=yEe.pattern(e);return ey[e]=t,t}Xg.getRegExpAst=wEe;function BEe(){ey={}}Xg.clearRegExpParserCache=BEe});var qY=w(Cn=>{"use strict";var bEe=Cn&&Cn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Cn,"__esModule",{value:!0});Cn.canMatchCharCode=Cn.firstCharOptimizedIndices=Cn.getOptimizedStartCodesIndices=Cn.failedOptimizationPrefixMsg=void 0;var GY=$I(),gs=Gt(),YY=ty(),xa=Rv(),jY="Complement Sets are not supported for first char optimization";Cn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations:
`;function QEe(r,e){e===void 0&&(e=!1);try{var t=(0,YY.getRegExpAst)(r),i=iy(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===jY)e&&(0,gs.PRINT_WARNING)(""+Cn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` >
`)+` Complement Sets cannot be automatically optimized.
This will disable the lexer's first char optimizations.
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=`
This will disable the lexer's first char optimizations.
See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,gs.PRINT_ERROR)(Cn.failedOptimizationPrefixMsg+`
`+(" Failed parsing: < "+r.toString()+` >
`)+(" Using the regexp-to-ast library version: "+GY.VERSION+`
`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}Cn.getOptimizedStartCodesIndices=QEe;function iy(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i<r.value.length;i++)iy(r.value[i],e,t);break;case"Alternative":for(var n=r.value,i=0;i<n.length;i++){var s=n[i];switch(s.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}var o=s;switch(o.type){case"Character":ry(o.value,e,t);break;case"Set":if(o.complement===!0)throw Error(jY);(0,gs.forEach)(o.value,function(c){if(typeof c=="number")ry(c,e,t);else{var u=c;if(t===!0)for(var g=u.from;g<=u.to;g++)ry(g,e,t);else{for(var g=u.from;g<=u.to&&g<xa.minOptimizationVal;g++)ry(g,e,t);if(u.to>=xa.minOptimizationVal)for(var f=u.from>=xa.minOptimizationVal?u.from:xa.minOptimizationVal,h=u.to,p=(0,xa.charCodeToOptimizedIndex)(f),C=(0,xa.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":iy(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&kv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,gs.values)(e)}Cn.firstCharOptimizedIndices=iy;function ry(r,e,t){var i=(0,xa.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&SEe(r,e)}function SEe(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,xa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,xa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function HY(r,e){return(0,gs.find)(r.value,function(t){if(typeof t=="number")return(0,gs.contains)(e,t);var i=t;return(0,gs.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function kv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,gs.isArray)(r.value)?(0,gs.every)(r.value,kv):kv(r.value):!1}var vEe=function(r){bEe(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,gs.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?HY(t,this.targetCharCodes)===void 0&&(this.found=!0):HY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(GY.BaseRegExpVisitor);function xEe(r,e){if(e instanceof RegExp){var t=(0,YY.getRegExpAst)(e),i=new vEe(r);return i.visit(t),i.found}else return(0,gs.find)(e,function(n){return(0,gs.contains)(r,n.charCodeAt(0))})!==void 0}Cn.canMatchCharCode=xEe});var Rv=w(Ve=>{"use strict";var JY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var WY=$I(),ir=Bd(),xe=Gt(),Zg=qY(),zY=ty(),ko="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function PEe(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=PEe;function DEe(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=DEe;function kEe(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",`
`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){HEe()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[ko]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[ko];if((0,xe.isRegExp)(D)){var T=D.source;return T.length===1&&T!=="^"&&T!=="$"&&T!=="."&&!D.ignoreCase?T:T.length===2&&T[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],T[1])?T[1]:e.useSticky?Tv(D):Nv(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Tv(j):Nv(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var T=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return T}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=Aj(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(oj(D,v)===!1)return(0,Zg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,Mv),h=(0,xe.map)(s,sj),p=(0,xe.reduce)(i,function(v,D){var T=D.GROUP;return(0,xe.isString)(T)&&T!==ir.Lexer.SKIPPED&&(v[T]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,T){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Lv(H);Fv(v,j,C[T])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var _=typeof W=="string"?W.charCodeAt(0):W,A=Lv(_);$!==A&&($=A,Fv(v,A,C[T]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Zg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern.
`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library.
This will disable the lexer's first char optimizations.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Zg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){Fv(v,W,C[T])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Zg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing <start_chars_hint> parameter.
`)+` This will disable the lexer's first char optimizations.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=kEe;function REe(r,e){var t=[],i=VY(r);t=t.concat(i.errors);var n=XY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(FEe(s)),t=t.concat(rj(s)),t=t.concat(ij(s,e)),t=t.concat(nj(s)),t}Ve.validatePatterns=REe;function FEe(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[ko])});return e=e.concat(ZY(t)),e=e.concat($Y(t)),e=e.concat(ej(t)),e=e.concat(tj(t)),e=e.concat(_Y(t)),e}function VY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,ko)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=VY;function XY(r){var e=(0,xe.filter)(r,function(n){var s=n[ko];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=XY;var NEe=/[^\\][\$]/;function ZY(r){var e=function(n){JY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(WY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[ko];try{var o=(0,zY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return NEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error:
Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$'
See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=ZY;function _Y(r){var e=(0,xe.filter)(r,function(i){var n=i[ko];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=_Y;var TEe=/[^\\[][\^]|^\^/;function $Y(r){var e=function(n){JY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(WY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[ko];try{var o=(0,zY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return TEe.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error:
Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^'
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=$Y;function ej(r){var e=(0,xe.filter)(r,function(i){var n=i[ko];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=ej;function tj(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=tj;function rj(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=rj;function ij(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=ij;function nj(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&MEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n<a&&LEe(o,i.PATTERN)){var c="Token: ->"+l.name+`<- can never be matched.
`+("Because it appears AFTER the Token Type ->"+i.name+"<-")+`in the lexer's definition.
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=nj;function LEe(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function MEe(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Nv(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Nv;function Tv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Tv;function OEe(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition
`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition
`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist
`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`>
`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=OEe;function KEe(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[ko]===ir.Lexer.NA}),a=Aj(t);return e&&(0,xe.forEach)(o,function(l){var c=oj(l,a);if(c!==!1){var u=aj(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Zg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found.
This Lexer has been defined to track line and column information,
But none of the Token Types can be identified as matching a line terminator.
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS
for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=KEe;function UEe(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=UEe;function Mv(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=Mv;function sj(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=sj;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t<e;t++){var i=r.charCodeAt(t);if(i===10)return this.lastIndex=t+1,!0;if(i===13)return r.charCodeAt(t+1)===10?this.lastIndex=t+2:this.lastIndex=t+1,!0}return!1},lastIndex:0};function oj(r,e){if((0,xe.has)(r,"LINE_BREAKS"))return!1;if((0,xe.isRegExp)(r.PATTERN)){try{(0,Zg.canMatchCharCode)(e,r.PATTERN)}catch(t){return{issue:ir.LexerDefinitionErrorType.IDENTIFY_TERMINATOR,errMsg:t.message}}return!1}else{if((0,xe.isString)(r.PATTERN))return!1;if(Mv(r))return{issue:ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function aj(r,e){if(e.issue===ir.LexerDefinitionErrorType.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.
`+(" The problem is in the <"+r.name+`> Token Type
`)+(" Root cause: "+e.errMsg+`.
`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.
`+(" The problem is in the <"+r.name+`> Token Type
`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=aj;function Aj(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Fv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var ny=[];function Lv(r){return r<Ve.minOptimizationVal?r:ny[r]}Ve.charCodeToOptimizedIndex=Lv;function HEe(){if((0,xe.isEmpty)(ny)){ny=new Array(65536);for(var r=0;r<65536;r++)ny[r]=r>255?255+~~(r/255):r}}});var _g=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var Zr=Gt();function GEe(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=GEe;function YEe(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=YEe;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function jEe(r){var e=lj(r);cj(e),gj(e),uj(e),(0,Zr.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=jEe;function lj(r){for(var e=(0,Zr.cloneArr)(r),t=r,i=!0;i;){t=(0,Zr.compact)((0,Zr.flatten)((0,Zr.map)(t,function(s){return s.CATEGORIES})));var n=(0,Zr.difference)(t,e);e=e.concat(n),(0,Zr.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=lj;function cj(r){(0,Zr.forEach)(r,function(e){fj(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Ov(e)&&!(0,Zr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Ov(e)||(e.CATEGORIES=[]),hj(e)||(e.categoryMatches=[]),pj(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=cj;function uj(r){(0,Zr.forEach)(r,function(e){e.categoryMatches=[],(0,Zr.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=uj;function gj(r){(0,Zr.forEach)(r,function(e){Kv([],e)})}Nt.assignCategoriesMapProp=gj;function Kv(r,e){(0,Zr.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,Zr.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,Zr.contains)(i,t)||Kv(i,t)})}Nt.singleAssignCategoriesToksMap=Kv;function fj(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=fj;function Ov(r){return(0,Zr.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Ov;function hj(r){return(0,Zr.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=hj;function pj(r){return(0,Zr.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=pj;function qEe(r){return(0,Zr.has)(r,"tokenTypeIdx")}Nt.isTokenType=qEe});var Uv=w(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.defaultLexerErrorProvider=void 0;sy.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var Bd=w(Cc=>{"use strict";Object.defineProperty(Cc,"__esModule",{value:!0});Cc.Lexer=Cc.LexerDefinitionErrorType=void 0;var _s=Rv(),nr=Gt(),JEe=_g(),WEe=Uv(),zEe=ty(),VEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(VEe=Cc.LexerDefinitionErrorType||(Cc.LexerDefinitionErrorType={}));var bd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:WEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(bd);var XEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=bd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(bd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===bd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=_s.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===bd.lineTerminatorCharacters)throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[_s.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[_s.DEFAULT_MODE]=_s.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,_s.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,_s.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,_s.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,JEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,_s.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`-----------------------
`);throw new Error(`Errors detected in definition of Lexer:
`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(_s.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid <positionTracking> config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized.
Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,zEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`-----------------------
`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:
`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,T=e,H=T.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),_=[],A=this.trackStartLines?1:void 0,Ae=this.trackStartLines?1:void 0,ge=(0,_s.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,M=this.config.lineTerminatorsPattern,F=0,ue=[],pe=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ii=(0,_s.charCodeToOptimizedIndex)(pr),rs=pe[Ii];return rs===void 0?Fe:rs}var Be=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ii=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);_.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ii})}else{ke.pop();var rs=(0,nr.last)(ke);ue=i.patternIdxToConfig[rs],pe=i.charCodeToPatternIdxToConfig[rs],F=ue.length;var fa=i.canModeBeOptimized[rs]&&i.config.safeMode===!1;pe&&fa?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),pe=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ii=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;pe&&Ii?Ne=le:Ne=oe}fe.call(this,t);for(var ae;j<H;){c=null;var qe=T.charCodeAt(j),ne=Ne(qe),Y=ne.length;for(n=0;n<Y;n++){ae=ne[n];var he=ae.pattern;u=null;var ie=ae.short;if(ie!==!1?qe===ie&&(c=he):ae.isCustom===!0?(D=he.exec(T,j,W,ge),D!==null?(c=D[0],D.payload!==void 0&&(u=D.payload)):c=null):(this.updateLastIndex(he,j),c=this.match(he,e,j)),c!==null){if(l=ae.longerAlt,l!==void 0){var de=l.length;for(o=0;o<de;o++){var _e=ue[l[o]],Pt=_e.pattern;if(g=null,_e.isCustom===!0?(D=Pt.exec(T,j,W,ge),D!==null?(a=D[0],D.payload!==void 0&&(g=D.payload)):a=null):(this.updateLastIndex(Pt,j),a=this.match(Pt,e,j)),a&&a.length>c.length){c=a,u=g,ae=_e;break}}}break}}if(c!==null){if(f=c.length,h=ae.group,h!==void 0&&(p=ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,ae.tokenType,A,Ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,Ae=this.computeNewColumn(Ae,f),re===!0&&ae.canLineTerminator===!0){var It=0,Mr=void 0,ii=void 0;M.lastIndex=0;do Mr=M.test(c),Mr===!0&&(ii=M.lastIndex-1,It++);while(Mr===!0);It!==0&&(A=A+It,Ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,Ae,f))}this.handleModes(ae,Be,fe,C)}else{for(var gi=j,hr=A,fi=Ae,ni=!1;!ni&&j<H;)for(B=T.charCodeAt(j),e=this.chopInput(e,1),j++,s=0;s<F;s++){var Ks=ue[s],he=Ks.pattern,ie=Ks.short;if(ie!==!1?T.charCodeAt(j)===ie&&(ni=!0):Ks.isCustom===!0?ni=he.exec(T,j,W,ge)!==null:(this.updateLastIndex(he,j),ni=he.exec(e)!==null),ni===!0)break}y=j-gi,v=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(T,gi,y,hr,fi),_.push({offset:gi,line:hr,column:fi,length:y,message:v})}}return this.hasCustom||(W.length=$),{tokens:W,groups:ge,errors:_}},r.prototype.handleModes=function(e,t,i,n){if(e.pop===!0){var s=e.push;t(n),s!==void 0&&i.call(this,s)}else e.push!==void 0&&i.call(this,e.push)},r.prototype.chopInput=function(e,t){return e.substring(t)},r.prototype.updateLastIndex=function(e,t){e.lastIndex=t},r.prototype.updateTokenEndLineColumnLocation=function(e,t,i,n,s,o,a){var l,c;t!==void 0&&(l=i===a-1,c=l?-1:0,n===1&&l===!0||(e.endLine=s+c,e.endColumn=o-1+-c))},r.prototype.computeNewColumn=function(e,t){return e+t},r.prototype.createTokenInstance=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return null},r.prototype.createOffsetOnlyToken=function(e,t,i,n){return{image:e,startOffset:t,tokenTypeIdx:i,tokenType:n}},r.prototype.createStartOnlyToken=function(e,t,i,n,s,o){return{image:e,startOffset:t,startLine:s,startColumn:o,tokenTypeIdx:i,tokenType:n}},r.prototype.createFullToken=function(e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:t+a-1,startLine:s,endLine:s,startColumn:o,endColumn:o+a-1,tokenTypeIdx:i,tokenType:n}},r.prototype.addToken=function(e,t,i){return 666},r.prototype.addTokenUsingPush=function(e,t,i){return e.push(i),t},r.prototype.addTokenUsingMemberAccess=function(e,t,i){return e[t]=i,t++,t},r.prototype.handlePayload=function(e,t){},r.prototype.handlePayloadNoCustom=function(e,t){},r.prototype.handlePayloadWithCustom=function(e,t){t!==null&&(e.payload=t)},r.prototype.match=function(e,t,i){return null},r.prototype.matchWithTest=function(e,t,i){var n=e.test(t);return n===!0?t.substring(i,e.lastIndex):null},r.prototype.matchWithExec=function(e,t){var i=e.exec(t);return i!==null?i[0]:i},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent<this.traceInitMaxIdent&&console.log(i+"--> <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(i+"<-- <"+e+"> time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, thi Line truncated
See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,$s.has)(r,dj)&&(t.CATEGORIES=r[dj]),(0,Hv.augmentTokenTypes)([t]),(0,$s.has)(r,Cj)&&(t.LABEL=r[Cj]),(0,$s.has)(r,mj)&&(t.GROUP=r[mj]),(0,$s.has)(r,Ij)&&(t.POP_MODE=r[Ij]),(0,$s.has)(r,Ej)&&(t.PUSH_MODE=r[Ej]),(0,$s.has)(r,yj)&&(t.LONGER_ALT=r[yj]),(0,$s.has)(r,wj)&&(t.LINE_BREAKS=r[wj]),(0,$s.has)(r,Bj)&&(t.START_CHARS_HINT=r[Bj]),t}Qi.EOF=Qj({name:"EOF",pattern:ZEe.Lexer.NA});(0,Hv.augmentTokenTypes)([Qi.EOF]);function rIe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Qi.createTokenInstance=rIe;function iIe(r,e){return(0,Hv.tokenStructuredMatcher)(r,e)}Qi.tokenMatcher=iIe});var mn=w(zt=>{"use strict";var Pa=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.serializeProduction=zt.serializeGrammar=zt.Terminal=zt.Alternation=zt.RepetitionWithSeparator=zt.Repetition=zt.RepetitionMandatoryWithSeparator=zt.RepetitionMandatory=zt.Option=zt.Alternative=zt.Rule=zt.NonTerminal=zt.AbstractProduction=void 0;var Ar=Gt(),nIe=TA(),Ro=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();zt.AbstractProduction=Ro;var Sj=function(r){Pa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(Ro);zt.NonTerminal=Sj;var vj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.Rule=vj;var xj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.Alternative=xj;var Pj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.Option=Pj;var Dj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.RepetitionMandatory=Dj;var kj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.RepetitionMandatoryWithSeparator=kj;var Rj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.Repetition=Rj;var Fj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(Ro);zt.RepetitionWithSeparator=Fj;var Nj=function(r){Pa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(Ro);zt.Alternation=Nj;var oy=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();zt.Terminal=oy;function sIe(r){return(0,Ar.map)(r,Qd)}zt.serializeGrammar=sIe;function Qd(r){function e(s){return(0,Ar.map)(s,Qd)}if(r instanceof Sj){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof xj)return{type:"Alternative",definition:e(r.definition)};if(r instanceof Pj)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof Dj)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof kj)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:Qd(new oy({terminalType:r.separator})),definition:e(r.definition)};if(r instanceo Line truncated
but found: '`+a+"'";if(n)return o+n+l;var c=(0,eo.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,eo.map)(c,function(h){return"["+(0,eo.map)(h,function(p){return(0,ef.tokenLabel)(p)}).join(", ")+"]"}),g=(0,eo.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences:
`+g.join(`
`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,eo.first)(t).image,a=`
but found: '`+o+"'";if(i)return s+i+a;var l=(0,eo.map)(e,function(u){return"["+(0,eo.map)(u,function(g){return(0,ef.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences::
`+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Da.defaultParserErrorProvider);Da.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<-
inside top level rule: ->`+r.name+"<-";return t}};Da.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Wv.Terminal?u.terminalType.name:u instanceof Wv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,eo.first)(e),s=n.idx,o=(0,Jj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+`
appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-.
For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES
`;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,`
`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar.
`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>.
`)+`To resolve this make sure each Terminal and Non-Terminal names are unique
This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,eo.map)(r.prefixPath,function(n){return(0,ef.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix
`+("in <OR"+t+"> inside <"+r.topLevelRule.name+`> Rule,
`)+("<"+e+`> may appears as a prefix path in all these alternatives.
`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,eo.map)(r.prefixPath,function(n){return(0,ef.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in <OR"+t+">"+(" inside <"+r.topLevelRule.name+`> Rule,
`)+("<"+e+`> may appears as a prefix path in all these alternatives.
`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,Jj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens.
This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in <OR"+r.alternation.idx+"> inside <"+r.topLevelRule.name+`> Rule.
`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives:
`+("<OR"+r.alternation.idx+"> inside <"+r.topLevelRule.name+`> Rule.
has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=IIe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar.
`+("rule: <"+e+`> can be invoked from itself (directly or indirectly)
`)+(`without consuming any Tokens. The grammar path that causes this is:
`+i+`
`)+` To fix this refactor your grammar to remove the left recursion.
see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Wv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Vj=w(LA=>{"use strict";var yIe=LA&&LA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(LA,"__esModule",{value:!0});LA.GastRefResolverVisitor=LA.resolveGrammar=void 0;var wIe=jn(),Wj=Gt(),BIe=$g();function bIe(r,e){var t=new zj(r,e);return t.resolveRefs(),t.errors}LA.resolveGrammar=bIe;var zj=function(r){yIe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,Wj.forEach)((0,Wj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:wIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(BIe.GAstVisitor);LA.GastRefResolverVisitor=zj});var Dd=w(Nr=>{"use strict";var mc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var Xj=Ay(),Kt=Gt(),QIe=qv(),kt=mn(),Zj=function(r){mc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Xj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Zj;var SIe=function(r){mc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,QIe.first)(o),this.found=!0}},e}(Zj);Nr.NextAfterTokenWalker=SIe;var Pd=function(r){mc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(Xj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=Pd;var vIe=function(r){mc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.r Line truncated
`+(""+s.join(`
`).replace(/\n/g,`
`)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}Si.createBaseSemanticVisitorConstructor=mye;function Eye(r,e,t){var i=function(){};(0,Nd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,ps.forEach)(e,function(s){n[s]=Pq}),i.prototype=n,i.prototype.constructor=i,i}Si.createBaseVisitorConstructorWithDefaults=Eye;var ax;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(ax=Si.CstVisitorDefinitionError||(Si.CstVisitorDefinitionError={}));function Dq(r,e){var t=kq(r,e),i=Rq(r,e);return t.concat(i)}Si.validateVisitor=Dq;function kq(r,e){var t=(0,ps.map)(e,function(i){if(!(0,ps.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Nd.functionName)(r.constructor)+" CST Visitor.",type:ax.MISSING_METHOD,methodName:i}});return(0,ps.compact)(t)}Si.validateMissingCstMethods=kq;var Iye=["constructor","visit","validateVisitor"];function Rq(r,e){var t=[];for(var i in r)(0,ps.isFunction)(r[i])&&!(0,ps.contains)(Iye,i)&&!(0,ps.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Nd.functionName)(r.constructor)+` CST Visitor
There is no Grammar Rule corresponding to this method's name.
`,type:ax.REDUNDANT_METHOD,methodName:i});return t}Si.validateRedundantMethods=Rq});var Tq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.TreeBuilder=void 0;var sf=Sq(),_r=Gt(),Nq=Fq(),yye=jn(),wye=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,_r.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:yye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=_r.NOOP,this.cstFinallyStateUpdate=_r.NOOP,this.cstPostTerminal=_r.NOOP,this.cstPostNonTerminal=_r.NOOP,this.cstPostRule=_r.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=sf.setNodeLocationFull,this.setNodeLocationFromNode=sf.setNodeLocationFull,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=sf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=sf.setNodeLocationOnlyOffset,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=_r.NOOP,this.setNodeLocationFromNode=_r.NOOP,this.cstPostRule=_r.NOOP,this.setInitialNodeLocation=_r.NOOP;else throw Error('Invalid <nodeLocationTracking> config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,sf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,sf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,_r.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Nq.createBaseSemanticVisitorConstructor)(this.className,(0,_r.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,_r.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Nq.createBaseVisitorConstructorWithDefaults)(this.className,(0,_r.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Ey.TreeBuilder=wye});var Mq=w(Iy=>{"use strict";Object.defineProperty(Iy,"__esModule",{value:!0});Iy.LexerAdapter=void 0;var Lq=jn(),Bye=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this Line truncated
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty.
Note that the first argument for the parser constructor
is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Td.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Gq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Td.tokenStructuredMatcherNoCategories:Td.tokenStructuredMatcher,(0,Td.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called'
Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:Hq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:Hq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<<qn.BITS_FOR_METHOD_TYPE+qn.BITS_FOR_OCCURRENCE_IDX;this.ruleShortNameIdx++,this.shortRuleNameToFull[o]=e,this.fullRuleNameToShort[e]=o;function a(u){try{if(this.outputCst===!0){t.apply(this,u);var g=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(g),g}else return t.apply(this,u)}catch(f){return this.invokeRuleCatch(f,n,s)}finally{this.ruleFinallyStateUpdate()}}var l=function(u,g){return u===void 0&&(u=0),this.ruleInvocationStateUpdate(o,e,u),a.call(this,g)},c="ruleName";return l[c]=e,l.originalGrammarAction=t,l},r.prototype.invokeRuleCatch=function(e,t,i){var n=this.RULE_STACK.length===1,s=t&&!this.isBackTracking()&&this.recoveryEnabled;if((0,wy.isRecognitionException)(e)){var o=e;if(s){var a=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(a))if(o.resyncedTokens=this.reSyncTo(a),this.outputCst){var l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return i();else{if(this.outputCst){var l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,o.partialCstResult=l}throw o}}else{if(n)return this.moveToTerminatedState(),i();throw o}}else throw e},r.prototype.optionInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.OPTION_IDX,t);return this.optionInternalLogic(e,t,i)},r.prototype.optionInternalLogic=function(e,t,i){var n=this,s=this.getLaFuncFromCache(i),o,a;if(e.DEF!==void 0){if(o=e.DEF,a=e.GATE,a!==void 0){var l=s;s=function(){return a.call(n)&&l.call(n)}}}else o=e;if(s.call(this)===!0)return o.call(this)},r.prototype.atLeastOneInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.AT_LEAST_ONE_IDX,e);return this.atLeastOneInternalLogic(e,t,i)},r.prototype.atLeastOneInternalLogic=function(e,t,i){var n=this,s=this.getLaFuncFromCache(i),o,a;if(t.DEF!==void 0){if(o=t.DEF,a=t.GATE,a!==void 0){var l=s;s=function(){return a.call(n)&&l.call(n)}}}else o=t;if(s.call(this)===!0)for(var c=this.doSingleRepetition(o);s.call(this)===!0&&c===!0;)c=this.doSingleRepetition(o);else throw this.raiseEarlyExitException(e,Uq.PROD_TYPE.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],s,qn.AT_LEAST_ONE_IDX,e,of.NextTerminalAfterAtLeastOneWalker)},r.prototype.atLeastOneSepFirstInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.AT_LEAST_ONE_SEP_IDX,e);this.atLeastOneSepFirstInternalLogic(e,t,i)},r.prototype.atLeastOneSepFirstInternalLogic=function(e,t,i){var n=this,s=t.DEF,o=t.SEP,a=this.getLaFuncFromCache(i);if(a.call(this)===!0){s.call(this);for(var l=function(){return n.tokenMatcher(n.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),s.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,l,s,of.NextTerminalAfterAtLeastOneSepWalker],l,qn.AT_LEAST_ONE_SEP_IDX,e,of.NextTerminalAfterAtLeastOneSepWalker)}else throw this.raiseEarlyExitException(e,Uq.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)},r.prototype.manyInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.MANY_IDX,e);return this.manyInternalLogic(e,t,i)},r.prototype.manyInternalLogic=function(e,t,i){var n=this,s=this.getLaFuncFromCache(i),o,a;if(t.DEF!==void 0){if(o=t.DEF,a=t.GATE,a!==void 0){var l=s;s=function(){return a.call(n)&&l.call(n)}}}else o=t;for(var c=!0;s.call(this)===!0&&c===!0;)c=this.doSingleRepetition(o);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],s,qn.MANY_IDX,e,of.NextTerminalAfterManyWalker,c)},r.prototype.manySepFirstInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.MANY_SEP_IDX,e);this.manySepFirstInternalLogic(e,t,i)},r.prototype.manySepFirstInternalLogic=function(e,t,i){var n=this,s=t.DEF,o=t.SEP,a=this.getLaFuncFromCache(i);if(a.call(this)===!0){s.call(this);for(var l=function(){return n.tokenMatcher(n.LA(1),o)};this.tokenMatcher(this.LA(1),o)===!0;)this.CONSUME(o),s.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,o,l,s,of.NextTerminalAfterManySepWalker],l,qn.MANY_SEP_IDX,e,of.NextTerminalAfterManySepWalker)}},r.prototype.repetitionSepSecondInternal=function(e,t,i,n,s){for(;i();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,i,n,s],i,qn.AT_LEAST_ONE_SEP_IDX,e,s)},r.prototype.doSingleRepetition=function(e){var t=this.getLexerPosition();e.call(this);var i=this.getLexerPosition();return i>t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(qn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this. Line truncated
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(tJ);var Oye={name:`This CSTNode indicates the Parser is in Recording Phase
See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Kye=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return Lye.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Mo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+`
This error was thrown during the "grammar recording phase" For more info see:
https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return Ld.call(this,Mo.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){Ld.call(this,Mo.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){Ld.call(this,Mo.RepetitionMandatoryWithSeparator,t,e,Vq)},r.prototype.manyInternalRecord=function(e,t){Ld.call(this,Mo.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){Ld.call(this,Mo.RepetitionWithSeparator,t,e,Vq)},r.prototype.orInternalRecord=function(e,t){return Uye.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(Sy(t),!e||(0,yn.has)(e,"ruleName")===!1){var n=new Error("<SUBRULE"+Zq(t)+"> argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(`
inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,yn.peek)(this.recordingProdStack),o=e.ruleName,a=new Mo.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Oye:vy},r.prototype.consumeInternalRecord=function(e,t,i){if(Sy(t),!(0,_q.hasShortKeyProperty)(e)){var n=new Error("<CONSUME"+Zq(t)+"> argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(`
inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,yn.peek)(this.recordingProdStack),o=new Mo.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),tJ},r}();xy.GastRecorder=Kye;function Ld(r,e,t,i){i===void 0&&(i=!1),Sy(t);var n=(0,yn.peek)(this.recordingProdStack),s=(0,yn.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,yn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),vy}function Uye(r,e){var t=this;Sy(e);var i=(0,yn.peek)(this.recordingProdStack),n=(0,yn.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Mo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,yn.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,yn.some)(s,function(l){return(0,yn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,yn.forEach)(s,function(l){var c=new Mo.Alternative({definition:[]});o.definition.push(c),(0,yn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,yn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),vy}function Zq(r){return r===0?"":""+r}function Sy(r){if(r<0||r>Xq){var e=new Error("Invalid DSL Method idx value: <"+r+`>
`+("Idx value must be a none negative value smaller than "+(Xq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var nJ=w(Py=>{"use strict";Object.defineProperty(Py,"__esModule",{value:!0});Py.PerformanceTracer=void 0;var iJ=Gt(),Hye=jn(),Gye=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,iJ.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Hye.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent<this.traceInitMaxIdent&&console.log(i+"--> <"+e+">");var n=(0,iJ.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(i+"<-- <"+e+"> time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();Py.PerformanceTracer=Gye});var sJ=w(Dy=>{"use strict";Object.defineProperty(Dy,"__esModule",{value:!0});Dy.applyMixins=void 0;function Yye(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Dy.applyMixins=Yye});var jn=w(dr=>{"use strict";var AJ=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var en=Gt(),jye=qj(),oJ=TA(),lJ=xd(),aJ=Cq(),qye=sx(),Jye=Qq(),Wye=Tq(),zye=Mq(),Vye=Kq(),Xye=Yq(),Zye=qq(),_ye=zq(),$ye=rJ(),ewe=nJ(),twe=sJ();dr.END_OF_FILE=(0,oJ.createTokenInstance)(oJ.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:lJ.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var rwe;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(rwe=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function iwe(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=iwe;var ky=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,en.has)(t,"ignoredIssues"))throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
For further details.`);this.skipValidations=(0,en.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,en.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,en.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,aJ.resolveGrammar)({rules:(0,en.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,en.isEmpty)(n)&&e.skipValidations===!1){var s=(0,aJ.validateGrammar)({rules:(0,en.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,en.values)(e.tokensMap),errMsgProvider:lJ.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,en.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,jye.computeAllProdsFollows)((0,en.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,en.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,en.isEmpty)(e.definitionErrors))throw t=(0,en.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected:
`+t.join(`
-------------------------------
`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=ky;(0,twe.applyMixins)(ky,[qye.Recoverable,Jye.LooksAhead,Wye.TreeBuilder,zye.LexerAdapter,Xye.RecognizerEngine,Vye.RecognizerApi,Zye.ErrorHandler,_ye.ContentAssist,$ye.GastRecorder,ewe.PerformanceTracer]);var nwe=function(r){AJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,en.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(ky);dr.CstParser=nwe;var swe=function(r){AJ(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,en.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(ky);dr.EmbeddedActionsParser=swe});var uJ=w(Ry=>{"use strict";Object.defineProperty(Ry,"__esModule",{value:!0});Ry.createSyntaxDiagramsCode=void 0;var cJ=Dv();function owe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+cJ.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+cJ.VERSION+"/diagrams/diagrams.css":s,a=`
<!-- This is a generated file -->
<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
background-color: hsl(30, 20%, 95%)
}
</style>
`,l=`
<link rel='stylesheet' href='`+o+`'>
`,c=`
<script src='`+n+`vendor/railroad-diagrams.js'><\/script>
<script src='`+n+`src/diagrams_builder.js'><\/script>
<script src='`+n+`src/diagrams_behavior.js'><\/script>
<script src='`+n+`src/main.js'><\/script>
`,u=`
<div id="diagrams" align="center"></div>
`,g=`
<script>
window.serializedGrammar = `+JSON.stringify(r,null," ")+`;
<\/script>
`,f=`
<script>
var diagramsDiv = document.getElementById("diagrams");
main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);
<\/script>
`;return a+l+c+u+g+f}Ry.createSyntaxDiagramsCode=owe});var hJ=w(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.Parser=We.createSyntaxDiagramsCode=We.clearCache=We.GAstVisitor=We.serializeProduction=We.serializeGrammar=We.Terminal=We.Rule=We.RepetitionWithSeparator=We.RepetitionMandatoryWithSeparator=We.RepetitionMandatory=We.Repetition=We.Option=We.NonTerminal=We.Alternative=We.Alternation=We.defaultLexerErrorProvider=We.NoViableAltException=We.NotAllInputParsedException=We.MismatchedTokenException=We.isRecognitionException=We.EarlyExitException=We.defaultParserErrorProvider=We.tokenName=We.tokenMatcher=We.tokenLabel=We.EOF=We.createTokenInstance=We.createToken=We.LexerDefinitionErrorType=We.Lexer=We.EMPTY_ALT=We.ParserDefinitionErrorType=We.EmbeddedActionsParser=We.CstParser=We.VERSION=void 0;var awe=Dv();Object.defineProperty(We,"VERSION",{enumerable:!0,get:function(){return awe.VERSION}});var Fy=jn();Object.defineProperty(We,"CstParser",{enumerable:!0,get:function(){return Fy.CstParser}});Object.defineProperty(We,"EmbeddedActionsParser",{enumerable:!0,get:function(){return Fy.EmbeddedActionsParser}});Object.defineProperty(We,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return Fy.ParserDefinitionErrorType}});Object.defineProperty(We,"EMPTY_ALT",{enumerable:!0,get:function(){return Fy.EMPTY_ALT}});var gJ=Bd();Object.defineProperty(We,"Lexer",{enumerable:!0,get:function(){return gJ.Lexer}});Object.defineProperty(We,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return gJ.LexerDefinitionErrorType}});var af=TA();Object.defineProperty(We,"createToken",{enumerable:!0,get:function(){return af.createToken}});Object.defineProperty(We,"createTokenInstance",{enumerable:!0,get:function(){return af.createTokenInstance}});Object.defineProperty(We,"EOF",{enumerable:!0,get:function(){return af.EOF}});Object.defineProperty(We,"tokenLabel",{enumerable:!0,get:function(){return af.tokenLabel}});Object.defineProperty(We,"tokenMatcher",{enumerable:!0,get:function(){return af.tokenMatcher}});Object.defineProperty(We,"tokenName",{enumerable:!0,get:function(){return af.tokenName}});var Awe=xd();Object.defineProperty(We,"defaultParserErrorProvider",{enumerable:!0,get:function(){return Awe.defaultParserErrorProvider}});var Md=nf();Object.defineProperty(We,"EarlyExitException",{enumerable:!0,get:function(){return Md.EarlyExitException}});Object.defineProperty(We,"isRecognitionException",{enumerable:!0,get:function(){return Md.isRecognitionException}});Object.defineProperty(We,"MismatchedTokenException",{enumerable:!0,get:function(){return Md.MismatchedTokenException}});Object.defineProperty(We,"NotAllInputParsedException",{enumerable:!0,get:function(){return Md.NotAllInputParsedException}});Object.defineProperty(We,"NoViableAltException",{enumerable:!0,get:function(){return Md.NoViableAltException}});var lwe=Uv();Object.defineProperty(We,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return lwe.defaultLexerErrorProvider}});var Oo=mn();Object.defineProperty(We,"Alternation",{enumerable:!0,get:function(){return Oo.Alternation}});Object.defineProperty(We,"Alternative",{enumerable:!0,get:function(){return Oo.Alternative}});Object.defineProperty(We,"NonTerminal",{enumerable:!0,get:function(){return Oo.NonTerminal}});Object.defineProperty(We,"Option",{enumerable:!0,get:function(){return Oo.Option}});Object.defineProperty(We,"Repetition",{enumerable:!0,get:function(){return Oo.Repetition}});Object.defineProperty(We,"RepetitionMandatory",{enumerable:!0,get:function(){return Oo.RepetitionMandatory}});Object.defineProperty(We,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return Oo.RepetitionMandatoryWithSeparator}});Object.defineProperty(We,"RepetitionWithSeparator",{enumerable:!0,get:function(){return Oo.RepetitionWithSeparator}});Object.defineProperty(We,"Rule",{enumerable:!0,get:function(){return Oo.Rule}});Object.defineProperty(We,"Terminal",{enumerable:!0,get:function(){return Oo.Terminal}});var fJ=mn();Object.defineProperty(We,"serializeGrammar",{enumerable:!0,get:function(){return fJ.serializeGrammar}});Object.defineProperty(We,"serializeProduction",{enumerable:!0,get:function(){return fJ.serializeProduction}});var cwe=$g();Object.defineProperty(We,"GAstVisitor",{enumerable:!0,get:function(){return cwe.GAstVisitor}});function uwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API.
It performs no action other than printing this message.
Please avoid using it as it will be completely removed in the future`)}We.clearCache=uwe;var gwe=uJ();Object.defineProperty(We,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return gwe.createSyntaxDiagramsCode}});var fwe=function(){function r(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return r}();We.Parser=fwe});var CJ=w((Jet,dJ)=>{var Ny=hJ(),Fa=Ny.createToken,pJ=Ny.tokenMatcher,ux=Ny.Lexer,hwe=Ny.EmbeddedActionsParser;dJ.exports=r=>{let e=Fa({name:"LogicalOperator",pattern:ux.NA}),t=Fa({name:"Or",pattern:/\|/,categories:e}),i=Fa({name:"Xor",pattern:/\^/,categories:e}),n=Fa({name:"And",pattern:/&/,categories:e}),s=Fa({name:"Not",pattern:/!/}),o=Fa({name:"LParen",pattern:/\(/}),a=Fa({name:"RParen",pattern:/\)/}),l=Fa({name:"Query",pattern:r}),u=[Fa({name:"WhiteSpace",pattern:/\s+/,group:ux.SKIPPED}),t,i,n,o,a,s,e,l],g=new ux(u);class f extends hwe{constructor(p){super(u),this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let y=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let B=y,v=this.CONSUME(e),D=this.SUBRULE2(this.atomicExpression);pJ(v,t)?y=T=>B(T)||D(T):pJ(v,i)?y=T=>!!(B(T)^D(T)):y=T=>B(T)&&D(T)}),y}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:C}=this.CONSUME(l);return y=>y(C)}},{ALT:()=>{this.CONSUME(s);let C=this.SUBRULE(this.atomicExpression);return y=>!C(y)}}])),this.RULE("parenthesisExpression",()=>{let C;return this.CONSUME(o),C=this.SUBRULE(this.expression),this.CONSUME(a),C}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var mJ=w(Ty=>{var pwe=CJ();Ty.makeParser=(r=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:t}=pwe(r),i=new t;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};Ty.parse=Ty.makeParser()});var IJ=w((zet,EJ)=>{"use strict";EJ.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke Line truncated
`:`
`)+t,n=i+1,i=r.indexOf(`
`,n)}while(i!==-1);return s+=r.substr(n),s};OJ.exports={stringReplaceAll:xwe,stringEncaseCRLFWithFirstIndex:Pwe}});var jJ=w((rtt,YJ)=>{"use strict";var Dwe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,UJ=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,kwe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Rwe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,Fwe=new Map([["n",`
`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function GJ(r){let e=r[0]==="u",t=r[1]==="{";return e&&!t&&r.length===5||r[0]==="x"&&r.length===3?String.fromCharCode(parseInt(r.slice(1),16)):e&&t?String.fromCodePoint(parseInt(r.slice(2,-1),16)):Fwe.get(r)||r}function Nwe(r,e){let t=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))t.push(o);else if(n=s.match(kwe))t.push(n[2].replace(Rwe,(a,l,c)=>l?GJ(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${r}')`)}return t}function Twe(r){UJ.lastIndex=0;let e=[],t;for(;(t=UJ.exec(r))!==null;){let i=t[1];if(t[2]){let n=Nwe(i,t[2]);e.push([i].concat(n))}else e.push([i])}return e}function HJ(r,e){let t={};for(let n of e)for(let s of n.styles)t[s[0]]=n.inverse?null:s.slice(1);let i=r;for(let[n,s]of Object.entries(t))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}YJ.exports=(r,e)=>{let t=[],i=[],n=[];if(e.replace(Dwe,(s,o,a,l,c,u)=>{if(o)n.push(GJ(o));else if(l){let g=n.join("");n=[],i.push(t.length===0?g:HJ(r,t)(g)),t.push({inverse:a,styles:Twe(l)})}else if(c){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(HJ(r,t)(n.join(""))),n=[],t.pop()}else n.push(u)}),i.push(n.join("")),t.length>0){let s=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var wx=w((itt,zJ)=>{"use strict";var Kd=RJ(),{stdout:mx,stderr:Ex}=MJ(),{stringReplaceAll:Lwe,stringEncaseCRLFWithFirstIndex:Mwe}=KJ(),qJ=["ansi","ansi","ansi256","ansi16m"],uf=Object.create(null),Owe=(r,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let t=mx?mx.level:0;r.level=e.level===void 0?t:e.level},Ix=class{constructor(e){return JJ(e)}},JJ=r=>{let e={};return Owe(e,r),e.template=(...t)=>Hwe(e.template,...t),Object.setPrototypeOf(e,Oy.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=Ix,e.template};function Oy(r){return JJ(r)}for(let[r,e]of Object.entries(Kd))uf[r]={get(){let t=Ky(this,yx(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,r,{value:t}),t}};uf.visible={get(){let r=Ky(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:r}),r}};var WJ=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let r of WJ)uf[r]={get(){let{level:e}=this;return function(...t){let i=yx(Kd.color[qJ[e]][r](...t),Kd.color.close,this._styler);return Ky(this,i,this._isEmpty)}}};for(let r of WJ){let e="bg"+r[0].toUpperCase()+r.slice(1);uf[e]={get(){let{level:t}=this;return function(...i){let n=yx(Kd.bgColor[qJ[t]][r](...i),Kd.bgColor.close,this._styler);return Ky(this,n,this._isEmpty)}}}}var Kwe=Object.defineProperties(()=>{},{...uf,level:{enumerable:!0,get(){return this._generator.level},set(r){this._generator.level=r}}}),yx=(r,e,t)=>{let i,n;return t===void 0?(i=r,n=e):(i=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:i,closeAll:n,parent:t}},Ky=(r,e,t)=>{let i=(...n)=>Uwe(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=Kwe,i._generator=r,i._styler=e,i._isEmpty=t,i},Uwe=(r,e)=>{if(r.level<=0||!e)return r._isEmpty?"":e;let t=r._styler;if(t===void 0)return e;let{openAll:i,closeAll:n}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=Lwe(e,t.close,t.open),t=t.parent;let s=e.indexOf(`
`);return s!==-1&&(e=Mwe(e,n,i,s)),i+e+n},Cx,Hwe=(r,...e)=>{let[t]=e;if(!Array.isArray(t))return e.join(" ");let i=e.slice(1),n=[t.raw[0]];for(let s=1;s<t.length;s++)n.push(String(i[s-1]).replace(/[{}\\]/g,"\\$&"),String(t.raw[s]));return Cx===void 0&&(Cx=jJ()),Cx(r,n.join(""))};Object.defineProperties(Oy.prototype,uf);var Ud=Oy();Ud.supportsColor=mx;Ud.stderr=Oy({level:Ex?Ex.level:0});Ud.stderr.supportsColor=Ex;Ud.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:"None",1:"Basic",2:"Ansi256",3:"TrueColor"};zJ.exports=Ud});var Uy=w(Cs=>{"use strict";Cs.isInteger=r=>typeof r=="number"?Number.isInteger(r):typeof r=="string"&&r.trim()!==""?Number.isInteger(Number(r)):!1;Cs.find=(r,e)=>r.nodes.find(t=>t.type===e);Cs.exceedsLimit=(r,e,t=1,i)=>i===!1||!Cs.isInteger(r)||!Cs.isInteger(e)?!1:(Number(e)-Number(r))/Number(t)>=i;Cs.escapeNode=(r,e=0,t)=>{let i=r.nodes[e];!i||(t&&i.type===t||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};Cs.encloseBrace=r=>r.type!=="brace"?!1:r.commas>>0+r.ranges>>0===0?(r.invalid=!0,!0):!1;Cs.isInvalidBrace=r=>r.type!=="brace"?!1:r.invalid===!0||r.dollar?!0:r.commas>>0+r.ranges>>0===0||r.open!==!0||r.close!==!0?(r.invalid=!0,!0):!1;Cs.isOpenOrClose=r=>r.type==="open"||r.type==="close"?!0:r.open===!0||r.close===!0;Cs.reduce=r=>r.reduce((e,t)=>(t.type==="text"&&e.push(t.value),t.type==="range"&&(t.type="text"),e),[]);Cs.flatten=(...r)=>{let e=[],t=i=>{for(let n=0;n<i.length;n++){let s=i[n];Array.isArray(s)?t(s,e):s!==void 0&&e.push(s)}return e};return t(r),e}});var Hy=w((stt,XJ)=>{"use strict";var VJ=Uy();XJ.exports=(r,e={})=>{let t=(i,n={})=>{let s=e.escapeInvalid&&VJ.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&VJ.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=t(l);return a};return t(r)}});var _J=w((ott,ZJ)=>{"use strict";ZJ.exports=function(r){return typeof r=="number"?r-r===0:typeof r=="string"&&r.trim()!==""?Number.isFinite?Number.isFinite(+r):isFinite(+r):!1}});var aW=w((att,oW)=>{"use strict";var $J=_J(),Ic=(r,e,t)=>{if($J(r)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||r===e)return String(r);if($J(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i={relaxZeros:!0,...t};typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=r+":"+e+"="+n+s+o+a;if(Ic.cache.hasOwnProperty(l))return Ic.cache[l].result;let c=Math.min(r,e),u=Math.max(r,e);if(Math.abs(c-u)===1){let C=r+"|"+e;return i.capture?`(${C})`:i.wrap===!1?C:`(?:${C})`}let g=sW(r)||sW(e),f={min:r,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let C=u<0?Math.abs(u):1;p=eW(C,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=eW(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Gwe(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),Ic.cache[l]=f,f.result};function Gwe(r,e,t){let i=Bx(r,e,"-",!1,t)||[],n=Bx(e,r,"",!1,t)||[],s=Bx(r,e,"-?",!0,t)||[];return i.concat(s).concat(n).join("|")}function Ywe(r,e){let t=1,i=1,n=rW(r,t),s=new Set([e]);for(;r<=n&&n<=e;)s.add(n),t+=1,n=rW(r,t);for(n=iW(e+1,i)-1;r<n&&n<=e;)s.add(n),i+=1,n=iW(e+1,i)-1;return s=[...s],s.sort(Jwe),s}function jwe(r,e,t){if(r===e)return{pattern:r,count:[],digits:0};let i=qwe(r,e),n=i.length,s="",o=0;for(let a=0;a<n;a++){let[l,c]=i[a];l===c?s+=l:l!=="0"||c!=="9"?s+=Wwe(l,c,t):o++}return o&&(s+=t.shorthand===!0?"\\d":"[0-9]"),{pattern:s,count:[o],digits:n}}function eW(r,e,t,i){let n=Ywe(r,e),s=[],o=r,a;for(let l=0;l<n.length;l++){let c=n[l],u=jwe(String(o),String(c),i),g="";if(!t.isPadded&&a&&a.pattern===u.pattern){a.count.length>1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+nW(a.count),o=c+1;continue}t.isPadded&&(g=zwe(c,t,i)),u.string=g+u.pattern+nW(u.count),s.push(u),o=c+1,a=u}return s}function Bx(r,e,t,i,n){let s=[];for(let o of r){let{string:a}=o;!i&&!tW(e,"string",a)&&s.push(t+a),i&&tW(e,"string",a)&&s.push(t+a)}return s}function qwe(r,e){let t=[];for(let i=0;i<r.length;i++)t.push([r[i],e[i]]);return t}function Jwe(r,e){return r>e?1:e>r?-1:0}function tW(r,e,t){return r.some(i=>i[e]===t)}function rW(r,e){return Number(String(r).slice(0,-e)+"9".repeat(e))}function iW(r,e){return r-r%Math.pow(10,e)}function nW(r){let[e=0,t=""]=r;return t||e>1?`{${e+(t?","+t:"")}}`:""}function Wwe(r,e,t){return`[${r}${e-r===1?"":"-"}${e}]`}function sW(r){return/^-?(0+)\d/.test(r)}function zwe(r,e,t){if(!e.isPadded)return r;let i=Math.abs(e.maxLen-String(r).length),n=t.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}Ic.cache={};Ic.clearCache=()=>Ic.cache={};oW.exports=Ic});var Sx=w((Att,pW)=>{"use strict";var Vwe=J("util"),cW=aW(),AW=r=>r!==null&&typeof r=="object"&&!Array.isArray(r Line truncated
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var xW=w((gtt,vW)=>{"use strict";var aBe=Hy(),{MAX_LENGTH:bW,CHAR_BACKSLASH:vx,CHAR_BACKTICK:ABe,CHAR_COMMA:lBe,CHAR_DOT:cBe,CHAR_LEFT_PARENTHESES:uBe,CHAR_RIGHT_PARENTHESES:gBe,CHAR_LEFT_CURLY_BRACE:fBe,CHAR_RIGHT_CURLY_BRACE:hBe,CHAR_LEFT_SQUARE_BRACKET:QW,CHAR_RIGHT_SQUARE_BRACKET:SW,CHAR_DOUBLE_QUOTE:pBe,CHAR_SINGLE_QUOTE:dBe,CHAR_NO_BREAK_SPACE:CBe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:mBe}=BW(),EBe=(r,e={})=>{if(typeof r!="string")throw new TypeError("Expected a string");let t=e||{},i=typeof t.maxLength=="number"?Math.min(bW,t.maxLength):bW;if(r.length>i)throw new SyntaxError(`Input length (${r.length}), exceeds max characters (${i})`);let n={type:"root",input:r,nodes:[]},s=[n],o=n,a=n,l=0,c=r.length,u=0,g=0,f,h={},p=()=>r[u++],C=y=>{if(y.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&y.type==="text"){a.value+=y.value;return}return o.nodes.push(y),y.parent=o,y.prev=a,a=y,y};for(C({type:"bos"});u<c;)if(o=s[s.length-1],f=p(),!(f===mBe||f===CBe)){if(f===vx){C({type:"text",value:(e.keepEscaping?f:"")+p()});continue}if(f===SW){C({type:"text",value:"\\"+f});continue}if(f===QW){l++;let y=!0,B;for(;u<c&&(B=p());){if(f+=B,B===QW){l++;continue}if(B===vx){f+=p();continue}if(B===SW&&(l--,l===0))break}C({type:"text",value:f});continue}if(f===uBe){o=C({type:"paren",nodes:[]}),s.push(o),C({type:"text",value:f});continue}if(f===gBe){if(o.type!=="paren"){C({type:"text",value:f});continue}o=s.pop(),C({type:"text",value:f}),o=s[s.length-1];continue}if(f===pBe||f===dBe||f===ABe){let y=f,B;for(e.keepQuotes!==!0&&(f="");u<c&&(B=p());){if(B===vx){f+=B+p();continue}if(B===y){e.keepQuotes===!0&&(f+=B);break}f+=B}C({type:"text",value:f});continue}if(f===fBe){g++;let B={type:"brace",open:!0,close:!1,dollar:a.value&&a.value.slice(-1)==="$"||o.dollar===!0,depth:g,commas:0,ranges:0,nodes:[]};o=C(B),s.push(o),C({type:"open",value:f});continue}if(f===hBe){if(o.type!=="brace"){C({type:"text",value:f});continue}let y="close";o=s.pop(),o.close=!0,C({type:y,value:f}),g--,o=s[s.length-1];continue}if(f===lBe&&g>0){if(o.ranges>0){o.ranges=0;let y=o.nodes.shift();o.nodes=[y,{type:"text",value:aBe(o)}]}C({type:"comma",value:f}),o.commas++;continue}if(f===cBe&&g>0&&o.commas===0){let y=o.nodes;if(g===0||y.length===0){C({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){y.pop();let B=y[y.length-1];B.value+=a.value+f,a=B,o.ranges--;continue}C({type:"dot",value:f});continue}C({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(v=>{v.nodes||(v.type==="open"&&(v.isOpen=!0),v.type==="close"&&(v.isClose=!0),v.nodes||(v.type="text"),v.invalid=!0)});let y=s[s.length-1],B=y.nodes.indexOf(o);y.nodes.splice(B,1,...o.nodes)}while(s.length>0);return C({type:"eos"}),n};vW.exports=EBe});var kW=w((ftt,DW)=>{"use strict";var PW=Hy(),IBe=mW(),yBe=yW(),wBe=xW(),Jn=(r,e={})=>{let t=[];if(Array.isArray(r))for(let i of r){let n=Jn.create(i,e);Array.isArray(n)?t.push(...n):t.push(n)}else t=[].concat(Jn.create(r,e));return e&&e.expand===!0&&e.nodupes===!0&&(t=[...new Set(t)]),t};Jn.parse=(r,e={})=>wBe(r,e);Jn.stringify=(r,e={})=>PW(typeof r=="string"?Jn.parse(r,e):r,e);Jn.compile=(r,e={})=>(typeof r=="string"&&(r=Jn.parse(r,e)),IBe(r,e));Jn.expand=(r,e={})=>{typeof r=="string"&&(r=Jn.parse(r,e));let t=yBe(r,e);return e.noempty===!0&&(t=t.filter(Boolean)),e.nodupes===!0&&(t=[...new Set(t)]),t};Jn.create=(r,e={})=>r===""||r.length<3?[r]:e.expand!==!0?Jn.compile(r,e):Jn.expand(r,e);DW.exports=Jn});var Gd=w((htt,LW)=>{"use strict";var BBe=J("path"),Ko="\\\\/",RW=`[^${Ko}]`,Na="\\.",bBe="\\+",QBe="\\?",Yy="\\/",SBe="(?=.)",FW="[^/]",xx=`(?:${Yy}|$)`,NW=`(?:^|${Yy})`,Px=`${Na}{1,2}${xx}`,vBe=`(?!${Na})`,xBe=`(?!${NW}${Px})`,PBe=`(?!${Na}{0,1}${xx})`,DBe=`(?!${Px})`,kBe=`[^.${Yy}]`,RBe=`${FW}*?`,TW={DOT_LITERAL:Na,PLUS_LITERAL:bBe,QMARK_LITERAL:QBe,SLASH_LITERAL:Yy,ONE_CHAR:SBe,QMARK:FW,END_ANCHOR:xx,DOTS_SLASH:Px,NO_DOT:vBe,NO_DOTS:xBe,NO_DOT_SLASH:PBe,NO_DOTS_SLASH:DBe,QMARK_NO_DOT:kBe,STAR:RBe,START_ANCHOR:NW},FBe={...TW,SLASH_LITERAL:`[${Ko}]`,QMARK:RW,STAR:`${RW}*?`,DOTS_SLASH:`${Na}{1,2}(?:[${Ko}]|$)`,NO_DOT:`(?!${Na})`,NO_DOTS:`(?!(?:^|[${Ko}])${Na}{1,2}(?:[${Ko}]|$))`,NO_DOT_SLASH:`(?!${Na}{0,1}(?:[${Ko}]|$))`,NO_DOTS_SLASH:`(?!${Na}{1,2}(?:[${Ko}]|$))`,QMARK_NO_DOT:`[^.${Ko}]`,START_ANCHOR:`(?:^|[${Ko}])`,END_ANCHOR:`(?:[${Ko}]|$)`},NBe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",spaceLine truncated
Please report this to https://github.com/szmarczak/http2-wrapper/`);p(C)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=aPe.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u),...t});f[on]=0,f[Uf]=!1;let h=()=>f[on]<f.remoteSettings.maxConcurrentStreams,p=!0;f.socket.once("session",y=>{this.tlsSessionCache.set(u,y)}),f.once("error",y=>{for(let{reject:B}of i)B(y);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let y=this.sessions[o];y.splice(y.indexOf(f),1),y.length===0&&delete this.sessions[o]}else{let y=new Error("Session closed without receiving a SETTINGS frame");y.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:B}of i)B(y);l()}this._tryToCreateNewSession(o,a)});let C=()=>{if(!(!(o in this.queue)||!h())){for(let y of f[Bs])if(y in this.queue[o]){let{listeners:B}=this.queue[o][y];for(;B.length!==0&&h();)B.shift().resolve(f);let v=this.queue[o];if(v[y].listeners.length===0&&(delete v[y],Object.keys(v).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[Bs]=f.originSet,h()&&(C(),Uk(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let y=new Error("Agent has been destroyed");for(let B of i)B.reject(y);f.destroy();return}f[Bs]=f.originSet;{let y=this.sessions;if(o in y){let B=y[o];B.splice(cPe(B,f,uPe),0,f)}else y[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),C(),l(),f[on]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,t,i),i.length=0),f.on("remoteSettings",()=>{C(),Uk(this.sessions[o],f)})}),f[C5]=f.request,f.request=(y,B)=>{if(f[Uf])throw new Error("The session is gracefully closing. No new streams are allowed.");let v=f[C5](y,B);return f.ref(),++f[on],f[on]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,v.once("close",()=>{if(p=h(),--f[on],!f.destroyed&&!f.closed&&(gPe(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let D=f[on]===0;D&&f.unref(),D&&(this._freeSessionsCount>this.maxFreeSessions||f[Uf])?f.close():(Uk(this.sessions[o],f),C())}}),v}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,t,i,n){return new Promise((s,o)=>{this.getSession(e,t,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,t){return zo.connect(e,t)}static connect(e,t){t.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof t.servername>"u"&&(t.servername=n),oPe.connect(i,n,t)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let t of e)t[on]===0&&t.close()}destroy(e){for(let t of Object.values(this.sessions))for(let i of t)i.destroy(e);for(let t of Object.values(this.queue))for(let i of Object.values(t))i.destroyed=!0;this.queue={}}get freeSessions(){return m5({agent:this,isFree:!0})}get busySessions(){return m5({agent:this,isFree:!1})}};zo.kCurrentStreamsCount=on;zo.kGracefullyClosing=Uf;I5.exports={Agent:zo,globalAgent:new zo}});var Yk=w((vnt,y5)=>{"use strict";var{Readable:fPe}=J("stream"),Gk=class extends fPe{constructor(e,t){super({highWaterMark:t,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,t){return this.req.setTimeout(e,t),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};y5.exports=Gk});var jk=w((xnt,w5)=>{"use strict";w5.exports=r=>{let e={protocol:r.protocol,hostname:typeof r.hostname=="string"&&r.hostname.startsWith("[")?r.hostname.slice(1,-1):r.hostname,host:r.host,hash:r.hash,search:r.search,pathname:r.pathname,href:r.href,path:`${r.pathname||""}${r.search||""}`};return typeof r.port=="string"&&r.port.length!==0&&(e.port=Number(r.port)),(r.username||r.password)&&(e.auth=`${r.username||""}:${r.password||""}`),e}});var b5=w((Pnt,B5)=>{"use strict";B5.exports=(r,e,t)=>{for(let i of t)r.on(i,(...n)=>e.emit(i,...n))}});var S5=w((Dnt,Q5)=>{"use strict";Q5.exports=r=>{switch(r){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var x5=w((Rnt,v5)=>{"use strict";var Hf=(r,e,t)=>{v5.exports[e]=class extends r{constructor(...n){super(typeof t=="string"?t:t(n)),this.name=`${su Line truncated
`).reverse(),a=t.stack.slice(t.stack.indexOf(t.message)+t.message.length).split(`
`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(`
`)}${a.reverse().join(`
`)}`}}};Yt.RequestError=ei;var oB=class extends ei{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Yt.MaxRedirectsError=oB;var aB=class extends ei{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Yt.HTTPError=aB;var AB=class extends ei{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};Yt.CacheError=AB;var lB=class extends ei{constructor(e,t){super(e.message,e,t),this.name="UploadError"}};Yt.UploadError=lB;var cB=class extends ei{constructor(e,t,i){super(e.message,e,i),this.name="TimeoutError",this.event=e.event,this.timings=t}};Yt.TimeoutError=cB;var bC=class extends ei{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};Yt.ReadError=bC;var uB=class extends ei{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Yt.UnsupportedProtocolError=uB;var IDe=["socket","connect","continue","information","upgrade","timeout"],gB=class extends c6.Duplex{constructor(e,t={},i){super({autoDestroy:!1,highWaterMark:0}),this[Yf]=0,this[qf]=0,this.requestInitialized=!1,this[iB]=new Set,this.redirects=[],this[Jf]=!1,this[nB]=!1,this[BC]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof hR.IncomingMessage&&(this.options.headers={...c.headers,...this.options.headers})});let{json:o,body:a,form:l}=t;if((o||a||l)&&this._lockWrite(),Yt.kIsNormalizedAlready in t)this.options=t;else try{this.options=this.constructor.normalizeArguments(e,t,i)}catch(c){Ee.default.nodeStream(t.body)&&t.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof $Pe.ReadStream&&await CDe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Pi])===null||c===void 0||c.destroy();return}for(let g of this[BC])g();this[BC].length=0,this.requestInitialized=!0}catch(u){if(u instanceof ei){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,t,i){var n,s,o,a,l;let c=t;if(Ee.default.object(e)&&!Ee.default.urlInstance(e))t={...i,...e,...t};else{if(e&&t&&t.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");t={...i,...t},e!==void 0&&(t.url=e),Ee.default.urlInstance(t.url)&&(t.url=new VA.URL(t.url.toString()))}if(t.cache===!1&&(t.cache=void 0),t.dnsCache===!1&&(t.dnsCache=void 0),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.method),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.headers),Ee.assert.any([Ee.default.string,Ee.default.urlInstance,Ee.default.undefined],t.prefixUrl),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.cookieJar),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.searchParams),Ee.assert.any([Ee.default.object,Ee.default.string,Ee.default.undefined],t.cache),Ee.assert.any([Ee.default.object,Ee.default.number,Ee.default.undefined],t.timeout),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.context),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.hooks),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.decompress),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.ignoreInvalidCookies),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.followRedirect),Ee.assert.any([Ee.default.number,Ee.default.undefined],t.maxRedirects),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.throwHttpErrors),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.http2),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.allowGetBody),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.localAddress),Ee.assert.any([d6.isDnsLookupIpVersion,Ee.default.undefined],t.dnsLookupIpVersion),Ee.assert.any([Ee.default.object,Ee.default.undefined],t.https),Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.rejectUnauthorized),t.https&&(Ee.assert.any([Ee.default.boolean,Ee.default.undefined],t.https.rejectUnauthorized),Ee.assert.any([Ee.default.function_,Ee.default.undefined],t.https.checkServerIdentity),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificateAuthority),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.key),Ee.assert.any([Ee.default.string,Ee.default.object,Ee.default.array,Ee.default.undefined],t.https.certificate),Ee.assert.any([Ee.default.string,Ee.default.undefined],t.https.passphrase),Ee.assert.any([Ee.default.string,Ee.default.buffer,Ee.default.array,Ee.default.undefined],t.https.Line truncated
`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};qa.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function G6(r,e){var t=this;qa.prototype.createSocket.call(t,r,function(i){var n=r.request.getHeader("host"),s=vR({},t.options,{socket:i,servername:n?n.replace(/:.*$/,""):r.host}),o=JDe.connect(0,s);t.sockets[t.sockets.indexOf(i)]=o,e(o)})}function Y6(r,e,t){return typeof r=="string"?{host:r,port:e,localAddress:t}:r}function vR(r){for(var e=1,t=arguments.length;e<t;++e){var i=arguments[e];if(typeof i=="object")for(var n=Object.keys(i),s=0,o=n.length;s<o;++s){var a=n[s];i[a]!==void 0&&(r[a]=i[a])}}return r}var $A;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?$A=function(){var r=Array.prototype.slice.call(arguments);typeof r[0]=="string"?r[0]="TUNNEL: "+r[0]:r.unshift("TUNNEL:"),console.error.apply(console,r)}:$A=function(){};Wf.debug=$A});var J6=w((lst,q6)=>{q6.exports=j6()});var iV=w((IB,FR)=>{var rV=Object.assign({},J("fs")),RR=function(){var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(e){e=e||{};var t=typeof e<"u"?e:{},i,n;t.ready=new Promise(function(d,E){i=d,n=E});var s={},o;for(o in t)t.hasOwnProperty(o)&&(s[o]=t[o]);var a=[],l="./this.program",c=function(d,E){throw E},u=!1,g=!0,f="";function h(d){return t.locateFile?t.locateFile(d,f):f+d}var p,C,y,B;g&&(u?f=J("path").dirname(f)+"/":f=__dirname+"/",p=function(E,I){var k=Ca(E);return k?I?k:k.toString():(y||(y=rV),B||(B=J("path")),E=B.normalize(E),y.readFileSync(E,I?null:"utf8"))},C=function(E){var I=p(E,!0);return I.buffer||(I=new Uint8Array(I)),re(I.buffer),I},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),a=process.argv.slice(2),c=function(d){process.exit(d)},t.inspect=function(){return"[Emscripten Module object]"});var v=t.print||console.log.bind(console),D=t.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(t[o]=s[o]);s=null,t.arguments&&(a=t.arguments),t.thisProgram&&(l=t.thisProgram),t.quit&&(c=t.quit);var T=16;function H(d,E){return E||(E=T),Math.ceil(d/E)*E}var j=0,$=function(d){j=d},V;t.wasmBinary&&(V=t.wasmBinary);var W=t.noExitRuntime||!0;typeof WebAssembly!="object"&&wr("no native wasm support detected");function _(d,E,I){switch(E=E||"i8",E.charAt(E.length-1)==="*"&&(E="i32"),E){case"i1":return ne[d>>0];case"i8":return ne[d>>0];case"i16":return he[d>>1];case"i32":return de[d>>2];case"i64":return de[d>>2];case"float":return Pt[d>>2];case"double":return It[d>>3];default:wr("invalid type for getValue: "+E)}return null}var A,Ae=!1,ge;function re(d,E){d||wr("Assertion failed: "+E)}function M(d){var E=t["_"+d];return re(E,"Cannot call unknown function "+d+", make sure it is exported"),E}function F(d,E,I,k,L){var Z={string:function(it){var Et=0;if(it!=null&&it!==0){var be=(it.length<<2)+1;Et=b(be),oe(it,Et,be)}return Et},array:function(it){var Et=b(it.length);return fe(it,Et),Et}};function te(it){return E==="string"?Fe(it):E==="boolean"?Boolean(it):it}var we=M(d),me=[],Je=0;if(k)for(var nt=0;nt<k.length;nt++){var wt=Z[I[nt]];wt?(Je===0&&(Je=YE()),me[nt]=wt(k[nt])):me[nt]=k[nt]}var lt=we.apply(null,me);return lt=te(lt),Je!==0&&jE(Je),lt}function ue(d,E,I,k){I=I||[];var L=I.every(function(te){return te==="number"}),Z=E!=="string";return Z&&L&&!k?M(d):function(){return F(d,E,I,arguments,k)}}var pe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function ke(d,E,I){for(var k=E+I,L=E;d[L]&&!(L>=k);)++L;if(L-E>16&&d.subarray&&pe)return pe.decode(d.subarray(E,L));for(var Z="";E<L;){var te=d[E++];if(!(te&128)){Z+=String.fromCharCode(te);continue}var we=d[E++]&63;if((te&224)==192){Z+=String.fromCharCode((te&31)<<6|we);continue}var me=d[E++]&63;if((te&240)==224?te=(te&15)<<12|we<<6|me:te=(te&7)<<18|we<<12|me<<6|d[E++]&63,te<65536)Z+=String.fromCharCode(te);else{var Je=te-65536;Z+=String.fromCharCode(55296|Je>>10,56320|Je&1023)}}return Z}function Fe(d,E){return d?ke(Y,d,E):""}function Ne(d,E,I,k){if(!(k>0))return 0;for(var L=I,Z=I+k-1,te=0;te<d.length;++te){var we=d.charCodeAt(te);if(we>=55296&&we<=57343){var me=d.charCodeAt(++te);we=65536+((we&1023)<<10)|me&1023}if(we<=127){if(I>=Z)break;E[I++]=we}else if(we<=2047){if(I+1>=Z)break;E[I++]=192|we>>6,E[I++]=128|we&63}else if(we<=65535){if(I+2>=Z)break;E[I++]=224|we>>12,E[I++]=128|we>>6&63,E[I++]=128|we&63}else{if(I+3>=Z)break;E[I++]=240|we>>18,E[I++]=128|we>>12&63,E[I++]=128|we>>6&63,E[I++]=128|we&63}}return E[I]=0,I-L}function oe(d,E,I){return Ne(d,Y,E,I)}function le(d){for(var E=0,I=0;I<d.length;++I){var k=d.charCodeAt(I);k>=55296&&k<=57343&&(k=65536+((k&1023)<<10)|d.charCodeAt(++I)&1023),k<=127?++E:k<=2047?E+=2:k<=65535?E+=3:E+=4}return E}function Be(d){var E=le(d)+1,I=dt(E);return I&&Ne(d,ne,I,E),I}funct Line truncated
`)):typeof readline=="function"&&(E=readline(),E!==null&&(E+=`
`));if(!E)return null;d.input=yA(E,!0)}return d.input.shift()},put_char:function(d,E){E===null||E===10?(v(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(v(ke(d.output,0)),d.output=[])}},default_tty1_ops:{put_char:function(d,E){E===null||E===10?(D(ke(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(D(ke(d.output,0)),d.output=[])}}};function ss(d){for(var E=H(d,65536),I=dt(E);d<E;)ne[I+d++]=0;return I}var gt={ops_table:null,mount:function(d){return gt.createNode(null,"/",16895,0)},createNode:function(d,E,I,k){if(S.isBlkdev(I)||S.isFIFO(I))throw new S.ErrnoError(63);gt.ops_table||(gt.ops_table={dir:{node:{getattr:gt.node_ops.getattr,setattr:gt.node_ops.setattr,lookup:gt.node_ops.lookup,mknod:gt.node_ops.mknod,rename:gt.node_ops.rename,unlink:gt.node_ops.unlink,rmdir:gt.node_ops.rmdir,readdir:gt.node_ops.readdir,symlink:gt.node_ops.symlink},stream:{llseek:gt.stream_ops.llseek}},file:{node:{getattr:gt.node_ops.getattr,setattr:gt.node_ops.setattr},stream:{llseek:gt.stream_ops.llseek,read:gt.stream_ops.read,write:gt.stream_ops.write,allocate:gt.stream_ops.allocate,mmap:gt.stream_ops.mmap,msync:gt.stream_ops.msync}},link:{node:{getattr:gt.node_ops.getattr,setattr:gt.node_ops.setattr,readlink:gt.node_ops.readlink},stream:{}},chrdev:{node:{getattr:gt.node_ops.getattr,setattr:gt.node_ops.setattr},stream:S.chrdev_stream_ops}});var L=S.createNode(d,E,I,k);return S.isDir(L.mode)?(L.node_ops=gt.ops_table.dir.node,L.stream_ops=gt.ops_table.dir.stream,L.contents={}):S.isFile(L.mode)?(L.node_ops=gt.ops_table.file.node,L.stream_ops=gt.ops_table.file.stream,L.usedBytes=0,L.contents=null):S.isLink(L.mode)?(L.node_ops=gt.ops_table.link.node,L.stream_ops=gt.ops_table.link.stream):S.isChrdev(L.mode)&&(L.node_ops=gt.ops_table.chrdev.node,L.stream_ops=gt.ops_table.chrdev.stream),L.timestamp=Date.now(),d&&(d.contents[E]=L,d.timestamp=L.timestamp),L},getFileDataAsTypedArray:function(d){return d.contents?d.contents.subarray?d.contents.subarray(0,d.usedBytes):new Uint8Array(d.contents):new Uint8Array(0)},expandFileStorage:function(d,E){var I=d.contents?d.contents.length:0;if(!(I>=E)){var k=1024*1024;E=Math.max(E,I*(I<k?2:1.125)>>>0),I!=0&&(E=Math.max(E,256));var L=d.contents;d.contents=new Uint8Array(E),d.usedBytes>0&&d.contents.set(L.subarray(0,d.usedBytes),0)}},resizeFileStorage:function(d,E){if(d.usedBytes!=E)if(E==0)d.contents=null,d.usedBytes=0;else{var I=d.contents;d.contents=new Uint8Array(E),I&&d.contents.set(I.subarray(0,Math.min(E,d.usedBytes))),d.usedBytes=E}},node_ops:{getattr:function(d){var E={};return E.dev=S.isChrdev(d.mode)?d.id:1,E.ino=d.id,E.mode=d.mode,E.nlink=1,E.uid=0,E.gid=0,E.rdev=d.rdev,S.isDir(d.mode)?E.size=4096:S.isFile(d.mode)?E.size=d.usedBytes:S.isLink(d.mode)?E.size=d.link.length:E.size=0,E.atime=new Date(d.timestamp),E.mtime=new Date(d.timestamp),E.ctime=new Date(d.timestamp),E.blksize=4096,E.blocks=Math.ceil(E.size/E.blksize),E},setattr:function(d,E){E.mode!==void 0&&(d.mode=E.mode),E.timestamp!==void 0&&(d.timestamp=E.timestamp),E.size!==void 0&&gt.resizeFileStorage(d,E.size)},lookup:function(d,E){throw S.genericErrors[44]},mknod:function(d,E,I,k){return gt.createNode(d,E,I,k)},rename:function(d,E,I){if(S.isDir(d.mode)){var k;try{k=S.lookupNode(E,I)}catch{}if(k)for(var L in k.contents)throw new S.ErrnoError(55)}delete d.parent.contents[d.name],d.parent.timestamp=Date.now(),d.name=I,E.contents[I]=d,E.timestamp=d.parent.timestamp,d.parent=E},unlink:function(d,E){delete d.contents[E],d.timestamp=Date.now()},rmdir:function(d,E){var I=S.lookupNode(d,E);for(var k in I.contents)throw new S.ErrnoError(55);delete d.contents[E],d.timestamp=Date.now()},readdir:function(d){var E=[".",".."];for(var I in d.contents)!d.contents.hasOwnProperty(I)||E.push(I);return E},symlink:function(d,E,I){var k=gt.createNode(d,E,41471,0);return k.link=I,k},readlink:function(d){if(!S.isLink(d.mode))throw new S.ErrnoError(28);return d.link}},stream_ops:{read:function(d,E,I,k,L){var Z=d.node.contents;if(L>=d.node.usedBytes)return 0;var te=Math.min(d.node.usedBytes-L,k);if(te>8&&Z.subarray)E.set(Z.subarray(L,L+te),I);else for(var we=0;we<te;we++)E[I+we]=Z[L+we];return te},write:function(d,E,I,k,L,Z){if(E.buffer===ne.buffer&&(Z=!1),!k)return 0;var te=d.node;if(te.timestamp=Date.now(),E.subarray&&(!te.contents||te.contents.subarray)){if(Z)return te.contents=E.subarray(I,I+k),te.usedBytes=k,k;if(te.usedBytes===0&&L===0)return te.contents=E.slice(I,I+k),te.usedBytes=k,k;if(L+k<=te.usedBytes)return te.contents.set(E.subarray(I,I+k),L),k}if(gt.expandFileStorage(te,L+k),te.contents.subarray&&E.subarray)te.contents.set(E.subarray(I,I+k),L);else for(var we=0;we<k;we++)te.contents[L+we]=E[I+we];return te.usedBytes=Math.max(te.usedBytes,L+k),k},llseek:function(d,E,I){var k=E;if(I===1?k+=d.position:I===2&&S.isFile(d.node.mode)&&(k+=d.node.usedBytes),k<0)throw new S.ErrnoError(28);return k},allocate:function(d,E,I){gt.expandFileStorage(d.node,E+I) Line truncated
`,n=Buffer.byteLength(i),s=Math.floor(Math.log(n)/Math.log(10))+1;return n+s>=Math.pow(10,s)&&(s+=1),s+n+i}};OC.parse=(r,e,t)=>new OC($Re(eFe(r),e),t);var $Re=(r,e)=>e?Object.keys(r).reduce((t,i)=>(t[i]=r[i],t),e):r,eFe=r=>r.replace(/\n$/,"").split(`
`).reduce(tFe,Object.create(null)),tFe=(r,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return r;e=e.substr((t+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return r;let s=i.join("=");return r[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,r};j9.exports=OC});var nh=w((Mot,q9)=>{q9.exports=r=>{let e=r.length-1,t=-1;for(;e>-1&&r.charAt(e)==="/";)t=e,e--;return t===-1?r:r.slice(0,t)}});var zB=w((Oot,J9)=>{"use strict";J9.exports=r=>class extends r{warn(e,t,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),this.emit("warn",i.tarCode,t,i)):t instanceof Error?this.emit("error",Object.assign(t,i)):this.emit("error",Object.assign(new Error(`${e}: ${t}`),i))}}});var SF=w((Uot,W9)=>{"use strict";var VB=["|","<",">","?",":"],QF=VB.map(r=>String.fromCharCode(61440+r.charCodeAt(0))),rFe=new Map(VB.map((r,e)=>[r,QF[e]])),iFe=new Map(QF.map((r,e)=>[r,VB[e]]));W9.exports={encode:r=>VB.reduce((e,t)=>e.split(t).join(rFe.get(t)),r),decode:r=>QF.reduce((e,t)=>e.split(t).join(iFe.get(t)),r)}});var vF=w((Hot,V9)=>{var{isAbsolute:nFe,parse:z9}=J("path").win32;V9.exports=r=>{let e="",t=z9(r);for(;nFe(r)||t.root;){let i=r.charAt(0)==="/"&&r.slice(0,4)!=="//?/"?"/":t.root;r=r.substr(i.length),e+=i,t=z9(r)}return[e,r]}});var Z9=w((Got,X9)=>{"use strict";X9.exports=(r,e,t)=>(r&=4095,t&&(r=(r|384)&-19),e&&(r&256&&(r|=64),r&32&&(r|=8),r&4&&(r|=1)),r)});var MF=w((qot,uX)=>{"use strict";var nX=_f(),sX=WB(),oX=ih(),Zo=J("fs"),_9=J("path"),Xo=th(),sFe=nh(),aX=(r,e)=>e?(r=Xo(r).replace(/^\.(\/|$)/,""),sFe(e)+"/"+r):Xo(r),oFe=16*1024*1024,$9=Symbol("process"),eX=Symbol("file"),tX=Symbol("directory"),PF=Symbol("symlink"),rX=Symbol("hardlink"),KC=Symbol("header"),XB=Symbol("read"),DF=Symbol("lstat"),ZB=Symbol("onlstat"),kF=Symbol("onread"),RF=Symbol("onreadlink"),FF=Symbol("openfile"),NF=Symbol("onopenfile"),ol=Symbol("close"),_B=Symbol("mode"),TF=Symbol("awaitDrain"),xF=Symbol("ondrain"),_o=Symbol("prefix"),iX=Symbol("hadError"),AX=zB(),aFe=SF(),lX=vF(),cX=Z9(),$B=AX(class extends nX{constructor(e,t){if(t=t||{},super(t),typeof e!="string")throw new TypeError("path is required");this.path=Xo(e),this.portable=!!t.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=t.maxReadSize||oFe,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=Xo(t.cwd||process.cwd()),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.prefix=t.prefix?Xo(t.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let i=!1;if(!this.preservePaths){let[n,s]=lX(this.path);n&&(this.path=s,i=n)}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=aFe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=Xo(t.absolute||_9.resolve(this.cwd,e)),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[ZB](this.statCache.get(this.absolute)):this[DF]()}emit(e,...t){return e==="error"&&(this[iX]=!0),super.emit(e,...t)}[DF](){Zo.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[ZB](t)})}[ZB](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=lFe(e),this.emit("stat",e),this[$9]()}[$9](){switch(this.type){case"File":return this[eX]();case"Directory":return this[tX]();case"SymbolicLink":return this[PF]();default:return this.end()}}[_B](e){return cX(e,this.type==="Directory",this.portable)}[_o](e){return aX(e,this.prefix)}[KC](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new oX({path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,mode:this[_B](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new sX({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[_o](this.path),linkpath:this.type==="Link"?this[_o](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portabl Line truncated
`}),a},i})});var K0=w((Uat,BZ)=>{var fTe=vs(),hTe=gC(),pTe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dTe=/^\w*$/;function CTe(r,e){if(fTe(r))return!1;var t=typeof r;return t=="number"||t=="symbol"||t=="boolean"||r==null||hTe(r)?!0:dTe.test(r)||!pTe.test(r)||e!=null&&r in Object(e)}BZ.exports=CTe});var U0=w((Hat,bZ)=>{var mTe=Fc(),ETe=vn(),ITe="[object AsyncFunction]",yTe="[object Function]",wTe="[object GeneratorFunction]",BTe="[object Proxy]";function bTe(r){if(!ETe(r))return!1;var e=mTe(r);return e==yTe||e==wTe||e==ITe||e==BTe}bZ.exports=bTe});var SZ=w((Gat,QZ)=>{var QTe=ys(),STe=QTe["__core-js_shared__"];QZ.exports=STe});var PZ=w((Yat,xZ)=>{var MN=SZ(),vZ=function(){var r=/[^.]+$/.exec(MN&&MN.keys&&MN.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function vTe(r){return!!vZ&&vZ in r}xZ.exports=vTe});var ON=w((jat,DZ)=>{var xTe=Function.prototype,PTe=xTe.toString;function DTe(r){if(r!=null){try{return PTe.call(r)}catch{}try{return r+""}catch{}}return""}DZ.exports=DTe});var RZ=w((qat,kZ)=>{var kTe=U0(),RTe=PZ(),FTe=vn(),NTe=ON(),TTe=/[\\^$.*+?()[\]{}|]/g,LTe=/^\[object .+?Constructor\]$/,MTe=Function.prototype,OTe=Object.prototype,KTe=MTe.toString,UTe=OTe.hasOwnProperty,HTe=RegExp("^"+KTe.call(UTe).replace(TTe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function GTe(r){if(!FTe(r)||RTe(r))return!1;var e=kTe(r)?HTe:LTe;return e.test(NTe(r))}kZ.exports=GTe});var NZ=w((Jat,FZ)=>{function YTe(r,e){return r==null?void 0:r[e]}FZ.exports=YTe});var pl=w((Wat,TZ)=>{var jTe=RZ(),qTe=NZ();function JTe(r,e){var t=qTe(r,e);return jTe(t)?t:void 0}TZ.exports=JTe});var _C=w((zat,LZ)=>{var WTe=pl(),zTe=WTe(Object,"create");LZ.exports=zTe});var KZ=w((Vat,OZ)=>{var MZ=_C();function VTe(){this.__data__=MZ?MZ(null):{},this.size=0}OZ.exports=VTe});var HZ=w((Xat,UZ)=>{function XTe(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}UZ.exports=XTe});var YZ=w((Zat,GZ)=>{var ZTe=_C(),_Te="__lodash_hash_undefined__",$Te=Object.prototype,eLe=$Te.hasOwnProperty;function tLe(r){var e=this.__data__;if(ZTe){var t=e[r];return t===_Te?void 0:t}return eLe.call(e,r)?e[r]:void 0}GZ.exports=tLe});var qZ=w((_at,jZ)=>{var rLe=_C(),iLe=Object.prototype,nLe=iLe.hasOwnProperty;function sLe(r){var e=this.__data__;return rLe?e[r]!==void 0:nLe.call(e,r)}jZ.exports=sLe});var WZ=w(($at,JZ)=>{var oLe=_C(),aLe="__lodash_hash_undefined__";function ALe(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=oLe&&e===void 0?aLe:e,this}JZ.exports=ALe});var VZ=w((eAt,zZ)=>{var lLe=KZ(),cLe=HZ(),uLe=YZ(),gLe=qZ(),fLe=WZ();function Eh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var i=r[e];this.set(i[0],i[1])}}Eh.prototype.clear=lLe;Eh.prototype.delete=cLe;Eh.prototype.get=uLe;Eh.prototype.has=gLe;Eh.prototype.set=fLe;zZ.exports=Eh});var ZZ=w((tAt,XZ)=>{function hLe(){this.__data__=[],this.size=0}XZ.exports=hLe});var Ih=w((rAt,_Z)=>{function pLe(r,e){return r===e||r!==r&&e!==e}_Z.exports=pLe});var $C=w((iAt,$Z)=>{var dLe=Ih();function CLe(r,e){for(var t=r.length;t--;)if(dLe(r[t][0],e))return t;return-1}$Z.exports=CLe});var t_=w((nAt,e_)=>{var mLe=$C(),ELe=Array.prototype,ILe=ELe.splice;function yLe(r){var e=this.__data__,t=mLe(e,r);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():ILe.call(e,t,1),--this.size,!0}e_.exports=yLe});var i_=w((sAt,r_)=>{var wLe=$C();function BLe(r){var e=this.__data__,t=wLe(e,r);return t<0?void 0:e[t][1]}r_.exports=BLe});var s_=w((oAt,n_)=>{var bLe=$C();function QLe(r){return bLe(this.__data__,r)>-1}n_.exports=QLe});var a_=w((aAt,o_)=>{var SLe=$C();function vLe(r,e){var t=this.__data__,i=SLe(t,r);return i<0?(++this.size,t.push([r,e])):t[i][1]=e,this}o_.exports=vLe});var em=w((AAt,A_)=>{var xLe=ZZ(),PLe=t_(),DLe=i_(),kLe=s_(),RLe=a_();function yh(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var i=r[e];this.set(i[0],i[1])}}yh.prototype.clear=xLe;yh.prototype.delete=PLe;yh.prototype.get=DLe;yh.prototype.has=kLe;yh.prototype.set=RLe;A_.exports=yh});var H0=w((lAt,l_)=>{var FLe=pl(),NLe=ys(),TLe=FLe(NLe,"Map");l_.exports=TLe});var g_=w((cAt,u_)=>{var c_=VZ(),LLe=em(),MLe=H0();function OLe(){this.size=0,this.__data__={hash:new c_,map:new(MLe||LLe),string:new c_}}u_.exports=OLe});var h_=w((uAt,f_)=>{function KLe(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}f_.exports=KLe});var tm=w((gAt,p_)=>{var ULe=h_();function HLe(r,e){var t=r.__data__;return ULe(e)?t[typeof e=="string"?"string":"hash"]:t.map}p_.exports=HLe});var C_=w((fAt,d_)=>{var GLe=tm();function YLe(r){var e=GLe(this,r).delete(r);return this.size-=e?1:0,e}d_.exports=YLe});var E_=w((hAt,m_)=>{var jLe=tm();function qLe(r){return jLe(this,r).get(r)}m_.exports=qLe});var y_=w((pAt,I_)=>{var JLe=tm();function WLe(r){return JLe(this,r).has(r)}I_.exports=WLe});var B_=w((dAt,w_)=>{var zLe=tm();function VLe(r,e){var t=zLe(this,r),i=t.size;return t.set(r,e),this.size+=t.size==i?0:1,this}w_.exports=VLe});var G0=w((CAt,b_)=>{va Line truncated
attempted value: ${s}
`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,t){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,t={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=t,u=e;l||(u=this._cast(u,Fs({assert:!1},t)));let g={value:u,path:s,options:t,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,Cre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,Cre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,t,i){let n=this.resolve(Fs({},t,{value:e}));return typeof i=="function"?n._validate(e,t,i):new Promise((s,o)=>n._validate(e,t,(a,l)=>{a?o(a):s(l)}))}validateSync(e,t){let i=this.resolve(Fs({},t,{value:e})),n;return i._validate(e,Fs({},t,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,t){return this.validate(e,t).then(()=>!0,i=>{if(Ere.default.isError(i))return!1;throw i})}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(i){if(Ere.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,dre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var t=this.clone();return t.spec.strict=e,t}_isPresent(e){return e!=null}defined(e=Th.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(t){return t!==void 0}})}required(e=Th.mixed.required){return this.clone({presence:"required"}).withMutation(t=>t.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(t=>t.OPTIONS.name!=="required"),e}nullable(e=!0){var t=this.clone({nullable:e!==!1});return t}transform(e){var t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(e.length===1?typeof e[0]=="function"?t={test:e[0]}:t=e[0]:e.length===2?t={name:e[0],test:e[1]}:t={name:e[0],message:e[1],test:e[2]},t.message===void 0&&(t.message=Th.mixed.default),typeof t.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,db.default)(t),s=t.exclusive||t.name&&i.exclusiveTests[t.name]===!0;if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(i.exclusiveTests[t.name]=!!t.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===t.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,t){!Array.isArray(e)&&typeof e!="string"&&(t=e,e=".");let i=this.clone(),n=(0,HHe.default)(e).map(s=>new KHe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new OHe.default(n,t)),i}typeError(e){var t=this.clone();return t._typeError=(0,db.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),t}oneOf(e,t=Th.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,db.default)({message:t,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,t=Th.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,db.default)({message:t,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(){let e=this.clone(),{label:t,meta:i}=e.spec;return{meta:i,label:t,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};Cb.default=uo;uo.prototype.__isYupSchema__=!0;for(let r of["validate","validateSync"])uo.prototype[`${r}At`]=function(e,t,i={}){let{parent:n,parentPath:s,schema:o}=(0,UHe.getIn)(this,e,t,i.context);return o[r](n&&n[s],Fs({},i,{parent:n,path:e}))};for(let r of["equals","is"])uo.prototype[r]=uo.prototype.oneOf;for(let r of["not","nope"])uo.prototype[r]=uo.prototype.notOneOf;uo.prototype.optional=uo.prototype.notRequired});var wre=w(Im=>{"use strict";Object.defineProperty(Im,"__esModule",{value:!0});Im.create=yre;Im.default=void 0;var GHe=YHe(sA());function YHe(r){return r&&r.__esModule?r:{default:r}}var LT=GHe.default,jHe=LT;Im.default=jHe;function yre(){return new LT}yre.prototype=LT.prototype});var Lh=w(mb=>{"use strict";Object.defineProperty(mb,"__esModule",{value:!0});mb.default=void 0;var qHe=r=>r==null;mb.defaul Line truncated
`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=t(r.styles[o[c]],a,l);return a},n=(s,o,a)=>{r.styles[s]=e({name:s,codes:o}),(r.keys[a]||(r.keys[a]=[])).push(s),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(c){r.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,r),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),r.ansiRegex=nje,r.hasColor=r.hasAnsi=s=>(r.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&r.ansiRegex.test(s)),r.alias=(s,o)=>{let a=typeof o=="string"?r[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),r.styles[s]=a,a.stack=[s]),Reflect.defineProperty(r,s,{configurable:!0,enumerable:!0,set(l){r.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,r),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},r.theme=s=>{if(!ije(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))r.alias(o,s[o]);return r},r.alias("unstyle",s=>typeof s=="string"&&s!==""?(r.ansiRegex.lastIndex=0,s.replace(r.ansiRegex,"")):""),r.alias("noop",s=>s),r.none=r.clear=r.noop,r.stripColor=r.unstyle,r.symbols=_ie(),r.define=n,r};ZT.exports=$ie();ZT.exports.create=$ie});var ji=w(Tt=>{"use strict";var sje=Object.prototype.toString,Ns=go(),ene=!1,_T=[],tne={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};Tt.longest=(r,e)=>r.reduce((t,i)=>Math.max(t,e?i[e].length:i.length),0);Tt.hasColor=r=>!!r&&Ns.hasColor(r);var bb=Tt.isObject=r=>r!==null&&typeof r=="object"&&!Array.isArray(r);Tt.nativeType=r=>sje.call(r).slice(8,-1).toLowerCase().replace(/\s/g,"");Tt.isAsyncFn=r=>Tt.nativeType(r)==="asyncfunction";Tt.isPrimitive=r=>r!=null&&typeof r!="object"&&typeof r!="function";Tt.resolve=(r,e,...t)=>typeof e=="function"?e.call(r,...t):e;Tt.scrollDown=(r=[])=>[...r.slice(1),r[0]];Tt.scrollUp=(r=[])=>[r.pop(),...r];Tt.reorder=(r=[])=>{let e=r.slice();return e.sort((t,i)=>t.index>i.index?1:t.index<i.index?-1:0),e};Tt.swap=(r,e,t)=>{let i=r.length,n=t===i?0:t<0?i-1:t,s=r[e];r[e]=r[n],r[n]=s};Tt.width=(r,e=80)=>{let t=r&&r.columns?r.columns:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[0]),process.platform==="win32"?t-1:t};Tt.height=(r,e=20)=>{let t=r&&r.rows?r.rows:e;return r&&typeof r.getWindowSize=="function"&&(t=r.getWindowSize()[1]),t};Tt.wordWrap=(r,e={})=>{if(!r)return r;typeof e=="number"&&(e={width:e});let{indent:t="",newline:i=`
`+t,width:n=80}=e,s=(i+t).match(/[^\S\n]/g)||[];n-=s.length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=r.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),t+c.join(i)};Tt.unmute=r=>{let e=r.stack.find(i=>Ns.keys.color.includes(i));return e?Ns[e]:r.stack.find(i=>i.slice(2)==="bg")?Ns[e.slice(2)]:i=>i};Tt.pascal=r=>r?r[0].toUpperCase()+r.slice(1):"";Tt.inverse=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ns.keys.color.includes(i));if(e){let i=Ns["bg"+Tt.pascal(e)];return i?i.black:r}let t=r.stack.find(i=>i.slice(0,2)==="bg");return t?Ns[t.slice(2).toLowerCase()]||r:Ns.none};Tt.complement=r=>{if(!r||!r.stack)return r;let e=r.stack.find(i=>Ns.keys.color.includes(i)),t=r.stack.find(i=>i.slice(0,2)==="bg");if(e&&!t)return Ns[tne[e]||e];if(t){let i=t.slice(2).toLowerCase(),n=tne[i];return n&&Ns["bg"+Tt.pascal(n)]||r}return Ns.none};Tt.meridiem=r=>{let e=r.getHours(),t=r.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=t<10?"0"+t:t;return n+":"+s+" "+i};Tt.set=(r={},e="",t)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:t;return!Tt.isObject(a)&&s<o.length-1&&(a={}),i[n]=a},r);Tt.get=(r={},e="",t)=>{let i=r[e]==null?e.split(".").reduce((n,s)=>n&&n[s],r):r[e];return i==null?t:i};Tt.mixin=(r,e)=>{if(!bb(r))return e;if(!bb(e))return r;for(let t of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,t);if(i.hasOwnProperty("value"))if(r.hasOwnProperty(t)&&bb(i.value)){let n=Object.getOwnPropertyDescriptor(r,t);bb(n.value)?r[t]=Tt.merge({},r[t],e[t]):Reflect.defineProperty(r,t,i)}else Reflect.defineProperty(r,t,i);else Reflect.defineProperty(r,t,i)}return r};Tt.merge=(...r)=>{let e={};for(let t of r)Tt.mixin(e,t);return e};Tt.mixinEmitter=(r,e)=>{let t=e.constructor.prototype;for(let i of Object.keys(t)){let n=t[i];typeof n=="function"?Tt.define(r,i,n.bind(e)):Tt.define(r,i,n)}};Tt.onExit=r=>{let e=(t,i)=>{ene||(ene=!0,_T.forEach(n=>n()),t===!0&&process.exit(128+i))};_T.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),_T.push(r)};Tt.define=(r,e,t)=>{Reflect.defineProperty(r,e,{value:t})};Tt.defineExport=(r,e,t)=>{let i;Reflect.defineProperty(r,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():t()}})}});var rne=w(Gh=>{"use strict";Gh.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};Gh.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};Gh.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};Gh.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};Gh.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var sne=w((Qgt,nne)=>{"use strict";var ine=J("readline"),oje=rne(),aje=/^(?:\x1b)([a-zA-Z0-9])$/,Aje=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,lje={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function cje(r){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(r)}function uje(r){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(r)}var Qb=(r="",e={})=>{let t,i={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:r,raw:r,...e};if(Buffer.isBuffer(r)?r[0]>127&&r[1]===void 0?(r[0]-=128,r="\x1B"+String(r)):r=String(r):r!==void 0&&typeof r!="string"?r=String(r):r||(r=i.sequence||""),i.sequence=i.sequence||r||i.name,r==="\r")i.raw=void 0,i.name="return";else if(r===`
`)i.name="enter";else if(r===" ")i.name="tab";else if(r==="\b"||r==="\x7F"||r==="\x1B\x7F"||r==="\x1B\b")i.name="backspace",i.meta=r.charAt(0)==="\x1B";else if(r==="\x1B"||r==="\x1B\x1B")i.name="escape",i.meta=r.length===2;else if(r===" "||r==="\x1B ")i.name="space",i.meta=r.length===2;else if(r<="")i.name=String.fromCharCode(r.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(r.length===1&&r>="0"&&r<="9")i.name="number";else if(r.length===1&&r>="a"&&r<="z")i.name=r;else if(r.length===1&&r>="A"&&r<="Z")i.name=r.toLowerCase(),i.shift=!0;else if(t=aje.exec(r))i.meta=!0,i.shift=/^[A-Z]$/.test(t[1]);else if(t=Aje.exec(r)){let n=[...r];n[0]==="\x1B"&&n[1]==="\x1B"&&(i.option=!0);let s=[t[1],t[2],t[4],t[6]].filter(Boolean).join(""),o=(t[3]||t[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=lje[s],i.shift=cje(s)||i.shift,i.ctrl=uje(s)||i.ctrl}return i};Qb.listen=(r={},e)=>{let{stdin:t}=r;if(!t||t!==process.stdin&&!t.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:t});ine.emitKeypressEvents(t,i);let n=(a,l)=>e(a,Qb(a,l),i),s=t.isRaw;return t.isTTY&&t.setRawMode(!0),t.on("keypress",n),i.resume(),()=>{t.isTTY&&t.setRawMode(s),t.removeListener("keypress",n),i.pause(),i.close()}};Qb.action=(r,e,t)=>{let i={...oje,...t};return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};nne.exports=Qb});var ane=w((Sgt,one)=>{"use strict";one.exports=r=>{r.timers=r.timers||{};let e=r.options.timers;if(!!e)for(let t of Object.keys(e)){let i=e[t];typeof i=="number"&&(i={interval:i}),gje(r,t,i)}};function gje(r,e,t={}){let i=r.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=t.interval||120;i.frames=t.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,r.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),r.once("close",()=>i.stop()),i.stop}});var lne=w((vgt,Ane)=>{"use strict";var{define:fje,width:hje}=ji(),$T=class{constructor(e){let t=e.options;fje(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=hje(t.stdout||process.stdout),Object.assign(this,t),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let t=this._color||e[this.status];return typeof t=="function"?t:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Ane.exports=$T});var une=w((xgt,cne)=>{"use strict";var eL=ji(),Di=go(),tL={default:Di.noop,noop:Di.noop,set inverse(r){this._inverse=r},get inverse(){return this._inverse||eL.inverse(this.primary)},set complement(r){this._complement=r},get complement(){return this._complement||eL.complement(this.primary)},primary:Di.cyan,success:Di.green,danger:Di.magenta,strong:Di.bold,warning:Di.yellow,muted:Di.dim,disabled:Di.gray,dark:Di.dim.gray,underline:Di.underline,set info(r){this._info=r},get info(){return this._info||this.primary},set em(r){this._em=r},get em(){return this._em||this.primary.underline},set heading(r){this._heading=r},get heading(){return this._heading||this.muted.underline},set pending(r){this._pending=r},get pending(){return this._pending||this.primary},set submitted(r){this._submitted=r},get submitted(){return this._submitted||this.success},set cancelled(r){this._cancelled=r},get cancelled(){return this._cancelled||this.danger},set typing(r){this._typing=r},get typing(){return this._typing||this.dim},set placeholder(r){this._placeholder=r},get placeholder(){return this._placeholder||this.primary.dim},set highlight(r){this._highlight=r},get highlight(){return this._highlight||this.inverse}};tL.merge=(r={})=>{r.styles&&typeof r.styles.enabled=="boolean"&&(Di.enabled=r.styles.enabled),r.styles&&typeof r.styles.visible=="boolean"&&(Di.visible=r.styles.visible);let e=eL.merge({},tL,r.styles);delete e.merge;for(let t of Object.keys(Di))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Di[t]});for(let t of Object.keys(Di.styles))e.hasOwnProperty(t)||Reflect.defineProperty(e,t,{get:()=>Di[t]});return e};cne.exports=tL});var fne=w((Pgt,gne)=>{"use strict";var rL=process.platform==="win32",aA=go(),pje=ji(),iL={...aA.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electr Line truncated
`),c=l[0],u=l[l.length-1],f=(i+(t?" "+t:"")).length,h=f<c.length?c.slice(f+1):"";return{header:o,prompt:c,after:h,rest:l.slice(1),last:u}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let t=`
`+this.symbols.pointer+" ";typeof e=="string"?t+=e.trim():t+="Invalid input",this.state.error=`
`+this.styles.danger(t),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit("submit",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel=="function"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit("cancel",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),t=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(ou.cursor.down(e.rest.length)),this.write(`
`.repeat(t))}catch{}this.emit("close")}start(){!this.stop&&this.options.show!==!1&&(this.stop=aL.listen(this,this.keypress.bind(this)),this.once("close",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip=="function"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:t,result:i}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>i.call(this,this.value),typeof t.initial=="function"&&(this.initial=await t.initial.call(this,this)),typeof t.onRun=="function"&&await t.onRun.call(this,this),typeof t.onSubmit=="function"){let n=t.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,t)=>{if(this.once("submit",e),this.once("cancel",t),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,t,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=t&&t[e]!=null?t[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,t,i);return!g&&t&&t[e]?this.resolve(c,s,t,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,t=this.timers&&this.timers.prefix,i=this.state;return i.timer=t,kn.isObject(e)&&(e=e[i.status]||e.pending),kn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return kn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,t=this.timers&&this.timers.separator,i=this.state;i.timer=t;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return kn.isObject(s)&&(s=s[i.status]||s.pending),kn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,t){let i=await this.element("pointer",e,t);if(typeof i=="string"&&kn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===t,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=kn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,t){let i=await this.element("indicator",e,t);if(typeof i=="string"&&kn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return kn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return kn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...t){return kn.resolve(this,e,...t)}get base(){return Lm.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||kn.height(this.stdout,25)}get width(){return this.options.columns||kn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:t}=this.state,i=[t,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function bje(r){let e=n=>r[n]===void 0||typeof r[n]=="function",t=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(r.options)){if(t.includes(n)||/^on[A-Z]/.test(n))continue;let s=r.options[n];typeof s=="function"&&e(n)?i.includes(n)||(r[n]=s.bind(r)):typeof r[n]!="function"&&(r[n]=s)}}function Qje(r){typeof r=="number"&&(r=[r,r,r,r]);let e=[].concat(r||[]),t=n=>n%2===0?`
`:" ",i=[];for(let n=0;n<4;n++){let s=t(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}wne.exports=Lm});var Qne=w((Rgt,bne)=>{"use strict";var Sje=ji(),Bne={default(r,e){return e},checkbox(r,e){throw new Error("checkbox role is not implemented yet")},editable(r,e){throw new Error("editable role is not implemented yet")},expandable(r,e){throw new Error("expandable role is not implemented yet")},heading(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||"",e},input(r,e){throw new Error("input role is not implemented yet")},option(r,e){return Bne.default(r,e)},radio(r,e){throw new Error("radio role is not implemented yet")},separator(r,e){return e.disabled="",e.indicator=[e.indicator," "].find(t=>t!=null),e.message=e.message||r.symbols.line.repeat(5),e},spacer(r,e){return e}};bne.exports=(r,e={})=>{let t=Sje.merge({},Bne,e.roles);return t[r]||t.default}});var Mm=w((Fgt,xne)=>{"use strict";var vje=go(),xje=Yh(),Pje=Qne(),Sb=ji(),{reorder:AL,scrollUp:Dje,scrollDown:kje,isObject:Sne,swap:Rje}=Sb,lL=class extends xje{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:t,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(t)&&(t=Object.keys(t)),Array.isArray(t)?(i!=null&&(this.index=this.findIndex(i)),t.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(t=i),typeof t=="string"&&(t=this.findIndex(t)),typeof t=="number"&&t>-1&&(this.index=Math.max(0,Math.min(t,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,t){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l<o.length;l++){let c=o[l]=await this.toChoice(o[l],n++,a);i.push(c),c.choices&&await s(c.choices,c)}return i};return s(e,t).then(o=>(this.state.loadingChoices=!1,o))}async toChoice(e,t,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=Pje(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=t,e.cursor=0,Sb.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,vje.unstyle(e.message).length));let o={...e};return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,t)),e}async onChoice(e,t){this.emit("choice",e,t,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,t)}async addChoice(e,t,i){let n=await this.toChoice(e,t,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,t,i){let n={name:"New choice name?",editable:!0,newChoice:!0,...e},s=await this.addChoice(n,t,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,t){if(this.multiple&&this[t.name])return this[t.name]();this.alert()}focus(e,t){return typeof t!="boolean"&&(t=e.enabled),t&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=t&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(t=>t.enabled);return this.choices.forEach(t=>t.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(t=>!!t.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,t){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof t!="boolean"&&(t=!e.enabled),e.enabled=t,e.choices&&e. Line truncated
`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(`
`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:t}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(t),this.write([n,i,u,g].filter(Boolean).join(`
`)),this.write(this.margin[2]),this.restore()}};Pne.exports=uL});var kne=w((Tgt,Dne)=>{"use strict";var Nje=Cl(),Tje=(r,e)=>{let t=r.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(t),o=e(i.slice(s,s+t.length));return s>=0?i.slice(0,s)+o+i.slice(s+t.length):i}},gL=class extends Nje{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:t,input:i}=this.state;return this.input=i.slice(0,t)+e+i.slice(t),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:t}=this.state;return t?(this.input=t.slice(0,e-1)+t.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:t}=this.state;return t[e]===void 0?this.alert():(this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,t=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,t);let i=e.toLowerCase();return t.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,t=Tje(this.input,e),i=this.choices;this.choices=i.map(n=>({...n,message:t(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Dne.exports=gL});var hL=w((Lgt,Rne)=>{"use strict";var fL=ji();Rne.exports=(r,e={})=>{r.cursorHide();let{input:t="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||r.styles.placeholder,l=fL.inverse(r.styles.primary),c=C=>l(r.styles.black(C)),u=t,g=" ",f=c(g);if(r.blink&&r.blink.off===!0&&(c=C=>C,f=""),s&&n===0&&i===""&&t==="")return c(g);if(s&&n===0&&(t===i||t===""))return c(i[0])+a(i.slice(1));i=fL.isPrimitive(i)?`${i}`:"",t=fL.isPrimitive(t)?`${t}`:"";let h=i&&i.startsWith(t)&&i!==t,p=h?c(i[t.length]):f;if(n!==t.length&&s===!0&&(u=t.slice(0,n)+c(t[n])+t.slice(n+1),p=""),s===!1&&(p=""),h){let C=r.styles.unstyle(u+p);return u+p+a(i.slice(C.length))}return u+p}});var vb=w((Mgt,Fne)=>{"use strict";var Lje=go(),Mje=Cl(),Oje=hL(),pL=class extends Mje{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(t=>t!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(t=>t.reset&&t.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let t=this.focused;if(!t)return this.alert();let{cursor:i,input:n}=t;return t.value=t.input=n.slice(0,i)+e+n.slice(i),t.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:t,input:i}=e;return e.value=e.input=i.slice(0,t-1)+i.slice(t),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:t,input:i}=e;if(i[t]===void 0)return this.alert();let n=`${i}`.slice(0,t)+`${i}`.slice(t+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,t){return this.dispatch(e,t)}number(e,t){return this.dispatch(e,t)}next(){let e=this.focused;if(!e)return this.alert();let{initial:t,input:i}=e;return t&&t.startsWith(i)&&i!==t?(e.value=e.input=t,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,t){let i=await this.resolve(e.separator,this.state,e,t)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,t){await this.onChoice(e,t);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,C=this.index===t,y=e.validate||(()=>!0),B=await this.choiceSeparator(e,t),v=e.message;this.align==="right"&&(v=v.padStart(this.longest+1," ")),this.align==="left"&&(v=v.padEnd(this.longest+1," "));let D=this.values[a]=c||o,T=c?"success":"dark";await y.call(e,D,this.s Line truncated
`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Kne.exports=CL});var Hne=w((Hgt,Une)=>{"use strict";var Jje=xb(),mL=class extends Jje{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};Une.exports=mL});var Yne=w((Ggt,Gne)=>{"use strict";var Wje=Cl(),zje=vb(),jh=zje.prototype,EL=class extends Wje{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(t=>t!=null),this.emptyError="",this.values={}}dispatch(e,t){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():jh.dispatch.call(this,e,t)}append(e,t){return jh.append.call(this,e,t)}delete(e,t){return jh.delete.call(this,e,t)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?jh.next.call(this):super.next()}prev(){return this.focused.editable?jh.prev.call(this):super.prev()}async indicator(e,t){let i=e.indicator||"",n=e.editable?i:super.indicator(e,t);return await this.resolve(n,this.state,e,t)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,t){return e.indent="",e.editable?jh.renderChoice.call(this,e,t):super.renderChoice(e,t)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let t of this.choices){if(typeof t.validate!="function"||t.role==="heading")continue;let i=t.parent?this.value[t.parent.name]:this.value;if(t.editable?i=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(i=t.enabled===!0),e=await t.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let t=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?t[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(t[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Gne.exports=EL});var au=w((Ygt,jne)=>{"use strict";var Vje=Yh(),Xje=hL(),{isPrimitive:Zje}=ji(),IL=class extends Vje{constructor(e){super(e),this.initial=Zje(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,t={}){let i=this.state.prevKeypress;return this.state.prevKeypress=t,this.options.multiline===!0&&t.name==="return"&&(!i||i.name!=="return")?this.append(`
`,t):super.keypress(e,t)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,t){if(!e||t.ctrl||t.code)return this.alert();this.append(e)}append(e){let{cursor:t,input:i}=this.state;this.input=`${i}`.slice(0,t)+e+`${i}`.slice(t),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:t}=this.state;if(e<=0)return this.alert();this.input=`${t}`.slice(0,e-1)+`${t}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:t}=this.state;if(t[e]===void 0)return this.alert();this.input=`${t}`.slice(0,e)+`${t}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let t=this.input.slice(0,e),i=this.input.slice(e),n=t.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let t=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||t):Xje(this,{input:e,initial:t,pos:this.cursor})}async render(){let e=this.state.size,t=await this.prefix(),i=await this.separator(),n=await this.message(),s=[t,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(`
`)),this.restore()}};jne.exports=IL});var Jne=w((jgt,qne)=>{"use strict";var _je=r=>r.filter((e,t)=>r.lastIndexOf(e)===t),Pb=r=>_je(r).filter(Boolean);qne.exports=(r,e={},t="")=>{let{past:i=[],present:n=""}=e,s,o;switch(r){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:Pb([t,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:Pb([...s,t]),present:o};case"save":return{past:Pb([...i,t]),present:""};case"remove":return o=Pb(i.filter(a=>a!==t)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${r}"`)}}});var wL=w((qgt,zne)=>{"use strict";var $je=au(),Wne=Jne(),yL=class extends $je{constructor(e){super(e);let t=this.options.history;if(t&&t.store){let i=t.values||this.initial;this.autosave=!!t.autosave,this.store=t.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Wne(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=Wne("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};zne.exports=yL});var Xne=w((Jgt,Vne)=>{"use strict";var eqe=au(),BL=class extends eqe{format(){return""}};Vne.exports=BL});var _ne=w((Wgt,Zne)=>{"use strict";var tqe=au(),bL=class extends tqe{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:t=>t;return this.list.map(e).join(", ")}async submit(e){let t=this.state.error||await this.validate(this.list,this.state);return t!==!0?(this.state.error=t,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Zne.exports=bL});var ese=w((zgt,$ne)=>{"use strict";var rqe=Cl(),QL=class extends rqe{constructor(e){super({...e,multiple:!0})}};$ne.exports=QL});var vL=w((Vgt,tse)=>{"use strict";var iqe=au(),SL=class extends iqe{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let t=e||this.minor,i=this.toNumber(this.input);return i>this.max+t?this.alert():(this.input=`${i+t}`,this.render())}down(e){let t=e||this.minor,i=this.toNumber(this.input);return i<this.min-t?this.alert():(this.input=`${i-t}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format=="function"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=""){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\.)|(\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(t=>this.isValue(t));return this.value=this.toNumber(e||0),super.submit()}};tse.exports=SL});var ise=w((Xgt,rse)=>{rse.exports=vL()});var sse=w((Zgt,nse)=>{"use strict";var nqe=au(),xL=class extends nqe{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};nse.exports=xL});var Ase=w((_gt,ase)=>{"use strict";var sqe=go(),oqe=Mm(),ose=ji(),PL=class extends oqe{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`
`;let t=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+t})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let t of this.choices){e=Math.max(e,t.message.length),t.scaleIndex=t.initial||2,t.scale=[];for(let i=0;i<this.scale.length;i++)t.scale.push({index:i})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,t){if(this.multiple)return this[t.name]?await this[t.name](e,t):await super.dispatch(e,t);this.alert()}heading(e,t,i){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(t=>this.styles.info(t.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(i=>` ${i.name} - ${i.message}`)].map(i=>this.styles.muted(i)).join(`
`)}renderScaleHeading(e){let t=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(t=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-t.join("").length,n=Math.round(i/(t.length-1)),o=t.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,t,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,t,i);let n=e.scaleIndex===t.index;return t.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,t){let i=e.scale.map(s=>this.scaleIndicator(e,s,t)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=await this.pointer(e,t),s=await e.hint;s&&!ose.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,t),u=await this.renderScale(e,t),g=this.margin[1]+this.margin[3];this.scaleLength=sqe.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=ose.wordWrap(c,{width:this.widths[0],newline:a}).split(`
`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(`
`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),t=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...t.map(n=>n.join(" "))].join(`
`)}async render(){let{submitted:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(t),this.write([a,o,c,g,f].filter(Boolean).join(`
`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};ase.exports=PL});var use=w(($gt,cse)=>{"use strict";var lse=go(),aqe=(r="")=>typeof r=="string"?r.replace(/^['"]|['"]$/g,""):"",kL=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=aqe(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},Aqe=async(r={},e={},t=i=>i)=>{let i=new Set,n=r.fields||[],s=r.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});u<s.length-1;){let p=g();if(/^[^\S\n ]$/.test(p)){h({type:"text",value:p});continue}if(p===`
`){h({type:"newline",value:p}),c++;continue}if(p==="\\"){p+=g(),h({type:"text",value:p});continue}if((p==="$"||p==="#"||p==="{")&&f()==="{"){let y=g();p+=y;let B={type:"template",open:p,inner:"",close:"",value:p},v;for(;v=g();){if(v==="}"){f()==="}"&&(v+=g()),B.value+=v,B.close=v;break}v===":"?(B.initial="",B.key=B.inner):B.initial!==void 0&&(B.initial+=v),B.value+=v,B.inner+=v}B.template=B.open+(B.initial||B.inner)+B.close,B.key=B.key||B.inner,e.hasOwnProperty(B.key)&&(B.initial=e[B.key]),B=t(B),h(B),l.push(B.key),i.add(B.key);let D=a.find(T=>T.name===B.key);B.field=n.find(T=>T.name===B.key),D||(D=new kL(B),a.push(D)),D.lines.push(B.line-1);continue}let C=o[o.length-1];C.type==="text"&&C.line===c?C.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};cse.exports=async r=>{let e=r.options,t=new Set(e.required===!0?[]:e.required||[]),i={...e.values,...e.initial},{tabstops:n,items:s,keys:o}=await Aqe(e,i),a=DL("result",r,e),l=DL("format",r,e),c=DL("validate",r,e,!0),u=r.isValue.bind(r);return async(g={},f=!1)=>{let h=0;g.required=t,g.items=s,g.keys=o,g.output="";let p=async(v,D,T,H)=>{let j=await c(v,D,T,H);return j===!1?"Invalid field "+T.name:j};for(let v of n){let D=v.value,T=v.key;if(v.type!=="template"){D&&(g.output+=D);continue}if(v.type==="template"){let H=s.find(_=>_.name===T);e.required===!0&&g.required.add(H.name);let j=[H.input,g.values[H.value],H.value,D].find(u),V=(H.field||{}).message||v.inner;if(f){let _=await p(g.values[T],g,H,h);if(_&&typeof _=="string"||_===!1){g.invalid.set(T,_);continue}g.invalid.delete(T);let A=await a(g.values[T],g,H,h);g.output+=lse.unstyle(A);continue}H.placeholder=!1;let W=D;D=await l(D,g,H,h),j!==D?(g.values[T]=j,D=r.styles.typing(j),g.missing.delete(V)):(g.values[T]=void 0,j=`<${V}>`,D=r.styles.primary(j),H.placeholder=!0,g.required.has(T)&&g.missing.add(V)),g.missing.has(V)&&g.validating&&(D=r.styles.warning(j)),g.invalid.has(T)&&g.validating&&(D=r.styles.danger(j)),h===g.index&&(W!==D?D=r.styles.underline(D):D=r.styles.heading(lse.unstyle(D))),h++}D&&(g.output+=D)}let C=g.output.split(`
`).map(v=>" "+v),y=s.length,B=0;for(let v of s)g.invalid.has(v.name)&&v.lines.forEach(D=>{C[D][0]===" "&&(C[D]=g.styles.danger(g.symbols.bullet)+C[D].slice(1))}),r.isValue(g.values[v.name])&&B++;return g.completed=(B/y*100).toFixed(0),g.output=C.join(`
`),g.output}};function DL(r,e,t,i){return(n,s,o,a)=>typeof o.field[r]=="function"?o.field[r].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var fse=w((eft,gse)=>{"use strict";var lqe=go(),cqe=use(),uqe=Yh(),RL=class extends uqe{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await cqe(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let t=this.getItem();this.cursor+=e,t.cursor+=e}dispatch(e,t){if(!t.code&&!t.ctrl&&e!=null&&this.getItem()){this.append(e,t);return}this.alert()}append(e,t){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let t=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${t}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let t=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(t=this.styles.danger),t(`${this.state.completed}% completed`)}async render(){let{index:e,keys:t=[],submitted:i,size:n}=this.state,s=[this.options.newline,`
`].find(v=>v!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=t[e]||"",C=await this.format(p),y=await this.footer();C&&(c+=" "+C),f&&!C&&this.state.completed===0&&(c+=" "+f),this.clear(n);let B=[u,c,h,y,g.trim()];this.write(B.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:t,keys:i,index:n}=this.state,s=t.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:t,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c}
`;return this.state.error=a,super.submit()}if(t.size)return this.state.error="Required: "+[...t.keys()].join(", "),super.submit();let o=lqe.unstyle(i).split(`
`).map(a=>a.slice(1)).join(`
`);return this.value={values:n,result:o},super.submit()}};gse.exports=RL});var pse=w((tft,hse)=>{"use strict";var gqe="(Use <shift>+<up/down> to sort)",fqe=Cl(),FL=class extends fqe{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,gqe].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,t){let i=await super.renderChoice(e,t),n=this.symbols.identicalTo+" ",s=this.index===t&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${t+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};hse.exports=FL});var Cse=w((rft,dse)=>{"use strict";var hqe=Mm(),NL=class extends hqe{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let t=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];t=t.map(i=>this.styles.muted(i)),this.state.header=t.join(`
`)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let t=await super.toChoices(...e);for(let i of t)i.scale=pqe(5,this.options),i.scaleIdx=2;return t}dispatch(){this.alert()}space(){let e=this.focused,t=e.scale[e.scaleIdx],i=t.selected;return e.scale.forEach(n=>n.selected=!1),t.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,t){await this.onChoice(e,t);let i=this.index===t,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=D=>(D?this.styles.success("\u25C9"):"\u25EF")+o,u=t+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,t),h=this.indent(e),p=h+e.scale.map((D,T)=>c(T===e.scaleIdx)).join(a),C=D=>D===e.scaleIdx?g(D):D,y=h+e.scale.map((D,T)=>C(T)).join(l),B=()=>[u,f].filter(Boolean).join(" "),v=()=>[B(),p,y," "].filter(Boolean).join(`
`);return i&&(p=this.styles.cyan(p),y=this.styles.cyan(y)),v()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),t=await Promise.all(e);return t.length||t.push(this.styles.danger("No matching choices")),t.join(`
`)}format(){return this.state.submitted?this.choices.map(t=>this.styles.info(t.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:t}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(t),this.write([o,a,u,g].filter(Boolean).join(`
`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function pqe(r,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>({...i}));let t=[];for(let i=1;i<r+1;i++)t.push({i,selected:!1});return t}dse.exports=NL});var Ese=w((ift,mse)=>{mse.exports=wL()});var yse=w((nft,Ise)=>{"use strict";var dqe=xb(),TL=class extends dqe{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",t){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,t=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([t,c,l].filter(Boolean).join(`
`)),this.write(this.margin[2]),this.restore()}};Ise.exports=TL});var Bse=w((sft,wse)=>{"use strict";var Cqe=Cl(),LL=class extends Cqe{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,t){let i=await super.toChoices(e,t);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};wse.exports=LL});var Qse=w(ML=>{"use strict";var bse=ji(),ui=(r,e)=>{bse.defineExport(ML,r,e),bse.defineExport(ML,r.toLowerCase(),e)};ui("AutoComplete",()=>kne());ui("BasicAuth",()=>One());ui("Confirm",()=>Hne());ui("Editable",()=>Yne());ui("Form",()=>vb());ui("Input",()=>wL());ui("Invisible",()=>Xne());ui("List",()=>_ne());ui("MultiSelect",()=>ese());ui("Numeral",()=>ise());ui("Password",()=>sse());ui("Scale",()=>Ase());ui("Select",()=>Cl());ui("Snippet",()=>fse());ui("Sort",()=>pse());ui("Survey",()=>Cse());ui("Text",()=>Ese());ui("Toggle",()=>yse());ui("Quiz",()=>Bse())});var vse=w((aft,Sse)=>{Sse.exports={ArrayPrompt:Mm(),AuthPrompt:dL(),BooleanPrompt:xb(),NumberPrompt:vL(),StringPrompt:au()}});var Km=w((Aft,Pse)=>{"use strict";var xse=J("assert"),KL=J("events"),ml=ji(),ho=class extends KL{constructor(e,t){super(),this.options=ml.merge({},e),this.answers={...t}}register(e,t){if(ml.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}xse.equal(typeof t,"function","expected a function");let i=e.toLowerCase();return t.prototype instanceof this.Prompt?this.prompts[i]=t:this.prompts[i]=t(this.Prompt,this),this}async prompt(e=[]){for(let t of[].concat(e))try{typeof t=="function"&&(t=await t.call(this)),await this.ask(ml.merge({},this.options,t))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let t=ml.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=ml;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];xse(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](t),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),t.autofill&&l!=null?(a.value=a.input=l,t.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||Yh()}static get prompts(){return Qse()}static get types(){return vse()}static get prompt(){let e=(t,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(t)};return ml.mixinEmitter(e,new KL),e}};ml.mixinEmitter(ho,new KL);var OL=ho.prompts;for(let r of Object.keys(OL)){let e=r.toLowerCase(),t=i=>new OL[r](i).run();ho.prompt[e]=t,ho[e]=t,ho[r]||Reflect.defineProperty(ho,r,{get:()=>OL[r]})}var Om=r=>{ml.defineExport(ho,r,()=>ho.types[r])};Om("ArrayPrompt");Om("AuthPrompt");Om("BooleanPrompt");Om("NumberPrompt");Om("StringPrompt");Pse.exports=ho});var Kse=w((Vft,Ose)=>{function wqe(r,e){for(var t=-1,i=r==null?0:r.length;++t<i&&e(r[t],t,r)!==!1;);return r}Ose.exports=wqe});var Jh=w((Xft,Use)=>{var Bqe=Y0(),bqe=bh();function Qqe(r,e,t,i){var n=!t;t||(t={});for(var s=-1,o=e.length;++s<o;){var a=e[s],l=i?i(t[a],r[a],a,t,r):void 0;l===void 0&&(l=r[a]),n?bqe(t,a,l):Bqe(t,a,l)}return t}Use.exports=Qqe});var Gse=w((Zft,Hse)=>{var Sqe=Jh(),vqe=Rh();function xqe(r,e){return r&&Sqe(e,vqe(e),r)}Hse.exports=xqe});var jse=w((_ft,Yse)=>{function Pqe(r){var e=[];if(r!=null)for(var t in Object(r))e.push(t);return e}Yse.exports=Pqe});var Jse=w(($ft,qse)=>{var Dqe=vn(),kqe=ab(),Rqe=jse(),Fqe=Object.prototype,Nqe=Fqe.hasOwnProperty;function Tqe(r){if(!Dqe(r))return Rqe(r);var e=kqe(r),t=[];for(var i in r)i=="constructor"&&(e||!Nqe.call(r,i))||t.push(i);return t}qse.exports=Tqe});var Wh=w((eht,Wse)=>{var Lqe=lT(),Mqe=Jse(),Oqe=gm();function Kqe(r){return Oqe(r)?Lqe(r,!0):Mqe(r)}Wse.exports=Kqe});var Vse=w((tht,zse)=>{var Uqe=Jh(),Hqe=Wh();function Gqe(r,e){return r&&Uqe(e,Hqe(e),r)}zse.exports=Gqe});var qL=w((Ym,zh)=>{var Yqe=ys(),$se=typeof Ym=="object"&&Ym&&!Ym.nodeType&&Ym,Xse=$se&&typeof zh=="object"&&zh&&!zh.nodeType&&zh,jqe=Xse&&Xse.exports===$se,Zse=jqe?Yqe.Buffer:void 0,_se=Zse?Zse.allocUnsafe:void 0;function qqe(r,e){if(e)return r.slice();var t=r.length,i=_se?_se(t):new r.constructor(t);return r.copy(i),i Line truncated
`:"";return o?g+=`@IF EXIST ${o} (\r
${o} ${l} ${n} ${u}%*\r
) ELSE (\r
@SETLOCAL\r
@SET PATHEXT=%PATHEXT:;.JS;=;%\r
${a} ${l} ${n} ${u}%*\r
)\r
`:g+=`@${a} ${l} ${n} ${u}%*\r
`,g}function Rze(r,e,t){let i=Ts.relative(Ts.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Ts.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=t.args||"",l=lO(t.nodePath).posix;n?(s=`"$basedir/${t.prog}"`,i=o):(n=o,a="",i="");let c=t.progArgs?`${t.progArgs.join(" ")} `:"",u=`#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
case \`uname\` in
*CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
esac
`,g=t.nodePath?`export NODE_PATH="${l}"
`:"";return s?u+=`${g}if [ -x ${s} ]; then
exec ${s} ${a} ${i} ${c}"$@"
else
exec ${n} ${a} ${i} ${c}"$@"
fi
`:u+=`${g}${n} ${a} ${i} ${c}"$@"
exit $?
`,u}function Fze(r,e,t){let i=Ts.relative(Ts.dirname(e),r),n=t.prog&&t.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Ts.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=t.args||"",c=lO(t.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${t.prog}$exe"`,i=a):(s=a,l="",i="");let f=t.progArgs?`${t.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
${t.nodePath?`$env_node_path=$env:NODE_PATH
$env:NODE_PATH="${u}"
`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}`;return t.nodePath&&(h+=` else {
$env:NODE_PATH="${g}"
}`),o?h+=`
$ret=0
if (Test-Path ${o}) {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${o} ${l} ${i} ${f}$args
} else {
& ${o} ${l} ${i} ${f}$args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${s} ${l} ${i} ${f}$args
} else {
& ${s} ${l} ${i} ${f}$args
}
$ret=$LASTEXITCODE
}
${t.nodePath?`$env:NODE_PATH=$env_node_path
`:""}exit $ret
`:h+=`
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & ${s} ${l} ${i} ${f}$args
} else {
& ${s} ${l} ${i} ${f}$args
}
${t.nodePath?`$env:NODE_PATH=$env_node_path
`:""}exit $LASTEXITCODE
`,h}function Nze(r,e){return e.fs_.chmod(r,493)}function lO(r){if(!r)return{win32:"",posix:""};let e=typeof r=="string"?r.split(Ts.delimiter):Array.from(r),t={};for(let i=0;i<e.length;i++){let n=e[i].split("/").join("\\"),s=xle()?e[i].split("\\").join("/").replace(/^([^:\\/]*):/,(o,a)=>`/mnt/${a.toLowerCase()}`):e[i];t.win32=t.win32?`${t.win32};${n}`:n,t.posix=t.posix?`${t.posix}:${s}`:s,t[i]={win32:n,posix:s}}return t}Dle.exports=AO});var yO=w(($bt,Zle)=>{Zle.exports=J("stream")});var tce=w((eQt,ece)=>{"use strict";function _le(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(r,n).enumerable})),t.push.apply(t,i)}return t}function e5e(r){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?_le(Object(t),!0).forEach(function(i){t5e(r,i,t[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):_le(Object(t)).forEach(function(i){Object.defineProperty(r,i,Object.getOwnPropertyDescriptor(t,i))})}return r}function t5e(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function r5e(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function $le(r,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(r,i.key,i)}}function i5e(r,e,t){return e&&$le(r.prototype,e),t&&$le(r,t),r}var n5e=J("buffer"),pQ=n5e.Buffer,s5e=J("util"),wO=s5e.inspect,o5e=wO&&wO.custom||"inspect";function a5e(r,e,t){pQ.prototype.copy.call(r,e,t)}ece.exports=function(){function r(){r5e(this,r),this.head=null,this.tail=null,this.length=0}return i5e(r,[{key:"push",value:function(t){var i={data:t,next:null};this.length>0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(t){var i={data:t,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=t+i.data;return n}},{key:"concat",value:function(t){if(this.length===0)return pQ.alloc(0);for(var i=pQ.allocUnsafe(t>>>0),n=this.head,s=0;n;)a5e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(t,i){var n;return t<this.head.data.length?(n=this.head.data.slice(0,t),this.head.data=this.head.data.slice(t)):t===this.head.data.length?n=this.shift():n=i?this._getString(t):this._getBuffer(t),n}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(t){var i=this.head,n=1,s=i.data;for(t-=s.length;i=i.next;){var o=i.data,a=t>o.length?o.length:t;if(a===o.length?s+=o:s+=o.slice(0,t),t-=a,t===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(t){var i=pQ.allocUnsafe(t),n=this.head,s=1;for(n.data.copy(i),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(i,i.length-t,0,a),t-=a,t===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:o5e,value:function(t,i){return wO(this,e5e({},i,{depth:0,customInspect:!1}))}}]),r}()});var bO=w((tQt,ice)=>{"use strict";function A5e(r,e){var t=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(BO,this,r)):process.nextTick(BO,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,function(s){!e&&s?t._writableState?t._writableState.errorEmitted?process.nextTick(dQ,t):(t._writableState.errorEmitted=!0,process.nextTick(rce,t,s)):process.nextTick(rce,t,s):e?(process.nextTick(dQ,t),e(s)):process.nextTick(dQ,t)}),this)}function rce(r,e){BO(r,e),dQ(r)}function dQ(r){r._writableState&&!r._writableState.emitClose||r._readableState&&!r._readableState.emitClose||r.emit("close")}function l5e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function BO(r,e){r.emit("error",e)}function c5e(r,e){var t=r._readableState,i=r._writableState;t&&t.a Line truncated
`)),r.linkname&&(e+=_O(" linkpath="+r.linkname+`
`));var t=r.pax;if(t)for(var i in t)e+=_O(" "+i+"="+t[i]+`
`);return Buffer.from(e)};hp.decodePax=function(r){for(var e={};r.length;){for(var t=0;t<r.length&&r[t]!==32;)t++;var i=parseInt(r.slice(0,t).toString(),10);if(!i)return e;var n=r.slice(t+1,i-1).toString(),s=n.indexOf("=");if(s===-1)return e;e[n.slice(0,s)]=n.slice(s+1),r=r.slice(i)}return e};hp.encode=function(r){var e=rVe(512),t=r.name,i="";if(r.typeflag===5&&t[t.length-1]!=="/"&&(t+="/"),Buffer.byteLength(t)!==t.length)return null;for(;Buffer.byteLength(t)>100;){var n=t.indexOf("/");if(n===-1)return null;i+=i?"/"+t.slice(0,n):t.slice(0,n),t=t.slice(n+1)}return Buffer.byteLength(t)>100||Buffer.byteLength(i)>155||r.linkname&&Buffer.byteLength(r.linkname)>100?null:(e.write(t),e.write(Rl(r.mode&AVe,6),100),e.write(Rl(r.uid,6),108),e.write(Rl(r.gid,6),116),e.write(Rl(r.size,11),124),e.write(Rl(r.mtime.getTime()/1e3|0,11),136),e[156]=iue+uVe(r.type),r.linkname&&e.write(r.linkname,157),nue.copy(e,QE),sVe.copy(e,$O),r.uname&&e.write(r.uname,265),r.gname&&e.write(r.gname,297),e.write(Rl(r.devmajor||0,6),329),e.write(Rl(r.devminor||0,6),337),i&&e.write(i,345),e.write(Rl(oue(e),6),148),e)};hp.decode=function(r,e,t){var i=r[156]===0?0:r[156]-iue,n=fp(r,0,100,e),s=Fl(r,100,8),o=Fl(r,108,8),a=Fl(r,116,8),l=Fl(r,124,12),c=Fl(r,136,12),u=cVe(i),g=r[157]===0?null:fp(r,157,100,e),f=fp(r,265,32),h=fp(r,297,32),p=Fl(r,329,8),C=Fl(r,337,8),y=oue(r);if(y===8*32)return null;if(y!==Fl(r,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(nue.compare(r,QE,QE+6)===0)r[345]&&(n=fp(r,345,155,e)+"/"+n);else if(!(oVe.compare(r,QE,QE+6)===0&&aVe.compare(r,$O,$O+2)===0)){if(!t)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:C}}});var fue=w((yQt,gue)=>{var Aue=J("util"),fVe=rue(),SE=e1(),lue=gp().Writable,cue=gp().PassThrough,uue=function(){},aue=function(r){return r&=511,r&&512-r},hVe=function(r,e){var t=new kQ(r,e);return t.end(),t},pVe=function(r,e){return e.path&&(r.name=e.path),e.linkpath&&(r.linkname=e.linkpath),e.size&&(r.size=parseInt(e.size,10)),r.pax=e,r},kQ=function(r,e){this._parent=r,this.offset=e,cue.call(this,{autoDestroy:!1})};Aue.inherits(kQ,cue);kQ.prototype.destroy=function(r){this._parent.destroy(r)};var pA=function(r){if(!(this instanceof pA))return new pA(r);lue.call(this,r),r=r||{},this._offset=0,this._buffer=fVe(),this._missing=0,this._partial=!1,this._onparse=uue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,t=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=aue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(aue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=SE.decodePax(t.slice(0,f)),t.consume(f),s()},l=function(){var f=e._header.size;e._pax=SE.decodePax(t.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),t.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=SE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=SE.decodeLongPath(t.slice(0,f),r.filenameEncoding),t.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=SE.decode(t.slice(0,512),r.filenameEncoding,r.allowUnknownFormat)}catch(p){e.emit("error",p)}if(t.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=pVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,hVe(e,f),n);return}e._stream=new kQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};Aue.inherits(pA,lue);pA.prototype.destroy=function(r){this._destroyed||(this._destroyed=!0,r&&this.emit("error",r),this.emit("close"),this._stream&&this._stream.emit("close"))};pA.prototype._parse=function(r,e){this._destroyed||(this._offset+=r,this._missing=r,e===this._onheader&&(this._partial=!1),this._onparse=e)};pA.prototype._continue=function(){if(!this._destroyed){var r=this._cb;this._cb=uue,this._overflow?this._write(this._overflow,void 0,r):r()}};pA.prototype._write=function(r,e,t){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(r.length&&(this._partial=!0),r.length<s)return this._missing-=r.length,this._overflow=null,i?i.write(r,t):(n.append(r),t Line truncated
Wanted: ${t.size}
Found: ${r.length}`);throw a.code="EBADSIZE",a.found=r.length,a.expected=t.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${r.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}ga.exports.checkStream=JVe;function JVe(r,e,t){t=An(t);let i=t.Promise||Promise,n=u1(t.concat({integrity:e}));return new i((s,o)=>{r.pipe(n),r.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}ga.exports.integrityStream=u1;function u1(r){r=An(r);let e=r.integrity&&ua(r.integrity,r),t=e&&Object.keys(e).length,i=t&&e.pickAlgorithm(r),n=t&&e[i],s=Array.from(new Set(r.algorithms.concat(i?[i]:[]))),o=s.map(PE.createHash),a=0,l=new MVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=r.options&&r.options.length?`?${r.options.join("?")}`:"",u=ua(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),r),g=t&&u.match(e,r);if(typeof r.size=="number"&&a!==r.size){let f=new Error(`stream size mismatch when checking ${e}.
Wanted: ${r.size}
Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=r.size,f.sri=e,l.emit("error",f)}else if(r.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}ga.exports.create=WVe;function WVe(r){r=An(r);let e=r.algorithms,t=r.options.length?`?${r.options.join("?")}`:"",i=e.map(PE.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new Nl(`${a}-${l}${t}`,r);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Zu)}}}var zVe=new Set(PE.getHashes()),Tue=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(r=>zVe.has(r));function VVe(r,e){return Tue.indexOf(r.toLowerCase())>=Tue.indexOf(e.toLowerCase())?r:e}});var sm={};ut(sm,{BuildType:()=>M0,Cache:()=>Rt,Configuration:()=>ye,DEFAULT_LOCK_FILENAME:()=>ok,DEFAULT_RC_FILENAME:()=>sk,FormatType:()=>xi,InstallMode:()=>ts,LightReport:()=>ra,LinkType:()=>Ef,Manifest:()=>ot,MessageName:()=>Ct,MultiFetcher:()=>Df,PackageExtensionStatus:()=>Xx,PackageExtensionType:()=>Vx,Project:()=>je,ProjectLookup:()=>ck,Report:()=>vi,ReportError:()=>at,SettingsType:()=>ak,StreamReport:()=>Ge,TAG_REGEXP:()=>Rf,TelemetryManager:()=>Sh,ThrowReport:()=>ti,VirtualFetcher:()=>Ff,Workspace:()=>Qh,WorkspaceFetcher:()=>Tf,WorkspaceResolver:()=>Yr,YarnVersion:()=>Tr,execUtils:()=>Cr,folderUtils:()=>Tw,formatUtils:()=>ee,hashUtils:()=>li,httpUtils:()=>Xt,miscUtils:()=>Ie,nodeUtils:()=>ws,parseMessageName:()=>LI,scriptUtils:()=>Wt,semverUtils:()=>vt,stringifyMessageName:()=>FA,structUtils:()=>P,tgzUtils:()=>mi,treeUtils:()=>es});var Cr={};ut(Cr,{EndStrategy:()=>hk,ExecError:()=>Yw,PipeError:()=>dC,execvp:()=>tk,pipevp:()=>oo});var Wp={};ut(Wp,{AliasFS:()=>So,CustomDir:()=>Hp,CwdFS:()=>qt,DEFAULT_COMPRESSION_LEVEL:()=>Xl,FakeFS:()=>ya,Filename:()=>xt,JailFS:()=>vo,LazyFS:()=>Sg,LinkStrategy:()=>CS,NoFS:()=>jp,NodeFS:()=>$t,PortablePath:()=>Me,PosixFS:()=>vg,ProxiedFS:()=>pi,VirtualFS:()=>Br,ZipFS:()=>Wr,ZipOpenFS:()=>Kn,constants:()=>xr,extendFs:()=>AI,normalizeLineEndings:()=>Vl,npath:()=>K,opendir:()=>tI,patchFs:()=>bS,ppath:()=>x,statUtils:()=>Mp,toFilename:()=>Jr,xfs:()=>O});var xr={};ut(xr,{SAFE_TIME:()=>sK,S_IFDIR:()=>Jl,S_IFLNK:()=>zl,S_IFMT:()=>qs,S_IFREG:()=>Wl});var qs=61440,Jl=16384,Wl=32768,zl=40960,sK=456789e3;var Mp={};ut(Mp,{BigIntStatsEntry:()=>Bg,DEFAULT_MODE:()=>Tp,DirEntry:()=>cS,StatEntry:()=>Ia,areStatsEqual:()=>gS,clearStats:()=>WE,convertToBigIntStats:()=>zE,makeDefaultStats:()=>Lp,makeEmptyStats:()=>Mge});var uS=Pe(J("util"));var Tp=33188,cS=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Ia=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=Tp;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Bg=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(Tp);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}};function Lp(){return new Ia}function Mge(){return WE(Lp())}function WE(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e)){let t=r[e];typeof t=="number"?r[e]=0:typeof t=="bigint"?r[e]=BigInt(0):uS.types.isDate(t)&&(r[e]=new Date(0))}return r}function zE(r){let e=new Bg;for(let t in r)if(Object.prototype.hasOwnProperty.call(r,t)){let i=r[t];typeof i=="number"?e[t]=BigInt(i):uS.types.isDate(i)&&(e[t]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigI Line truncated
`)}writeJsonSync(e,t){return this.writeFileSync(e,`${JSON.stringify(t,null,2)}
`)}async preserveTimePromise(e,t){let i=await this.lstatPromise(e),n=await t();typeof n<"u"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,t){let i=this.lstatSync(e),n=t();typeof n<"u"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},xA=class extends ya{constructor(){super(x)}};function Wge(r){let e=r.match(/\r?\n/g);if(e===null)return gK.EOL;let t=e.filter(n=>n===`\r
`).length,i=e.length-t;return t>i?`\r
`:`
`}function Vl(r,e){return e.replace(/\r?\n/g,Wge(r))}var Qg=J("fs"),IS=J("stream"),dK=J("util"),yS=Pe(J("zlib"));var fK=Pe(J("fs"));var $t=class extends xA{constructor(t=fK.default){super();this.realFs=t,typeof this.realFs.lutimes<"u"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Me.root}resolve(t){return x.resolve(t)}async openPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.open(K.fromPortablePath(t),i,n,this.makeCallback(s,o))})}openSync(t,i,n){return this.realFs.openSync(K.fromPortablePath(t),i,n)}async opendirPromise(t,i){return await new Promise((n,s)=>{typeof i<"u"?this.realFs.opendir(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.opendir(K.fromPortablePath(t),this.makeCallback(n,s))}).then(n=>Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0}))}opendirSync(t,i){let n=typeof i<"u"?this.realFs.opendirSync(K.fromPortablePath(t),i):this.realFs.opendirSync(K.fromPortablePath(t));return Object.defineProperty(n,"path",{value:t,configurable:!0,writable:!0})}async readPromise(t,i,n=0,s=0,o=-1){return await new Promise((a,l)=>{this.realFs.read(t,i,n,s,o,(c,u)=>{c?l(c):a(u)})})}readSync(t,i,n,s,o){return this.realFs.readSync(t,i,n,s,o)}async writePromise(t,i,n,s,o){return await new Promise((a,l)=>typeof i=="string"?this.realFs.write(t,i,n,this.makeCallback(a,l)):this.realFs.write(t,i,n,s,o,this.makeCallback(a,l)))}writeSync(t,i,n,s,o){return typeof i=="string"?this.realFs.writeSync(t,i,n):this.realFs.writeSync(t,i,n,s,o)}async closePromise(t){await new Promise((i,n)=>{this.realFs.close(t,this.makeCallback(i,n))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,i){let n=t!==null?K.fromPortablePath(t):t;return this.realFs.createReadStream(n,i)}createWriteStream(t,i){let n=t!==null?K.fromPortablePath(t):t;return this.realFs.createWriteStream(n,i)}async realpathPromise(t){return await new Promise((i,n)=>{this.realFs.realpath(K.fromPortablePath(t),{},this.makeCallback(i,n))}).then(i=>K.toPortablePath(i))}realpathSync(t){return K.toPortablePath(this.realFs.realpathSync(K.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(i=>{this.realFs.exists(K.fromPortablePath(t),i)})}accessSync(t,i){return this.realFs.accessSync(K.fromPortablePath(t),i)}async accessPromise(t,i){return await new Promise((n,s)=>{this.realFs.access(K.fromPortablePath(t),i,this.makeCallback(n,s))})}existsSync(t){return this.realFs.existsSync(K.fromPortablePath(t))}async statPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.stat(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.stat(K.fromPortablePath(t),this.makeCallback(n,s))})}statSync(t,i){return i?this.realFs.statSync(K.fromPortablePath(t),i):this.realFs.statSync(K.fromPortablePath(t))}async fstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.fstat(t,i,this.makeCallback(n,s)):this.realFs.fstat(t,this.makeCallback(n,s))})}fstatSync(t,i){return i?this.realFs.fstatSync(t,i):this.realFs.fstatSync(t)}async lstatPromise(t,i){return await new Promise((n,s)=>{i?this.realFs.lstat(K.fromPortablePath(t),i,this.makeCallback(n,s)):this.realFs.lstat(K.fromPortablePath(t),this.makeCallback(n,s))})}lstatSync(t,i){return i?this.realFs.lstatSync(K.fromPortablePath(t),i):this.realFs.lstatSync(K.fromPortablePath(t))}async fchmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.fchmod(t,i,this.makeCallback(n,s))})}fchmodSync(t,i){return this.realFs.fchmodSync(t,i)}async chmodPromise(t,i){return await new Promise((n,s)=>{this.realFs.chmod(K.fromPortablePath(t),i,this.makeCallback(n,s))})}chmodSync(t,i){return this.realFs.chmodSync(K.fromPortablePath(t),i)}async fchownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.fchown(t,i,n,this.makeCallback(s,o))})}fchownSync(t,i,n){return this.realFs.fchownSync(t,i,n)}async chownPromise(t,i,n){return await new Promise((s,o)=>{this.realFs.chown(K.fromPortablePath(t),i,n,this.makeCallback(s,o))})}chownSync(t,i,n){return this.realFs.chownSync(K.fromPortablePath(t),i,n)}async renamePromise(t,i){return await new Promise((n,s)=>{this.realFs.rename(K.fromPortablePath(t),K.fromPortablePath(i),this.makeCallback(n,s))})}renameSync(t,i){return this.realFs.renameSync(K.fromPortablePath(t),K.fromPortablePath(i))}async copyFilePromise(t,i,n=0){return await new Promise((s,o)=>{this.realFs.copyFile(K.fromPortablePath(t),K.fromPortablePath(i),n,this.makeCallback(s,o))})}copyFileSync(t,i,n=0){return this.realFs.copyFileSync(K.fromPortablePath(t),K.fromPortablePath(i),n)}async appendFilePromise(t,i,n){return await new Promise((s,o)=>{let a=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.appendFile(a,i,n,this.makeCallback(s,o)):this.realFs.appendFile(a,i,this.makeCallback(s,o))})}appendFileSync(t,i,n){let s=typeof t=="string"?K.fromPortablePath(t):t;n?this.realFs.appendFileSync(s,i,n):this.realFs.appendFileSync(s,i)}async writeFilePromise(t,i,n){return await new Promise((s,o)=>{let Line truncated
`;if(typeof r=="number"||typeof r=="boolean")return`${r.toString()}
`;if(typeof r=="string")return`${uH(r)}
`;if(Array.isArray(r)){if(r.length===0)return`[]
`;let i=" ".repeat(e);return`
${r.map(s=>`${i}- ${$S(s,e+1,!1)}`).join("")}`}if(typeof r=="object"&&r){let i,n;r instanceof SI?(i=r.data,n=!1):(i=r,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=cH.indexOf(l),g=cH.indexOf(c);return u===-1&&g===-1?l<c?-1:l>c?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!fH(i[l])).map((l,c)=>{let u=i[l],g=uH(l),f=$S(u,e+1,!0),h=c>0||t?s:"",p=g.length>1024?`? ${g}
${h}:`:`${g}:`,C=f.startsWith(`
`)?f:` ${f}`;return`${h}${p}${C}`}).join(e===0?`
`:"")||`
`;return t?`
${a}`:`${a}`}throw new Error(`Unsupported value type (${r})`)}function ba(r){try{let e=$S(r,0,!1);return e!==`
`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}ba.PreserveOrdering=SI;function ude(r){return r.endsWith(`
`)||(r+=`
`),(0,gH.parse)(r)}var gde=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function fde(r){if(gde.test(r))return ude(r);let e=(0,vI.safeLoad)(r,{schema:vI.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function yi(r){return fde(r)}var mz=Pe(pH()),Kw=Pe(Ac());var ud={};ut(ud,{Builtins:()=>hv,Cli:()=>Gn,Command:()=>ve,Option:()=>z,UsageError:()=>Qe,formatMarkdownish:()=>Ti});var tv="",wi="\0";var rv=/^(-h|--help)(?:=([0-9]+))?$/,xI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,EH=/^-[a-zA-Z]{2,}$/,iv=/^([^=]+)=([\s\S]*)$/,nv=process.env.DEBUG_CLI==="1";var Qe=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Hg=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i}
${this.candidates.map(({usage:n})=>`$ ${n}`).join(`
`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean:
$ ${i}
${sv(e)}`}else this.message=`Command not found; did you mean one of:
${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(`
`)}
${sv(e)}`}},PI=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives:
${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(`
`)}
${sv(e)}`}},sv=r=>`While running ${r.filter(e=>e!==wi).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;var rd=Symbol("clipanion/isOption");function Xi(r){return{...r,[rd]:!0}}function Do(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function DI(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function id(r,e){return e.length===1?new Qe(`${r}: ${DI(e[0],!0)}`):new Qe(`${r}:
${e.map(t=>`
- ${DI(t)}`).join("")}`)}function nd(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw id(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}var ve=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(ls(),hn)),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw id("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};ve.isOption=rd;ve.Default=[];var Av=Array(80).fill("\u2501");for(let r=0;r<=24;++r)Av[Av.length-r]=`\x1B[38;5;${232+r}m\u2501`;var lv={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length<80-5?` ${Av.slice(r.length+5).join("")}`:":"}\x1B[0m`,bold:r=>`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},PH={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function Xde(r){let e=r.split(`
`),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(`
`)}function Ti(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,`
`),r=Xde(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2
`),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(`
`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(`
`)}).join(`
`)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r}
`:""}var fv=Pe(J("tty"),1);function pn(r){nv&&console.log(r)}var DH={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};function kH(){return{nodes:[_i(),_i(),_i()]}}function Zde(r){let e=kH(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s<n.nodes.length;++s)NH(s)||e.nodes.push(oCe(n.nodes[s],i));i+=n.nodes.length-2}for(let n of t)Gg(e,0,n);return e}function Xs(r,e){return r.nodes.push(e),r.nodes.length-1}function _de(r){let e=new Set,t=i=>{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(0)}function $de(r,{prefix:e=""}={}){if(nv){pn(`${e}Nodes are:`);for(let t=0;t<r.nodes.length;++t)pn(`${e} ${t}: ${JSON.stringify(r.nodes[t])}`)}}function RH(r,e,t=!1){pn(`Running a vm on ${JSON.stringify(e)}`);let i=[{node:0,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null}}];$de(r,{prefix:" "});let n=[tv,...e];for(let s=0;s<n.length;++s){let o=n[s];pn(` Processing ${JSON.stringify(o)}`);let a=[];for(let{node:l,state:c}of i){pn(` Current node is ${l}`);let u=r.nodes[l];if(l===2){a.push({node:l,state:c});continue}console.assert(u.shortcuts.length===0,"Shortcuts should have been eliminated by now");let g=Object.prototype.hasOwnProperty.call(u.statics,o);if(!t||s<n.length-1||g)if(g){let f=u.statics[o];for(let{to:h,reducer:p}of f)a.push({node:h,state:typeof p<"u"?RI(uv,p,c,o):c}),pn(` Static transition to ${h} found`)}else pn(" No static transition found");else{let f=!1;for(let h of Object.keys(u.statics))if(!!h.startsWith(o)){if(o===h)for(let{to:p,reducer:C}of u.statics[h])a.push({node:p,state:typeof C<"u"?RI(uv,C,c,o):c}),pn(` Static transition to ${p} found`);else for(let{to:p}of u.statics[h])a.push({node:p,state:{...c,remainder:h.slice(o.length)}}),pn(` Static transition to ${p} found (partial match)`);f=!0}f||pn(" No partial static transition found")}if(o!==wi)for(let[f,{to:h,reducer:p}]of u.dynamics)RI(NI,f,c,o)&&(a.push({node:h,state:typeof p<"u"?RI(uv,p,c,o):c}),pn(` Dynamic transition to ${h} found (via ${f})`))}if(a.length===0&&o===wi&&e.length===1)return[{node:0,state:DH}];if(a.length===0)throw new Hg(e,i.filter(({node:l})=>l!==2).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===2))throw new Hg(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=iCe(a)}if(i.length>0){pn(" Results:");for(let s of i)pn(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else pn(" No results");return i}function eCe(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,wi)){for(let{to:t}of r.statics[wi])if(t===1)return!0}return!1}function tCe(r,e,t){let i=t&&e.length>0?[""]:[],n=RH(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],y=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=y[0];for(let{to:D,reducer:T}of C.statics[v])T==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=eCe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==wi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===2)continue;let p=aCe(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function rCe(r,e){let t=RH(r,[...e,wi]);return nCe(e,t.map(({state:i})=>i))}function iCe(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function nCe(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Hg(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=sCe(c);if(u.length>1)throw new PI(r,u.map(g=>g.candidateUsage));return u[0]}function sCe(r){let Line truncated
`),this.context.stdout.write(`
`);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(`
`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.
`)}}};var TH=Symbol("clipanion/errorCommand");function ACe(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var Gn=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new jg({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new Gn(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ve.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case-1:return qg.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[TH]=a,l}}break}}async run(e,t){var i;let n,s={...Gn.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?lCe(s):MH,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?Ti(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?Ti(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?Ti(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[Ti(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ve?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Ti(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=`
`),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")}
`,a+=`
`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g}
`,f.length>0){a+=`
`,a+=`${lv.header("Options")}
`;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=`
`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${Ti(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=`
`,a+=`${this.format(t).header("Details")}
`,a+=`
`,a+=Ti(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=`
`,a+=`${this.format(t).header("Examples")}
`;for(let[h,p]of u)a+=`
`,a+=Ti(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)}
`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l}
`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?Ti(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:y}=this.getUsageByIndex(h);C.push({commandClass:f,usage:y})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)}
`:u?a+=`${this.format(t).header(`${this.binaryLabel}`)}
`:a+=`${this.format(t).header(`${this.binaryVersion}`)}
`,a+=` ${this.format(t).bold(n)}${this.binaryName} <command>
`):a+=`${this.format(t).bold(n)}${this.binaryName} <command>
`;for(let f of c){let h=l.get(f).slice().sort((C,y)=>C.usage.localeCompare(y.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=`
`,a+=`${this.format(t).header(`${p}`)}
`;for(let{commandClass:C,usage:y}of h){let B=C.usage.description||"undocumented";a+=`
`,a+=` ${this.format(t).bold(y)}
`,a+=` ${Ti(B,{format:this.format(t),paragraphs:!1})}`}}a+=`
`,a+=Ti("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[TH])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message}
`;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=`
`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")}
`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:Gn.defaultContext.colorDepth>1)?lv:PH}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};Gn.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in fv.default.WriteStream.prototype?fv.default.WriteStream.prototype.getColorDepth():ACe()};var LH;function lCe(r){let e=LH;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return MH;let{AsyncLocalStorage:t}=J("async_hooks");e=LH=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function MH(r){return r()}var hv={};ut(hv,{DefinitionsCommand:()=>Ad,HelpCommand:()=>ld,VersionCommand:()=>cd});var Ad=class extends ve{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}
`)}};Ad.paths=[["--clipanion=definitions"]];var ld=class extends ve{async execute(){this.context.stdout.write(this.cli.usage())}};ld.paths=[["-h"],["--help"]];var cd=class extends ve{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:"<unknown>"}
`)}};cd.paths=[["-v"],["--version"]];var z={};ut(z,{Array:()=>OH,Boolean:()=>KH,Counter:()=>UH,Proxy:()=>HH,Rest:()=>GH,String:()=>YH,applyValidator:()=>nd,cleanValidationError:()=>DI,formatError:()=>id,isOptionSymbol:()=>rd,makeCommandOption:()=>Xi,rerouteArguments:()=>Do});function OH(r,e,t){let[i,n]=Do(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Xi({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function KH(r,e,t){let[i,n]=Do(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Xi({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function UH(r,e,t){let[i,n]=Do(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return Xi({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function HH(r={}){return Xi({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}function GH(r={}){return Xi({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Hn||a.extra===!1&&o<e.arity.leading.length},s=0;for(;s<i.positionals.length&&n(s);)s+=1;return i.positionals.splice(0,s).map(({value:o})=>o)}})}function cCe(r,e,t){let[i,n]=Do(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Xi({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?nd(g!=null?g:c,f,n.validator):f}})}function uCe(r={}){let{required:e=!0}=r;return Xi({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o<n.positionals.length;++o){if(n.positionals[o].extra===Hn||e&&n.positionals[o].extra===!0||!e&&n.positionals[o].extra===!1)continue;let[a]=n.positionals.splice(o,1);return nd((s=r.name)!==null&&s!==void 0?s:i,a.value,r.validator)}}})}function YH(r,...e){return typeof r=="string"?cCe(r,...e):uCe(r)}var Ez=Pe(Jg()),nk=J("stream");var Ct=(se=>(se[se.UNNAMED=0]="UNNAMED",se[se.EXCEPTION=1]="EXCEPTION",se[se.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",se[se.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",se[se.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",se[se.BUILD_DISABLED=5]="BUILD_DISABLED",se[se.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",se[se.MUST_BUILD=7]="MUST_BUILD",se[se.MUST_REBUILD=8]="MUST_REBUILD",se[se.BUILD_FAILED=9]="BUILD_FAILED",se[se.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",se[se.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",se[se.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",se[se.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",se[se.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",se[se.REMOTE_INVALID=15]="REMOTE_INVALID",se[se.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",se[se.RESOLUTION_PACK=17]="RESOLUTION_PACK",se[se.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",se[se.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",se[se.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",se[se.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",se[se.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",se[se.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",se[se.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",se[se.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",se[se.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",se[se.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",se[se.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",se[se.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",se[se.FETCH_FAILED=30]="FETCH_FAILED",se[se.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",se[se.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",se[se.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",se[se.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",se[se.NETWORK_ERROR=35]="NETWORK_ERROR",se[se.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",se[se.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",se[se.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",se[se.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",se[se.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",se[se.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",se[se.PROLOG_UNKNOWN_ Line truncated
`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),t}};var Df=class{constructor(e){this.fetchers=e}supports(e,t){return!!this.tryFetcher(e,t)}getLocalPath(e,t){return this.getFetcher(e,t).getLocalPath(e,t)}async fetch(e,t){return await this.getFetcher(e,t).fetch(e,t)}tryFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));return i||null}getFetcher(e,t){let i=this.fetchers.find(n=>n.supports(e,t));if(!i)throw new at(11,`${mt(t.project.configuration,e)} isn't supported by any available fetcher`);return i}};var kf=class{constructor(e){this.resolvers=e.filter(t=>t)}supportsDescriptor(e,t){return!!this.tryResolverByDescriptor(e,t)}supportsLocator(e,t){return!!this.tryResolverByLocator(e,t)}shouldPersistResolution(e,t){return this.getResolverByLocator(e,t).shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,t,i)}getResolutionDependencies(e,t){return this.getResolverByDescriptor(e,t).getResolutionDependencies(e,t)}async getCandidates(e,t,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,t,i)}async getSatisfying(e,t,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,t,i)}async resolve(e,t){return await this.getResolverByLocator(e,t).resolve(e,t)}tryResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));return i||null}getResolverByDescriptor(e,t){let i=this.resolvers.find(n=>n.supportsDescriptor(e,t));if(!i)throw new Error(`${tr(t.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));return i||null}getResolverByLocator(e,t){let i=this.resolvers.find(n=>n.supportsLocator(e,t));if(!i)throw new Error(`${mt(t.project.configuration,e)} isn't supported by any available resolver`);return i}};var pz=Pe(Xr());var Rf=/^(?!v)[a-z0-9._-]+$/i,Nw=class{supportsDescriptor(e,t){return!!(so(e.range)||Rf.test(e.range))}supportsLocator(e,t){return!!(pz.default.valid(e.reference)||Rf.test(e.reference))}shouldPersistResolution(e,t){return t.resolver.shouldPersistResolution(this.forwardLocator(e,t),t)}bindDescriptor(e,t,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),t,i)}getResolutionDependencies(e,t){return t.resolver.getResolutionDependencies(this.forwardDescriptor(e,t),t)}async getCandidates(e,t,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),t,i)}async getSatisfying(e,t,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),t,i)}async resolve(e,t){let i=await t.resolver.resolve(this.forwardLocator(e,t),t);return tC(i,e)}forwardDescriptor(e,t){return _t(e,`${t.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,t){return nn(e,`${t.project.configuration.get("defaultProtocol")}${e.reference}`)}};var Ff=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=nn(e,n);return t.fetcher.getLocalPath(s,t)}async fetch(e,t){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=nn(e,n),o=await t.fetcher.fetch(s,t);return await this.ensureVirtualLink(e,o,t)}getLocatorFilename(e){return xf(e)}async ensureVirtualLink(e,t,i){let n=t.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Br.makeVirtualPath(s,o,n),l=new So(a,{baseFs:t.packageFs,pathUtils:x});return{...t,packageFs:l}}};var Nf=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Nf.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Nf.protocol)}supportsDescriptor(e,t){return Nf.isVirtualDescriptor(e)}supportsLocator(e,t){return Nf.isVirtualLocator(e)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,t){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,t,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,t,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,t){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},fC=Nf;fC.protocol="virtual:";var Tf=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,t){return this.getWorkspace(e,t).cwd}async fetch(e,t){let i=this.getWorkspace(e,t).cwd;return{packageFs:new qt(i),prefixPath:Me.dot,localPath:i}}getWorkspace(e,t){return t.project.getWorkspaceByLine truncated
`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let t of this.plugins.values())for(let i of t.resolvers||[])e.push(new i);return new kf([new fC,new Yr,new Nw,...e])}makeFetcher(){let e=[];for(let t of this.plugins.values())for(let i of t.fetchers||[])e.push(new i);return new Df([new Ff,new Tf,...e])}getLinkers(){let e=[];for(let t of this.plugins.values())for(let i of t.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=pC(),t=this.get("supportedArchitectures"),i=t.get("os");i!==null&&(i=i.map(o=>o==="current"?e.os:o));let n=t.get("cpu");n!==null&&(n=n.map(o=>o==="current"?e.cpu:o));let s=t.get("libc");return s!==null&&(s=Ho(s,o=>{var a;return o==="current"?(a=e.libc)!=null?a:Ho.skip:o})),{os:i,cpu:n,libc:s}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,t=(i,n,{userProvided:s=!1}={})=>{if(!so(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new ot;o.load(n,{yamlCompatibilityMode:!0});let a=hf(e,i.identHash),l=[];a.push([i.range,l]);let c={status:"inactive",userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push({...c,type:"Dependency",descriptor:u});for(let u of o.peerDependencies.values())l.push({...c,type:"PeerDependency",descriptor:u});for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push({...c,type:"PeerDependencyMeta",selector:u,key:f,value:h})};await this.triggerHook(i=>i.registerPackageExtensions,this,t);for(let[i,n]of this.get("packageExtensions"))t(WA(i,!0),Jy(n),{userProvided:!0})}normalizePackage(e){let t=rC(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i<"u"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!kc(s,o))for(let l of a)switch(l.status==="inactive"&&(l.status="redundant"),l.type){case"Dependency":typeof t.dependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.dependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependency":typeof t.peerDependencies.get(l.descriptor.identHash)>"u"&&(l.status="active",t.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case"PeerDependencyMeta":{let c=t.peerDependenciesMeta.get(l.selector);(typeof c>"u"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status="active",Ta(t.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:qx(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of t.peerDependenciesMeta.keys()){let o=tn(s);t.peerDependencies.has(o.identHash)||t.peerDependencies.set(o.identHash,_t(o,"*"))}for(let s of t.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Jo("types",o),l=Mt(a);t.peerDependencies.has(a.identHash)||t.peerDependenciesMeta.has(l)||(t.peerDependencies.set(a.identHash,_t(a,"*")),t.peerDependenciesMeta.set(l,{optional:!0}))}return t.dependencies=new Map(bn(t.dependencies,([,s])=>Sn(s))),t.peerDependencies=new Map(bn(t.peerDependencies,([,s])=>Sn(s))),t}getLimit(e){return Ta(this.limits,e,()=>(0,Ez.default)(this.get(e)))}async triggerHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...t)}}async triggerMultipleHooks(e,t){for(let i of t)await this.triggerHook(e,...i)}async reduceHook(e,t,...i){let n=t;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...t){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...t);if(typeof o<"u")return o}return null}},ye=Ha;ye.telemetry=null;var hk=(i=>(i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always",i))(hk||{}),dC=class extends at{constructor({fileName:t,code:i,signal:n}){let s=ye.create(x.cwd()),o=$e(s,t,Ue.PATH);super(1,`Child ${o} reported an error`,a=>{qve(i,n,{configuration:s,report:a})});this.code=pk(i,n)}},Yw=class extends dC{constructor({fileName:t,code:i,signal:n,stdout:s,stderr:o}){super({fileName:t,code:i,signal:n});this.stdout=s,this.stderr=o}};function Nc(r){return r!==null&&typeof r.fd=="number"}var Tc=new Set;function uk(){}function gk(){for(let r of Tc)r.kill()}async function oo(r,e,{cwd:t,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":Nc(s)&&(c[0]=s),Nc(o)&&(c[1]=o),Nc(a)&&(c[2]=a);let u=(0,fk.default)(r,e,{cwd:K.fromPortablePath(t),env:{...i,PWD:K.fromPortablePath(t)},stdio:c});Tc.add(u),Tc.size===1&&(process.on("SIGINT",uk),process.on("SIGTERM",gk)),!Nc(s)&&s!==null&&s.pipe(u.stdin),Nc(o)||u.stdout.pipe(o,{end:!1}),Nc(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))Nc(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Tc.delete(u),Tc.size===0&&(process.off("SIGINT",uk),process.off("SIGTERM",gk)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,C)=> Line truncated
`),c(127);break;case"EACCES":n[2].write(`permission denied: ${r}
`),c(128);break;default:n[2].write(`uncaught error: ${u.message}
`),c(1);break}}),l.on("close",u=>{Oc.delete(l),Oc.size===0&&(process.off("SIGINT",LR),process.off("SIGTERM",MR)),c(u!==null?u:129)})})}}}function pV(r){return e=>{let t=e[0]==="pipe"?new Vo.PassThrough:e[0];return{stdin:t,promise:Promise.resolve().then(()=>r({stdin:t,stdout:e[1],stderr:e[2]}))}}}var Ss=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},OR=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},zf=class{constructor(e,t){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=t}static start(e,{stdin:t,stdout:i,stderr:n}){let s=new zf(null,e);return s.stdin=t,s.stdout=i,s.stderr=n,s}pipeTo(e,t=1){let i=new zf(this,e),n=new OR;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(t&1)===1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(t&2)===2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let t;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");t=this.stdout,e[1]=t.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(t.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function bB(r,e){return zf.start(r,e)}function uV(r,e=null){let t=new Vo.PassThrough,i=new fV.StringDecoder,n="";return t.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(`
`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",r(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),t.on("end",()=>{let s=i.end();s!==""&&r(e!==null?`${e} ${s}`:s)}),t}function dV(r,{prefix:e}){return{stdout:uV(t=>r.stdout.write(`${t}
`),r.stdout.isTTY?e:null),stderr:uV(t=>r.stderr.write(`${t}
`),r.stderr.isTTY?e:null)}}var Ake=(0,BV.promisify)(setTimeout);function CV(r,e,t){let i=new Vn.PassThrough({autoDestroy:!0});switch(r){case 0:(e&1)===1&&t.stdin.pipe(i,{end:!1}),(e&2)===2&&t.stdin instanceof Vn.Writable&&i.pipe(t.stdin,{end:!1});break;case 1:(e&1)===1&&t.stdout.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stdout,{end:!1});break;case 2:(e&1)===1&&t.stderr.pipe(i,{end:!1}),(e&2)===2&&i.pipe(t.stderr,{end:!1});break;default:throw new zn(`Bad file descriptor: "${r}"`)}return i}function SB(r,e={}){let t={...r,...e};return t.environment={...r.environment,...e.environment},t.variables={...r.variables,...e.variables},t}var lke=new Map([["cd",async([r=(0,wV.homedir)(),...e],t,i)=>{let n=x.resolve(i.cwd,K.toPortablePath(r));if(!(await t.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new zn(`cd: no such file or directory: ${r}`):o})).isDirectory())throw new zn(`cd: not a directory: ${r}`);return i.cwd=n,0}],["pwd",async(r,e,t)=>(t.stdout.write(`${K.fromPortablePath(t.cwd)}
`),0)],[":",async(r,e,t)=>0],["true",async(r,e,t)=>0],["false",async(r,e,t)=>1],["exit",async([r,...e],t,i)=>i.exitCode=parseInt(r!=null?r:i.variables["?"],10)],["echo",async(r,e,t)=>(t.stdout.write(`${r.join(" ")}
`),0)],["sleep",async([r],e,t)=>{if(typeof r>"u")throw new zn("sleep: missing operand");let i=Number(r);if(Number.isNaN(i))throw new zn(`sleep: invalid time interval '${r}'`);return await Ake(1e3*i,0)}],["__ysh_run_procedure",async(r,e,t)=>{let i=t.procedures[r[0]];return await bB(i,{stdin:new Ss(t.stdin),stdout:new Ss(t.stdout),stderr:new Ss(t.stderr)}).run()}],["__ysh_set_redirects",async(r,e,t)=>{let i=t.stdin,n=t.stdout,s=t.stderr,o=[],a=[],l=[],c=0;for(;r[c]!=="--";){let g=r[c++],{type:f,fd:h}=JSON.parse(g),p=v=>{switch(h){case null:case 0:o.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},C=v=>{switch(h){case null:case 1:a.push(v);break;case 2:l.push(v);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},y=Number(r[c++]),B=c+y;for(let v=c;v<B;++c,++v)switch(f){case"<":p(()=>e.baseFs.createReadStream(x.resolve(t.cwd,K.toPortablePath(r[v]))));break;case"<<<":p(()=>{let D=new Vn.PassThrough;return process.nextTick(()=>{D.write(`${r[v]}
`),D.end()}),D});break;case"<&":p(()=>CV(Number(r[v]),1,t));break;case">":case">>":{let D=x.resolve(t.cwd,K.toPortablePath(r[v]));C(D==="/dev/null"?new Vn.Writable({autoDestroy:!0,emitClose:!0,write(T,H,j){setImmediate(j)}}):e.baseFs.createWriteStream(D,f===">>"?{flags:"a"}:void 0))}break;case">&":C(CV(Number(r[v]),2,t));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Vn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Vn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Vn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await bB(DC(r.slice(c+1),e,t),{stdin:new Ss(i),stdout:new Ss(n),stderr:new Ss(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function cke(r,e,t){let i=[],n=new Vn.PassThrough;return n.on("data",s=>i.push(s)),await vB(r,e,SB(t,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function mV(r,e,t){let i=r.map(async s=>{let o=await Kc(s.args,e,t);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function QB(r){return r.match(/[^ \r\n\t]+/g)||[]}async function bV(r,e,t,i,n=i){switch(r.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(r.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=QB(s);for(let a=0;a<o.length-1;++a)n(o[a]);i(o[o.length-1])}break;case"*":{let s=e.args.join(" ");if(r.quoted)i(s);else for(let o of QB(s))n(o)}break;case"PPID":i(String(process.ppid));break;case"RANDOM":i(String(Math.floor(Math.random()*32768)));break;default:{let s=parseInt(r.name,10),o,a=Number.isFinite(s);if(a?s>=0&&s<e.args.length&&(o=e.args[s]):Object.prototype.hasOwnProperty.call(t.variables,r.name)?o=t.variables[r.name]:Object.prototype.hasOwnProperty.call(t.environment,r.name)&&(o=t.environment[r.name]),typeof o<"u"&&r.alternativeValue?o=(await Kc(r.alternativeValue,e,t)).join(" "):typeof o>"u"&&(r.defaultValue?o=(await Kc(r.defaultValue,e,t)).join(" "):r.alternativeValue&&(o="")),typeof o>"u")throw a?new zn(`Unbound argument #${s}`):new zn(`Unbound variable "${r.name}"`);if(r.quoted)i(o);else{let l=QB(o);for(let u=0;u<l.length-1;++u)n(l[u]);let c=l[l.length-1];typeof c<"u"&&i(c)}}break}}var uke={addition:(r,e)=>r+e,subtraction:(r,e)=>r-e,multiplication:(r,e)=>r*e,division:(r,e)=>Math.trunc(r/e)};async function PC(r,e,t){if(r.type==="number"){if(Number.isInteger(r.value))return r.value;throw new Error(`Invalid number: "${r.value}", only integers are allowed`)}else if(r.type==="variable"){let i=[];await bV({...r,quoted:!0},e,t,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?PC({type:"variable",name:i.join(" ")},e,t):PC({type:"number",value:n},e,t)}else return uke[r.type](await PC(r.left,e,t),await PC(r.right,e,t))}async function Kc(r,e,t){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p>"u"&&i.set(h,p=[]),p.push(f)};for(let u of r){let g=!1;switch(u.type){case"redirection":{let f=await Kc(u.args,e,t);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await cke(f.shell,e,t);if(f.quoted)o(h);else{let p=QB(h);for(let C=0;C<p.length-1;++C)l(p[C]);o(p[p.length-1])}}break;case"variable":await bV(f,e,t,o,l);break;case"arithmetic":o(String(await PC(f.arithmetic,e,t)));break}break}if(a(),g){let f=n.pop();if(typeof f>"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let h=await e.glob.match(f,{cwd:t.cwd,baseFs:e.baseFs});if(h.length===0){let p=TR(f)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new zn(`No matches found: "${f}"${p}`)}for(let p of h.sort())l(p)}}if(i.size>0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function DC(r,e,t){e.builtins.has(r[0])||(r=["command",...r]);let i=K.fromPortablePath(t.cwd),n=t.environment;typeof n.PWD<"u"&&(n={...n,PWD:i});let[s,...o]=r;if(s==="command")return hV(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a>"u")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return pV(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=t;t.stdin=l,t.stdout=c,t.stderr=u;try{return await a(o,e,t)}finally{t.stdin=g,t.stdout=f,t.stderr=h}})}function gke(r,e,t){return i=>{let n=new Vn.PassThrough,s=vB(r,e,SB(t,{stdin:n}));return{stdin:n,promise:s Line truncated
`)).finally(()=>{t.stdout.isTTY&&t.stdout.write(`Job ${l}, '${o(Fg(r))}' has ended
`)})),0}return await IV(r,e,t)}async function pke(r,e,t,{background:i=!1}={}){let n,s=a=>{n=a,t.variables["?"]=String(a)},o=async a=>{try{return await hke(a.chain,e,t,{background:i&&typeof a.then>"u"})}catch(l){if(!(l instanceof zn))throw l;return t.stderr.write(`${l.message}
`),1}};for(s(await o(r));r.then;){if(t.exitCode!==null)return t.exitCode;switch(r.then.type){case"&&":n===0&&s(await o(r.then.line));break;case"||":n!==0&&s(await o(r.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${r.then.type}"`)}r=r.then.line}return n}async function vB(r,e,t){let i=t.backgroundJobs;t.backgroundJobs=[];let n=0;for(let{command:s,type:o}of r){if(n=await pke(s,e,t,{background:o==="&"}),t.exitCode!==null)return t.exitCode;t.variables["?"]=String(n)}return await Promise.all(t.backgroundJobs),t.backgroundJobs=i,n}function QV(r){switch(r.type){case"variable":return r.name==="@"||r.name==="#"||r.name==="*"||Number.isFinite(parseInt(r.name,10))||"defaultValue"in r&&!!r.defaultValue&&r.defaultValue.some(e=>kC(e))||"alternativeValue"in r&&!!r.alternativeValue&&r.alternativeValue.some(e=>kC(e));case"arithmetic":return KR(r.arithmetic);case"shell":return UR(r.shell);default:return!1}}function kC(r){switch(r.type){case"redirection":return r.args.some(e=>kC(e));case"argument":return r.segments.some(e=>QV(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${r.type}"`)}}function KR(r){switch(r.type){case"variable":return QV(r);case"number":return!1;default:return KR(r.left)||KR(r.right)}}function UR(r){return r.some(({command:e})=>{for(;e;){let t=e.chain;for(;t;){let i;switch(t.type){case"subshell":i=UR(t.subshell);break;case"command":i=t.envs.some(n=>n.args.some(s=>kC(s)))||t.args.some(n=>kC(n));break}if(i)return!0;if(!t.then)break;t=t.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function xB(r,e=[],{baseFs:t=new $t,builtins:i={},cwd:n=K.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=BB}={}){let g={};for(let[p,C]of Object.entries(s))typeof C<"u"&&(g[p]=C);let f=new Map(lke);for(let[p,C]of Object.entries(i))f.set(p,C);o===null&&(o=new Vn.PassThrough,o.end());let h=uI(r,u);if(!UR(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let C=p.chain;for(;C.then;)C=C.then.chain;C.type==="command"&&(C.args=C.args.concat(e.map(y=>({type:"argument",segments:[{type:"text",text:y}]}))))}return await vB(h,{args:e,baseFs:t,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var u9=Pe(PB()),g9=Pe(Jg()),tl=J("stream");var l9=Pe(s9()),FB=Pe(Ac());var o9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],a9=80,fRe=new Set([13,19]),hRe=5,RB=FB.default.GITHUB_ACTIONS?{start:r=>`::group::${r}
`,end:r=>`::endgroup::
`}:FB.default.TRAVIS?{start:r=>`travis_fold:start:${r}
`,end:r=>`travis_fold:end:${r}
`}:FB.default.GITLAB?{start:r=>`section_start:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${r}
`,end:r=>`section_end:${Math.floor(Date.now()/1e3)}:${r.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,A9=new Date,pRe=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,dRe=r=>r,NB=dRe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),CRe=pRe&&Object.keys(NB).find(r=>{let e=NB[r];return!(e.date&&(e.date[0]!==A9.getDate()||e.date[1]!==A9.getMonth()+1))})||"default";function c9(r,{configuration:e,json:t}){if(!e.get("enableMessageNames"))return"";let n=FA(r===null?0:r);return!t&&r===null?$e(e,n,"grey"):n}function qR(r,{configuration:e,json:t}){let i=c9(r,{configuration:e,json:t});if(!i||r===null||r===0)return i;let n=Ct[r],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return If(e,i,s)}var Ge=class extends vi{constructor({configuration:t,stdout:i,json:n=!1,includePrefix:s=!0,includeFooter:o=!0,includeLogs:a=!n,includeInfos:l=a,includeWarnings:c=a,forgettableBufferSize:u=hRe,forgettableNames:g=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errors=[];this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(Xd(this,{configuration:t}),this.configuration=t,this.forgettableBufferSize=u,this.forgettableNames=new Set([...g,...fRe]),this.includePrefix=s,this.includeFooter=o,this.includeInfos=l,this.includeWarnings=c,this.json=n,this.stdout=i,t.get("enableProgressBars")&&!n&&i.isTTY&&i.columns>22){let f=t.get("progressBarStyle")||CRe;if(!Object.prototype.hasOwnProperty.call(NB,f))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=NB[f];let h=12,p=Math.max(0,Math.min(i.columns-h,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*p/80)}}static async start(t,i){let n=new this(t),s=process.emitWarning;process.emitWarning=(o,a)=>{if(typeof o!="string"){let c=o;o=c.message,a=a!=null?a:c.name}let l=typeof a<"u"?`${a}: ${o}`:o;n.reportWarning(0,l)};try{await i(n)}catch(o){n.reportExceptionOnce(o)}finally{await n.finalize(),process.emitWarning=s}return n}hasErrors(){return this.errors.length>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){this.cacheHitCount+=1}reportCacheMiss(t,i){this.lastCacheMiss=t,this.cacheMissCount+=1,typeof i<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,i)}startSectionSync({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}async startSectionPromise({reportHeader:t,reportFooter:i,skipIfEmpty:n},s){let o={committed:!1,action:()=>{t==null||t()}};n?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(i==null||i(l-a))}}startTimerImpl(t,i,n){return{cb:typeof i=="function"?i:n,reportHeader:()=>{this.reportInfo(null,`\u250C ${t}`),this.indent+=1,RB!==null&&!this.json&&this.includeInfos&&this.stdout.write(RB.start(t))},reportFooter:a=>{if(this.indent-=1,RB!==null&&!this.json&&this.includeInfos){this.stdout.write(RB.end(t));for(let[l,c]of this.errors)this.reportErrorImpl(l,c)}this.configuration.get("enableTimers")&&a>200?this.reportInfo(null,`\u2514 Completed in ${$e(this.configuration,a,Ue.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof i=="function"?{}:i).skipIfEmpty}}startTimerSync(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionSync(o,s)}async startTimerPromise(t,i,n){let{cb:s,...o}=this.startTimerImpl(t,i,n);return this.startSectionPromise(o,s)}async startCacheReport(t){let i=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await t()}catch(n){throw this.reportExceptionOnce(n),n}finally{i!==null&&this.reportCacheChanges(i)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(t,i){if(!this.includeInfos)return;this.commit();let n=this.formatNameWithHyperlink(t),s=n?`${n}: `:"",o=`${this.formatPrefix(s,"blueBright")}${i}`;if(this.json)this.reportJson({type:"info",name:t,displayName:this.formatName(t),indent:this.formatIndent(),data:i});else if(this.forgettableNames.has(t))if(this.forgettableLines.push(o),this.forgettableLines.length>this.forgettableBufferSize){for(;thi Line truncated
`),this.writeProgress()}writeLineWithForgettableReset(t,{truncate:i}={}){this.forgettableLines=[],this.writeLine(t,{truncate:i})}writeLines(t,{truncate:i}={}){this.clearProgress({delta:t.length});for(let n of t)this.stdout.write(`${this.truncate(n,{truncate:i})}
`);this.writeProgress()}reportCacheChanges({cacheHitCount:t,cacheMissCount:i}){let n=this.cacheHitCount-t,s=this.cacheMissCount-i;if(n===0&&s===0)return;let o="";this.cacheHitCount>1?o+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?o+=" - one package was already cached":o+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?o+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(o+=`, one had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?o+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(o+=` - one package had to be fetched (${mt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,o)}commit(){let t=this.uncommitted;this.uncommitted=new Set;for(let i of t)i.committed=!0,i.action()}clearProgress({delta:t=0,clear:i=!1}){this.progressStyle!==null&&this.progress.size+t>0&&(this.stdout.write(`\x1B[${this.progress.size+t}A`),(t>0||i)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let t=Date.now();t-this.progressTime>a9&&(this.progressFrame=(this.progressFrame+1)%o9.length,this.progressTime=t);let i=o9[this.progressFrame];for(let n of this.progress.values()){let s="";if(typeof n.lastScaledSize<"u"){let c=this.progressStyle.chars[0].repeat(n.lastScaledSize),u=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-n.lastScaledSize);s=` ${c}${u}`}let o=this.formatName(null),a=o?`${o}: `:"",l=n.definition.title?` ${n.definition.title}`:"";this.stdout.write(`${$e(this.configuration,"\u27A4","blueBright")} ${a}${i}${s}${l}
`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},a9)}refreshProgress({delta:t=0,force:i=!1}={}){let n=!1,s=!1;if(i||this.progress.size===0)n=!0;else for(let o of this.progress.values()){let a=typeof o.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*o.definition.progress):void 0,l=o.lastScaledSize;o.lastScaledSize=a;let c=o.lastTitle;if(o.lastTitle=o.definition.title,a!==l||(s=c!==o.definition.title)){n=!0;break}}n&&(this.clearProgress({delta:t,clear:s}),this.writeProgress())}truncate(t,{truncate:i}={}){return this.progressStyle===null&&(i=!1),typeof i>"u"&&(i=this.configuration.get("preferTruncatedLines")),i&&(t=(0,l9.default)(t,0,this.stdout.columns-1)),t}formatName(t){return c9(t,{configuration:this.configuration,json:this.json})}formatPrefix(t,i){return this.includePrefix?`${$e(this.configuration,"\u27A4",i)} ${t}${this.formatIndent()}`:""}formatNameWithHyperlink(t){return qR(t,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Tr="3.6.3";var f9=(n=>(n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm",n))(f9||{});async function el(r,e,t,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${t}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await O.writeFilePromise(x.format({dir:r,name:e,ext:".cmd"}),n)}await O.writeFilePromise(x.join(r,e),`#!/bin/sh
exec "${t}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@"
`,{mode:493})}async function h9(r){let e=await ot.tryFind(r);if(e!=null&&e.packageManager){let i=vw(e.packageManager);if(i!=null&&i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManagerField:!0,packageManager:Number(s)===1?"Yarn Classic":"Yarn",reason:n};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:n};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:n}}}}let t;try{t=await O.readFilePromise(x.join(r,xt.lockfile),"utf8")}catch{}return t!==void 0?t.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:O.existsSync(x.join(r,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:O.existsSync(x.join(r,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function FC({project:r,locator:e,binFolder:t,ignoreCorepack:i,lifecycleScript:n}){var c,u;let s={};for(let[g,f]of Object.entries(process.env))typeof f<"u"&&(s[g.toLowerCase()!=="path"?g:"PATH"]=f);let o=K.fromPortablePath(t);s.BERRY_BIN_FOLDER=K.fromPortablePath(o);let a=process.env.COREPACK_ROOT&&!i?K.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([el(t,"node",process.execPath),...Tr!==null?[el(t,"run",process.execPath,[a,"run"]),el(t,"yarn",process.execPath,[a]),el(t,"yarnpkg",process.execPath,[a]),el(t,"node-gyp",process.execPath,[a,"run","--top-level","node-gyp"])]:[]]),r&&(s.INIT_CWD=K.fromPortablePath(r.configuration.startingCwd),s.PROJECT_CWD=K.fromPortablePath(r.cwd)),s.PATH=s.PATH?`${o}${K.delimiter}${s.PATH}`:`${o}`,s.npm_execpath=`${o}${K.sep}yarn`,s.npm_node_execpath=`${o}${K.sep}node`,e){if(!r)throw new Error("Assertion failed: Missing project");let g=r.tryWorkspaceByLocator(e),f=g?(c=g.manifest.version)!=null?c:"":(u=r.storedPackages.get(e.locatorHash).version)!=null?u:"";s.npm_package_name=Mt(e),s.npm_package_version=f;let h;if(g)h=g.cwd;else{let p=r.storedPackages.get(e.locatorHash);if(!p)throw new Error(`Package for ${mt(r.configuration,e)} not found in the project`);let C=r.configuration.getLinkers(),y={project:r,report:new Ge({stdout:new tl.PassThrough,configuration:r.configuration})},B=C.find(v=>v.supportsPackage(p,y));if(!B)throw new Error(`The package ${mt(r.configuration,p)} isn't supported by any of the available linkers`);h=await B.findPackageLocation(p,y)}s.npm_package_json=K.fromPortablePath(x.join(h,xt.manifest))}let l=Tr!==null?`yarn/${Tr}`:`yarn/${mf("@yarnpkg/core").version}-core`;return s.npm_config_user_agent=`${l} npm/? node/${process.version} ${process.platform} ${process.arch}`,n&&(s.npm_lifecycle_event=n),r&&await r.configuration.triggerHook(g=>g.setupScriptEnvironment,r,s,async(g,f,h)=>await el(t,Jr(g),f,h)),s}var mRe=2,ERe=(0,g9.default)(mRe);async function IRe(r,e,{configuration:t,report:i,workspace:n=null,locator:s=null}){await ERe(async()=>{await O.mktempPromise(async o=>{let a=x.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=t.getSubprocessStreams(a,{prefix:K.fromPortablePath(r),report:i}),g=s&&qo(s)?nC(s):s,f=g?Es(g):"an external project";c.write(`Packing ${f} from sources
`);let h=await h9(r),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason}
`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn
`),p="Yarn");let C=p==="Yarn"&&!(h!=null&&h.packageManagerField);await O.mktempPromise(async y=>{let B=await FC({binFolder:y,ignoreCorepack:C}),D=new Map([["Yarn Classic",async()=>{let H=n!==null?["workspace",n]:[],j=x.join(r,xt.manifest),$=await O.readFilePromise(j),V=await oo(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(V.code!==0)return V.code;await O.writeFilePromise(j,$),await O.appendFilePromise(x.join(r,".npmignore"),`/.yarn
`),c.write(`
`),delete B.NODE_ENV;let W=await oo("yarn",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(W.code!==0)return W.code;c.write(`
`);let _=await oo("yarn",[...H,"pack","--filename",K.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return _.code!==0?_.code:0}],["Yarn",async()=>{let H=n!==null?["workspace",n]:[];B.YARN_ENABLE_INLINE_BUILDS="1";let j=x.join(r,xt.lockfile);await O.existsPromise(j)||await O.writeFilePromise(j,"");let $=await oo("yarn",[...H,"pack","--install-if-needed","--filename",K.fromPortablePath(e)],{cwd:r,env:B,stdin:l,stdout:c,stderr:u});return $.code!==0?$.code:0}],["npm",async()=>{if(n!==null){let Ae=new tl.PassThrough,ge=Cf(Ae);Ae.pipe(c,{end:!1});let re=await oo("npm",["--version"],{cwd:r,env:B,stdin:l,stdout:Ae,stderr:u,end:0});if(Ae.end(),re.code!==0)return c.end(),u.end(),re.code;let M=(await ge).toString().trim();if(!kc(M,">=7.x")){let F=Jo(null,"npm"),ue=_t(F,M),pe=_t(F,">=7.x");throw new Error(`Workspaces aren't supported by ${tr(t,ue)}; please upgrade to ${tr(t,pe)} (npm has been detected as the primary package manager for ${$e(t,r,Ue.PATH)})`)}}let H=n!==null?["--workspace",n]:[];delete B.npm_config_user_agent,delete B.npm_config_production,delete B.NPM_CONFIG_PRODUCTION,delete B.NODE_ENV;let j=await oo("npm",["install"],{cwd:r,env:B,stdin:l,stdout:c,stderr:u,end:1});if(j.code!==0)return j.code;let $=new tl.PassThrough,V=Cf($);$.pipe(c);let W=await oo("npm",["pack","--silent",...H],{cwd:r,env:B,stdin:l,stdout:$,stderr:u});if(W.code!==0)return W.code;let _=(await V).toString().trim().replace(/^.*\n/s,""),A=x.resolve(r,K.toPortablePath(_));return await O.renamePromise(A,e),0}]]).get(p);if(typeof D>"u")throw new Error("Assertion failed: Unsupported workflow");let T=await D();if(!(T===0||typeof T>"u"))throw O.detachTemp(o),new at(58,`Packing the package failed (exit code ${T}, logs can be found here: ${$e(t,a,Ue.PATH)})`)})})})}async function yRe(r,e,{project:t}){let i=t.tryWorkspaceByLocator(r);if(i!==null)return WR(i,e);let n=t.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t.configuration,r)} not found in the project`);return await Kn.openPromise(async s=>{let o=t.configuration,a=t.configuration.getLinkers(),l={project:t,report:new Ge({stdout:new tl.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${mt(t.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new qt(u,{baseFs:s});return(await ot.find(Me.dot,{baseFs:g})).scripts.has(e)},{libzip:await an()})}async function TB(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await O.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await p9(r,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f>"u")return 1;let h=async()=>await xB(f,t,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(C=>C.wrapScriptExecution,h,n,r,e,{script:f,args:t,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function JR(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await O.mktempPromise(async l=>{let{env:c,cwd:u}=await p9(r,{project:n,binFolder:l,cwd:i});return await xB(e,t,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function wRe(r,{binFolder:e,cwd:t,lifecycleScript:i}){let n=await FC({project:r.project,locator:r.anchoredLocator,binFolder:e,lifecycleScript:i});return await VR(e,await m9(r)),typeof t>"u"&&(t=x.dirname(await O.realpathPromise(x.join(r.cwd,"package.json")))),{manifest:r.manifest,binFolder:e,env:n,cwd:t}}async function p9(r,{project:e,binFolder:t,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(r);if(s!==null)return wRe(s,{binFolder:t,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(r.locatorHash);if(!o)throw new Error(`Package for ${mt(e.configuration,r)} not found in the project`);return await Kn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Ge({stdout:new tl.PassThrough,configuration:l})},g=c.find(y=>y.supportsPackage(o,u));if(!g)throw new Error(`The package ${mt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await FC({project:e,locator:r,binFolder:t,lifecycleScript:n});await VR(t,await LB(r,{project:e}));let h=await g.findPackageLocation(o,u),p=new qt(h,{baseFs:a}),C=await ot.find(Me.dot,{baseFs:p});return typeof i>"u"&&(i=h),{manifest:C,binFolder:t,env:f,cwd:i}},{libzip:await an()})}async function d9(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o}){return await TB(r.anchoredLocator,e,t,{cwd:i,project:r.project,stdin:n,stdout:s,stderr:o})}function WR(r,e){return r.manifest.scripts.has(e)}async function C9(r,e,{cwd:t,report:i}){let{configuration:n}=r.project,s=null;await O.mktempPromise(async o=>{let a=x.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${K.fromPortablePath(r.cwd)}")
`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:mt(n,r.anchoredLocator),header:l});i.reportInfo(36,`Calling the "${e}" lifecycle script`);let g=await d9(r,e,[],{cwd:t,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw O.detachTemp(o),new at(36,`${(0,u9.default)(e)} script failed (exit code ${$e(n,g,Ue.NUMBER)}, logs can be found here: ${$e(n,a,Ue.PATH)}); run ${$e(n,`yarn ${e}`,Ue.CODE)} to investigate`)})}async function BRe(r,e,t){WR(r,e)&&await C9(r,e,t)}function zR(r){let e=x.extname(r);if(e.match(/\.[cm]?[jt]sx?$/))return!0;if(e===".exe"||e===".bin")return!1;let t=Buffer.alloc(4),i;try{i=O.openSync(r,"r")}catch{return!0}try{O.readSync(i,t,0,t.length,0)}finally{O.closeSync(i)}let n=t.readUint32BE();return!(n===3405691582||n===3489328638||n===2135247942||(n&4294901760)===1297743872)}async function LB(r,{project:e}){let t=e.configuration,i=new Map,n=e.storedPackages.get(r.locatorHash);if(!n)throw new Error(`Package for ${mt(t,r)} not found in the project`);let s=new tl.Writable,o=t.getLinkers(),a={project:e,report:new Ge({configuration:t,stdout:s})},l=new Set([r.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${tr(t,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return Ho.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return Ho.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return Ho.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===Ho.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin){let C=x.resolve(f,p);i.set(h,[g,K.fromPortablePath(C),zR(C)])}}return i}async function m9(r){return await LB(r.anchoredLocator,{project:r.project})}async function VR(r,e){await Promise.all(Array.from(e,([t,[,i,n]])=>n?el(r,Jr(t),process.execPath,[i]):el(r,Jr(t),i,[])))}async function E9(r,e,t,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await LB(r,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${mt(n.configuration,r)}`);return await O.mktempPromise(async g=>{let[,f]=u,h=await FC({project:n,locator:r,binFolder:g});await VR(h.BERRY_BIN_FOLDER,c);let p=zR(K.toPortablePath(f))?oo(process.execPath,[...l,f,...t],{cwd:i,env:h,stdin:s,stdout:o,stderr:a}):oo(f,t,{cwd:i,env:h,stdin:s,stdout:o,stderr:a}),C;try{C=await p}finally{await O.removePromise(h.BERRY_BIN_FOLDER)}return C.code})}async function bRe(r,e,t,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await E9(r.anchoredLocator,e,t,{project:r.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var mi={};ut(mi,{convertToZip:()=>ZNe,extractArchiveTo:()=>$Ne,makeArchiveFromDirectory:()=>XNe});var lZ=J("stream"),cZ=Pe(iZ());var nZ=Pe(Jg()),sZ=J("worker_threads");var hl=Symbol("kTaskInfo"),L0=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,nZ.default)(ek());this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let t=this.workers.pop();t?t.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new sZ.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",t=>{if(!e[hl])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[hl].resolve(t),e[hl]=null,e.unref(),this.workers.push(e)}),e.on("error",t=>{var i;(i=e[hl])==null||i.reject(t),e[hl]=null}),e.on("exit",t=>{var i;t!==0&&((i=e[hl])==null||i.reject(new Error(`Worker exited with code ${t}`))),e[hl]=null}),e}run(e){return this.limit(()=>{var i;let t=(i=this.workers.pop())!=null?i:this.createWorker();return t.ref(),new Promise((n,s)=>{t[hl]={resolve:n,reject:s},t.postMessage(e)})})}};var uZ=Pe(aZ());async function XNe(r,{baseFs:e=new $t,prefixPath:t=Me.root,compressionLevel:i,inMemory:n=!1}={}){let s=await an(),o;if(n)o=new Wr(null,{libzip:s,level:i});else{let l=await O.mktempPromise(),c=x.join(l,"archive.zip");o=new Wr(c,{create:!0,libzip:s,level:i})}let a=x.resolve(Me.root,t);return await o.copyPromise(a,r,{baseFs:e,stableTime:!0,stableSort:!0}),o}var AZ;async function ZNe(r,e){let t=await O.mktempPromise(),i=x.join(t,"archive.zip");return AZ||(AZ=new L0((0,uZ.getContent)())),await AZ.run({tmpFile:i,tgz:r,opts:e}),new Wr(i,{libzip:await an(),level:e.compressionLevel})}async function*_Ne(r){let e=new cZ.default.Parse,t=new lZ.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{t.write(i)}),e.on("error",i=>{t.destroy(i)}),e.on("close",()=>{t.destroyed||t.end()}),e.end(r);for await(let i of t){let n=i;yield n,n.resume()}}async function $Ne(r,e,{stripComponents:t=0,p Line truncated
`);return}let s=(0,hZ.asTree)(pZ(r,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502
$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502
$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");t.write(s)}var mZ=J("crypto"),kN=Pe(J("fs"));var tTe=8,Rt=class{constructor(e,{configuration:t,immutable:i=t.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,mZ.randomBytes)(8).toString("hex")}.tmp`;this.configuration=t,this.cwd=e,this.immutable=i,this.check=n;let s=t.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=t.get("compressionLevel"),a=o!==Xl?`c${o}`:"";this.cacheKey=[tTe,a].join("")}}static async find(e,{immutable:t,check:i}={}){let n=new Rt(e.get("cacheFolder"),{configuration:e,immutable:t,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${xf(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,t){let n=rTe(t).slice(0,10);return`${xf(e)}-${n}.zip`}getLocatorPath(e,t,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?x.resolve(this.cwd,this.getVersionFilename(e)):t===null||DN(t)!==this.cacheKey?null:x.resolve(this.cwd,this.getChecksumFilename(e,t))}getLocatorMirrorPath(e){let t=this.mirrorCwd;return t!==null?x.resolve(t,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await O.existsPromise(this.cwd))throw new at(56,"Cache path does not exist.")}else{await O.mkdirPromise(this.cwd,{recursive:!0});let e=x.resolve(this.cwd,".gitignore");await O.changeFilePromise(e,`/.gitignore
*.flock
*.tmp
`)}(this.mirrorCwd||!this.immutable)&&await O.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,t,{onHit:i,onMiss:n,loader:s,...o}){var W;let a=this.getLocatorMirrorPath(e),l=new $t,c=()=>{let _=new Wr(null,{libzip:D}),A=x.join(Me.root,qD(e));return _.mkdirSync(A,{recursive:!0}),_.writeJsonSync(x.join(A,xt.manifest),{name:Mt(e),mocked:!0}),_},u=async(_,A=null)=>{var ge;if(A===null&&((ge=o.unstablePackages)==null?void 0:ge.has(e.locatorHash)))return{isValid:!0,hash:null};let Ae=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await bw(_)}`:t;if(A!==null){let re=!o.skipIntegrityCheck||!t?`${this.cacheKey}/${await bw(A)}`:t;if(Ae!==re)throw new at(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(t!==null&&Ae!==t){let re;switch(this.check?re="throw":DN(t)!==DN(Ae)?re="update":re=this.configuration.get("checksumBehavior"),re){case"ignore":return{isValid:!0,hash:t};case"update":return{isValid:!0,hash:Ae};case"reset":return{isValid:!1,hash:t};default:case"throw":throw new at(18,"The remote archive doesn't match the expected checksum")}}return{isValid:!0,hash:Ae}},g=async _=>{if(!s)throw new Error(`Cache check required but no loader configured for ${mt(this.configuration,e)}`);let A=await s(),Ae=A.getRealPath();A.saveAndClose(),await O.chmodPromise(Ae,420);let ge=await u(_,Ae);if(!ge.isValid)throw new Error("Assertion failed: Expected a valid checksum");return ge.hash},f=async()=>{if(a===null||!await O.existsPromise(a)){let _=await s(),A=_.getRealPath();return _.saveAndClose(),{source:"loader",path:A}}return{source:"mirror",path:a}},h=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${mt(this.configuration,e)}`);if(this.immutable)throw new at(56,`Cache entry required but missing for ${mt(this.configuration,e)}`);let{path:_,source:A}=await f(),Ae=(await u(_)).hash,ge=this.getLocatorPath(e,Ae,o);if(!ge)throw new Error("Assertion failed: Expected the cache path to be available");let re=[];A!=="mirror"&&a!==null&&re.push(async()=>{let F=`${a}${this.cacheId}`;await O.copyFilePromise(_,F,kN.default.constants.COPYFILE_FICLONE),await O.chmodPromise(F,420),await O.renamePromise(F,a)}),(!o.mirrorWriteOnly||a===null)&&re.push(async()=>{let F=`${ge}${this.cacheId}`;await O.copyFilePromise(_,F,kN.default.constants.COPYFILE_FICLONE),await O.chmodPromise(F,420),await O.renamePromise(F,ge)});let M=o.mirrorWriteOnly&&a!=null?a:ge;return await Promise.all(re.map(F=>F())),[!1,M,Ae]},p=async()=>{let A=(async()=>{var ue;let Ae=this.getLocatorPath(e,t,o),ge=Ae!==null?await l.existsPromise(Ae):!1,re=!!((ue=o.mockedPackages)!=null&&ue.has(e.locatorHash))&&(!this.check||!ge),M=re||ge,F=M?i:n;if(F&&F(),M){let pe=null,ke=Ae;if(!re)if(this.check)pe=await g(ke);else{let Fe=await u(ke);if(Fe.isValid)pe=Fe.hash;else return h()}return[re,ke,pe]}else return h()})();this.mutexes.set(e.locatorHash,A);try{return await A}finally{this.mutexes.delete(e.locatorHash)}};for(let _;_=this.mutexes.get(e.locatorHash);)await _;let[C,y,B]=await p();this.markedFiles.add(y);let v,D=await an(),T=C?()=>c():()=>new Wr(y,{baseFs:l,libzip:D,readOnly:!0}),H=new Sg(()=>Jx(()=>v=T(),_=>`Failed to open the cache entry for ${mt(this.configuration,e)}: ${_}`),x),j=new So(y,{baseFs:H,pathUtils:x}),$=()=>{v==null||v.discardAndClose()},V=(W=o.unstablePackages)!=null&&W.has(e.locatorHash)?null:B;return[j,$,V]}};function DN(r){let e=r.indexOf("/");return e!==-1?r.slice(0,e):null}function rTe(r){let e=r.indexOf("/");return e!==-1?r.slice(e+1):r}var M0=(t=>(t[t.SCRIPT=0]="SCRIPT",t[t.SHELLCODE=1]="SHELLCODE",t))(M0||{});var ra=class extends vi{constructor({configuration:t,stdout:i,suggestInstall:n=!0}){super();this.errorCount=0;Xd(this,{configuration:t}),this.configuration=t,this.stdout=i,this.suggestInstall=n}static async start(t,i){let n=new this(t);try{await i(n)}catch(s){n.reportExceptionOnce(s)}finally{await n.finalize()}return n}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,i){return i()}async startSectionPromise(t,i){return await i()}startTimerSync(t,i,n){return(typeof i=="function"?i:n)()}async startTimerPromise(t,i,n){return await(typeof i=="function"?i:n)()}async startCacheReport(t){return await t()}reportSeparator(){}reportInfo(t,i){}reportWarning(t,i){}reportError(t,i){this.errorCount+=1,this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(t)}: ${i}
`)}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}async finalize(){this.errorCount>0&&(this.stdout.write(`
`),this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command.
`),this.suggestInstall&&this.stdout.write(`${$e(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help.
`))}formatNameWithHyperlink(t){return qR(t,{configuration:this.configuration,json:!1})}};var X0=J("crypto");function rA(){}rA.prototype={diff:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(C){return n?(setTimeout(function(){n(void 0,C)},0),!0):C}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e)),t=this.removeEmpty(this.tokenize(t));var a=t.length,l=e.length,c=1,u=a+l;i.maxEditLength&&(u=Math.min(u,i.maxEditLength));var g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],t,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(t),count:t.length}]);function h(){for(var C=-1*c;C<=c;C+=2){var y=void 0,B=g[C-1],v=g[C+1],D=(v?v.newPos:0)-C;B&&(g[C-1]=void 0);var T=B&&B.newPos+1<a,H=v&&0<=D&&D<l;if(!T&&!H){g[C]=void 0;continue}if(!T||H&&B.newPos<v.newPos?(y=nTe(v),s.pushComponent(y.components,void 0,!0)):(y=B,y.newPos++,s.pushComponent(y.components,!0,void 0)),D=s.extractCommon(y,t,e,C),y.newPos+1>=a&&D+1>=l)return o(iTe(s,y.components,t,e,s.useLongestToken));g[C]=y}c++}if(n)(function C(){setTimeout(function(){if(c>u)return n();h()||C()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,t,i){var n=e[e.length-1];n&&n.added===t&&n.removed===i?e[e.length-1]={count:n.count+1,added:t,removed:i}:e.push({count:1,added:t,removed:i})},extractCommon:function(e,t,i,n){for(var s=t.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1<s&&l+1<o&&this.equals(t[a+1],i[l+1]);)a++,l++,c++;return c&&e.components.push({count:c}),e.newPos=a,l},equals:function(e,t){return this.options.comparator?this.options.comparator(e,t):e===t||this.options.ignoreCase&&e.toLowerCase()===t.toLowerCase()},removeEmpty:function(e){for(var t=[],i=0;i<e.length;i++)e[i]&&t.push(e[i]);return t},castInput:function(e){return e},tokenize:function(e){return e.split("")},join:function(e){return e.join("")}};function iTe(r,e,t,i,n){for(var s=0,o=e.length,a=0,l=0;s<o;s++){var c=e[s];if(c.removed){if(c.value=r.join(i.slice(l,l+c.count)),l+=c.count,s&&e[s-1].added){var g=e[s-1];e[s-1]=e[s],e[s]=g}}else{if(!c.added&&n){var u=t.slice(a,a+c.count);u=u.map(function(h,p){var C=i[l+p];return C.length>h.length?C:h}),c.value=r.join(u)}else c.value=r.join(t.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&r.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function nTe(r){return{newPos:r.newPos,components:r.components.slice(0)}}var Oat=new rA;var EZ=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,IZ=/\S/,yZ=new rA;yZ.equals=function(r,e){return this.options.ignoreCase&&(r=r.toLowerCase(),e=e.toLowerCase()),r===e||this.options.ignoreWhitespace&&!IZ.test(r)&&!IZ.test(e)};yZ.tokenize=function(r){for(var e=r.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;t<e.length-1;t++)!e[t+1]&&e[t+2]&&EZ.test(e[t])&&EZ.test(e[t+2])&&(e[t]+=e[t+2],e.splice(t+1,2),t--);return e};var LN=new rA;LN.tokenize=function(r){var e=[],t=r.split(/(\n|\r\n)/);t[t.length-1]||t.pop();for(var i=0;i<t.length;i++){var n=t[i];i%2&&!this.options.newlineIsToken?e[e.length-1]+=n:(this.options.ignoreWhitespace&&(n=n.trim()),e.push(n))}return e};function sTe(r,e,t){return LN.diff(r,e,t)}var oTe=new rA;oTe.tokenize=function(r){return r.split(/(\S.+?[.!?])(?=\s+|$)/)};var aTe=new rA;aTe.tokenize=function(r){return r.split(/([{}:;,]|\s+)/)};function O0(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O0=function(e){return typeof e}:O0=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O0(r)}function RN(r){return ATe(r)||lTe(r)||cTe(r)||uTe()}function ATe(r){if(Array.isArray(r))return FN(r)}function lTe(r){if(typeof Symbol<"u"&&Symbol.iterator in Object(r))return Array.from(r)}function cTe(r,e){if(!!r){if(typeof r=="string")return FN(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);if(t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set")return Array.from(r);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return FN(r,e)}}function FN(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,i=new Array(e);t<e;t++)i[t]=r[t];return i}function uTe(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var gTe=Object.prototype.toString,ZC=new rA;ZC.useLongestToken=!0;ZC.tokenize=LN.tokenize;ZC.castInput=function(r){var e=this.options,t=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o>"u"?t:o}:i;return typeof r=="string"?r:JSON.stringify(NN(r,null,null,n),n," ")};ZC.equals=function(r,e){return rA.prototype.equals.call(ZC,r.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function NN(r,e,t,i,n){e=e||[],t=t||[],i&&(r=i(n,r));var s;for(s=0;s<e.length;s+=1)if(e[s]===r)return t[s];var o;if(gTe.call(r)==="[object Array]"){for(e.push(r),o=new Array(r.length),t.push(o),s=0;s<r.length;s+=1)o[s]=NN(r[s],e,t,i,n);return e.pop(),t.pop(),o}if(r&&r.toJSON&&(r=r.toJSON()),O0(r)==="object"&&r!==null){e.push(r),o={},t.push(o);var a=[],l;for(l in r)r.hasOwnProperty(l)&&a.push(l);for(a.sort(),s=0;s<a.length;s+=1)l=a[s],o[l]=NN(r[l],e,t,i,l);e.pop(),t.pop()}else o=r;return o}var TN=new rA;TN.tokenize=function(r){return r.slice()};TN.join=TN.removeEmpty=function(r){return r};function wZ(r,e,t,i,n,s,o){o||(o={}),typeof o.context>"u"&&(o.context=4);var a=sTe(t,i,o);if(!a)return;a.push({value:"",lines:[]});function l(B){return B.map(function(v){return" "+v})}for(var c=[],u=0,g=0,f=[],h=1,p=1,C=function(v){var D=a[v],T=D.lines||D.value.replace(/\n$/,"").split(`
`);if(D.lines=T,D.added||D.removed){var H;if(!u){var j=a[v-1];u=h,g=p,j&&(f=o.context>0?l(j.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,RN(T.map(function(re){return(D.added?"+":"-")+re}))),D.added?p+=T.length:h+=T.length}else{if(u)if(T.length<=o.context*2&&v<a.length-2){var $;($=f).push.apply($,RN(l(T)))}else{var V,W=Math.min(T.length,o.context);(V=f).push.apply(V,RN(l(T.slice(0,W))));var _={oldStart:u,oldLines:h-u+W,newStart:g,newLines:p-g+W,lines:f};if(v>=a.length-2&&T.length<=o.context){var A=/\n$/.test(t),Ae=/\n$/.test(i),ge=T.length==0&&f.length>_.oldLines;!A&&ge&&t.length>0&&f.splice(_.oldLines,0,"\\ No newline at end of file"),(!A&&!ge||!Ae)&&f.push("\\ No newline at end of file")}c.push(_),u=0,g=0,f=[]}h+=T.length,p+=T.length}},y=0;y<a.length;y++)C(y);return{oldFileName:r,newFileName:e,oldHeader:n,newHeader:s,hunks:c}}var Z0=Pe(x$()),_0=Pe(Jg()),F$=Pe(Xr()),zN=J("util"),WN=Pe(J("v8")),VN=Pe(J("zlib"));var UOe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(r,e,t,i)=>`${t}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(r,e,t="",i,n)=>`https://${t}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,r=>`npm:${r}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,r=>`npm:${r}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(r,e)=>xw({protocol:"npm:",source:null,selector:r,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,r=>`npm:${r}`]],W0=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:t}){let i=x.join(e.cwd,e.configuration.get("lockfileFilename"));if(!O.existsSync(i))return;let n=await O.readFilePromise(i,"utf8"),s=yi(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=aC(a);if(!l){t.reportWarning(14,`Failed to parse the string "${a}" into a proper descriptor`);continue}let c=so(l.range)?_t(l,`npm:${l.range}`):l,{version:u,resolved:g}=s[a];if(!g)continue;let f;for(let[p,C]of UOe){let y=g.match(p);if(y){f=C(u,...y);break}}if(!f){t.reportWarning(14,`${tr(e.configuration,c)}: Only some patterns can be imported from legacy lockfiles (not "${g}")`);continue}let h=c;try{let p=vf(c.range),C=aC(p.selector,!0);C&&(h=C)}catch{}o.set(c.descriptorHash,nn(h,f))}}supportsDescriptor(e,t){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return await this.resolver.getCandidates(HD(n),t,i)}async getSatisfying(e,t,i){return null}async resolve(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var z0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return!!(t.project.storedResolutions.get(e.descriptorHash)||t.project.originalPackages.has(Sw(e).locatorHash))}supportsLocator(e,t){return!!(t.project.originalPackages.has(e.locatorHash)&&!t.project.lockfileNeedsRefresh)}shouldPersistResolution(e,t){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,i){let n=i.project.originalPackages.get(Sw(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,t,i){return null}async resolve(e,t){let i=t.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var V0=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return this.resolver.supportsDescriptor(e,t)}supportsLocator(e,t){return this.resolver.supportsLocator(e,t)}shouldPersistResolution(e,t){return this.resolver.shouldPersistResolution(e,t)}bindDescriptor(e,t,i){return this.re Line truncated
`;await O.changeFilePromise(t,i,{automaticNewlines:!0}),this.manifest.raw=e}};var D$=6,HOe=1,GOe=/ *, */g,k$=/\/$/,YOe=32,jOe=(0,zN.promisify)(VN.default.gzip),qOe=(0,zN.promisify)(VN.default.gunzip),ts=(t=>(t.UpdateLockfile="update-lockfile",t.SkipBuild="skip-build",t))(ts||{}),JN={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},R$=r=>rn(`${HOe}`,r),je=class{constructor(e,{configuration:t}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=t,this.cwd=e}static async find(e,t){var p,C,y;if(!e.projectCwd)throw new Qe(`No project found in ${t}`);let i=e.projectCwd,n=t,s=null;for(;s!==e.projectCwd;){if(s=n,O.existsSync(x.join(s,xt.manifest))){i=s;break}n=x.dirname(s)}let o=new je(e.projectCwd,{configuration:e});(p=ye.telemetry)==null||p.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(C=ye.telemetry)==null||C.reportWorkspaceCount(o.workspaces.length),(y=ye.telemetry)==null||y.reportDependencyCount(o.workspaces.reduce((B,v)=>B+v.manifest.dependencies.size+v.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};let c=$e(e,o.cwd,Ue.PATH),u=$e(e,x.relative(o.cwd,i),Ue.PATH),g=`- If ${c} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,f=`- If ${c} is intended to be a project, it might be that you forgot to list ${u} in its workspace configuration.`,h=`- Finally, if ${c} is fine and you intend ${u} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new Qe(`The nearest package directory (${$e(e,i,Ue.PATH)}) doesn't seem to be part of the project declared in ${$e(e,o.cwd,Ue.PATH)}.
${[g,f,h].join(`
`)}`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t=this.configuration.get("defaultLanguageName");if(O.existsSync(e)){let n=await O.readFilePromise(e,"utf8");this.lockFileChecksum=R$(n);let s=yi(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o<D$;for(let l of Object.keys(s)){if(l==="__metadata")continue;let c=s[l];if(typeof c.resolution>"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${l})`);let u=Dc(c.resolution,!0),g=new ot;g.load(c,{yamlCompatibilityMode:!0});let f=g.version,h=g.languageName||t,p=c.linkType.toUpperCase(),C=(i=c.conditions)!=null?i:null,y=g.dependencies,B=g.peerDependencies,v=g.dependenciesMeta,D=g.peerDependenciesMeta,T=g.bin;if(c.checksum!=null){let j=typeof a<"u"&&!c.checksum.includes("/")?`${a}/${c.checksum}`:c.checksum;this.storedChecksums.set(u.locatorHash,j)}let H={...u,version:f,languageName:h,linkType:p,conditions:C,dependencies:y,peerDependencies:B,dependenciesMeta:v,peerDependenciesMeta:D,bin:T};this.originalPackages.set(H.locatorHash,H);for(let j of l.split(GOe)){let $=WA(j);this.storedDescriptors.set($.descriptorHash,$),this.storedResolutions.set($.descriptorHash,u.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,t=(0,_0.default)(4),i=async(n,s)=>{if(e.has(s))return n;e.add(s);let o=new Qh(s,{project:this});await t(()=>o.setup());let a=n.then(()=>{this.addWorkspace(o);let l=this.storedPackages.get(o.anchoredLocator.locatorHash);l&&(o.dependencies=l.dependencies)});return Array.from(o.workspacesCwds).reduce(i,a)};await i(Promise.resolve(),this.cwd)}addWorkspace(e){let t=this.workspacesByIdent.get(e.locator.identHash);if(typeof t<"u")throw new Error(`Duplicate workspace name ${Ai(this.configuration,e.locator)}: ${K.fromPortablePath(e.cwd)} conflicts with ${K.fromPortablePath(t.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.locator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){x.isAbsolute(e)||(e=x.resolve(this.cwd,e)),e=x.normalize(e).replace(/\/+$/,"");let t=this.workspacesByCwd.get(e);return t||null}getWorkspaceByCwd(e){let t=this.tryWorkspaceByCwd(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByFilePath(e){let t=null;for(let i of this.workspaces)x.relative(i.cwd,e).startsWith("../")||t&&t.cwd.length>=i.cwd.length||(t=i);return t||null}getWorkspaceByFilePath(e){let t=this.tryWorkspaceByFilePath(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByIdent(e){let t=this.workspacesByIdent.get(e.identHash);return typeof t>"u"?null:t}getWorkspaceByIdent(e){let t=this.tryWorkspaceByIdent(e);if(!t)throw new Error(`Workspace not found (${Ai(this.configuration,e)})`);return t}tryWorkspaceByDescriptor(e){let t=this.tryWorkspaceByIdent(e);return t===null||(JA(e)&&(e=iC(e)),!t.accepts(e.range))?null:t}getWorkspaceByDescriptor(e){let t=this.tryWorkspaceByDescriptor(e);if(t===null)throw new Error(`Workspace not found (${tr(this.configuration,e)})`);return t}tryWorkspaceByLocator(e){let t=this.tryWorkspaceByIdent(e);return t===null||(qo(e)&&(e=nC(e)),t.locator.locatorHash!==e.locatorHash&&t.anchoredLocator.locatorHash!==e.locatorHash)?null:t}getWorkspaceByLocator(e){let t=this.tryWorkspaceByLocator(e);if(!t)throw new Error(`Workspace not found (${mt(this.configuration,e)})`);return t}refreshWorkspaceDependencies(){for(let e of this.workspaces){let t=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${lC(this.configuration,e)} (${$e(this.configuration,x.join(e.cwd,xt.manifest),Ue.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(t.dependencies)}}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let t=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let i=new Set(this.storedResolutions.values());typeof t<"u"&&!i.has(t)&&this.deleteLocator(t)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[t,i]of this.storedResolutions)i===e.locatorHash&&this.deleteDescriptor(t)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),t=new Map;for(let[i,n]of this.storedResolutions.entries()){let s=t.get(n);s||t.set(n,s=new Set),s.add(i)}for(let i of this.originalPackages.values()){let n;try{n=e.shouldPersistResolution(i,{project:this,resolver:e})}catch{n=!1}if(!n){this.deleteLocator(i.locatorHash);let s=t.get(i.locatorHash);if(s){t.delete(i.locatorLine truncated
`;switch(le){case 0:fe+=`# Script name: ${Be}
`;break;case 1:fe+=`# Script code: ${Be}
`;break}let ae=null;if(!await O.mktempPromise(async ne=>{let Y=x.join(ne,"build.log"),{stdout:he,stderr:ie}=this.configuration.getSubprocessStreams(Y,{header:fe,prefix:mt(this.configuration,pe),report:t}),de;try{switch(le){case 0:de=await TB(pe,Be,[],{cwd:oe,project:this,stdin:ae,stdout:he,stderr:ie});break;case 1:de=await JR(pe,Be,[],{cwd:oe,project:this,stdin:ae,stdout:he,stderr:ie});break}}catch(Pt){ie.write(Pt.stack),de=1}if(he.end(),ie.end(),de===0)return!0;O.detachTemp(ne);let _e=`${mt(this.configuration,pe)} couldn't be built successfully (exit code ${$e(this.configuration,de,Ue.NUMBER)}, logs can be found here: ${$e(this.configuration,Y,Ue.PATH)})`;return this.optionalBuilds.has(pe.locatorHash)?(t.reportInfo(9,_e),!0):(t.reportError(9,_e),!1)}))return!1}return!0});F.push(...Ne,Promise.allSettled(Ne).then(oe=>{D.delete(ue),oe.every(le=>le.status==="fulfilled"&&le.value===!0)&&W.set(pe.locatorHash,Fe)}))}if(await io(F),M===D.size){let ue=Array.from(D).map(pe=>{let ke=this.storedPackages.get(pe);if(!ke)throw new Error("Assertion failed: The package should have been registered");return mt(this.configuration,ke)}).join(", ");t.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ue})`);break}}this.storedBuildState=W}async install(e){var a,l;let t=this.configuration.get("nodeLinker");(a=ye.telemetry)==null||a.reportInstall(t),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status="inactive";let i=x.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await O.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new at(28,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=$e(this.configuration,g,Ue.PACKAGE_EXTENSION);switch(g.status){case"inactive":e.report.reportWarning(68,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=Vl(n,this.generateLockfile());if(c!==n){let u=wZ(i,i,n,c,void 0,void 0,{maxEditLength:100});if(u){e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(28,$e(this.configuration,f,Ue.ADDED)):f.startsWith("-")?e.report.reportError(28,$e(this.configuration,f,Ue.REMOVED)):e.report.reportInfo(null,$e(this.configuration,f,"grey"))}e.report.reportSeparator()}throw new at(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status==="active"&&((l=ye.telemetry)==null||l.reportPackageExtension(Bc(g,Ue.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Qw(c,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${$e(this.configuration,"mode=update-lockfile",Ue.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Qw(u,{cwd:this.cwd})));for(let u=0;u<s.length;++u)o[u]!==c[u]&&e.report.reportError(64,`The checksum for ${s[u]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile(),await this.configuration.triggerHook(c=>c.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let t={};t.__metadata={version:D$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>Sn(f)).sort().join(", "),c=new ot;c.version=o. Line truncated
`,`# Manual changes might be lost - proceed with caution!
`].join("")}
`+ba(t)}async persistLockfile(){let e=x.join(this.cwd,this.configuration.get("lockfileFilename")),t="";try{t=await O.readFilePromise(e,"utf8")}catch{}let i=this.generateLockfile(),n=Vl(t,i);n!==t&&(await O.writeFilePromise(e,n),this.lockFileChecksum=R$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(JN))e.push(...o);let t=(0,Z0.default)(this,e),i=WN.default.serialize(t),n=rn(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await O.mkdirPromise(x.dirname(s),{recursive:!0}),await O.writeFilePromise(s,await jOe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:t=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath"),s;try{let o=await qOe(await O.readFilePromise(n));s=WN.default.deserialize(o),this.installStateChecksum=rn(o)}catch{t&&await this.applyLightResolution();return}e&&typeof s.installersCustomData<"u"&&(this.installersCustomData=s.installersCustomData),i&&Object.assign(this,(0,Z0.default)(s,JN.restoreBuildState)),t&&(s.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,Z0.default)(s,JN.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ti}),await this.persistInstallStateFile()}async persist(){let e=(0,_0.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(t=>e(()=>t.persistManifest()))])}async cacheCleanup({cache:e,report:t}){if(this.configuration.get("enableGlobalCache"))return;let i=new Set([".gitignore"]);if(!ZD(e.cwd,this.cwd)||!await O.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await O.readdirPromise(e.cwd)){if(i.has(a))continue;let l=x.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?t.reportError(56,`${$e(this.configuration,x.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:t.reportInfo(19,`${$e(this.configuration,x.basename(l),"magenta")} appears to be unused - removing`),await O.removePromise(l)))}n&&s!==0&&t.reportInfo(19,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function JOe({project:r,allDescriptors:e,allResolutions:t,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,peerRequirements:o=new Map,volatileDescriptors:a=new Set,report:l}){var V;let c=new Map,u=[],g=new Map,f=new Map,h=new Map,p=new Map,C=new Map,y=new Map(r.workspaces.map(W=>{let _=W.anchoredLocator.locatorHash,A=i.get(_);if(typeof A>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[_,rC(A)]})),B=()=>{let W=O.mktempSync(),_=x.join(W,"stacktrace.log"),A=String(u.length+1).length,Ae=u.map((ge,re)=>`${`${re+1}.`.padStart(A," ")} ${Es(ge)}
`).join("");throw O.writeFileSync(_,Ae),O.detachTemp(W),new at(45,`Encountered a stack overflow when resolving peer dependencies; cf ${K.fromPortablePath(_)}`)},v=W=>{let _=t.get(W.descriptorHash);if(typeof _>"u")throw new Error("Assertion failed: The resolution should have been registered");let A=i.get(_);if(!A)throw new Error("Assertion failed: The package could not be found");return A},D=(W,_,A,{top:Ae,optional:ge})=>{u.length>1e3&&B(),u.push(_);let re=T(W,_,A,{top:Ae,optional:ge});return u.pop(),re},T=(W,_,A,{top:Ae,optional:ge})=>{if(n.has(_.locatorHash))return;n.add(_.locatorHash),ge||s.delete(_.locatorHash);let re=i.get(_.locatorHash);if(!re)throw new Error(`Assertion failed: The package (${mt(r.configuration,_)}) should have been registered`);let M=[],F=[],ue=[],pe=[],ke=[];for(let Ne of Array.from(re.dependencies.values())){if(re.peerDependencies.has(Ne.identHash)&&re.locatorHash!==Ae)continue;if(JA(Ne))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(Ne.descriptorHash);let oe=ge;if(!oe){let Y=re.dependenciesMeta.get(Mt(Ne));if(typeof Y<"u"){let he=Y.get(null);typeof he<"u"&&he.optional&&(oe=!0)}}let le=t.get(Ne.descriptorHash);if(!le)throw new Error(`Assertion failed: The resolution (${tr(r.configuration,Ne)}) should have been registered`);let Be=y.get(le)||i.get(le);if(!Be)throw new Error(`Assertion failed: The package (${le}, resolved from ${tr(r.configuration,Ne)}) should have been registered`);if(Be.peerDependencies.size===0){D(Ne,Be,new Map,{top:Ae,optional:oe});continue}let fe,ae,qe=new Set,ne;F.push(()=>{fe=GD(Ne,_.locatorHash),ae=YD(Be,_.locatorHash),re.dependencies.delete(Ne.identHash),re.dependencies.set(fe.identHash,fe),t.set(fe.descriptorHash,ae.locatorHash),e.set(fe.descriptorHash,fe),i.set(ae.locatorHash,ae),M.push([Be,fe,ae])}),ue.push(()=>{var Y;ne=new Map;for(let he of ae.peerDependencies.values()){let ie=re.dependencies.get(he.identHash);if(!ie&&sC(_,he)&&(W.identHash===_.identHash?ie=W:(ie=_t(_,W.range),e.set(ie.descriptorHash,ie),t.set(ie.descriptorHash,_.locatorHash),a.delete(ie.descriptorHash))),(!ie||ie.range==="missing:")&&ae.dependencies.has(he.identHash)){ae.peerDependencies.delete(he.identHash);continue}ie||(ie=_t(he,"missing:")),ae.dependencies.set(ie.identHash,ie),JA(ie)&&wc(h,ie.descriptorHash).add(ae.locatorHash),g.set(ie.identHash,ie),ie.range==="missing:"&&qe.add(ie.identHash),ne.set(he.identHash,(Y=A.get(he.identHash))!=null?Y:ae.locatorHash)}ae.dependencies=new Map(bn(ae.dependencies,([he,ie])=>Mt(ie)))}),pe.push(()=>{if(!i.has(ae.locatorHash))return;let Y=c.get(Be.locatorHash);typeof Y=="number"&&Y>=2&&B();let he=c.get(Be.locatorHash),ie=typeof he<"u"?he+1:1;c.set(Be.locatorHash,ie),D(fe,ae,ne,{top:Ae,optional:oe}),c.set(Be.locatorHash,ie-1)}),ke.push(()=>{let Y=re.dependencies.get(Ne.identHash);if(typeof Y>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let he=t.get(Y.descriptorHash);if(typeof he>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(wc(C,he).add(_.locatorHash),!!i.has(ae.locatorHash)){for(let ie of ae.peerDependencies.values()){let de=ne.get(ie.identHash);if(typeof de>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hf(pf(p,de),Mt(ie)).push(ae.locatorHash)}for(let ie of qe)ae.dependencies.delete(ie)}})}for(let Ne of[...F,...ue])Ne();let Fe;do{Fe=!0;for(let[Ne,oe,le]of M){let Be=pf(f,Ne.locatorHash),fe=rn(...[...le.dependencies.values()].map(Y=>{let he=Y.range!=="missing:"?t.get(Y.descriptorHash):"missing:";if(typeof he>"u")throw new Error(`Assertion failed: Expected the resolution for ${tr(r.configuration,Y)} to have been registered`);return he===Ae?`${he} (top)`:he}),oe.identHash),ae=Be.get(fe);if(typeof ae>"u"){Be.set(fe,oe);continue}if(ae===oe)continue;i.delete(le.locatorHash),e.delete(oe.descriptorHash),t.delete(oe.descriptorHash),n.delete(le.locatorHash);let qe=h.get(oe.descriptorHash)||[],ne=[re.locatorHash,...qe];h.delete(oe.descriptorHash);for(let Y of ne){let he=i.get(Y);typeof he>"u"||(he.dependencies.get(oe.identHash).descriptorHash!==ae.descriptorHash&&(Fe=!1),he.dependencies.set(oe.identHash,ae))}}}while(!Fe);for(let Ne of[...pe,...ke])Ne()};for(let W of r.workspaces){let _=W.anchoredLocator;a.delete(W.anchoredDescriptor.descriptorHash),D(W.anchoredDescriptor,_,new Map,{top:_.locatorHash,optional:!1})}let H;(A=>(A[A.NotProvided=0]="NotProvided",A[A.NotCompatible=1]="NotCompatible"))(H||(H={}));let j=[];for(let[W,_]of C){let A=i.get(W);if(typeof A>"u")throw new Error("Assertion failed: Expected the root to be registered");let Ae=p.get(W);if(!(typeof Ae>"u"))for(let ge of _){let re=i.get(ge);if(!(typeof re>"u"))for(let[M,F]of Ae){let ue=tn(M);if(re.peerDependencies.has(ue.identHash))continue;let pe=`p${rn(ge,M,W).slice(0,5)}`;o.set(pe,{subject:ge,requested:ue,rootRequester:W,allRequesters:F});let ke=A.dependencies.get(ue.identHash);if( Line truncated
Try running the command again with the package name prefixed: ${ee.pretty(t,"yarn add",xi.CODE)} ${ee.pretty(t,P.makeDescriptor(P.makeIdent(null,"my-package"),`${D[0]}...`),xi.DESCRIPTOR)}`);if(!v)throw new Qe(`The ${ee.pretty(t,B,xi.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let T=yqe(n,v,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(T.map(async j=>{let $=await Gm(v,{project:i,workspace:n,cache:s,target:j,modifier:a,strategies:l,maxResults:c});return{request:v,suggestedDescriptors:$,target:j}}))})).then(B=>B.flat()),g=await ra.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let{request:v,suggestedDescriptors:{suggestions:D,rejections:T}}of u)if(D.filter(j=>j.descriptor!==null).length===0){let[j]=T;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range`):B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),B.reportSeparator(),B.reportExceptionOnce(j)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[],p=[];for(let{suggestedDescriptors:{suggestions:B},target:v}of u){let D,T=B.filter(V=>V.descriptor!==null),H=T[0].descriptor,j=T.every(V=>P.areDescriptorsEqual(V.descriptor,H));T.length===1||j?D=H:(f=!0,{answer:D}=await(0,Lse.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:B.map(({descriptor:V,name:W,reason:_})=>V?{name:W,hint:_,descriptor:V}:{name:W,hint:_,disabled:!0}),onCancel:()=>process.exit(130),result(V){return this.find(V,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let $=n.manifest[v].get(D.identHash);(typeof $>"u"||$.descriptorHash!==D.descriptorHash)&&(n.manifest[v].set(D.identHash,D),this.optional&&(v==="dependencies"?n.manifest.ensureDependencyMeta({...D,range:"unknown"}).optional=!0:v==="peerDependencies"&&(n.manifest.ensurePeerDependencyMeta({...D,range:"unknown"}).optional=!0)),typeof $>"u"?h.push([n,v,D,l]):p.push([n,v,$,D]))}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyAddition,h),await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),f&&this.context.stdout.write(`
`),(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};Au.paths=[["add"]],Au.usage=ve.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"<package>\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add [email protected]"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function yqe(r,e,{dev:t,peer:i,preferDev:n,optional:s}){let o=r.manifest["dependencies"].has(e.identHash),a=r.manifest["devDependencies"].has(e.identHash),l=r.manifest["peerDependencies"Line truncated
`),0}return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async o=>{let a=await Wt.getPackageAccessibleBinaries(n,{project:i}),c=Array.from(a.keys()).reduce((u,g)=>Math.max(u,g.length),0);for(let[u,[g,f]]of a)o.reportJson({name:u,source:P.stringifyIdent(g),path:f});if(this.verbose)for(let[u,[g]]of a)o.reportInfo(null,`${u.padEnd(c," ")} ${P.prettyLocator(t,g)}`);else for(let u of a.keys())o.reportInfo(null,u)})).exitCode()}};lu.paths=[["bin"]],lu.usage=ve.Usage({description:"get the path to a binary script",details:`
When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.
When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.
`,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var cu=class extends De{constructor(){super(...arguments);this.mirror=z.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=z.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await Rt.find(t);return(await Ge.start({configuration:t,stdout:this.context.stdout},async()=>{let s=(this.all||this.mirror)&&i.mirrorCwd!==null,o=!this.mirror;s&&(await O.removePromise(i.mirrorCwd),await t.triggerHook(a=>a.cleanGlobalArtifacts,t)),o&&await O.removePromise(i.cwd)})).exitCode()}};cu.paths=[["cache","clean"],["cache","clear"]],cu.usage=ve.Usage({description:"remove the shared cache files",details:`
This command will remove all the files from the cache.
`,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var Mse=Pe(ub()),jL=J("util"),uu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=z.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*/,"");if(typeof t.settings.get(i)>"u")throw new Qe(`Couldn't find a configuration settings named "${i}"`);let o=t.getSpecial(i,{hideSecrets:!this.unsafe,getNativePaths:!0}),a=Ie.convertMapsToIndexableObjects(o),l=n?(0,Mse.default)(a,n):a,c=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async u=>{u.reportJson(l)});if(!this.json){if(typeof l=="string")return this.context.stdout.write(`${l}
`),c.exitCode();jL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,jL.inspect)(l,{depth:1/0,colors:t.get("enableColors"),compact:!1})}
`)}return c.exitCode()}};uu.paths=[["config","get"]],uu.usage=ve.Usage({description:"read a configuration settings",details:`
This command will print a configuration setting.
Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value.
`,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var Voe=Pe(XL()),Xoe=Pe(ub()),Zoe=Pe(zoe()),ZL=J("util"),gu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String();this.value=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new Qe("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new Qe(`Couldn't find a configuration settings named "${n}"`);if(n==="enableStrictSettings")throw new Qe("This setting only affects the file it's in, and thus cannot be set from the CLI");let a=this.json?JSON.parse(this.value):this.value;await(this.home?p=>ye.updateHomeConfiguration(p):p=>ye.updateConfiguration(i(),p))(p=>{if(s){let C=(0,Voe.default)(p);return(0,Zoe.default)(C,this.name,a),C}else return{...p,[n]:a}});let u=(await ye.find(this.context.cwd,this.context.plugins)).getSpecial(n,{hideSecrets:!0,getNativePaths:!0}),g=Ie.convertMapsToIndexableObjects(u),f=s?(0,Xoe.default)(g,s):g;return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async p=>{ZL.inspect.styles.name="cyan",p.reportInfo(0,`Successfully set ${this.name} to ${(0,ZL.inspect)(f,{depth:1/0,colors:t.get("enableColors"),compact:!1})}`)})).exitCode()}};gu.paths=[["config","set"]],gu.usage=ve.Usage({description:"change a configuration settings",details:`
This command will set a configuration setting.
When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).
When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.
`,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var oae=Pe(XL()),aae=Pe(am()),Aae=Pe(sae()),fu=class extends De{constructor(){super(...arguments);this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=()=>{if(!t.projectCwd)throw new Qe("This command must be run from within a project folder");return t.projectCwd},n=this.name.replace(/[.[].*$/,""),s=this.name.replace(/^[^.[]*\.?/,"");if(typeof t.settings.get(n)>"u")throw new Qe(`Couldn't find a configuration settings named "${n}"`);let a=this.home?c=>ye.updateHomeConfiguration(c):c=>ye.updateConfiguration(i(),c);return(await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout},async c=>{let u=!1;await a(g=>{if(!(0,aae.default)(g,this.name))return c.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),u=!0,g;let f=s?(0,oae.default)(g):{...g};return(0,Aae.default)(f,this.name),f}),u||c.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};fu.paths=[["config","unset"]],fu.usage=ve.Usage({description:"unset a configuration setting",details:`
This command will unset a configuration setting.
`,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var _L=J("util"),hu=class extends De{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=z.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{if(t.invalid.size>0&&!this.json){for(let[s,o]of t.invalid)n.reportError(34,`Invalid configuration key "${s}" in ${o}`);n.reportSeparator()}if(this.json){let s=Ie.sortMap(t.settings.keys(),o=>o);for(let o of s){let a=t.settings.get(o),l=t.getSpecial(o,{hideSecrets:!0,getNativePaths:!0}),c=t.sources.get(o);this.verbose?n.reportJson({key:o,effective:l,source:c}):n.reportJson({key:o,effective:l,source:c,...a})}}else{let s=Ie.sortMap(t.settings.keys(),l=>l),o=s.reduce((l,c)=>Math.max(l,c.length),0),a={breakLength:1/0,colors:t.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let l=s.map(u=>{let g=t.settings.get(u);if(!g)throw new Error(`Assertion failed: This settings ("${u}") should have been registered`);let f=this.why?t.sources.get(u)||"<default>":g.description;return[u,f]}),c=l.reduce((u,[,g])=>Math.max(u,g.length),0);for(let[u,g]of l)n.reportInfo(null,`${u.padEnd(o," ")} ${g.padEnd(c," ")} ${(0,_L.inspect)(t.getSpecial(u,{hideSecrets:!0,getNativePaths:!0}),a)}`)}else for(let l of s)n.reportInfo(null,`${l.padEnd(o," ")} ${(0,_L.inspect)(t.getSpecial(l,{hideSecrets:!0,getNativePaths:!0}),a)}`)}})).exitCode()}};hu.paths=[["config"]],hu.usage=ve.Usage({description:"display the current configuration",details:`
This command prints the current active configuration settings.
`,examples:[["Print the active configuration settings","$0 config"]]});ls();var Nb={};ut(Nb,{Strategy:()=>jm,acceptedStrategies:()=>b3e,dedupe:()=>$L});var lae=Pe(Bn()),jm=(e=>(e.HIGHEST="highest",e))(jm||{}),b3e=new Set(Object.values(jm)),Q3e={highest:async(r,e,{resolver:t,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of r.storedResolutions){let c=r.storedDescriptors.get(a);if(typeof c>"u")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);Ie.getSetWithDefault(o,c.identHash).add(l)}return Array.from(r.storedDescriptors.values(),async a=>{if(e.length&&!lae.default.isMatch(P.stringifyIdent(a),e))return null;let l=r.storedResolutions.get(a.descriptorHash);if(typeof l>"u")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=r.originalPackages.get(l);if(typeof c>"u"||!t.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u>"u")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(y=>{let B=r.originalPackages.get(y);if(typeof B>"u")throw new Error(`Assertion failed: The package (${y}) should have been registered`);return B.reference}),f=await t.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h>"u")return null;let p=h.locatorHash,C=r.originalPackages.get(p);if(typeof C>"u")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:C}})}};async function $L(r,{strategy:e,patterns:t,cache:i,report:n}){let{configuration:s}=r,o=new ti,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:r.storedChecksums,fetcher:l,project:r,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:r,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let g=Q3e[e],f=await g(r,t,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=vi.progressViaCounter(f.length);await n.reportProgress(h);let p=0;await Promise.all(f.map(B=>B.then(v=>{if(v===null)return;p++;let{descriptor:D,currentPackage:T,updatedPackage:H}=v;n.reportInfo(0,`${P.prettyDescriptor(s,D)} can be deduped from ${P.prettyLocator(s,T)} to ${P.prettyLocator(s,H)}`),n.reportJson({descriptor:P.stringifyDescriptor(D),currentResolution:P.stringifyLocator(T),updatedResolution:P.stringifyLocator(H)}),r.storedResolutions.set(D.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let C;switch(p){case 0:C="No packages";break;case 1:C="One package";break;default:C=`${p} packages`}let y=ee.pretty(s,e,ee.Type.CODE);return n.reportInfo(0,`${C} can be deduped using the ${y} strategy`),p})}var pu=class extends De{constructor(){super(...arguments);this.strategy=z.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Zi(jm)});this.check=z.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Zi(ts)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=await Rt.find(t);await i.restoreInstallState({restoreResolutions:!1});let s=0,o=await Ge.start({configuration:t,includeFooter:!1,stdout:this.context.stdout,json:this.json},async a=>{s=await $L(i,{strategy:this.strategy,patterns:this.patterns,cache:n,report:a})});return o.hasErrors()?o.exitCode():this.check?s?1:0:(await Ge.start({configuration:t,stdout:this.context.stdout,json:this.json},async l=>{await i.install({cache:n,report:l,mode:this.mode})})).exitCode()}};pu.paths=[["dedupe"]],pu.usage=ve.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `Line truncated
`)}};Vh.paths=[["--clipanion=definitions"]];var Xh=class extends De{async execute(){this.context.stdout.write(this.cli.usage(null))}};Xh.paths=[["help"],["--help"],["-h"]];var qm=class extends De{constructor(){super(...arguments);this.leadingArgument=z.String();this.args=z.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!P.tryParseIdent(this.leadingArgument)){let t=x.resolve(this.context.cwd,K.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:t})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};var Zh=class extends De{async execute(){this.context.stdout.write(`${Tr||"<unknown>"}
`)}};Zh.paths=[["-v"],["--version"]];var du=class extends De{constructor(){super(...arguments);this.commandName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,locator:n}=await je.find(t,this.context.cwd);return await i.restoreInstallState(),await Wt.executePackageShellcode(n,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:i})}};du.paths=[["exec"]],du.usage=ve.Usage({description:"execute a shell script",details:`
This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.
It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).
`,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});ls();var Cu=class extends De{constructor(){super(...arguments);this.hash=z.String({required:!1,validator:od(sd(),[ad(/^p[0-9a-f]{5}$/)])})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return await i.restoreInstallState({restoreResolutions:!1}),await i.applyLightResolution(),typeof this.hash<"u"?await v3e(this.hash,i,{stdout:this.context.stdout}):(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{var a;let o=[([,l])=>P.stringifyLocator(i.storedPackages.get(l.subject)),([,l])=>P.stringifyIdent(l.requested)];for(let[l,c]of Ie.sortMap(i.peerRequirements,o)){let u=i.storedPackages.get(c.subject);if(typeof u>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let g=i.storedPackages.get(c.rootRequester);if(typeof g>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let f=(a=u.dependencies.get(c.requested.identHash))!=null?a:null,h=ee.pretty(t,l,ee.Type.CODE),p=P.prettyLocator(t,u),C=P.prettyIdent(t,c.requested),y=P.prettyIdent(t,g),B=c.allRequesters.length-1,v=`descendant${B===1?"":"s"}`,D=B>0?` and ${B} ${v}`:"",T=f!==null?"provides":"doesn't provide";s.reportInfo(null,`${h} \u2192 ${p} ${T} ${C} to ${y}${D}`)}})).exitCode()}};Cu.paths=[["explain","peer-requirements"]],Cu.usage=ve.Usage({description:"explain a set of peer requirements",details:`
A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.
When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.
When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.
**Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`).
`,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function v3e(r,e,t){let{configuration:i}=e,n=e.peerRequirements.get(r);if(typeof n>"u")throw new Error(`No peerDependency requirements found for hash: "${r}"`);return(await Ge.start({configuration:i,stdout:t.stdout,includeFooter:!1},async o=>{var B,v;let a=e.storedPackages.get(n.subject);if(typeof a>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(B=a.dependencies.get(n.requested.identHash))!=null?B:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(D=>{let T=e.storedPackages.get(D);if(typeof T>"u")throw new Error("Assertion failed: Expected the package to be registered");let H=P.devirtualizeLocator(T),j=e.storedPackages.get(H.locatorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the package to be registered");let $=j.peerDependencies.get(n.requested.identHash);if(typeof $>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:T,peerDependency:$}});if(g!==null){let D=f.every(({peerDependency:T})=>vt.satisfiesWithPrereleases(g.version,T.range));o.reportInfo(0,`${P.prettyLocator(i,a)} provides ${P.prettyLocator(i,g)} with version ${P.prettyReference(i,(v=g.version)!=null?v:"<missing>")}, which ${D?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(0,`${P.prettyLocator(i,a)} doesn't provide ${P.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ee.mark(i),p=[];for(let{pkg:D,peerDependency:T}of Ie.sortMap(f,H=>P.stringifyLocator(H.pkg))){let j=(g!==null?vt.satisfiesWithPrereleases(g.version,T.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:P.stringifyLocator(D),prettyLocator:P.prettyLocator(i,D),prettyRange:P.prettyRange(i,T.range),mark:j})}let C=Math.max(...p.map(({stringifiedLocator:D})=>D.length)),y=Math.max(...p.map(({prettyRange:D})=>D.length));for(let{stringifiedLocator:D,prettyLocator:T,prettyRange:H,mark:j}of Ie.sortMap(p,({stringifiedLocator:$})=>$))o.reportInfo(null,`${T.padEnd(C+(T.length-D.length)," ")} \u2192 ${H.padEnd(y," ")} ${j}`);p.length>1&&(o.reportSeparator(),o.reportInfo(0,`Note: these requirements start with ${P.prettyLocator(e.configuration,l)}`))})).exitCode()}ls();var uae=Pe(Xr()),mu=class extends De{constructor(){super(...arguments);this.onlyIfNeeded=z.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=z.String()}async execute(){var o;let t=await ye.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&t.get("yarnPath")){let a=t.sources.get("yarnPath");if(!a)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let l=(o=t.projectCwd)!=null?o:t.startingCwd;if(x.contains(l,a))return 0}let i=()=>{if(typeof Tr>"u")throw new Qe("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},n;if(this.version==="self")n=i();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")n=`https://repo.yarnpkg.com/${await Jm(t,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")n=`https://repo.yarnpkg.com/${await Jm(t,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")n="https://classic.yarnpkg.com/latest.js";else if(this.version.match(/^https?:/))n=this.version;else if(this.version.match(/^\.{0,2}[\\/]/)||K.isAbsolute(this.version))n=`file://${K.resolve(this.version)}`;else if(vt.satisfiesWithPrereleases(this.version,">=2.0.0"))n=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(vt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))n=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(vt.validRange(this.version))n=`https://repo.yarnpkg.com/${await x3e(t,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new Qe(`Invalid version descriptor "${this.version}"`);return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{let l="file://",c;n.startsWith(l)?(a.reportInfo(0,`Downloading ${ee.pretty(t,n,xi.URL)}`),c=await O.readFilePromise(K.toPortablePath(n.slice(l.length)))):(a.reportInfo(0,`Retrieving ${ee.pretty(t,n,xi.PATH)}`),c=await Xt.get(n,{configuration:t})),await eM(t,null,c,{report:a})})).exitCode( Line truncated
${e}`)});let n=(h=r.projectCwd)!=null?h:r.startingCwd,s=x.resolve(n,".yarn/releases"),o=x.resolve(s,`yarn-${e}.cjs`),a=x.relative(r.startingCwd,o),l=x.relative(n,o);i.reportInfo(0,`Saving the new release in ${ee.pretty(r,a,"magenta")}`),await O.removePromise(x.dirname(o)),await O.mkdirPromise(x.dirname(o),{recursive:!0}),await O.writeFilePromise(o,t,{mode:493}),await ye.updateConfiguration(n,{yarnPath:l});let c=await ot.tryFind(n)||new ot;c.packageManager=`yarn@${e&&Ie.isTaggedYarnVersion(e)?e:await Jm(r,"stable")}`;let u={};c.exportTo(u);let g=x.join(n,ot.fileName),f=`${JSON.stringify(u,null,c.indent)}
`;await O.changeFilePromise(g,f,{automaticNewlines:!0})}function gae(r){return Ct[LI(r)]}var P3e=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\n\n(?<details>(?:.(?!##))+)/gs;async function D3e(r){let t=`https://repo.yarnpkg.com/${Ie.isTaggedYarnVersion(Tr)?Tr:await Jm(r,"canary")}/packages/gatsby/content/advanced/error-codes.md`,i=await Xt.get(t,{configuration:r});return new Map(Array.from(i.toString().matchAll(P3e),({groups:n})=>{if(!n)throw new Error("Assertion failed: Expected the match to have been successful");let s=gae(n.code);if(n.name!==s)throw new Error(`Assertion failed: Invalid error code data: Expected "${n.name}" to be named "${s}"`);return[n.code,n.details]}))}var Eu=class extends De{constructor(){super(...arguments);this.code=z.String({required:!1,validator:od(sd(),[ad(/^YN[0-9]{4}$/)])});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let i=gae(this.code),n=ee.pretty(t,i,ee.Type.CODE),s=this.cli.format().header(`${this.code} - ${n}`),a=(await D3e(t)).get(this.code),l=typeof a<"u"?ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.MARKDOWN,{text:a,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.
You can help us by editing this page on GitHub \u{1F642}:
${ee.jsonOrPretty(this.json,t,ee.tuple(ee.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))}
`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:i,details:l})}
`):this.context.stdout.write(`${s}
${l}
`)}else{let i={children:Ie.mapAndFilter(Object.entries(Ct),([n,s])=>Number.isNaN(Number(n))?Ie.mapAndFilter.skip:{label:FA(Number(n)),value:ee.tuple(ee.Type.CODE,s)})};es.emitTree(i,{configuration:t,stdout:this.context.stdout,json:this.json})}}};Eu.paths=[["explain"]],Eu.usage=ve.Usage({description:"explain an error code",details:`
When the code argument is specified, this command prints its name and its details.
When used without arguments, this command lists all error codes and their names.
`,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});var fae=Pe(Bn()),Iu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=z.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=z.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=z.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=z.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=z.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=z.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n&&!this.all)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let o=new Set(this.extra);this.cache&&o.add("cache"),this.dependents&&o.add("dependents"),this.manifest&&o.add("manifest");let a=(T,{recursive:H})=>{let j=T.anchoredLocator.locatorHash,$=new Map,V=[j];for(;V.length>0;){let W=V.shift();if($.has(W))continue;let _=i.storedPackages.get(W);if(typeof _>"u")throw new Error("Assertion failed: Expected the package to be registered");if($.set(W,_),P.isVirtualLocator(_)&&V.push(P.devirtualizeLocator(_).locatorHash),!(!H&&W!==j))for(let A of _.dependencies.values()){let Ae=i.storedResolutions.get(A.descriptorHash);if(typeof Ae>"u")throw new Error("Assertion failed: Expected the resolution to be registered");V.push(Ae)}}return $.values()},l=({recursive:T})=>{let H=new Map;for(let j of i.workspaces)for(let $ of a(j,{recursive:T}))H.set($.locatorHash,$);return H.values()},c=({all:T,recursive:H})=>T&&H?i.storedPackages.values():T?l({recursive:H}):a(n,{recursive:H}),u=({all:T,recursive:H})=>{let j=c({all:T,recursive:H}),$=this.patterns.map(_=>{let A=P.parseLocator(_),Ae=fae.default.makeRe(P.stringifyIdent(A)),ge=P.isVirtualLocator(A),re=ge?P.devirtualizeLocator(A):A;return M=>{let F=P.stringifyIdent(M);if(!Ae.test(F))return!1;if(A.reference==="unknown")return!0;let ue=P.isVirtualLocator(M),pe=ue?P.devirtualizeLocator(M):M;return!(ge&&ue&&A.reference!==M.reference||re.reference!==pe.reference)}}),V=Ie.sortMap([...j],_=>P.stringifyLocator(_));return{selection:V.filter(_=>$.length===0||$.some(A=>A(_))),sortedLookup:V}},{selection:g,sortedLookup:f}=u({all:this.all,recursive:this.recursive});if(g.length===0)throw new Qe("No package matched your request");let h=new Map;if(this.dependents)for(let T of f)for(let H of T.dependencies.values()){let j=i.storedResolutions.get(H.descriptorHash);if(typeof j>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ie.getArrayWithDefault(h,j).push(T)}let p=new Map;for(let T of f){if(!P.isVirtualLocator(T))continue;let H=P.devirtualizeLocator(T);Ie.getArrayWithDefault(p,H.locatorHash).push(T)}let C={},y={children:C},B=t.makeFetcher(),v={project:i,fetcher:B,cache:s,checksums:i.storedChecksums,report:new ti,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},D=[async(T,H,j)=>{var W,_;if(!H.has("manifest"))return;let $=await B.fetch(T,v),V;try{V=await ot.find($.prefixPath,{baseFs:$.packageFs})}finally{(W=$.releaseFs)==null||W.call($)}j("Manifest",{License:ee.tuple(ee.Type.NO_HINT,V.license),Homepage:ee.tuple(ee.Type.URL,(_=V.raw.homepage)!=null?_:null)})},async(T,H,j)=>{var Ae;if(!H.has("cache"))return;let $={mockedPackages:i.disabledLocators,unstablePackages:i.conditionalLocators},V=(Ae=i.storedChecksums.get(T.locatorHash))!=null?Ae:null,W=s.getLocatorPath(T,V,$),_;if(W!==null)try{_=O.statSync(W)}catch{}let A=typeof _<"u"?[_.size,ee.Type.SIZE]:void 0;j("Cache",{Checksum:ee.tuple(ee.Type.NO_HINT,V),Path:ee.tuple(ee.Type.PATH,W),Size:A})}];for(let T of g){let H=P.isVirtualLocator(T);if(!this.virtuals&&H)continue;let j={},$={value:[T,ee.Type.LOCATOR],children:j};if(C[P.stringifyLocator(T)]=$,this.nameOnly){delete $.children;continue}let V=p.get(T.locatorHash);typeof V<"u"&&(j.Instances={label:"Instances",value:ee.tuple(ee.Type.NUMBER,V.length)}),j.Version={label:"Version",value:ee.tuple(ee.Type.NO_HINT,T.version)};let W=(A,Ae)=>{let ge={};if(j[A]=ge,Array.isArray(Ae))ge.children=Ae.map(re=>({value:re}));else{let re={};ge.children=re;for(let[M,F]of Object.entries(Ae))typeof F>"u"||(re[M]={label:M,value:F})}};if(!H){for(let A of D)await A(T,o,W);await t.triggerHook(A=>A.fetchPackageInfo,T,o,W)}T.bin.size>0& Line truncated
This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:
- **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).
- **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored).
- **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know).
- **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.
Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.
If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release.
If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).
If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.
If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.
If the \`--mode=<mode>\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:
- \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.
- \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.
`,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var k3e="|||||||",R3e=">>>>>>>",F3e="=======",hae="<<<<<<<";async function N3e(r,e){if(!r.projectCwd)return!1;let t=x.join(r.projectCwd,r.get("lockfileFilename"));if(!await O.existsPromise(t))return!1;let i=await O.readFilePromise(t,"utf8");if(!i.includes(hae))return!1;if(e)throw new at(47,"Cannot autofix a lockfile when running an immutable install");let[n,s]=T3e(i),o,a;try{o=yi(n),a=yi(s)}catch{throw new at(46,"The individual variants of the lockfile failed to parse")}let l={...o,...a};for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await O.changeFilePromise(t,ba(l),{automaticNewlines:!0}),!0}function T3e(r){let e=[[],[]],t=r.split(/\r?\n/g),i=!1;for(;t.length>0;){let n=t.shift();if(typeof n>"u")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(hae)){for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s===F3e){i=!1;break}else if(i||s.startsWith(k3e)){i=!0;continue}else e[0].push(s)}for(;t.length>0;){let s=t.shift();if(typeof s>"u")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(R3e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(`
`),e[1].join(`
`)]}var wu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=z.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=z.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=x.resolve(this.context.cwd,K.toPortablePath(this.destination)),a=await ye.find(o,this.context.plugins,{useRc:!1,strict:!1}),{project:l,workspace:c}=await je.find(a,o);if(i.cwd===l.cwd)throw new Qe("Invalid destination; Can't link the project to itself");if(!c)throw new ct(l.cwd,o);let u=i.topLevelWorkspace,g=[];if(this.all){for(let h of l.workspaces)h.manifest.name&&(!h.manifest.private||this.private)&&g.push(h);if(g.length===0)throw new Qe("No workspace found to be linked in the target project")}else{if(!c.manifest.name)throw new Qe("The target workspace doesn't have a name and thus cannot be linked");if(c.manifest.private&&!this.private)throw new Qe("The target workspace is marked private - use the --private flag to link it anyway");g.push(c)}for(let h of g){let p=P.stringifyIdent(h.locator),C=this.relative?x.relative(i.cwd,h.cwd):h.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:p}},reference:`portal:${C}`})}return(await Ge.start({configuration:t,stdout:this.context.stdout},async h=>{await i.install({cache:s,report:h})})).exitCode()}};wu.paths=[["link"]],wu.usage=ve.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var Bu=class extends De{constructor(){super(...arguments);this.args=z.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};Bu.paths=[["node"]],Bu.usage=ve.Usage({description:"run node with the hook already setup",details:`
This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).
The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.
`,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Iae=J("os");var pae=J("os");var L3e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Qu(r){let e=await Xt.get(L3e,{configuration:r});return yi(e.toString())}var bu=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{let s=await Qu(t);for(let[o,{experimental:a,...l}]of Object.entries(s)){let c=o;a&&(c+=" [experimental]"),n.reportJson({name:o,experimental:a,...l}),n.reportInfo(null,c)}})).exitCode()}};bu.paths=[["plugin","list"]],bu.usage=ve.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var M3e=/^[0-9]+$/;function dae(r){return M3e.test(r)?`pull/${r}/head`:r}var O3e=({repository:r,branch:e},t)=>[["git","init",K.fromPortablePath(t)],["git","remote","add","origin",r],["git","fetch","origin","--depth=1",dae(e)],["git","reset","--hard","FETCH_HEAD"]],K3e=({branch:r})=>[["git","fetch","origin","--depth=1",dae(r),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],U3e=({plugins:r,noMinify:e},t)=>[["yarn","build:cli",...new Array().concat(...r.map(i=>["--plugin",x.resolve(t,i)])),...e?["--no-minify"]:[],"|"]],Su=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=z.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=z.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.installPath<"u"?x.resolve(this.context.cwd,K.toPortablePath(this.installPath)):x.resolve(K.toPortablePath((0,pae.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async o=>{await tM(this,{configuration:t,report:o,target:n}),o.reportSeparator(),o.reportInfo(0,"Building a fresh bundle"),o.reportSeparator(),await Wm(U3e(this,n),{configuration:t,context:this.context,target:n}),o.reportSeparator();let a=x.resolve(n,"packages/yarnpkg-cli/bundles/yarn.js"),l=await O.readFilePromise(a);await eM(t,"sources",l,{report:o}),this.skipPlugins||await H3e(this,{project:i,report:o,target:n})})).exitCode()}};Su.paths=[["set","version","from","sources"]],Su.usage=ve.Usage({description:"build Yarn from master",details:`
This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.
By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag.
`,examples:[["Build Yarn from master","$0 set version from sources"]]});async function Wm(r,{configuration:e,context:t,target:i}){for(let[n,...s]of r){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await Cr.pipevp(n,s,{cwd:i,stdin:t.stdin,stdout:t.stdout,stderr:t.stderr,strict:!0});else{t.stdout.write(`${ee.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")}
`);try{await Cr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw t.stdout.write(a.stdout||a.stack),a}}}}async function tM(r,{configuration:e,report:t,target:i}){let n=!1;if(!r.force&&O.existsSync(x.join(i,".git"))){t.reportInfo(0,"Fetching the latest commits"),t.reportSeparator();try{await Wm(K3e(r),{configuration:e,context:r.context,target:i}),n=!0}catch{t.reportSeparator(),t.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}n||(t.reportInfo(0,"Cloning the remote repository"),t.reportSeparator(),await O.removePromise(i),await O.mkdirPromise(i,{recursive:!0}),await Wm(O3e(r,i),{configuration:e,context:r.context,target:i}))}async function H3e(r,{project:e,report:t,target:i}){let n=await Qu(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await rM(o,r,{project:e,report:t,target:i})}var Cae=Pe(Xr()),mae=J("url"),Eae=J("vm");var vu=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,stdout:this.context.stdout},async n=>{let{project:s}=await je.find(t,this.context.cwd),o,a;if(this.name.match(/^\.{0,2}[\\/]/)||K.isAbsolute(this.name)){let l=x.resolve(this.context.cwd,K.toPortablePath(this.name));n.reportInfo(0,`Reading ${ee.pretty(t,l,ee.Type.PATH)}`),o=x.relative(s.cwd,l),a=await O.readFilePromise(l)}else{let l;if(this.name.match(/^https?:/)){try{new mae.URL(this.name)}catch{throw new at(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}o=this.name,l=this.name}else{let c=P.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(c.reference!=="unknown"&&!Cae.default.valid(c.reference))throw new at(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let u=P.stringifyIdent(c),g=await Qu(t);if(!Object.prototype.hasOwnProperty.call(g,u))throw new at(51,`Couldn't find a plugin named "${u}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);o=u,l=g[u].url,c.reference!=="unknown"?l=l.replace(/\/master\//,`/${u}/${c.reference}/`):Tr!==null&&(l=l.replace(/\/master\//,`/@yarnpkg/cli/${Tr}/`))}n.reportInfo(0,`Downloading ${ee.pretty(t,l,"green")}`),a=await Xt.get(l,{configuration:t})}await iM(o,a,{project:s,report:n})})).exitCode()}};vu.paths=[["plugin","import"]],vu.usage=ve.Usage({category:"Plugin-related commands",description:"download a plugin",details:`
This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.
Three types of plugin references are accepted:
- If the plugin is stored within the Yarn repository, it can be referenced by name.
- Third-party plugins can be referenced directly through their public urls.
- Local plugins can be referenced by their path on the disk.
Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package).
`,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function iM(r,e,{project:t,report:i}){let{configuration:n}=t,s={},o={exports:s};(0,Eae.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=x.resolve(t.cwd,l);i.reportInfo(0,`Saving the new plugin in ${ee.pretty(n,l,"magenta")}`),await O.mkdirPromise(x.dirname(c),{recursive:!0}),await O.writeFilePromise(c,e);let u={path:l,spec:r};await ye.updateConfiguration(t.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let C=typeof p!="string"?p.path:p,y=x.resolve(t.cwd,K.toPortablePath(C)),{name:B}=Ie.dynamicRequire(y);B!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),{...g,plugins:f}})}var G3e=({pluginName:r,noMinify:e},t)=>[["yarn",`build:${r}`,...e?["--no-minify"]:[],"|"]],xu=class extends De{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=typeof this.installPath<"u"?x.resolve(this.context.cwd,K.toPortablePath(this.installPath)):x.resolve(K.toPortablePath((0,Iae.tmpdir)()),"yarnpkg-sources",li.makeHash(this.repository).slice(0,6));return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let{project:o}=await je.find(t,this.context.cwd),a=P.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),l=P.stringifyIdent(a),c=await Qu(t);if(!Object.prototype.hasOwnProperty.call(c,l))throw new at(51,`Couldn't find a plugin named "${l}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let u=l;await tM(this,{configuration:t,report:s,target:i}),await rM(u,this,{project:o,report:s,target:i})})).exitCode()}};xu.paths=[["plugin","import","from","sources"]],xu.usage=ve.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:`
This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.
The plugins can be referenced by their short name if sourced from the official Yarn repository.
`,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function rM(r,{context:e,noMinify:t},{project:i,report:n,target:s}){let o=r.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(0,`Building a fresh ${o}`),n.reportSeparator(),await Wm(G3e({pluginName:o,noMinify:t},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=x.resolve(s,`packages/${o}/bundles/${r}.js`),c=await O.readFilePromise(l);await iM(r,c,{project:i,report:n})}var Pu=class extends De{constructor(){super(...arguments);this.name=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd);return(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{let o=this.name,a=P.parseIdent(o);if(!t.plugins.has(o))throw new Qe(`${P.prettyIdent(t,a)} isn't referenced by the current configuration`);let l=`.yarn/plugins/${o}.cjs`,c=x.resolve(i.cwd,l);O.existsSync(c)&&(s.reportInfo(0,`Removing ${ee.pretty(t,l,ee.Type.PATH)}...`),await O.removePromise(c)),s.reportInfo(0,"Updating the configuration..."),await ye.updateConfiguration(i.cwd,u=>{if(!Array.isArray(u.plugins))return u;let g=u.plugins.filter(f=>f.path!==l);return u.plugins.length===g.length?u:{...u,plugins:g}})})).exitCode()}};Pu.paths=[["plugin","remove"]],Pu.usage=ve.Usage({category:"Plugin-related commands",description:"remove a plugin",details:`
This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.
**Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed.
`,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var Du=class extends De{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins);return(await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async n=>{for(let s of t.plugins.keys()){let o=this.context.plugins.plugins.has(s),a=s;o&&(a+=" [builtin]"),n.reportJson({name:s,builtin:o}),n.reportInfo(null,`${a}`)}})).exitCode()}};Du.paths=[["plugin","runtime"]],Du.usage=ve.Usage({category:"Plugin-related commands",description:"list the active plugins",details:`
This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.
`,examples:[["List the currently active plugins","$0 plugin runtime"]]});var ku=class extends De{constructor(){super(...arguments);this.idents=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=new Set;for(let l of this.idents)o.add(P.parseIdent(l).identHash);if(await i.restoreInstallState({restoreResolutions:!1}),await i.resolveEverything({cache:s,report:new ti}),o.size>0)for(let l of i.storedPackages.values())o.has(l.identHash)&&i.storedBuildState.delete(l.locatorHash);else i.storedBuildState.clear();return(await Ge.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async l=>{await i.install({cache:s,report:l})})).exitCode()}};ku.paths=[["rebuild"]],ku.usage=ve.Usage({description:"rebuild the project's native packages",details:`
This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.
Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).
By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.
`,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var nM=Pe(Bn());ls();var Ru=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Zi(ts)});this.patterns=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=this.all?i.workspaces:[n],a=["dependencies","devDependencies","peerDependencies"],l=[],c=!1,u=[];for(let p of this.patterns){let C=!1,y=P.parseIdent(p);for(let B of o){let v=[...B.manifest.peerDependenciesMeta.keys()];for(let D of(0,nM.default)(v,p))B.manifest.peerDependenciesMeta.delete(D),c=!0,C=!0;for(let D of a){let T=B.manifest.getForScope(D),H=[...T.values()].map(j=>P.stringifyIdent(j));for(let j of(0,nM.default)(H,P.stringifyIdent(y))){let{identHash:$}=P.parseIdent(j),V=T.get($);if(typeof V>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");B.manifest[D].delete($),u.push([B,D,V]),c=!0,C=!0}}}C||l.push(p)}let g=l.length>1?"Patterns":"Pattern",f=l.length>1?"don't":"doesn't",h=this.all?"any":"this";if(l.length>0)throw new Qe(`${g} ${ee.prettyList(t,l,xi.CODE)} ${f} match any packages referenced by ${h} workspace`);return c?(await t.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,u),(await Ge.start({configuration:t,stdout:this.context.stdout},async C=>{await i.install({cache:s,report:C,mode:this.mode})})).exitCode()):0}};Ru.paths=[["remove"]],Ru.usage=ve.Usage({description:"remove dependencies from the project",details:`
This command will remove the packages matching the specified patterns from the current workspace.
If the \`--mode=<mode>\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:
- \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.
- \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.
This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.
`,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var yae=J("util"),_h=class extends De{async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:t,workspace:i}=await je.find(e,this.context.cwd);if(!i)throw new ct(t.cwd,this.context.cwd);return(await Ge.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=Ie.sortMap(o.keys(),u=>u),l={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,yae.inspect)(g,l)}`)})).exitCode()}};_h.paths=[["run"]];var Fu=class extends De{constructor(){super(...arguments);this.inspect=z.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=z.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=z.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=z.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=z.Boolean("--silent",{hidden:!0});this.scriptName=z.String();this.args=z.Proxy()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n,locator:s}=await je.find(t,this.context.cwd);await i.restoreInstallState();let o=this.topLevel?i.topLevelWorkspace.anchoredLocator:s;if(!this.binariesOnly&&await Wt.hasPackageScript(o,this.scriptName,{project:i}))return await Wt.executePackageScript(o,this.scriptName,this.args,{project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let a=await Wt.getPackageAccessibleBinaries(o,{project:i});if(a.get(this.scriptName)){let c=[];return this.inspect&&(typeof this.inspect=="string"?c.push(`--inspect=${this.inspect}`):c.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?c.push(`--inspect-brk=${this.inspectBrk}`):c.push("--inspect-brk")),await Wt.executePackageAccessibleBinary(o,this.scriptName,this.args,{cwd:this.context.cwd,project:i,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:c,packageAccessibleBinaries:a})}if(!this.topLevel&&!this.binariesOnly&&n&&this.scriptName.includes(":")){let u=(await Promise.all(i.workspaces.map(async g=>g.manifest.scripts.has(this.scriptName)?g:null))).filter(g=>g!==null);if(u.length===1)return await Wt.executeWorkspaceScript(u[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new Qe(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new Qe(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(t,s)}).`);{if(this.scriptName==="global")throw new Qe("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let c=[this.scriptName].concat(this.args);for(let[u,g]of vh)for(let f of g)if(c.length>=f.length&&JSON.stringify(c.slice(0,f.length))===JSON.stringify(f))throw new Qe(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${u} plugin. You can install it with "yarn plugin import ${u}".`);throw new Qe(`Couldn't find a script named "${this.scriptName}".`)}}};Fu.paths=[["run"]],Fu.usage=ve.Usage({description:"run a script defined in the package.json",details:`
This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:
- If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed.
- Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.
- Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.
Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).
`,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var Nu=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=z.String();this.resolution=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(await i.restoreInstallState({restoreResolutions:!1}),!n)throw new ct(i.cwd,this.context.cwd);let o=P.parseDescriptor(this.descriptor,!0),a=P.makeDescriptor(o,this.resolution);return i.storedDescriptors.set(o.descriptorHash,o),i.storedDescriptors.set(a.descriptorHash,a),i.resolutionAliases.set(o.descriptorHash,a.descriptorHash),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Nu.paths=[["set","resolution"]],Nu.usage=ve.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var wae=Pe(Bn()),Tu=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);let o=i.topLevelWorkspace,a=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:c,reference:u}of o.manifest.resolutions)u.startsWith("portal:")&&a.add(c.descriptor.fullName);if(this.leadingArguments.length>0)for(let c of this.leadingArguments){let u=x.resolve(this.context.cwd,K.toPortablePath(c));if(Ie.isPathLike(c)){let g=await ye.find(u,this.context.plugins,{useRc:!1,strict:!1}),{project:f,workspace:h}=await je.find(g,u);if(!h)throw new ct(f.cwd,u);if(this.all){for(let p of f.workspaces)p.manifest.name&&a.add(P.stringifyIdent(p.locator));if(a.size===0)throw new Qe("No workspace found to be unlinked in the target project")}else{if(!h.manifest.name)throw new Qe("The target workspace doesn't have a name and thus cannot be unlinked");a.add(P.stringifyIdent(h.locator))}}else{let g=[...o.manifest.resolutions.map(({pattern:f})=>f.descriptor.fullName)];for(let f of(0,wae.default)(g,c))a.add(f)}}return o.manifest.resolutions=o.manifest.resolutions.filter(({pattern:c})=>!a.has(c.descriptor.fullName)),(await Ge.start({configuration:t,stdout:this.context.stdout},async c=>{await i.install({cache:s,report:c})})).exitCode()}};Tu.paths=[["unlink"]],Tu.usage=ve.Usage({description:"disconnect the local project from another one",details:`
This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.
`,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var Bae=Pe(Km()),sM=Pe(Bn());ls();var El=class extends De{constructor(){super(...arguments);this.interactive=z.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:Zi(ts)});this.patterns=z.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=[...i.storedDescriptors.values()],a=o.map(g=>P.stringifyIdent(g)),l=new Set;for(let g of this.patterns){if(P.parseDescriptor(g).range!=="unknown")throw new Qe("Ranges aren't allowed when using --recursive");for(let f of(0,sM.default)(a,g)){let h=P.parseIdent(f);l.add(h.identHash)}}let c=o.filter(g=>l.has(g.identHash));for(let g of c)i.storedDescriptors.delete(g.descriptorHash),i.storedResolutions.delete(g.descriptorHash);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{await i.install({cache:s,report:g})})).exitCode()}async executeUpClassic(){var y;let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd),s=await Rt.find(t);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState({restoreResolutions:!1});let o=(y=this.interactive)!=null?y:t.get("preferInteractive"),a=Hm(this,i),l=o?["keep","reuse","project","latest"]:["project","latest"],c=[],u=[];for(let B of this.patterns){let v=!1,D=P.parseDescriptor(B);for(let T of i.workspaces)for(let H of["dependencies","devDependencies"]){let $=[...T.manifest.getForScope(H).values()].map(V=>P.stringifyIdent(V));for(let V of(0,sM.default)($,P.stringifyIdent(D))){let W=P.parseIdent(V),_=T.manifest[H].get(W.identHash);if(typeof _>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let A=P.makeDescriptor(W,D.range);c.push(Promise.resolve().then(async()=>[T,H,_,await Gm(A,{project:i,workspace:T,cache:s,target:H,modifier:a,strategies:l})])),v=!0}}v||u.push(B)}if(u.length>1)throw new Qe(`Patterns ${ee.prettyList(t,u,xi.CODE)} don't match any packages referenced by any workspace`);if(u.length>0)throw new Qe(`Pattern ${ee.prettyList(t,u,xi.CODE)} doesn't match any packages referenced by any workspace`);let g=await Promise.all(c),f=await ra.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async B=>{for(let[,,v,{suggestions:D,rejections:T}]of g){let H=D.filter(j=>j.descriptor!==null);if(H.length===0){let[j]=T;if(typeof j>"u")throw new Error("Assertion failed: Expected an error to have been set");let $=this.cli.error(j);i.configuration.get("enableNetwork")?B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range
${$}`):B.reportError(27,`${P.prettyDescriptor(t,v)} can't be resolved to a satisfying range (note: network resolution has been disabled)
${$}`)}else H.length>1&&!o&&B.reportError(27,`${P.prettyDescriptor(t,v)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(f.hasErrors())return f.exitCode();let h=!1,p=[];for(let[B,v,,{suggestions:D}]of g){let T,H=D.filter(W=>W.descriptor!==null),j=H[0].descriptor,$=H.every(W=>P.areDescriptorsEqual(W.descriptor,j));H.length===1||$?T=j:(h=!0,{answer:T}=await(0,Bae.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${P.prettyWorkspace(t,B)} \u276F ${v}?`,choices:D.map(({descriptor:W,name:_,reason:A})=>W?{name:_,hint:A,descriptor:W}:{name:_,hint:A,disabled:!0}),onCancel:()=>process.exit(130),result(W){return this.find(W,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let V=B.manifest[v].get(T.identHash);if(typeof V>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(V.descriptorHash!==T.descriptorHash)B.manifest[v].set(T.identHash,T),p.push([B,v,V,T]);else{let W=t.makeResolver(),_={project:i,resolver:W},A=W.bindDescriptor(V,B.anchoredLocator,_);i.forgetResolution(A)}}return await t.triggerMultipleHooks(B=>B.afterWorkspaceDependencyReplacement,p),h&&this.context.stdout.write(`
`),(await Ge.start({configuration:t,stdout:this.context.stdout},async B=>{await i.install({cache:s,report:B,mode:this.mode})})).exitCode()}};El.paths=[["up"]],El.usage=ve.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up [email protected]"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),El.schema=[av("recursive",lc.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var Lu=class extends De{constructor(){super(...arguments);this.recursive=z.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=z.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=P.parseIdent(this.package).identHash,o=this.recursive?j3e(i,s,{configuration:t,peers:this.peers}):Y3e(i,s,{configuration:t,peers:this.peers});es.emitTree(o,{configuration:t,stdout:this.context.stdout,json:this.json,separators:1})}};Lu.paths=[["why"]],Lu.usage=ve.Usage({description:"display the reason why a package is needed",details:`
This command prints the exact reasons why a package appears in the dependency tree.
If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree.
`,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function Y3e(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.storedPackages.values(),a=>P.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={};for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=r.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=r.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;{let p=P.stringifyLocator(a);s[p]={value:[a,ee.Type.LOCATOR],children:l}}let h=P.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ee.Type.DEPENDENT]}}}return o}function j3e(r,e,{configuration:t,peers:i}){let n=Ie.sortMap(r.workspaces,f=>P.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let C=r.storedResolutions.get(p.descriptorHash);if(!C)throw new Error("Assertion failed: The resolution should have been registered");let y=r.storedPackages.get(C);if(!y)throw new Error("Assertion failed: The package should have been registered");a(y)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let C=p!==null?ee.tuple(ee.Type.DEPENDENT,{locator:f,descriptor:p}):ee.tuple(ee.Type.LOCATOR,f),y={},B={value:C,children:y},v=P.stringifyLocator(f);if(h[v]=B,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&r.tryWorkspaceByLocator(f))))for(let D of f.dependencies.values()){if(!i&&f.peerDependencies.has(D.identHash))continue;let T=r.storedResolutions.get(D.descriptorHash);if(!T)throw new Error("Assertion failed: The resolution should have been registered");let H=r.storedPackages.get(T);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,y,D)}};for(let f of n){let h=r.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var dM={};ut(dM,{default:()=>c4e,gitUtils:()=>AA});var AA={};ut(AA,{TreeishProtocols:()=>Lb,clone:()=>pM,fetchBase:()=>qae,fetchChangedFiles:()=>Jae,fetchChangedWorkspaces:()=>A4e,fetchRoot:()=>jae,isGitUrl:()=>ep,lsRemote:()=>Yae,normalizeLocator:()=>fM,normalizeRepoUrl:()=>Vm,resolveUrl:()=>hM,splitRepoUrl:()=>zm});var gM=Pe(Mae()),Hae=Pe(PB()),$h=Pe(J("querystring")),cM=Pe(Xr());var Kae=J("url");function lM(r,e,t){let i=r.indexOf(t);return r.lastIndexOf(e,i>-1?i:1/0)}function Oae(r){try{return new Kae.URL(r)}catch{return}}function o4e(r){let e=lM(r,"@","#"),t=lM(r,":","#");return t>e&&(r=`${r.slice(0,t)}/${r.slice(t+1)}`),lM(r,":","#")===-1&&r.indexOf("//")===-1&&(r=`ssh://${r}`),r}function Uae(r){return Oae(r)||Oae(o4e(r))}function Gae(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var a4e=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],Lb=(n=>(n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver",n))(Lb||{});function ep(r){return r?a4e.some(e=>!!r.match(e)):!1}function zm(r){r=Vm(r);let e=r.indexOf("#");if(e===-1)return{repo:r,treeish:{protocol:"head",request:"HEAD"},extra:{}};let t=r.slice(0,e),i=r.slice(e+1);if(i.match(/^[a-z]+=/)){let n=$h.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(Lb).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s<"u"?(o=s,a=n[s]):(o="head",a="HEAD");for(let l of Object.values(Lb))delete n[l];return{repo:t,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:t,treeish:{protocol:s,request:o},extra:{}}}}function Vm(r,{git:e=!1}={}){if(r=r.replace(/^git\+https:/,"https:"),r=r.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),r=r.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let t=Uae(r);t&&(r=t.href),r=r.replace(/^gi Line truncated
- ${l.join(`
- `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:a.cwd})}};Ou.paths=[["workspace"]],Ou.usage=ve.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:`
This command will run a given sub-command on a single workspace.
`,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var u4e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Wae.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"}},commands:[cu,uu,gu,fu,Nu,Su,mu,Mu,Vh,Xh,qm,Zh,Au,lu,hu,pu,du,Cu,Eu,Iu,yu,wu,Tu,Bu,xu,vu,Pu,bu,Du,ku,Ru,_h,Fu,El,Lu,Ou]},g4e=u4e;var wM={};ut(wM,{default:()=>h4e});var Te={optional:!0},mM=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/[email protected] || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Te,zenObservable:Te}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Te,zenObservable:Te}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Te}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Te,["postcss-jsx"]:Te,["postcss-less"]:Te,["postcss-markdown"]:Te,["postcss-scss"]:Te}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Te}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Te}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Te,"vue-template-compiler":Te}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Te,"utf-8-validate":Te}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Te,"vuetify-loader":Te}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Te}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-lo Line truncated
`),await O.writeFilePromise(x.join(i,"yarn.lock"),"");let n=x.join(i,".yarnrc.yml"),s=await ye.findProjectCwd(this.context.cwd,xt.lockfile),o=!(await ye.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),a=s!==null?x.join(s,".yarnrc.yml"):null;a!==null&&O.existsSync(a)?(await O.copyFilePromise(a,n),await ye.updateConfiguration(i,y=>{let B={...y,enableGlobalCache:o,enableTelemetry:!1};return Array.isArray(y.plugins)&&(B.plugins=y.plugins.map(v=>{let D=typeof v=="string"?v:v.path,T=K.isAbsolute(D)?D:K.resolve(K.fromPortablePath(s),D);return typeof v=="string"?T:{path:T,spec:v.spec}})),B})):await O.writeFilePromise(n,`enableGlobalCache: ${o}
enableTelemetry: false
`);let l=(C=this.packages)!=null?C:[this.command],c=P.parseDescriptor(this.command).name,u=await this.cli.run(["add","--",...l],{cwd:i,quiet:this.quiet});if(u!==0)return u;this.quiet||this.context.stdout.write(`
`);let g=await ye.find(i,this.context.plugins),{project:f,workspace:h}=await je.find(g,i);if(h===null)throw new ct(f.cwd,i);await f.restoreInstallState();let p=await Wt.getWorkspaceAccessibleBinaries(h);return p.has(c)===!1&&p.size===1&&typeof this.packages>"u"&&(c=Array.from(p)[0][0]),await Wt.executeWorkspaceAccessibleBinary(h,c,this.args,{packageAccessibleBinaries:p,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};Ku.paths=[["dlx"]],Ku.usage=ve.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var p4e={commands:[tp,Ku]},d4e=p4e;var vM={};ut(vM,{default:()=>E4e,fileUtils:()=>Zm});var rp=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,Xm=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,jr="file:";var Zm={};ut(Zm,{makeArchiveFromLocator:()=>Kb,makeBufferFromLocator:()=>SM,makeLocator:()=>QM,makeSpec:()=>_ae,parseSpec:()=>bM});function bM(r){let{params:e,selector:t}=P.parseRange(r),i=K.toPortablePath(t);return{parentLocator:e&&typeof e.locator=="string"?P.parseLocator(e.locator):null,path:i}}function _ae({parentLocator:r,path:e,folderHash:t,protocol:i}){let n=r!==null?{locator:P.stringifyLocator(r)}:{},s=typeof t<"u"?{hash:t}:{};return P.makeRange({protocol:i,source:e,selector:e,params:{...s,...n}})}function QM(r,{parentLocator:e,path:t,folderHash:i,protocol:n}){return P.makeLocator(r,_ae({parentLocator:e,path:t,folderHash:i,protocol:n}))}async function Kb(r,{protocol:e,fetchOptions:t,inMemory:i=!1}){let{parentLocator:n,path:s}=P.parseFileStyleRange(r.reference,{protocol:e}),o=x.isAbsolute(s)?{packageFs:new qt(Me.root),prefixPath:Me.dot,localPath:Me.root}:await t.fetcher.fetch(n,t),a=o.localPath?{packageFs:new qt(Me.root),prefixPath:x.relative(Me.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=x.join(a.prefixPath,s);return await Ie.releaseAfterUseAsync(async()=>await mi.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:P.getIdentVendorPath(r),compressionLevel:t.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function SM(r,{protocol:e,fetchOptions:t}){return(await Kb(r,{protocol:e,fetchOptions:t,inMemory:!0})).getBufferAndClose()}var Ub=class{supports(e,t){return!!e.reference.startsWith(jr)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:jr});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async fetchFromDisk(e,t){return Kb(e,{protocol:jr,fetchOptions:t})}};var C4e=2,Hb=class{supportsDescriptor(e,t){return e.range.match(rp)?!0:!!e.range.startsWith(jr)}supportsLocator(e,t){return!!e.reference.startsWith(jr)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return rp.test(e.range)&&(e=P.makeDescriptor(e,`${jr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=bM(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await SM(P.makeLocator(e,P.makeRange({protocol:jr,source:n,selector:n,params:{locator:P.stringifyLocator(s)}})),{protocol:jr,fetchOptions:i.fetchOptions}),a=li.makeHash(`${C4e}`,o).slice(0,6);return[QM(e,{parentLocator:s,path:n,folderHash:a,protocol:jr})]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie. Line truncated
`);let a=x.join(this.context.cwd,ot.fileName);await O.changeFilePromise(a,`${JSON.stringify(o,null,2)}
`,{automaticNewlines:!0});let l=x.join(this.context.cwd,"README.md");if(O.existsSync(l)||await O.writeFilePromise(l,`# ${P.stringifyIdent(n.name)}
`),!i||i.cwd===this.context.cwd){let u=x.join(this.context.cwd,xt.lockfile);O.existsSync(u)||await O.writeFilePromise(u,"");let f=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!.yarn/cache","#.pnp.*"].map(T=>`${T}
`).join(""),h=x.join(this.context.cwd,".gitignore");O.existsSync(h)||await O.writeFilePromise(h,f);let C=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(T=>`${T}
`).join(""),y=x.join(this.context.cwd,".gitattributes");O.existsSync(y)||await O.writeFilePromise(y,C);let B={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,PAe.default)(B,t.get("initEditorConfig"));let v=`root = true
`;for(let[T,H]of Object.entries(B)){v+=`
[${T}]
`;for(let[j,$]of Object.entries(H)){let V=j.replace(/[A-Z]/g,W=>`_${W.toLowerCase()}`);v+=`${V} = ${$}
`}}let D=x.join(this.context.cwd,".editorconfig");O.existsSync(D)||await O.writeFilePromise(D,v),O.existsSync(x.join(this.context.cwd,".git"))||await Cr.execvp("git",["init"],{cwd:this.context.cwd})}}};Uu.paths=[["init"]],Uu.usage=ve.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Q8e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Uu]},S8e=Q8e;var NM={};ut(NM,{default:()=>x8e});var lA="portal:",cA="link:";var Wb=class{supports(e,t){return!!e.reference.startsWith(lA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:lA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:lA}),s=x.isAbsolute(n)?{packageFs:new qt(Me.root),prefixPath:Me.dot,localPath:Me.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new qt(Me.root),prefixPath:x.relative(Me.root,s.localPath),localPath:Me.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new qt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,localPath:l}:{packageFs:new vo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot}}};var zb=class{supportsDescriptor(e,t){return!!e.range.startsWith(lA)}supportsLocator(e,t){return!!e.reference.startsWith(lA)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=e.range.slice(lA.length);return[P.makeLocator(e,`${lA}${K.toPortablePath(n)}`)]}async getSatisfying(e,t,i){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),n=await Ie.releaseAfterUseAsync(async()=>await ot.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return{...e,version:n.version||"0.0.0",languageName:n.languageName||t.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin}}};var Vb=class{supports(e,t){return!!e.reference.startsWith(cA)}getLocalPath(e,t){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:cA});if(x.isAbsolute(n))return n;let s=t.fetcher.getLocalPath(i,t);return s===null?null:x.resolve(s,n)}async fetch(e,t){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:cA}),s=x.isAbsolute(n)?{packageFs:new qt(Me.root),prefixPath:Me.dot,localPath:Me.root}:await t.fetcher.fetch(i,t),o=s.localPath?{packageFs:new qt(Me.root),prefixPath:x.relative(Me.root,s.localPath),localPath:Me.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=x.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new qt(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,discardFromLookup:!0,localPath:l}:{packageFs:new vo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,discardFromLookup:!0}}};var Xb=class{supportsDescriptor(e,t){return!!e.range.startsWith(cA)}supportsLocator(e,t){return!!e.reference.startsWith(cA)}shouldPersistResolution(e,t){return!1}bindDescriptor( Line truncated
${u}, next tree:
${eE(a)}`);let f=NAe(a);if(f)throw new Error(`${f}, after hoisting finished:
${eE(a)}`)}return s.debugLevel>=2&&console.log(eE(a)),L8e(a)},P8e=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())t.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),t},D8e=r=>{let e=r[r.length-1],t=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of r)u=g.dependencies.get(c.name),u&&t.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),t},kAe=(r,e)=>{if(e.decoupled)return e;let{name:t,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:p,hoistedTo:C}=e,y={name:t,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:new Map(p),hoistedTo:new Map(C)},B=y.dependencies.get(t);return B&&B.ident==y.ident&&y.dependencies.set(t,y),r.dependencies.set(y.name,y),y},k8e=(r,e)=>{let t=new Map([[r.name,[r.ident]]]);for(let n of r.dependencies.values())r.peerNames.has(n.name)||t.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!r.peerNames.has(s)){let a=t.get(s);a||(a=[],t.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return t},TM=r=>{let e=new Set,t=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!r.peerNames.has(s)){let o=r.dependencies.get(s);o&&!e.has(o)&&t(o,n)}e.add(i)}};for(let i of r.dependencies.values())r.peerNames.has(i.name)||t(i);return e},MM=(r,e,t,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=M8e(o),l=k8e(o,a),c=r==o?new Map:n.fastLookupPossible?P8e(e):D8e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([C,y])=>[C,y[0]])),p=new Map;do{let C=N8e(r,e,t,c,h,l,i,p,n);C.isGraphChanged&&(f=!0),C.anotherRoundNeeded&&(g=!0),u=!1;for(let[y,B]of l)B.length>1&&!o.dependencies.has(y)&&(h.delete(y),B.shift(),h.set(y,B[0]),u=!0)}while(u);for(let C of o.dependencies.values())if(!o.peerNames.has(C.name)&&!t.has(C.locator)){t.add(C.locator);let y=MM(r,[...e,C],t,p,n);y.isGraphChanged&&(f=!0),y.anotherRoundNeeded&&(g=!0),t.delete(C.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},R8e=r=>{for(let[e,t]of r.dependencies)if(!r.peerNames.has(e)&&t.ident!==r.ident)return!0;return!1},F8e=(r,e,t,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(y=>ki(y)).join("\u2192")}`);let h=t[t.length-1],C=!(i.ident===h.ident);if(l&&!C&&(g="- self-reference"),C&&(C=i.dependencyKind!==1,l&&!C&&(g="- workspace")),C&&i.dependencyKind===2&&(C=!R8e(i),l&&!C&&(g="- external soft link with unhoisted dependencies")),C&&(C=h.dependencyKind!==1||h.hoistedFrom.has(i.name)||e.size===1,l&&!C&&(g=h.reasons.get(i.name))),C&&(C=!r.peerNames.has(i.name),l&&!C&&(g=`- cannot shadow peer: ${ki(r.originalDependencies.get(i.name).locator)} at ${u}`)),C){let y=!1,B=n.get(i.name);if(y=!B||B.ident===i.ident,l&&!y&&(g=`- filled by: ${ki(B.locator)} at ${u}`),y)for(let v=t.length-1;v>=1;v--){let T=t[v].dependencies.get(i.name);if(T&&T.ident!==i.ident){y=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${ki(T.locator)} at ${t.slice(0,v).map(j=>ki(j.locator)).join("\u2192")}`);break}}C=y}if(C&&(C=s.get(i.name)===i.ident,l&&!C&&(g=`- filled by: ${ki(o.get(i.name)[0])} at ${u}`)),C){let y=!0,B=new Set(i.peerNames);for(let v=t.length-1;v>=1;v--){let D=t[v];for(let T of B){if(D.peerNames.has(T)&&D.originalDependencies.has(T))continue;let H=D.dependencies.get(T);H&&r.dependencies.get(T)!==H&&(v===t.length-1?f.add(H):(f=null,y=!1,l&&(g=`- peer dependency ${ki(H.locator)} from parent ${ki(D.locator)} was not hoisted to ${u}`))),B.delete(T)}if(!y)break}C=y}if(C&&!c)for(let y of i.hoistedDependencies.values()){let B=n.get(y.name)||r.dependencies.get(y.name);if(!B||y.ident!==B.ident){C=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${ki(y.locator)}, available: ${ki(B==null?void 0:B.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:C?0:1,reason:g}},Zb=r=>`${r.name}@${r.locator}`,N8e=(r,e,t,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(B,v,D,T,H)=>{if(u.has(T))return;let j=[...v,Zb(T)],$=[...D,Zb(T)],V=new Map,W=new Map;for(let re of TM(T)){let M=F8e(c,t,[c,...B,T],re,i,n,s,a,{outputReason:l.debugLevel>=2,fastLooku Line truncated
${eE(r)}`)}let ge=TM(T);for(let re of ge)if(_.has(re)){let M=W.get(re);if((n.get(re.name)===re.ident||!T.reasons.has(re.name))&&M.isHoistable!==0&&T.reasons.set(re.name,M.reason),!re.isHoistBorder&&$.indexOf(Zb(re))<0){u.add(T);let ue=kAe(T,re);h([...B,T],j,$,ue,C),u.delete(T)}}},p,C=new Set(TM(c)),y=Array.from(e).map(B=>Zb(B));do{p=C,C=new Set;for(let B of p){if(B.locator===c.locator||B.isHoistBorder)continue;let v=kAe(c,B);h([],Array.from(t),y,v,C)}}while(C.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},NAe=r=>{let e=[],t=new Set,i=new Set,n=(s,o,a)=>{if(t.has(s)||(t.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>ki(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,C=`${h?` hoisted to ${h}`:""}`,y=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${y} - broken require promise for ${c.name}${C}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${y} - broken require promise: no required dependency ${c.name}${C} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(r,r.dependencies,r),e.join(`
`)},T8e=(r,e)=>{let{identName:t,name:i,reference:n,peerNames:s}=r,o={name:i,references:new Set([n]),locator:LM(t,n),ident:DAe(t,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[r,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:C,peerNames:y,hoistPriority:B,dependencyKind:v}=c,D=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([C]),locator:LM(p,C),ident:DAe(p,C),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(y),reasons:new Map,decoupled:!0,isHoistBorder:D?D.has(h):!1,hoistPriority:B||0,dependencyKind:v||0,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=C=>{if(!h.has(C)){h.add(C),C.decoupled=!1;for(let y of C.dependencies.values())C.peerNames.has(y.name)||p(y)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of r.dependencies)l(c,o);return o},OM=r=>r.substring(0,r.indexOf("@",1)),L8e=r=>{let e={name:r.name,identName:OM(r.locator),references:new Set(r.references),dependencies:new Set},t=new Set([r]),i=(n,s,o)=>{let a=t.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:OM(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){t.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);t.delete(n)}};for(let n of r.dependencies.values())i(n,r,e);return e},M8e=r=>{let e=new Map,t=new Set([r]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!t.has(a);if(n(a).dependents.add(o.ident),!l){t.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of r.dependencies.values())r.peerNames.has(o.name)||s(r,o);return e},ki=r=>{if(!r)return"none";let e=r.indexOf("@",1),t=r.substring(0,e);t.endsWith("$wsroot$")&&(t=`wh:${t.replace("$wsroot$","")}`);let i=r.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(t=`v:${t}`),n.startsWith("workspace")&&(t=`w:${t}`,n=""),`${t}${n?`@${n}`:""}`}else return`${t}`},RAe=5e4,eE=r=>{let e=0,t=(n,s,o="")=>{if(e>RAe||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name===u.name?0:c.name>u.name?1:-1),l="";s.add(n);for(let c=0;c<a.length;c++){let u=a[c];if(!n.peerNames.has(u.name)&&u!==n){let g=n.reasons.get(u.name),f=OM(u.locator);l+=`${o}${c<a.length-1?"\u251C\u2500":"\u2514\u2500"}${(s.has(u)?">":"")+(f!==u.name?`a:${u.name}:`:"")+ki(u.locator)+(g?` ${g}`:"")}
`,l+=t(u,s,`${o}${c<a.length-1?"\u2502 ":" "}`)}}return s.delete(n),l};return t(r,new Set)+(e>RAe?`
Tree is too large, part of the tree has been dunped
`:"")};var tE=(i=>(i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none",i))(tE||{}),TAe="node_modules",Hu="$wsroot$";var rE=(r,e)=>{let{packageTree:t,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=K8e(r,e),o=null;if(n.length===0){let a=FAe(t,{hoistingLimits:i});o=H8e(r,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},sa=r=>`${r.name}@${r.reference}`,UM=r=>{let e=new Map;for(let[t,i]of r.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(t)}for(let t of e.values())t.locations=t.locations.sort((i,n)=>{let s=i.split(x.delimiter).length,o=n.split(x.delimiter).length;return n===i?0:s!==o?o-s:n>i?1:-1});return e},LAe=(r,e)=>{let t=P.isVirtualLocator(r)?P.devirtualizeLocator(r):r,i=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e;return P.areLocatorsEqual(t,i)},KM=(r,e,t,i)=>{if(r.linkType!=="SOFT")return!1;let n=K.toPortablePath(t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(r.packageLocation):r.packageLocation);return x.contains(i,n)===null},O8e=r=>{let e=r.getPackageInformation(r.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(r.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=K.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=r.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=sa(f);if(l.has(p))return;l.add(p);let C=r.getPackageInformation(f);if(C){let y=h?sa(h):"";if(sa(f)!==y&&C.linkType==="SOFT"&&!KM(C,f,r,i)){let B=MAe(C,f,r);(!a.get(B)||f.reference.startsWith("workspace:"))&&a.set(B,f)}for(let[B,v]of C.packageDependencies)v!==null&&(C.packagePeers.has(B)||c(r.getLocator(B,v),f))}};for(let f of o)c(f,null);let u=i.split(x.sep);for(let f of a.values()){let h=r.getPackageInformation(f),C=K.toPortablePath(h.packageLocation.slice(0,-1)).split(x.sep).slice(u.length),y=s;for(let B of C){let v=y.children.get(B);v||(v={children:new Map},y.children.set(B,v)),y=v}y.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=sa(h),C=n.get(p);C||(C=new Set,n.set(p,C)),C.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},K8e=(r,e)=>{let t=[],i=!1,n=new Map,s=O8e(r),o=r.getPackageInformation(r.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=r.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=K.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,dependencyKind:1},u=new Map,g=(h,p)=>`${sa(p)}:${h}`,f=(h,p,C,y,B,v,D,T)=>{var re,M;let H=g(h,C),j=u.get(H),$=!!j;!$&&C.name===a.name&&C.reference===a.reference&&(j=c,u.set(H,c));let V=KM(p,C,r,l);if(!j){let F=0;V?F=2:p.linkType==="SOFT"&&C.name.endsWith(Hu)&&(F=1),j={name:h,identName:C.name,reference:C.reference,dependencies:new Set,peerNames:F===1?new Set:p.packagePeers,dependencyKind:F},u.set(H,j)}let W;if(V?W=2:B.linkType==="SOFT"?W=1:W=0,j.hoistPriority=Math.max(j.hoistPriority||0,W),T&&!V){let F=sa({name:y.identName,reference:y.reference}),ue=n.get(F)||new Set;n.set(F,ue),ue.add(j.name)}let _=new Map(p.packageDependencies);if(e.project){let F=e.project.workspacesByCwd.get(K.toPortablePath(p.packageLocation.slice(0,-1)));if(F){let ue=new Set([...Array.from(F.manifest.peerDependencies.values(),pe=>P.stringifyIdent(pe)),...Array.from(F.manifest.peerDependenciesMeta.keys())]);for(let pe of ue)_.has(pe)||(_.set(pe,v.get(pe)||null),j.peerNames.add(pe))}}let A=sa({name:C.name.replace(Hu,""),reference:C.reference}),Ae=s.get(A);if(Ae)for(let F of Ae)_.set(`${F.name}${Hu}`,F.reference);(p!==B||p.linkType!=="SOFT"||!V&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(D)))&&y.dependencies.add(j);let ge=C!==a&&p.linkType==="SOFT"&&!C.name.endsWith(Hu)&&!V;if(!$&&!ge){let F=new Map;for(let[ue,pe]of _)if(pe!==null){let ke=r.getLocator(ue,pe),Fe=r.getLocator(ue.replace(Hu,""),pe),Ne=r.getPackageInformation(Fe);if(Ne===null)throw new Error("Assertion failed: Expected the package to have been registered");let oe=KM(Ne,ke,r,l);if(e.validateExternalSoftLinks&&e.project&&oe){Ne.packageDependencies.size>0&&(i=!0);for(let[qe,ne]of Ne.packageDependencies)if(ne!==null){let Y=P.parseLocator(Array.isArray(ne)?`${ne[0]}@${ne[1]}`:`${qe}@${ne}`);if(sa(Y)!==sa(ke)){let he=_.get(qe);if(he){let ie=P.parseLocator(Array.isArray(he)?`${he[0]}@${he[1]}`:`${qe}@${he}`);LAe(ie,Y)||t.push({messageName:71,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(ke.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${C.name}@${C.referenceLine truncated
`;for(let s=0,o=r.length;s<o;++s)n+=i+_b(String(s),r[s],e,i).replace(/^ +/,""),s+1<o&&(n+=","),n+=`
`;return n+=t,n+="]",n}function j8e(r,e,t){let i=Object.keys(r),n="";n+="{";for(let s=0,o=i.length,a=0;s<o;++s){let l=i[s],c=r[l];typeof c>"u"||(a!==0&&(n+=", "),n+=JSON.stringify(l),n+=": ",n+=_b(l,c,e,t).replace(/^ +/g,""),a+=1)}return n+="}",n}function q8e(r,e,t){let i=Object.keys(r),n=`${t} `,s="";s+=t,s+=`{
`;let o=0;for(let a=0,l=i.length;a<l;++a){let c=i[a],u=r[c];typeof u>"u"||(o!==0&&(s+=",",s+=`
`),s+=n,s+=JSON.stringify(c),s+=": ",s+=_b(c,u,e,n).replace(/^ +/g,""),o+=1)}return o!==0&&(s+=`
`),s+=t,s+="}",s}function _b(r,e,t,i){let{next:n}=OAe[t],s=n[r]||n["*"];return KAe(e,s,i)}function KAe(r,e,t){let{collapsed:i}=OAe[e];return Array.isArray(r)?i?G8e(r,e,t):Y8e(r,e,t):typeof r=="object"&&r!==null?i?j8e(r,e,t):q8e(r,e,t):JSON.stringify(r)}function UAe(r){return KAe(r,"TOP_LEVEL","")}function iE(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(t.map(o=>s(o)));let n=t.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]<a[o]?-1:a[s]>a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>t[s])}function J8e(r){let e=new Map,t=iE(r.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of t){let s=e.get(i);typeof s>"u"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function W8e(r){return iE(r.fallbackPool||[],([e])=>e)}function z8e(r){let e=[];for(let[t,i]of iE(r.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([t,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of iE(i,([g])=>g===null?"0":`1${g}`)){let g=[];t!==null&&s!==null&&!a.has(t)&&g.push([t,s]);for(let[p,C]of iE(a.entries(),([y])=>y))g.push([p,C]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function nE(r){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:r.dependencyTreeRoots,enableTopLevelFallback:r.enableTopLevelFallback||!1,ignorePatternData:r.ignorePattern||null,fallbackExclusionList:J8e(r),fallbackPool:W8e(r),packageRegistryData:z8e(r)}}var YAe=Pe(GAe());function jAe(r,e){return[r?`${r}
`:"",`/* eslint-disable */
`,`"use strict";
`,`
`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {
`,e.replace(/^/gm," "),`}
`,`
`,(0,YAe.default)()].join("")}function V8e(r){return JSON.stringify(r,null,2)}function X8e(r){return`'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\
`)}'`}function Z8e(r){return[`return hydrateRuntimeState(JSON.parse(${X8e(UAe(r))}), {basePath: basePath || __dirname});
`].join("")}function _8e(r){return[`var path = require('path');
`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(r)});
`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)});
`].join("")}function qAe(r){let e=nE(r),t=Z8e(e);return jAe(r.shebang,t)}function JAe(r){let e=nE(r),t=_8e(r.dataLocation),i=jAe(r.shebang,t);return{dataFile:V8e(e),loaderFile:i}}var dle=J("fs");var Cle=J("util");function GM(r,{basePath:e}){let t=K.toPortablePath(e),i=x.resolve(t),n=r.ignorePatternData!==null?new RegExp(r.ignorePatternData):null,s=new Map,o=new Map(r.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var D;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let C=(D=p.discardFromLookup)!=null?D:!1,y={name:g,reference:h},B=s.get(p.packageLocation);B?(B.discardFromLookup=B.discardFromLookup&&C,C||(B.locator=y)):s.set(p.packageLocation,{locator:y,discardFromLookup:C});let v=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:C,get packageLocation(){return v||(v=x.join(i,p.packageLocation))}}]}))])),a=new Map(r.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(r.fallbackPool),c=r.dependencyTreeRoots,u=r.enableTopLevelFallback;return{basePath:t,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var gE=J("module"),uA=J("url"),_M=J("util");var qi=J("url");var XAe=Pe(J("assert"));var YM=Array.isArray,sE=JSON.stringify,oE=Object.getOwnPropertyNames,Gu=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),jM=(r,e)=>RegExp.prototype.exec.call(r,e),qM=(r,...e)=>RegExp.prototype[Symbol.replace].apply(r,e),Il=(r,...e)=>String.prototype.endsWith.apply(r,e),JM=(r,...e)=>String.prototype.includes.apply(r,e),WM=(r,...e)=>String.prototype.lastIndexOf.apply(r,e),aE=(r,...e)=>String.prototype.indexOf.apply(r,e),WAe=(r,...e)=>String.prototype.replace.apply(r,e),yl=(r,...e)=>String.prototype.slice.apply(r,e),oa=(r,...e)=>String.prototype.startsWith.apply(r,e),zAe=Map,VAe=JSON.parse;function AE(r,e,t){return class extends t{constructor(...i){super(e(...i)),this.code=r,this.name=`${t.name} [${r}]`}}}var ZAe=AE("ERR_PACKAGE_IMPORT_NOT_DEFINED",(r,e,t)=>`Package import specifier "${r}" is not defined${e?` in package ${e}package.json`:""} imported from ${t}`,TypeError),zM=AE("ERR_INVALID_MODULE_SPECIFIER",(r,e,t=void 0)=>`Invalid module "${r}" ${e}${t?` imported from ${t}`:""}`,TypeError),_Ae=AE("ERR_INVALID_PACKAGE_TARGET",(r,e,t,i=!1,n=void 0)=>{let s=typeof t=="string"&&!i&&t.length&&!oa(t,"./");return e==="."?((0,XAe.default)(i===!1),`Invalid "exports" main target ${sE(t)} defined in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`):`Invalid "${i?"imports":"exports"}" target ${sE(t)} defined for '${e}' in the package config ${r}package.json${n?` imported from ${n}`:""}${s?'; targets must start with "./"':""}`},Error),lE=AE("ERR_INVALID_PACKAGE_CONFIG",(r,e,t)=>`Invalid package config ${r}${e?` while importing ${e}`:""}${t?`. ${t}`:""}`,Error),$Ae=AE("ERR_PACKAGE_PATH_NOT_EXPORTED",(r,e,t=void 0)=>e==="."?`No "exports" main defined in ${r}package.json${t?` imported from ${t}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${r}package.json${t?` imported from ${t}`:""}`,Error);var eQ=J("url");function ele(r,e){let t=Object.create(null);for(let i=0;i<e.length;i++){let n=e[i];Gu(r,n)&&(t[n]=r[n])}return t}var $b=new zAe;function $8e(r,e,t,i){let n=$b.get(r);if(n!==void 0)return n;let s=i(r);if(s===void 0){let h={pjsonPath:r,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return $b.set(r,h),h}let o;try{o=VAe(s)}catch(h){throw new lE(r,(t?`"${e}" from `:"")+(0,eQ.fileURLToPath)(t||e),h.message)}let{imports:a,main:l,name:c,type:u}=ele(o,["imports","main","name","type"]),g=Gu(o,"exports")?o.exports:void 0;(typeof a!="object"||a===null)&&(a=void 0),typeof l!="string"&&(l=void 0),typeof c!="string"&&(c=void 0),u!=="module"&&u!=="commonjs"&&(u="none");let f={pjsonPath:r,exists:!0,main:l,name:c,type:u,exports:g,imports:a};return $b.set(r,f),f}function tle(r,e){let t=new URL("./package.json",r);for(;;){let s=t.pathname;if(Il(s,"node_modules/package.json"))break;let o=$8e((0,eQ.fileURLToPath)(t),r,void 0,e);if(o.exists)return o;let a=t;if(t=new URL("../package.json",t),t.pathname===a.pathname)break}let i=(0,eQ.fileURLToPath)(t),n={pjsonPath:i,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return $b.set(i,n),n}function eze(r,e,t){throw new ZAe(r,e&&(0,qi.fileURLToPath)(new URL(".",e)),(0,qi.fileURLToPath)(t))}function tze(r,e,t,i){let n=`request is not a valid subpath for the "${t?"imports":"exports"}" resolution of ${(0,qi.fileURLToPath)(e)}`;throw new zM(r,n,i&&(0,qi.fileURLToPath)(i))}function cE(r,e,t,i,n){throw typeof e=="object"&&e!==null?e=sE(e,null,""):e=`${e}`,new _Ae((0,qi.fileURLToPath)(new URL(".",t)),r,e,i,n&&(0,qi.fileURLToPath)(n))}var rle=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|% Line truncated
`),t;o=r[++s]}else if(o===" "&&!i){n=!0;continue}else if(o==='"'){i=!i;continue}n?(t.push(o),n=!1):t[t.length-1]+=o}return i&&e.push(`invalid value for NODE_OPTIONS (unterminated string)
`),t}var hle=J("module");var[Ji,aa]=process.versions.node.split(".").map(r=>parseInt(r,10)),aBt=Ji>16||Ji===16&&aa>=12,ABt=Ji>17||Ji===17&&aa>=5||Ji===16&&aa>=15,lBt=Ji>17||Ji===17&&aa>=1||Ji===16&&aa>14,fle=Ji>19||Ji===19&&aa>=2||Ji===18&&aa>=13,cBt=Ji>19||Ji===19&&aa>=3,uBt=Ji>18||Ji===18&&aa>=1||Ji===16&&aa>=17;var cze=new Set(hle.Module.builtinModules||Object.keys(process.binding("natives"))),tQ=r=>r.startsWith("node:")||cze.has(r);function ple(r){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(r=r.map(e=>K.fromPortablePath(Br.resolveVirtual(K.toPortablePath(e)))),fle)process.send({"watch:require":r});else for(let e of r)process.send({"watch:require":e})}function $M(r,e){let t=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,s=/^(\/|\.{1,2}(\/|$))/,o=/\/$/,a=/^\.{0,2}\//,l={name:null,reference:null},c=[],u=new Set;if(r.enableTopLevelFallback===!0&&c.push(l),e.compatibilityMode!==!1)for(let oe of["react-scripts","gatsby"]){let le=r.packageRegistry.get(oe);if(le)for(let Be of le.keys()){if(Be===null)throw new Error("Assertion failed: This reference shouldn't be null");c.push({name:oe,reference:Be})}}let{ignorePattern:g,packageRegistry:f,packageLocatorsByLocations:h}=r;function p(oe,le){return{fn:oe,args:le,error:null,result:null}}function C(oe){var qe,ne,Y,he,ie,de;let le=(Y=(ne=(qe=process.stderr)==null?void 0:qe.hasColors)==null?void 0:ne.call(qe))!=null?Y:process.stdout.isTTY,Be=(_e,Pt)=>`\x1B[${_e}m${Pt}\x1B[0m`,fe=oe.error;console.error(fe?Be("31;1",`\u2716 ${(he=oe.error)==null?void 0:he.message.replace(/\n.*/s,"")}`):Be("33;1","\u203C Resolution")),oe.args.length>0&&console.error();for(let _e of oe.args)console.error(` ${Be("37;1","In \u2190")} ${(0,_M.inspect)(_e,{colors:le,compact:!0})}`);oe.result&&(console.error(),console.error(` ${Be("37;1","Out \u2192")} ${(0,_M.inspect)(oe.result,{colors:le,compact:!0})}`));let ae=(de=(ie=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ie.slice(2))!=null?de:[];if(ae.length>0){console.error();for(let _e of ae)console.error(` ${Be("38;5;244",_e)}`)}console.error()}function y(oe,le){if(e.allowDebug===!1)return le;if(Number.isFinite(i)){if(i>=2)return(...Be)=>{let fe=p(oe,Be);try{return fe.result=le(...Be)}catch(ae){throw fe.error=ae}finally{C(fe)}};if(i>=1)return(...Be)=>{try{return le(...Be)}catch(fe){let ae=p(oe,Be);throw ae.error=fe,C(ae),fe}}}return le}function B(oe){let le=A(oe);if(!le)throw ri("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return le}function v(oe){if(oe.name===null)return!0;for(let le of r.dependencyTreeRoots)if(le.name===oe.name&&le.reference===oe.reference)return!0;return!1}let D=new Set(["node","require",...gle("--conditions")]);function T(oe,le=D,Be){let fe=re(x.join(oe,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(fe===null)throw ri("INTERNAL",`The locator that owns the "${oe}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=B(fe),qe=x.join(ae,xt.manifest);if(!e.fakeFs.existsSync(qe))return null;let ne=JSON.parse(e.fakeFs.readFileSync(qe,"utf8"));if(ne.exports==null)return null;let Y=x.contains(ae,oe);if(Y===null)throw ri("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");Y!=="."&&!a.test(Y)&&(Y=`./${Y}`);try{let he=ole({packageJSONUrl:(0,uA.pathToFileURL)(K.fromPortablePath(qe)),packageSubpath:Y,exports:ne.exports,base:Be?(0,uA.pathToFileURL)(K.fromPortablePath(Be)):null,conditions:le});return K.toPortablePath((0,uA.fileURLToPath)(he))}catch(he){throw ri("EXPORTS_RESOLUTION_FAILED",he.message,{unqualifiedPath:po(oe),locator:fe,pkgJson:ne,subpath:po(Y),conditions:le},he.code)}}function H(oe,le,{extensions:Be}){let fe;try{le.push(oe),fe=e.fakeFs.statSync(oe)}catch{}if(fe&&!fe.isDirectory())return e.fakeFs.realpathSync(oe);if(fe&&fe.isDirectory()){let ae;try{ae=JSON.parse(e.fakeFs.readFileSync(x.join(oe,xt.manifest),"utf8"))}catch{}let qe;if(ae&&ae.main&&(qe=x.resolve(oe,ae.main)),qe&&qe!==oe){let ne=H(qe,le,{extensions:Be});if(ne!==null)return ne}}for(let ae=0,qe=Be.length;ae<qe;ae++){let ne=`${oe}${Be[ae]}`;if(le.push(ne),e.fakeFs.existsSync(ne))return ne}if(fe&&fe.isDirectory())for(let ae=0,qe=Be.length;ae<qe;ae++){let ne=x.format({dir:oe,name:"index",ext:Be[ae]});if(le.push(ne),e.fakeFs.existsSync(ne))return ne}return null}function j(oe){let le=new gE.Module(oe,null);return le.filename=oe,le.paths=gE.Module._nodeModulePaths(oe),le}function $(oe,le){return le.endsWith("/")&&(le=x.join(le,"internal.js")),gE.Module._resolveFilename(K.fromPortablePath(oe),j(K.fromPortablePath(le)),!1,{plugnplay:!1})}function V(oe){if(g===null)return!1;let le=x.contains(r.basePath,oe);return le===null?!1:!!g.test(le.replace(/\/$/,""))}let W={std:3,resolveVirtual:1,getAllLocators:1},_=l;function A(Line truncated
Require request: "${fe}"
Required by: ${ae}
`,{request:fe,issuer:ae});return K.toPortablePath(Y)}let qe,ne=oe.match(n);if(ne){if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:ae});let[,Y,he]=ne,ie=re(le);if(!ie){let hr=$(oe,le);if(hr===!1)throw ri("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).
Require path: "${fe}"
Required by: ${ae}
`,{request:fe,issuer:ae});return K.toPortablePath(hr)}let _e=B(ie).packageDependencies.get(Y),Pt=null;if(_e==null&&ie.name!==null){let hr=r.fallbackExclusionList.get(ie.name);if(!hr||!hr.has(ie.reference)){for(let ni=0,Ks=c.length;ni<Ks;++ni){let Ii=B(c[ni]).packageDependencies.get(Y);if(Ii!=null){t?Pt=Ii:_e=Ii;break}}if(r.enableTopLevelFallback&&_e==null&&Pt===null){let ni=r.fallbackPool.get(Y);ni!=null&&(Pt=ni)}}}let It=null;if(_e===null)if(v(ie))It=ri("MISSING_PEER_DEPENDENCY",`Your application tried to access ${Y} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ae}
`,{request:fe,issuer:ae,dependencyName:Y});else{let hr=ge(Y,ie);hr.every(fi=>v(fi))?It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ie.name}@${ie.reference} (via ${ae})
${hr.map(fi=>`Ancestor breaking the chain: ${fi.name}@${fi.reference}
`).join("")}
`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr}):It=ri("MISSING_PEER_DEPENDENCY",`${ie.name} tried to access ${Y} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ie.name}@${ie.reference} (via ${ae})
${hr.map(fi=>`Ancestor breaking the chain: ${fi.name}@${fi.reference}
`).join("")}
`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y,brokenAncestors:hr})}else _e===void 0&&(!Be&&tQ(oe)?v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ae}
`,{request:fe,issuer:ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${Y} isn't otherwise declared in ${ie.name}'s dependencies, this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ae}
`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y}):v(ie)?It=ri("UNDECLARED_DEPENDENCY",`Your application tried to access ${Y}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ae}
`,{request:fe,issuer:ae,dependencyName:Y}):It=ri("UNDECLARED_DEPENDENCY",`${ie.name} tried to access ${Y}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
Required package: ${Y}${Y!==fe?` (via "${fe}")`:""}
Required by: ${ie.name}@${ie.reference} (via ${ae})
`,{request:fe,issuer:ae,issuerLocator:Object.assign({},ie),dependencyName:Y}));if(_e==null){if(Pt===null||It===null)throw It||new Error("Assertion failed: Expected an error to have been set");_e=Pt;let hr=It.message.replace(/\n.*/g,"");It.message=hr,!u.has(hr)&&i!==0&&(u.add(hr),process.emitWarning(It))}let Mr=Array.isArray(_e)?{name:_e[0],reference:_e[1]}:{name:Y,reference:_e},ii=B(Mr);if(!ii.packageLocation)throw ri("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.
Required package: ${Mr.name}@${Mr.reference}${Mr.name!==fe?` (via "${fe}")`:""}
Required by: ${ie.name}@${ie.reference} (via ${ae})
`,{request:fe,issuer:ae,dependencyLocator:Object.assign({},Mr)});let gi=ii.packageLocation;he?qe=x.join(gi,he):qe=gi}else if(x.isAbsolute(oe))qe=x.normalize(oe);else{if(!le)throw ri("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:fe,issuer:ae});let Y=x.resolve(le);le.match(o)?qe=x.normalize(x.join(Y,oe)):qe=x.normalize(x.join(x.dirname(Y),oe))}return x.normalize(qe)}function ue(oe,le,Be=D,fe){if(s.test(oe))return le;let ae=T(le,Be,fe);return ae?x.normalize(ae):le}function pe(oe,{extensions:le=Object.keys(gE.Module._extensions)}={}){var ae,qe;let Be=[],fe=H(oe,Be,{extensions:le});if(fe)return x.normalize(fe);{ple(Be.map(he=>K.fromPortablePath(he)));let ne=po(oe),Y=re(oe);if(Y){let{packageLocation:he}=B(Y),ie=!0;try{e.fakeFs.accessSync(he)}catch(de){if((de==null?void 0:de.code)==="ENOENT")ie=!1;else{let _e=((qe=(ae=de==null?void 0:de.message)!=null?ae:de)!=null?qe:"empty exception thrown").replace(/^[A-Z]/,Pt=>Pt.toLowerCase());throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${_e}).
Missing package: ${Y.name}@${Y.reference}
Expected package location: ${po(he)}
`,{unqualifiedPath:ne,extensions:le})}}if(!ie){let de=he.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`${de}
Missing package: ${Y.name}@${Y.reference}
Expected package location: ${po(he)}
`,{unqualifiedPath:ne,extensions:le})}}throw ri("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.
Source path: ${ne}
${Be.map(he=>`Not found: ${po(he)}
`).join("")}`,{unqualifiedPath:ne,extensions:le})}}function ke(oe,le,Be){var ae;if(!le)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let fe=ale({name:oe,base:(0,uA.pathToFileURL)(K.fromPortablePath(le)),conditions:(ae=Be.conditions)!=null?ae:D,readFileSyncFn:M});if(fe instanceof uA.URL)return pe(K.toPortablePath((0,uA.fileURLToPath)(fe)),{extensions:Be.extensions});if(fe.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return Fe(fe,le,Be)}function Fe(oe,le,Be={}){try{if(oe.startsWith("#"))return ke(oe,le,Be);let{considerBuiltins:fe,extensions:ae,conditions:qe}=Be,ne=F(oe,le,{considerBuiltins:fe});if(oe==="pnpapi")return ne;if(ne===null)return null;let Y=()=>le!==null?V(le):!1,he=(!fe||!tQ(oe))&&!Y()?ue(oe,ne,qe,le):ne;return pe(he,{extensions:ae})}catch(fe){throw Object.prototype.hasOwnProperty.call(fe,"pnpCode")&&Object.assign(fe.data,{request:po(oe),issuer:le&&po(le)}),fe}}function Ne(oe){let le=x.normalize(oe),Be=Br.resolveVirtual(le);return Be!==le?Be:null}return{VERSIONS:W,topLevel:_,getLocator:(oe,le)=>Array.isArray(le)?{name:le[0],reference:le[1]}:{name:oe,reference:le},getDependencyTreeRoots:()=>[...r.dependencyTreeRoots],getAllLocators(){let oe=[];for(let[le,Be]of f)for(let fe of Be.keys())le!==null&&fe!==null&&oe.push({name:le,reference:fe});return oe},getPackageInformation:oe=>{let le=A(oe);if(le===null)return null;let Be=K.fromPortablePath(le.packageLocation);return{...le,packageLocation:Be}},findPackageLocator:oe=>re(K.toPortablePath(oe)),resolveToUnqualified:y("resolveToUnqualified",(oe,le,Be)=>{let fe=le!==null?K.toPortablePath(le):null,ae=F(K.toPortablePath(oe),fe,Be);return ae===null?null:K.fromPortablePath(ae)}),resolveUnqualified:y("resolveUnqualified",(oe,le)=>K.fromPortablePath(pe(K.toPortablePath(oe),le))),resolveRequest:y("resolveRequest",(oe,le,Be)=>{let fe=le!==null?K.toPortablePath(le):null,ae=Fe(K.toPortablePath(oe),fe,Be);return ae===null?null:K.fromPortablePath(ae)}),resolveVirtual:y("resolveVirtual",oe=>{let le=Ne(K.toPortablePath(oe));return le!==null?K.fromPortablePath(le):null})}}var xBt=(0,Cle.promisify)(dle.readFile);var mle=(r,e,t)=>{let i=nE(r),n=GM(i,{basePath:e}),s=K.join(e,xt.pnpCjs);return $M(n,{fakeFs:t,pnpapiResolution:s})};var tO=Pe(Ile());var Co={};ut(Co,{checkAndReportManifestCompatibility:()=>wle,checkManifestCompatibility:()=>yle,extractBuildScripts:()=>rQ,getExtractHint:()=>rO,hasBindingGyp:()=>iO});function yle(r){return P.isPackageCompatible(r,ws.getArchitectureSet())}function wle(r,e,{configuration:t,report:i}){return yle(r)?!0:(i==null||i.reportWarningOnce(76,`${P.prettyLocator(t,r)} The ${ws.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function rQ(r,e,t,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([0,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([1,"node-gyp rebuild"]),s.length===0?[]:r.linkType!=="HARD"?(n==null||n.reportWarningOnce(6,`${P.prettyLocator(i,r)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):t&&t.built===!1?(n==null||n.reportInfoOnce(5,`${P.prettyLocator(i,r)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!t.built?(n==null||n.reportWarningOnce(4,`${P.prettyLocator(i,r)} lists build scripts, but all build scripts have been disabled.`),[]):wle(r,"build",{configuration:i,report:n})?s:[]}var gze=new Set([".exe",".bin",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rO(r){return r.packageFs.getExtractHint({relevantExtensions:gze})}function iO(r){let e=x.join(r.prefixPath,"binding.gyp");return r.packageFs.existsSync(e)}var hE={};ut(hE,{getUnpluggedPath:()=>fE});function fE(r,{configuration:e}){return x.resolve(e.get("pnpUnpluggedFolder"),P.slugifyLocator(r))}var fze=new Set([P.makeIdent(null,"open").identHash,P.makeIdent(null,"opn").identHash]),wl=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let i=Bl(t.project).cjs;if(!O.existsSync(i))throw new Qe(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=Ie.getFactoryWithDefault(this.pnpCache,i,()=>Ie.dynamicRequire(i,{cachingStrategy:Ie.CachingStrategy.FsTime})),s={name:P.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new Qe(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed PnP map - running an install might help`);return K.toPortablePath(o.packageLocation)}async findPackageLocator(e,t){if(!this.isEnableLine truncated
`,s+=`# cause your node_modules installation to become invalidated.
`,s+=`
`,s+=`__metadata:
`,s+=` version: ${Lle}
`,s+=` nmMode: ${i.value}
`;let o=Array.from(e.keys()).sort(),a=P.stringifyLocator(r.topLevelWorkspace.anchoredLocator);for(let u of o){let g=e.get(u);s+=`
`,s+=`${JSON.stringify(u)}:
`,s+=` locations:
`;for(let f of g.locations){let h=x.contains(r.cwd,f);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${f})`);s+=` - ${JSON.stringify(h)}
`}if(g.aliases.length>0){s+=` aliases:
`;for(let f of g.aliases)s+=` - ${JSON.stringify(f)}
`}if(u===a&&t.size>0){s+=` bin:
`;for(let[f,h]of t){let p=x.contains(r.cwd,f);if(p===null)throw new Error(`Assertion failed: Expected the path to be within the project (${f})`);s+=` ${JSON.stringify(p)}:
`;for(let[C,y]of h){let B=x.relative(x.join(f,kr),y);s+=` ${JSON.stringify(C)}: ${JSON.stringify(B)}
`}}}}let l=r.cwd,c=x.join(l,kr,Mle);n&&await O.removePromise(c),await O.changeFilePromise(c,s,{automaticNewlines:!0})}async function uO(r,{unrollAliases:e=!1}={}){let t=r.cwd,i=x.join(t,kr,Mle),n;try{n=await O.statPromise(i)}catch{}if(!n)return null;let s=yi(await O.readFilePromise(i,"utf8"));if(s.__metadata.version>Lle)return null;let o=s.__metadata.nmMode||"classic",a=new Map,l=new Map;delete s.__metadata;for(let[c,u]of Object.entries(s)){let g=u.locations.map(h=>x.join(t,h)),f=u.bin;if(f)for(let[h,p]of Object.entries(f)){let C=x.join(t,K.toPortablePath(h)),y=Ie.getMapWithDefault(l,C);for(let[B,v]of Object.entries(p))y.set(Jr(B),K.toPortablePath([C,kr,v].join(x.sep)))}if(a.set(c,{target:Me.dot,linkType:"HARD",locations:g,aliases:u.aliases||[]}),e&&u.aliases)for(let h of u.aliases){let{scope:p,name:C}=P.parseLocator(c),y=P.makeLocator(P.makeIdent(p,C),h),B=P.stringifyLocator(y);a.set(B,{target:Me.dot,linkType:"HARD",locations:g,aliases:[]})}}return{locatorMap:a,binSymlinks:l,locationTree:Ole(a,{skipPrefix:r.cwd}),nmMode:o,mtimeMs:n.mtimeMs}}var sp=async(r,e)=>{if(r.split(x.sep).indexOf(kr)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${r}`);try{if(!e.innerLoop){let i=e.allowSymlink?await O.statPromise(r):await O.lstatPromise(r);if(e.allowSymlink&&!i.isDirectory()||!e.allowSymlink&&i.isSymbolicLink()){await O.unlinkPromise(r);return}}let t=await O.readdirPromise(r,{withFileTypes:!0});for(let i of t){let n=x.join(r,Jr(i.name));i.isDirectory()?(i.name!==kr||e&&e.innerLoop)&&await sp(n,{innerLoop:!0,contentsOnly:!1}):await O.unlinkPromise(n)}e.contentsOnly||await O.rmdirPromise(r)}catch(t){if(t.code!=="ENOENT"&&t.code!=="ENOTEMPTY")throw t}},Rle=4,sQ=(r,{skipPrefix:e})=>{let t=x.contains(e,r);if(t===null)throw new Error(`Assertion failed: Writing attempt prevented to ${r} which is outside project root: ${e}`);let i=t.split(x.sep).filter(l=>l!==""),n=i.indexOf(kr),s=i.slice(0,n).join(x.sep),o=x.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Ole=(r,{skipPrefix:e})=>{let t=new Map;if(r===null)return t;let i=()=>({children:new Map,linkType:"HARD"});for(let[n,s]of r.entries()){if(s.linkType==="SOFT"&&x.contains(e,s.target)!==null){let a=Ie.getFactoryWithDefault(t,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=sQ(o,{skipPrefix:e}),c=Ie.getFactoryWithDefault(t,a,i);for(let u=0;u<l.length;++u){let g=l[u];if(g!=="."){let f=Ie.getFactoryWithDefault(c.children,g,i);c.children.set(g,f),c=f}u===l.length-1&&(c.locator=n,c.linkType=s.linkType)}}}return t},fO=async(r,e)=>{let t;try{process.platform==="win32"&&(t=await O.lstatPromise(r))}catch{}process.platform=="win32"&&(!t||t.isDirectory())?await O.symlinkPromise(r,e,"junction"):await O.symlinkPromise(x.relative(x.dirname(e),r),e)};async function Kle(r,e,t){let i=x.join(r,Jr(`${gO.default.randomBytes(16).toString("hex")}.tmp`));try{await O.writeFilePromise(i,t);try{await O.linkPromise(i,e)}catch{}}finally{await O.unlinkPromise(i)}}async function Oze({srcPath:r,dstPath:e,entry:t,globalHardlinksStore:i,baseFs:n,nmMode:s}){if(t.kind===Ule.FILE){if(s.value==="hardlinks-global"&&i&&t.digest){let a=x.join(i,t.digest.substring(0,2),`${t.digest.substring(2)}.dat`),l;try{let c=await O.statPromise(a);if(c&&(!t.mtimeMs||c.mtimeMs>t.mtimeMs||c.mtimeMs<t.mtimeMs-Tze))if(await li.checksumFile(a,{baseFs:O,algorithm:"sha1"})!==t.digest){let g=x.join(i,Jr(`${gO.default.randomBytes(16).toString("hex")}.tmp`));await O.renamePromise(a,g);let f=await n.readFilePromise(r);await O.writeFilePromise(g,f);try{await O.linkPromise(g,a),t.mtimeMs=new Date().getTime(),await O.unlinkPromise(g)}catch{}}else t.mtimeMs||(t.mtimeMs=Math.ceil(c.mtimeMs));await O.linkPromise(a,e),l=!0}catch{l=!1}if(!l){let c=await n.readFilePromise(r);await Kle(i,a,c),t.mtimeMs=new Date().getTime();try{await O.linkPromise(a,e)}catch(u){u&&u.code&&u.code=="EXDEV"&&(s.value="hardlinks-local",await n.copyFilePromise(r,e))}}}else await n.copyFilePromise(r,e);let o=t.mode&511;o!==420&&await O.chmodPromise(e,o)}}var Ule=(i=>(i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink",i))(Ule||{}),Kze=async(r,e,{baseFs:t,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await O.mkdirPromise(r,{recursive:!0});let o=async(c=Me.dot)=>{let u=x.join(e,c),g=await t.readdirPromise(u,{withFileTypes:!0}),f=new Map;for(let h of g){let p=x.join(c,h.name),C,y=x.join(u,h.name);if(h.isFile()){if(C={kind:"file",mode:(await t.lstatPromise(y)).mode},n.value==="hardlinks-global"){let B=await li.checksumFile(y,{baseFs:t,algorithm:"sha1"});C.digest=B}}else if(h.isDirectory())C={kind:"directory"};else if(h.isSymbolicLink())C={kind:"symlink",symlinkTo:await t.readlinkPromise(y)};else throw new Error(`Unsupported file type (file: ${y}, mode: 0o${await t.statSync(y).mode.toString(8).padStart(6,"0")})`);if(f.set(p,C),h.isDirectory()&&p!==kr){let B=await o(p);for(let[v,D]of B)f.set(v,D)}}return f},a;if(n.value==="hardlinks-global"&&i&&s){let c= Line truncated
`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:i}=await(0,EO.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`
`),i}function lQ(r){var e,t;if(((e=r.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((t=r.originalError)==null?void 0:t.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch{return!1}}function op(r){return{["npm-otp"]:r}}var cQ=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i,params:n}=P.parseRange(e.reference);return!(!Wle.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let{params:i}=P.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await Eo(i.__archiveUrl,{configuration:t.project.configuration,ident:e});return await mi.convertToZip(n,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var uQ=class{supportsDescriptor(e,t){return!(!e.range.startsWith(gr)||!P.tryParseDescriptor(e.range.slice(gr.length),!0))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){let i=P.parseDescriptor(e.range.slice(gr.length),!0);return t.resolver.getResolutionDependencies(i,t)}async getCandidates(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return await i.resolver.getCandidates(n,t,i)}async getSatisfying(e,t,i){let n=P.parseDescriptor(e.range.slice(gr.length),!0);return i.resolver.getSatisfying(n,t,i)}resolve(e,t){throw new Error("Unreachable")}};var zle=Pe(Xr()),Vle=J("url");var Ls=class{supports(e,t){if(!e.reference.startsWith(gr))return!1;let i=new Vle.URL(e.reference);return!(!zle.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let i;try{i=await Eo(Ls.getLocatorUrl(e),{configuration:t.project.configuration,ident:e})}catch{i=await Eo(Ls.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:t.project.configuration,ident:e})}return await mi.convertToZip(i,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,t,{configuration:i}){let n=gA(e.scope,{configuration:i}),s=Ls.getLocatorUrl(e);return t=t.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t=t.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),t===n+s||t===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let t=vt.clean(e.reference.slice(gr.length));if(t===null)throw new at(10,"The npm semver resolver got selected, but the version isn't semver");return`${Ql(e)}/-/${e.name}-${t}.tgz`}};var Xle=Pe(Xr());var gQ=P.makeIdent(null,"node-gyp"),$ze=/\b(node-gyp|prebuild-install)\b/,fQ=class{supportsDescriptor(e,t){return e.range.startsWith(gr)?!!vt.validRange(e.range.slice(gr.length)):!1}supportsLocator(e,t){if(!e.reference.startsWith(gr))return!1;let{selector:i}=P.parseRange(e.reference);return!!Xle.default.valid(i)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,i){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(gr.length)}`);let s=await Eo(Ql(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=Ie.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new vt.SemVer(c);if(n.test(u))return u}catch{}return Ie.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=P.makeLocator(e,`${gr}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Ls.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:P.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,t,i){let n=vt.validRange(e.range.slice(gr.length));if(n===nulLine truncated
`;try{n=await O.readFilePromise(e,"utf8")}catch(s){if(s.code==="ENOENT")return n;throw s}return n}var g1={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},Gue={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},_Ve={configuration:{...g1,...Gue,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...g1,...Gue}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:mo,valueDefinition:{description:"",type:"SHAPE",properties:{...g1}}}},fetchers:[cQ,Ls],resolvers:[uQ,fQ,hQ]},$Ve=_Ve;var C1={};ut(C1,{default:()=>l9e});var kE=Pe(Bn());ls();var OQ=(i=>(i.All="all",i.Production="production",i.Development="development",i))(OQ||{}),KQ=(s=>(s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical",s))(KQ||{});var DE=["info","low","moderate","high","critical"];function jue(r,e){let t=[],i=new Set,n=o=>{i.has(o)||(i.add(o),t.push(o))};for(let o of e)n(o);let s=new Set;for(;t.length>0;){let o=t.shift(),a=r.storedResolutions.get(o);if(typeof a>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=r.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function e9e(r,e){return new Set([...r].filter(t=>!e.has(t)))}function t9e(r,e,{all:t}){let i=t?r.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=jue(r,l),g=jue(r,c);return e9e(g,u)}function que(r){let e={};for(let t of r)e[P.stringifyIdent(t)]=P.parseRange(t.range).selector;return e}function Jue(r){if(typeof r>"u")return new Set(DE);let e=DE.indexOf(r),t=DE.slice(e);return new Set(t)}function r9e(r,e){let t=Jue(e),i={};for(let n of t)i[n]=r[n];return i}function Wue(r,e){var i;let t=r9e(r,e);for(let n of Object.keys(t))if((i=t[n])!=null?i:0>0)return!0;return!1}function zue(r,e){var s;let t={},i={children:t},n=Object.values(r.advisories);if(e!=null){let o=Jue(e);n=n.filter(a=>o.has(a.severity))}for(let o of Ie.sortMap(n,a=>a.module_name))t[o.module_name]={label:o.module_name,value:ee.tuple(ee.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{ID:{label:"ID",value:ee.tuple(ee.Type.NUMBER,o.id)},Issue:{label:"Issue",value:ee.tuple(ee.Type.NO_HINT,o.title)},URL:{label:"URL",value:ee.tuple(ee.Type.URL,o.url)},Severity:{label:"Severity",value:ee.tuple(ee.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ee.tuple(ee.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ee.tuple(ee.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ee.tuple(ee.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ee.tuple(ee.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Vue(r,e,{all:t,environment:i}){let n=t?r.workspaces:[e],s=["all","production"].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=["all","development"].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return que([...o,...l].filter(c=>P.parseRange(c.range).protocol===null))}function Xue(r,e,{all:t}){var s;let i=t9e(r,e,{all:t}),n={};for(let o of r.storedPackages.values())n[P.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:que(o.dependencies.values()),dev:i.has(P.convertLocatorToDescriptor(o).descriptorHash)};return n}var _u=class extends De{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=z.String("--environment","all",{description:"Which environments to cover",validator:Zi(OQ)});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=z.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validat Line truncated
This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).
For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`.
Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${DE.map(t=>`\`${t}\``).join(", ")}.
If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.
If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option.
If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option.
To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why <package>\` to get more information as to who depends on them.
`,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});var h1=Pe(Xr()),p1=J("util"),$u=class extends De{constructor(){super(...arguments);this.fields=z.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=z.Rest()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i}=await je.find(t,this.context.cwd),n=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,s=[],o=!1,a=await Ge.start({configuration:t,includeFooter:!1,json:this.json,stdout:this.context.stdout},async l=>{for(let c of this.packages){let u;if(c==="."){let T=i.topLevelWorkspace;if(!T.manifest.name)throw new Qe(`Missing ${ee.pretty(t,"name",ee.Type.CODE)} field in ${K.fromPortablePath(x.join(T.cwd,xt.manifest))}`);u=P.makeDescriptor(T.manifest.name,"unknown")}else u=P.parseDescriptor(c);let g=Ot.getIdentUrl(u),f=d1(await Ot.get(g,{configuration:t,ident:u,jsonResponse:!0,customErrorMessage:Ot.customPackageError})),h=Object.keys(f.versions).sort(h1.default.compareLoose),C=f["dist-tags"].latest||h[h.length-1],y=vt.validRange(u.range);if(y){let T=h1.default.maxSatisfying(h,y);T!==null?C=T:(l.reportWarning(0,`Unmet range ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0)}else Object.prototype.hasOwnProperty.call(f["dist-tags"],u.range)?C=f["dist-tags"][u.range]:u.range!=="unknown"&&(l.reportWarning(0,`Unknown tag ${P.prettyRange(t,u.range)}; falling back to the latest version`),o=!0);let B=f.versions[C],v={...f,...B,version:C,versions:h},D;if(n!==null){D={};for(let T of n){let H=v[T];if(typeof H<"u")D[T]=H;else{l.reportWarning(1,`The ${ee.pretty(t,T,ee.Type.CODE)} field doesn't exist inside ${P.prettyIdent(t,u)}'s information`),o=!0;continue}}}else this.json||(delete v.dist,delete v.readme,delete v.users),D=v;l.reportJson(D),this.json||s.push(D)}});p1.inspect.styles.name="cyan";for(let l of s)(l!==s[0]||o)&&this.context.stdout.write(`
`),this.context.stdout.write(`${(0,p1.inspect)(l,{depth:1/0,colors:!0,compact:!1})}
`);return a.exitCode()}};$u.paths=[["npm","info"]],$u.usage=ve.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about [email protected]","yarn npm info [email protected]"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function d1(r){if(Array.isArray(r)){let e=[];for(let t of r)t=d1(t),t&&e.push(t);return e}else if(typeof r=="object"&&r!==null){let e={};for(let t of Object.keys(r)){if(t.startsWith("_"))continue;let i=d1(r[t]);i&&(e[t]=i)}return e}else return r||null}var Zue=Pe(Km()),eg=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=z.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i=await UQ({configuration:t,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ge.start({configuration:t,stdout:this.context.stdout,includeFooter:!1},async s=>{let o=await s9e({configuration:t,registry:i,report:s,stdin:this.context.stdin,stdout:this.context.stdout}),a=`/-/user/org.couchdb.user:${encodeURIComponent(o.name)}`,l=await Ot.put(a,o,{attemptedAs:o.name,configuration:t,registry:i,jsonResponse:!0,authType:Ot.AuthType.NO_AUTH});return await n9e(i,l.token,{alwaysAuth:this.alwaysAuth,scope:this.scope}),s.reportInfo(0,"Successfully logged in")})).exitCode()}};eg.paths=[["npm","login"]],eg.usage=ve.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function UQ({scope:r,publish:e,configuration:t,cwd:i}){return r&&e?or.getScopeRegistry(r,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):r?or.getScopeRegistry(r,{configuration:t}):e?or.getPublishRegistry((await Hh(t,i)).manifest,{configuration:t}):or.getDefaultRegistry({configuration:t})}async function n9e(r,e,{alwaysAuth:t,scope:i}){let n=o=>a=>{let l=Ie.isIndexableObject(a)?a:{},c=l[o],u=Ie.isIndexableObject(c)?c:{};return{...l,[o]:{...u,...t!==void 0?{npmAlwaysAuth:t}:{},npmAuthToken:e}}},s=i?{npmScopes:n(i)}:{npmRegistries:n(r)};return await ye.updateHomeConfiguration(s)}async function s9e({configuration:r,registry:e,report:t,stdin:i,stdout:n}){t.reportInfo(0,`Logging in to ${ee.pretty(r,e,ee.Type.URL)}`);let s=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(t.reportInfo(0,"You seem to be usingLine truncated
This command will list all tags of a package from the npm registry.
If the package is not specified, Yarn will default to the current workspace.
`,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function RE(r,e){let t=`/-/package${Ot.getIdentUrl(r)}/dist-tags`;return Ot.get(t,{configuration:e,ident:r,jsonResponse:!0,customErrorMessage:Ot.customPackageError})}var ng=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseDescriptor(this.package,!0),o=s.range;if(!$ue.default.valid(o))throw new Qe(`The range ${ee.pretty(t,s.range,ee.Type.RANGE)} must be a valid semver version`);let a=or.getPublishRegistry(n.manifest,{configuration:t}),l=ee.pretty(t,s,ee.Type.IDENT),c=ee.pretty(t,o,ee.Type.RANGE),u=ee.pretty(t,this.tag,ee.Type.CODE);return(await Ge.start({configuration:t,stdout:this.context.stdout},async f=>{let h=await RE(s,t);Object.prototype.hasOwnProperty.call(h,this.tag)&&h[this.tag]===o&&f.reportWarning(0,`Tag ${u} is already set to version ${c}`);let p=`/-/package${Ot.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Ot.put(p,o,{configuration:t,registry:a,ident:s,jsonRequest:!0,jsonResponse:!0}),f.reportInfo(0,`Tag ${u} added to version ${c} of package ${l}`)})).exitCode()}};ng.paths=[["npm","tag","add"]],ng.usage=ve.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:`
This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.
`,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add [email protected] beta"]]});var sg=class extends De{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){if(this.tag==="latest")throw new Qe("The 'latest' tag cannot be removed.");let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);let s=P.parseIdent(this.package),o=or.getPublishRegistry(n.manifest,{configuration:t}),a=ee.pretty(t,this.tag,ee.Type.CODE),l=ee.pretty(t,s,ee.Type.IDENT),c=await RE(s,t);if(!Object.prototype.hasOwnProperty.call(c,this.tag))throw new Qe(`${a} is not a tag of package ${l}`);return(await Ge.start({configuration:t,stdout:this.context.stdout},async g=>{let f=`/-/package${Ot.getIdentUrl(s)}/dist-tags/${encodeURIComponent(this.tag)}`;await Ot.del(f,{configuration:t,registry:o,ident:s,jsonResponse:!0}),g.reportInfo(0,`Tag ${a} removed from package ${l}`)})).exitCode()}};sg.paths=[["npm","tag","remove"]],sg.usage=ve.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:`
This command will remove a tag from a package from the npm registry.
`,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var og=class extends De{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),i;return this.scope&&this.publish?i=or.getScopeRegistry(this.scope,{configuration:t,type:or.RegistryType.PUBLISH_REGISTRY}):this.scope?i=or.getScopeRegistry(this.scope,{configuration:t}):this.publish?i=or.getPublishRegistry((await Hh(t,this.context.cwd)).manifest,{configuration:t}):i=or.getDefaultRegistry({configuration:t}),(await Ge.start({configuration:t,stdout:this.context.stdout},async s=>{var a,l;let o;try{o=await Ot.get("/-/whoami",{configuration:t,registry:i,authType:Ot.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?P.makeIdent(this.scope,""):void 0})}catch(c){if(((a=c.response)==null?void 0:a.statusCode)===401||((l=c.response)==null?void 0:l.statusCode)===403){s.reportError(41,"Authentication failed - your credentials may have expired");return}else throw c}s.reportInfo(0,o.username)})).exitCode()}};og.paths=[["npm","whoami"]],og.usage=ve.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var A9e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[_u,$u,eg,tg,rg,ng,ig,sg,og]},l9e=A9e;var S1={};ut(S1,{default:()=>Q9e,patchUtils:()=>ag});var ag={};ut(ag,{applyPatchFile:()=>GQ,diffFolders:()=>b1,ensureUnpatchedDescriptor:()=>E1,extractPackageToDisk:()=>B1,extractPatchFlags:()=>oge,isParentRequired:()=>w1,loadPatchFiles:()=>LE,makeDescriptor:()=>I1,makeLocator:()=>y1,makePatchHash:()=>Q1,parseDescriptor:()=>NE,parseLocator:()=>TE,parsePatchFile:()=>FE});var c9e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Ep(r){return x.relative(Me.root,x.resolve(Me.root,K.toPortablePath(r)))}function u9e(r){let e=r.trim().match(c9e);if(!e)throw new Error(`Bad header line: '${r}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var g9e=420,f9e=493;var ege=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),h9e=r=>({header:u9e(r),parts:[]}),p9e={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function d9e(r){let e=[],t=ege(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),t.hunks.push(n),n=null)}function a(){o(),e.push(t),t=ege()}for(let l=0;l<r.length;l++){let c=r[l];if(i==="parsing header")if(c.startsWith("@@"))i="parsing hunks",t.hunks=[],l-=1;else if(c.startsWith("diff --git ")){t&&t.diffLineFromPath&&a();let u=c.match(/^diff --git a\/(.*?) b\/(.*?)\s*$/);if(!u)throw new Error(`Bad diff line: ${c}`);t.diffLineFromPath=u[1],t.diffLineToPath=u[2]}else if(c.startsWith("old mode "))t.oldMode=c.slice(9).trim();else if(c.startsWith("new mode "))t.newMode=c.slice(9).trim();else if(c.startsWith("deleted file mode "))t.deletedFileMode=c.slice(18).trim();else if(c.startsWith("new file mode "))t.newFileMode=c.slice(14).trim();else if(c.startsWith("rename from "))t.renameFrom=c.slice(12).trim();else if(c.startsWith("rename to "))t.renameTo=c.slice(10).trim();else if(c.startsWith("index ")){let u=c.match(/(\w+)\.\.(\w+)/);if(!u)continue;t.beforeHash=u[1],t.afterHash=u[2]}else c.startsWith("semver exclusivity ")?t.semverExclusivity=c.slice(19).trim():c.startsWith("--- ")?t.fromPath=c.slice(6).trim():c.startsWith("+++ ")&&(t.toP Line truncated
`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":`
`):"";await e.mkdirpPromise(x.dirname(n.path),{chmod:493,utimes:[xr.SAFE_TIME,xr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,xr.SAFE_TIME,xr.SAFE_TIME)}break;case"patch":await yp(e,n.path,async()=>{await y9e(n,{baseFs:e,dryRun:t})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(tge(n.newMode)!==tge(o))continue;await yp(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:Ie.assertNever(n);break}}function tge(r){return(r&64)>0}function rge(r){return r.replace(/\s+$/,"")}function I9e(r,e){return rge(r)===rge(e)}async function y9e({hunks:r,path:e},{baseFs:t,dryRun:i=!1}){let n=await t.statSync(e).mode,o=(await t.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of r){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),C=Math.max(h,p),y=0,B=0,v=null;for(;y<=C;){if(y<=h&&(B=f-y,v=ige(g,o,B),v!==null)){y=-y;break}if(y<=p&&(B=f+y,v=ige(g,o,B),v!==null))break;y+=1}if(v===null)throw new Ip(r.indexOf(g),g);a.push(v),l+=y,c=B+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:Ie.assertNever(f);break}await t.writeFilePromise(e,o.join(`
`),{mode:n})}function ige(r,e,t){let i=[];for(let n of r.parts)switch(n.type){case"context":case"deletion":{for(let s of n.lines){let o=e[t];if(o==null||!I9e(o,s))return null;t+=1}n.type==="deletion"&&(i.push({type:"splice",index:t-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case"insertion":i.push({type:"splice",index:t,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:Ie.assertNever(n.type);break}return i}var B9e=/^builtin<([^>]+)>$/;function m1(r,e){let{source:t,selector:i,params:n}=P.parseRange(r);if(t===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>K.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?P.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(t);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function NE(r){let{sourceItem:e,...t}=m1(r.range,P.parseDescriptor);return{...t,sourceDescriptor:e}}function TE(r){let{sourceItem:e,...t}=m1(r.reference,P.parseLocator);return{...t,sourceLocator:e}}function E1(r){if(!r.range.startsWith("patch:"))return r;let{sourceItem:e}=m1(r.range,P.parseDescriptor);return e}function nge({parentLocator:r,sourceItem:e,patchPaths:t,sourceVersion:i,patchHash:n},s){let o=r!==null?{locator:P.stringifyLocator(r)}:{},a=typeof i<"u"?{version:i}:{},l=typeof n<"u"?{hash:n}:{};return P.makeRange({protocol:"patch:",source:s(e),selector:t.join("&"),params:{...a,...l,...o}})}function I1(r,{parentLocator:e,sourceDescriptor:t,patchPaths:i}){return P.makeDescriptor(r,nge({parentLocator:e,sourceItem:t,patchPaths:i},P.stringifyDescriptor))}function y1(r,{parentLocator:e,sourcePackage:t,patchPaths:i,patchHash:n}){return P.makeLocator(r,nge({parentLocator:e,sourceItem:t,sourceVersion:t.version,patchPaths:i,patchHash:n},P.stringifyLocator))}function sge({onAbsolute:r,onRelative:e,onBuiltin:t},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(B9e);return s!==null?t(s[1]):x.isAbsolute(i)?r(i):e(i)}function oge(r){let e=r.startsWith("~");return e&&(r=r.slice(1)),{optional:e}}function w1(r){return sge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},r)}async function LE(r,e,t){let i=r!==null?await t.fetcher.fetch(r,t):null,n=i&&i.localPath?{packageFs:new qt(Me.root),prefixPath:x.relative(Me.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await Ie.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=oge(o),l=await sge({onAbsolute:async()=>await O.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(x.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await t.project.configuration.firstHook(u=>u.getBuiltinPatch,t.project,c)},o);return{...a,source:l}})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,`
`));return s}async function B1(r,{cache:e,project:t}){let i=t.storedPackages.get(r.locatorHash);if(typeof i>"u")throw new Error("Assertion failed: Expected the package to be registered");let n=t.storedChecksums,s=new ti,o=t.configuration.makeFetcher(),a=await o.fetch(r,{cache:e,project:t,fetcher:o,checksums:n,report:s}),l=await O.mktempPromise(),c=x.join(l,"source"),u=x.join(l,"user"),g=x.join(l,".yarn-patch.json");return await Promise.all([O.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),O.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),O.writeJsonPromise(g,{locator:P.stringifyLocator(r),version:i.version})]),O.detachTemp(l),u}async function b1(r,e){let t=K.fromPortablePath(r).replace(/\\/g,"/"),i=K.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await Cr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",t,i],{cwd:K.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.
The following error was reported by 'git':
${s}`);let o=t.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${Ie.escapeRegExp(`/${o(t)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ie.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(Ie.escapeRegExp(`${t}/`),"g"),"").replace(new RegExp(Ie.escapeRegExp(`${i}/`),"g"),"")}function Q1(r,e){let t=[];for(let{source:i}of r){if(i===null)continue;let n=FE(i);for(let s of n){let{semverExclusivity:o,...a}=s;o!==null&&e!==null&&!vt.satisfiesWithPrereleases(e,o)||t.push(JSON.stringify(a))}}return li.makeHash(`${3}`,...t).slice(0,6)}function age(r,{configuration:e,report:t}){for(let i of r.parts)for(let n of i.lines)switch(i.type){case"context":t.reportInfo(null,` ${ee.pretty(e,n,"grey")}`);break;case"deletion":t.reportError(28,`- ${ee.pretty(e,n,ee.Type.REMOVED)}`);break;case"insertion":t.reportError(28,`+ ${ee.pretty(e,n,ee.Type.ADDED)}`);break;default:Ie.assertNever(i.type)}}var YQ=class{supports(e,t){return!!e.reference.startsWith("patch:")}getLocalPath(e,t){return null}async fetch(e,t){let i=t.checksums.get(e.locatorHash)||null,[n,s,o]=await t.cache.fetchPackageFromCache(e,i,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,`${P.prettyLocator(t.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,t),skipIntegrityCheck:t.skipIntegrityCheck,...t.cacheOptions});return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async patchPackage(e,t){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=TE(e),a=await LE(i,o,t),l=await O.mktempPromise(),c=x.join(l,"current.zip"),u=await t.fetcher.fetch(n,t),g=P.getIdentVendorPath(e),f=await an(),h=new Wr(c,{libzip:f,create:!0,level:t.project.configuration.get("compressionLevel")});await Ie.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:C}of a){if(p===null)continue;let y=new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")}),B=new qt(x.resolve(Me.root,g),{baseFs:y});try{await GQ(FE(p),{baseFs:B,version:s})}catch(v){if(!(v instanceof Ip))throw v;let D=t.project.configuration.get("enableInlineHunks"),T=!D&&!C?" (set enableInlineHunks for details)":"",H=`${P.prettyLocator(t.project.configuration,e)}: ${v.message}${T}`,j=$=>{!D||age(v.hunk,{configuration:t.project.configuration,report:$})};if(y.discardAndClose(),C){t.report.reportWarningOnce(66,H,{reportExtra:j});continue}else throw new at(66,H,j)}y.saveAndClose()}return new Wr(c,{libzip:f,level:t.project.configuration.get("compressionLevel")})}};var jQ=class{supportsDescriptor(e,t){return!!e.range.startsWith("patch:")}supportsLocator(e,t){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,i){let{patchPaths:n}=NE(e);return n.every(s=>!w1(s))?e:P.bindDescriptor(e,{locator:P.stringifyLocator(t)})}getResolutionDependencies(e,t){let{sourceDescriptor:i}=NE(e);return[i]}async getCandidates(e,t,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=NE(e),a=await LE(n,o,i.fetchOptions),l=t.get(s.descriptorHash);if(typeof l>"u")throw new Error("Assertion failed: The dependency should have been resolved");let c=Q1(a,l.version);return[y1(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,t,i){return null}async resolve(e,t){let{sourceLocator:i}=TE(e);return{...await t.resolver.resolve(i,t),...e}}};var Ag=class extends De{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=z.String()}async execute(){let t=await ye.find(this.context.cwd,this.context.plugins),{project:i,workspace:n}=await je.find(t,this.context.cwd);if(!n)throw new ct(i.cwd,this.context.cwd);await i.restoreInstallState();let s=x.resolve(this.context.cwd,K.toPortablePath(this.patchFolder)),o=x.join(s,"../source"),a=x.join(s,"../.yarn-patch.json");if(!O.existsSync(o))throw new Qe("The argument folder didn't get created by 'yarn patch'");let l=await b1(o,s),c=await O.readJsonPromise(a),u=P.parseLocator(c.locator,!0);if(!i.storedPackages.has(u.locatorHash))throw new Qe("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(l);return}let g=t.get("patchFolder"),f=x.join(g,`${P.slugifyLocator(u)}.patch`);await O.mkdirPromise(g,{recursive:!0}),await O.writeFilePromise(f,l);let h=new Map;for(let p of i.storedPackages.values()){if(P.isVirtualLocator(p))continue;let C=p.dependencies.get(u.identHash);if(!C)continue;let y=P.isVirtualDescriptor(C)?P.devirtualizeDescriptor(C):C,B=E1(y),v=i.storedResolutions.get(B.descriptorHash);if(!v)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!i.storedPackages.get(v))Line truncated
${a.map(l=>`
- ${P.prettyLocator(t,l)}`).join("")}`);o=a[0]}if(!i.storedPackages.has(o.locatorHash))throw new Qe("No package found in the project for the given locator");await Ge.start({configuration:t,json:this.json,stdout:this.context.stdout},async a=>{let l=await B1(o,{cache:s,project:i});a.reportJson({locator:P.stringifyLocator(o),path:K.fromPortablePath(l)}),a.reportInfo(0,`Package ${P.prettyLocator(t,o)} got extracted with success!`),a.reportInfo(0,`You can now edit the following folder: ${ee.pretty(t,K.fromPortablePath(l),"magenta")}`),a.reportInfo(0,`Once you are done run ${ee.pretty(t,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${K.fromPortablePath(l)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};lg.paths=[["patch"]],lg.usage=ve.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n \n Once you're done with your changes, run `yarn patch-commit -s <path>` (with `<path>` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n "});var b9e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[Ag,lg],fetchers:[YQ],resolvers:[jQ]},Q9e=b9e;var D1={};ut(D1,{default:()=>x9e});var qQ=class{supportsPackage(e,t){return this.isEnabled(t)}async findPackageLocation(e,t){if(!this.isEnabled(t))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let i=x1(),n=t.project.installersCustomData.get(i);if(!n)throw new Qe(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=n.pathByLocator.get(e.locatorHash);if(typeof s>"u")throw new Qe(`Couldn't find ${P.prettyLocator(t.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return s}async findPackageLocator(e,t){if(!this.isEnabled(t))return null;let i=x1(),n=t.project.installersCustomData.get(i);if(!n)throw new Qe(`The project in ${ee.pretty(t.project.configuration,`${t.project.cwd}/package.json`,ee.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=x.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new v1(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},v1=class{constructor(e){this.opts=e;this.asyncActions=new Ie.AsyncActions(10);this.customData={pathByLocator:new Map,locatorByPath:new Map}}getCustomDataKey(){return x1()}attachCustomData(e){}async installPackage(e,t,i){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,t,i);case"HARD":return this.installPackageHard(e,t,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,t,i){let n=x.resolve(t.packageFs.getRealPath(),t.prefixPath);return this.customData.pathByLocator.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,t,i){var u;let n=S9e(e,{project:this.opts.project});this.customData.locatorByPath.set(n,P.stringifyLocator(e)),this.customData.pathByLocator.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await O.mkdirPromise(n,{recursive:!0}),await O.copyPromise(n,t.prefixPath,{baseFs:t.packageFs,overwrite:!1})}));let o=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e,a={manifest:(u=await ot.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?u:new ot,misc:{hasBindingGyp:Co.hasBindingGyp(t)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Co.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,t){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!Age(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.customData.pathByLocator.get(e.locatorHash);if(typeof n>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(e)})`);let s=x.join(n,xt.nodeModules),o=[],a=await lge(s);for(let[l,c]of t){let u=c;Age(c,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=P.devirtualizeLocator(c));let g=this.customData.pathByLocator.get(u.locatorHash);if(typeof g>"u")throw new Error(`Assertion failed: Expe Line truncated
/*!
* buildToken
* Builds OAuth token prefix (helper function)
*
* @name buildToken
* @function
* @param {GitUrl} obj The parsed Git url object.
* @return {String} token prefix
*/
/*!
* fill-range <https://github.com/jonschlinkert/fill-range>
*
* Copyright (c) 2014-present, Jon Schlinkert.
* Licensed under the MIT License.
*/
/*!
* is-extglob <https://github.com/jonschlinkert/is-extglob>
*
* Copyright (c) 2014-2016, Jon Schlinkert.
* Licensed under the MIT License.
*/
/*!
* is-glob <https://github.com/jonschlinkert/is-glob>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-number <https://github.com/jonschlinkert/is-number>
*
* Copyright (c) 2014-present, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* is-windows <https://github.com/jonschlinkert/is-windows>
*
* Copyright © 2015-2018, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* to-regex-range <https://github.com/micromatch/to-regex-range>
*
* Copyright (c) 2015-present, Jon Schlinkert.
* Released under the MIT License.
*/
/**
@license
Copyright (c) 2015, Rebecca Turner
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
*/
/**
@license
Copyright Joyent, Inc. and other Node contributors.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
@license
Copyright Node.js contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
*/
/**
@license
The MIT License (MIT)
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
+11
View File
@@ -0,0 +1,11 @@
defaultSemverRangePrefix: ""
nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs
spec: "@yarnpkg/plugin-typescript"
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
yarnPath: .yarn/releases/yarn-3.6.3.cjs
-65
View File
@@ -1,65 +0,0 @@
# Home Assistant Frontend Agent Guide
You are helping develop the Home Assistant frontend. This repository is a TypeScript application built from Lit-based Web Components for the Home Assistant web UI.
## Essential Commands
```bash
pnpm lint # ESLint + Prettier + TypeScript + Lit
pnpm format # Auto-fix ESLint + Prettier
pnpm lint:types # TypeScript compiler, run without file arguments
pnpm test # Vitest
pnpm dev # App dev server, supports --background/--status/--stop/--logs
pnpm dev:serve # Local serving dev server, supports -c core URL, -p port, and dev flags
```
Never run `tsc` or `pnpm lint:types` with file arguments. When `tsc` receives file arguments, it ignores `tsconfig.json` and can emit `.js` files into `src/`. Always run `pnpm lint:types` without arguments. For individual file type checking, rely on editor diagnostics.
## Architecture
- The frontend uses custom elements built with Lit and TypeScript strict mode.
- Components communicate with the backend through the Home Assistant WebSocket API.
- Use `ha-` for Home Assistant components, `hui-` for Lovelace UI components, and `dialog-` for dialogs.
- Prefer `ha-*` components and current Web Awesome wrappers. Avoid adding new legacy `mwc-*` usage.
- Leaf components should consume narrow Lit contexts instead of taking the broad `hass` object unless they are containers that own and provide `hass`.
## Development Standards
- Use strict TypeScript, proper interfaces, and `import type` for type-only imports.
- Avoid `any`; model data with existing Home Assistant types or narrow new types.
- Keep imports organized and remove unused imports.
- Do not use `console`; use existing logging or user-visible error patterns.
- Use `@state()` for internal Lit state and `@property()` for public API.
- Do not query or manipulate DOM manually when Lit decorators, component refs, or render state are appropriate.
- Scope styles to components, use theme custom properties, and keep layouts mobile-first and RTL-safe.
- All user-facing text must be localized through the translation system.
- Do not write tests just because you changed some code. Write a test when there is real logic that could break without anyone noticing, and explain what the test protects.
## Project Skills
Detailed guidance lives in `.agents/skills/<name>/SKILL.md`. Load every matching skill before detailed implementation or review. For reviews, load `ha-frontend-review` alongside all companions that apply to the changed code or behavior:
- `ha-frontend-contexts`: Lit contexts, `hass` migration, and rerender-sensitive state access.
- `ha-frontend-components`: dialogs, forms, alerts, shortcuts, tooltips, panels, and Lovelace cards.
- `ha-frontend-events`: event handler typing, custom event dispatch, and event-map declarations.
- `ha-frontend-types`: backend data contracts, optional schemas, shared types, assertions, and lifecycle types.
- `ha-frontend-lit`: reactive fields, DOM queries, lifecycle behavior, and render-derived state.
- `ha-frontend-styling`: theme variables, spacing tokens, responsive layout, RTL, and view transitions.
- `ha-frontend-testing`: lint, typecheck, Vitest, Playwright e2e dev servers, and benchmarks.
- `ha-frontend-user-facing-text`: localization, terminology, sentence case, and Home Assistant text style.
- `ha-frontend-review`: PR template use, existing review feedback, review checklist, recurring issues, and UI/UX evidence including gallery specifications.
- `ha-frontend-ux-readiness`: UI/UX routing that complements frontend review for new user experiences.
- `ha-frontend-gallery`: gallery pages, demos, sidebar structure, content, and verification.
- `ha-frontend-demo`: standalone demo structure, configurations, navigation, shared stubs, and verification.
## Pull Requests
When creating a pull request, use `.github/PULL_REQUEST_TEMPLATE.md` as the PR body. Preserve template sections, check only the appropriate type-of-change boxes, and do not check checklist items on behalf of the user. If the PR includes UI changes, remind the user to add screenshots or a short video.
## AI policy
This project follows the [Open Home Foundation AI Policy](AI_POLICY.md).
Autonomous contributions are not accepted: a human must review, understand,
and be able to explain every change before it is submitted. Do not open
issues or pull requests autonomously, and do not post comments on behalf of
a user without their review.
-45
View File
@@ -1,45 +0,0 @@
# Open Home Foundation - AI Policy
We support using AI (i.e., LLMs) as tools when contributing to Open Home Foundation projects. However, you are responsible for any contributions you submit, and we are responsible for any contributions we merge and release. We hold a high bar for all contributions to our projects.
Our maintainers dedicate their time and expertise to reviewing contributions. Submitting AI-generated content that you have not personally reviewed and understood wastes that time and will not be accepted.
## Autonomous agents
**We do not allow autonomous agents to be used for contributing to our projects.** We will close any pull requests or issues that we believe were created autonomously, and may mark automated comments as spam. This includes contributions that bypass the provided issue or pull request templates.
## Communication on issues, pull requests, and code reviews
We don't mind if you use AI tools to help you write. However, do not have tools post unreviewed content on your behalf. Keep responses to the minimum needed to communicate your intent. We may hide any comments that we believe are unreviewed AI output.
If you are opening a pull request, we expect you to be able to explain the proposed changes in your own words. This includes the pull request description and responses to questions. If you use AI to help generate the pull request summary, you must review it for technical accuracy.
**Do not use AI to generate answers to questions from maintainers.** You should understand and be able to explain your own work. Using AI to improve grammar or clarity is fine, but the substance of your responses must be your own.
If you wish to include context from an interaction with AI in your comments, it must be in a quote block (e.g., using `>`) and disclosed as such. It must be accompanied by your own commentary explaining the relevance and implications of the context. Do not share long snippets.
## Non-native English speakers
We understand that AI is useful when communicating as a non-native English speaker. Using AI to improve the grammar or clarity of text you have written yourself is fine. If you are using AI to translate your comments, please ensure the translation accurately reflects your intent. Including your original text in a details block shows the effort behind your contribution, helps maintainers verify the translation if needed, and keeps the conversation readable.
## Code and documentation contributions
AI can be a helpful tool for writing code and documentation. However, due to the foundational open source nature of our projects, we require a human in the loop who understands the work produced by AI.
All contributions must be reviewed and understood by the contributor before submission. You should be able to explain every change in a pull request you submit. Pull requests that appear to be unreviewed AI output will be closed without review.
## Our use of AI
Some of our projects use AI tools to assist with code reviews, issue triaging, reporting, and other project management tasks. These tools may leave comments on pull requests or issues. As with any automated tooling, these comments are not always correct.
If an AI tool leaves a comment on your contribution, treat it as you would any other review comment. If you believe it is incorrect, say so; a brief explanation is sufficient. Maintainers always have the final say. If in doubt, ask a maintainer.
## Enforcement
Contributions that do not follow this policy will be closed. Repeated violations may result in being blocked from contributing to OHF projects. If you believe your contribution was closed in error, you are welcome to reach out to a maintainer to discuss.
---
The canonical version of this policy is published at
<https://contributors.home-assistant.io/start/ai-policy/>. In case of differences,
the published version applies.
-1
View File
@@ -1 +0,0 @@
AGENTS.md
-8
View File
@@ -1,8 +0,0 @@
# People marked here will be automatically requested for a review
# when the code that they own is touched.
# https://github.com/blog/2392-introducing-code-owners
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Part of the frontend that mobile developper should review
src/external_app/ @bgoncal @TimoPtr
test/external_app/ @bgoncal @TimoPtr
+162 -169
View File
@@ -1,201 +1,194 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Apache License
==============
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
_Version 2.0, January 2004_
_&lt;<http://www.apache.org/licenses/>&gt;_
1. Definitions.
### Terms and Conditions for use, reproduction, and distribution
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
#### 1. Definitions
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
“License” shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
“Licensor” shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
“Legal Entity” shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, “control” means **(i)** the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
outstanding shares, or **(iii)** beneficial ownership of such entity.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
“You” (or “Your”) shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
“Source” form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
“Object” form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
“Work” shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
“Derivative Works” shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
“Contribution” shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
“submitted” means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as “Not a Contribution.”
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
#### 2. Grant of Copyright License
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
#### 3. Grant of Patent License
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
#### 4. Redistribution
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
this License; and
* **(b)** You must cause any modified files to carry prominent notices stating that You
changed the files; and
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
#### 5. Submission of Contributions
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
#### 6. Trademarks
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
END OF TERMS AND CONDITIONS
#### 7. Disclaimer of Warranty
APPENDIX: How to apply the Apache License to your work.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
#### 8. Limitation of Liability
Copyright [yyyy] [name of copyright owner]
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
#### 9. Accepting Warranty or Additional Liability
http://www.apache.org/licenses/LICENSE-2.0
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
_END OF TERMS AND CONDITIONS_
### APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets `[]` replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same “printed page” as the copyright notice for easier identification within
third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+4 -5
View File
@@ -6,14 +6,15 @@ This is the repository for the official [Home Assistant](https://home-assistant.
- [View demo of Home Assistant](https://demo.home-assistant.io/)
- [More information about Home Assistant](https://home-assistant.io)
- [Frontend development instructions](https://contributors.home-assistant.io/frontend/development/)
- [Frontend development instructions](https://developers.home-assistant.io/docs/frontend/development/)
## Development
- Initial setup: `script/setup`
- Development: [Instructions](https://contributors.home-assistant.io/frontend/development/)
- Production build: `pnpm build`
- Development: [Instructions](https://developers.home-assistant.io/docs/frontend/development/)
- Production build: `script/build_frontend`
- Gallery: `cd gallery && script/develop_gallery`
- Supervisor: [Instructions](https://developers.home-assistant.io/docs/supervisor/developing)
## Frontend development
@@ -26,5 +27,3 @@ A complete guide can be found at the following [link](https://www.home-assistant
Home Assistant is open-source and Apache 2 licensed. Feel free to browse the repository, learn and reuse parts in your own projects.
We use [BrowserStack](https://www.browserstack.com) to test Home Assistant on a large variety of devices.
[![Home Assistant - A project from the Open Home Foundation](https://www.openhomefoundation.org/badges/home-assistant.png)](https://www.openhomefoundation.org/)
+12
View File
@@ -0,0 +1,12 @@
{
"extends": "../.eslintrc.json",
"rules": {
"no-console": "off",
"import/no-extraneous-dependencies": "off",
"import/extensions": "off",
"import/no-dynamic-require": "off",
"global-require": "off",
"@typescript-eslint/no-var-requires": "off",
"prefer-arrow-callback": "off"
}
}
+2 -10
View File
@@ -15,7 +15,7 @@ The Home Assistant build pipeline contains various steps to prepare a build.
Currently in Home Assistant we use a bundler to convert TypeScript, CSS and JSON files to JavaScript files that the browser understands.
We currently rely on Webpack. Both of these programs bundle the converted files in both production and development.
We currently rely on Webpack but also have experimental Rollup support. Both of these programs bundle the converted files in both production and development.
For development, bundling is optional. We just want to get the right files in the browser.
@@ -34,14 +34,6 @@ In production, the following responsibilities are added:
- Minify HTML
- Bundle multiple imports so that the browser can fetch less files
- Generate a second version that is compatible with older browsers (legacy build)
- Generate a second version that is ES5 compatible
Configuration for all these steps are specified in [bundle.js](bundle.js).
## Auditing browser support changes
`node build-scripts/list-plugins-and-polyfills.js` prints, per browserslist
environment (modern/legacy), the Babel transforms preset-env enables and the
Core-JS polyfills that may be injected — as collapsible markdown ready to
paste into a PR. Use it to show the bundle impact when changing
`.browserslistrc` or the Babel configuration.
@@ -1,150 +0,0 @@
import defineProvider from "@babel/helper-define-polyfill-provider";
import { join } from "node:path";
import paths from "../paths.cjs";
const POLYFILL_DIR = join(paths.root_dir, "src/resources/polyfills");
// List of polyfill keys with supported browser targets for the functionality
const polyfillSupport = {
// Note states and shadowRoot properties should be supported.
"element-internals": {
android: 90,
chrome: 90,
edge: 90,
firefox: 126,
ios: 17.4,
opera: 76,
opera_mobile: 64,
safari: 17.4,
samsung: 15.0,
},
"element-getattributenames": {
android: 61,
chrome: 61,
edge: 18,
firefox: 45,
ios: 10.3,
opera: 48,
opera_mobile: 45,
safari: 10.1,
samsung: 8.0,
},
"element-toggleattribute": {
android: 69,
chrome: 69,
edge: 18,
firefox: 63,
ios: 12.0,
opera: 56,
opera_mobile: 48,
safari: 12.0,
samsung: 10.0,
},
// FormatJS polyfill detects fix for https://bugs.chromium.org/p/v8/issues/detail?id=10682,
// so adjusted to several months after that was marked fixed
"intl-getcanonicallocales": {
android: 90,
chrome: 90,
edge: 90,
firefox: 48,
ios: 10.3,
opera: 76,
opera_mobile: 64,
safari: 10.1,
samsung: 15.0,
},
"intl-locale": {
android: 74,
chrome: 74,
edge: 79,
firefox: 75,
ios: 14.0,
opera: 62,
opera_mobile: 53,
safari: 14.0,
samsung: 11.0,
},
"intl-other": {
// Not specified (i.e. always try polyfill) since compatibility depends on supported locales
},
"resize-observer": {
android: 64,
chrome: 64,
edge: 79,
firefox: 69,
ios: 13.4,
opera: 51,
opera_mobile: 47,
safari: 13.1,
samsung: 9.0,
},
};
// Map of global variables and/or instance and static properties to the
// corresponding polyfill key and actual module to import
const polyfillMap = {
global: {
ResizeObserver: {
key: "resize-observer",
module: join(POLYFILL_DIR, "resize-observer.ts"),
},
},
instance: {
attachInternals: {
key: "element-internals",
module: "element-internals-polyfill",
},
...Object.fromEntries(
["getAttributeNames", "toggleAttribute"].map((prop) => {
const key = `element-${prop.toLowerCase()}`;
return [prop, { key, module: join(POLYFILL_DIR, `${key}.ts`) }];
})
),
},
static: {
Intl: {
getCanonicalLocales: {
key: "intl-getcanonicallocales",
module: join(POLYFILL_DIR, "intl-polyfill.ts"),
},
Locale: {
key: "intl-locale",
module: join(POLYFILL_DIR, "intl-polyfill.ts"),
},
...Object.fromEntries(
[
"DateTimeFormat",
"DurationFormat",
"DisplayNames",
"ListFormat",
"NumberFormat",
"PluralRules",
"RelativeTimeFormat",
].map((obj) => [
obj,
{ key: "intl-other", module: join(POLYFILL_DIR, "intl-polyfill.ts") },
])
),
},
},
};
// Create plugin using the same factory as for CoreJS
export default defineProvider(
({ createMetaResolver, debug, shouldInjectPolyfill }) => {
const resolvePolyfill = createMetaResolver(polyfillMap);
return {
name: "custom-polyfill",
polyfills: polyfillSupport,
usageGlobal(meta, utils) {
const polyfill = resolvePolyfill(meta);
if (polyfill && shouldInjectPolyfill(polyfill.desc.key)) {
debug(polyfill.desc.key);
utils.injectGlobalImport(polyfill.desc.module);
return true;
}
return false;
},
};
}
);
-56
View File
@@ -1,56 +0,0 @@
// Gulp transform that brotli-compresses files, several at a time.
//
// Drop-in replacement for gulp-brotli. zlib already does the work off the main
// thread, but that plugin wraps it in through2, which waits for each file
// before starting the next, so only one compression is ever in flight. The
// compressed bytes are unchanged; only how many run at once differs.
//
// The real ceiling is libuv's threadpool, which zlib runs on. It sizes itself
// from UV_THREADPOOL_SIZE before any JavaScript runs, so it can only be raised
// from the environment, never from inside the build.
import { availableParallelism } from "node:os";
import { buffer as readStream } from "node:stream/consumers";
import { promisify } from "node:util";
import { brotliCompress, constants } from "node:zlib";
import { withCache } from "./compress-cache.mjs";
import { ParallelTransform } from "./parallel-transform.mjs";
const EXTENSION = ".br";
const compress = promisify(brotliCompress);
/**
* @param {object} [options]
* @param {boolean} [options.skipLarger] Drop files that compression grows.
* @param {object} [options.params] Brotli parameters, passed to zlib as-is.
*/
export default ({ skipLarger = false, params } = {}) => {
// Isolate cache entries by anything that changes the output bytes: the brotli
// quality, and the node major that produced them.
const quality = params?.[constants.BROTLI_PARAM_QUALITY] ?? "default";
const namespace = `brotli-q${quality}-node${process.versions.node.split(".")[0]}`;
return new ParallelTransform(availableParallelism(), async (file) => {
if (file.isNull()) {
return file;
}
if (file.isStream()) {
file.contents = await readStream(file.contents);
}
const compressed = await withCache(namespace, file.contents, async () => {
const out = await compress(file.contents, { params });
// Dropped rather than passed through, as gulp-brotli did: the
// uncompressed file is already in the output directory.
return skipLarger && out.length >= file.contents.length ? undefined : out;
});
if (compressed === undefined) {
return undefined;
}
file.contents = compressed;
file.path += EXTENSION;
return file;
});
};
-311
View File
@@ -1,311 +0,0 @@
// Manage a Home Assistant frontend production build with an agent-friendly
// interface, matching build-scripts/dev-server.mjs.
//
// node build-scripts/build-manager.mjs [--modern] [mode]
//
// (no mode) Run in the foreground.
// --background Start detached, print the pid, then exit and leave it
// running.
// --status Report whether a managed build is running.
// --stop Stop a managed build.
// --logs [--follow] Print (or follow) the background build log.
//
// --modern Build only the modern frontend_latest bundle.
import path from "node:path";
import { fileURLToPath } from "node:url";
import {
LIFECYCLE_MODE_FLAGS,
acquireProcessRecord,
isProcessRecordAlive,
outputLog,
offerToStopProcessRecord,
processStartTime,
readProcessRecord,
releaseProcessRecord,
runCli,
spawnDetachedToLog,
spawnForeground,
terminateDetachedProcess,
terminateProcess,
waitFor,
writeProcessRecord,
} from "./managed-process.mjs";
import {
buildCacheDir,
describeOutputOwner,
workflowLockEnv,
workflowLockFile,
} from "./output-lock.mjs";
const repoRoot = path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
".."
);
const gulpBin = path.join(repoRoot, "node_modules", ".bin", "gulp");
const stateDir = path.join(buildCacheDir, "ha-build");
const logFile = path.join(stateDir, "build.log");
const lockFile = workflowLockFile;
const usage = () => {
process.stderr.write(
"Usage: node build-scripts/build-manager.mjs [--modern] " +
"[--background | --status | --stop | --logs [--follow]]\n"
);
};
const parseArgs = (argv) => {
const args = {
mode: "foreground",
modes: [],
follow: false,
modern: false,
unknown: [],
};
for (const arg of argv) {
if (LIFECYCLE_MODE_FLAGS.has(arg)) {
args.mode = LIFECYCLE_MODE_FLAGS.get(arg);
args.modes.push(arg);
} else if (arg === "--modern") {
args.modern = true;
} else if (arg === "--follow") {
args.follow = true;
} else {
args.unknown.push(arg);
}
}
return args;
};
const hints = () =>
" Stop: pnpm build --stop\n" +
" Status: pnpm build --status\n" +
" Logs: pnpm build --logs\n";
const devCommand = (suite) => {
switch (suite) {
case "app-serve":
return "dev:serve";
case "demo":
return "dev:demo";
case "gallery":
return "dev:gallery";
case "e2e-app":
return "test:e2e:app:dev";
default:
return "dev";
}
};
const readBuild = () => readProcessRecord(lockFile);
const releaseBuild = (token) => releaseProcessRecord(lockFile, token);
const stopCommandFor = (owner) =>
owner?.kind === "build"
? "pnpm build --stop"
: owner?.kind === "dev"
? `pnpm ${devCommand(owner.suite)} --stop`
: undefined;
const acquireBuild = async (modern, foreground) => {
const token = `${process.pid}-${Date.now()}-${Math.random()}`;
const record = {
pid: process.pid,
startTime: processStartTime(process.pid),
processGroup: false,
foreground,
kind: "build",
modern,
starting: true,
token,
};
const result = acquireProcessRecord(lockFile, record);
if (result.acquired) {
return { token };
}
reportExisting(result.existing);
return (await offerToStopProcessRecord({
file: lockFile,
owner: result.existing,
ownerDescription: describeOutputOwner(result.existing),
stopCommand: stopCommandFor(result.existing),
}))
? acquireBuild(modern, foreground)
: { existing: result.existing };
};
const updateBuild = (token, child, processGroup) => {
const existing = readBuild();
if (existing?.token !== token) {
throw Error("Frontend build lock ownership was lost during startup.");
}
writeProcessRecord(lockFile, {
...existing,
pid: child.pid,
startTime: processStartTime(child.pid),
processGroup,
starting: false,
});
};
const taskFor = (modern) => (modern ? "build-app-modern" : "build-app");
const reportExisting = (existing) => {
if (existing?.kind === "output") {
process.stdout.write(
`${describeOutputOwner(existing)} already owns the build and development workflow` +
`${existing.pid ? ` (pid ${existing.pid})` : ""}.\n`
);
return;
}
if (existing?.kind === "dev") {
const command = devCommand(existing.suite);
process.stdout.write(
`Dev server (${existing.suite}) already running` +
`${existing.pid ? ` (pid ${existing.pid})` : ""}.\n` +
` Stop: pnpm ${command} --stop\n` +
` Status: pnpm ${command} --status\n` +
` Logs: pnpm ${command} --logs\n`
);
return;
}
process.stdout.write(
`Frontend ${existing?.modern ? "modern " : ""}build already running` +
`${existing?.pid ? ` (pid ${existing.pid})` : ""}.\n${hints()}`
);
};
const runForeground = async (modern) => {
const lock = await acquireBuild(modern, true);
if (!lock.token) {
return 1;
}
try {
return await spawnForeground({
cmd: gulpBin,
args: [taskFor(modern)],
cwd: repoRoot,
env: workflowLockEnv(lock.token),
processGroup: true,
onSpawn: (child) => updateBuild(lock.token, child, true),
});
} finally {
releaseBuild(lock.token);
}
};
const runBackground = async (modern) => {
const lock = await acquireBuild(modern, false);
if (!lock.token) {
return 1;
}
let child;
try {
child = await spawnDetachedToLog({
cmd: gulpBin,
args: [taskFor(modern)],
cwd: repoRoot,
env: workflowLockEnv(lock.token),
logFile,
});
updateBuild(lock.token, child, true);
process.stdout.write(
`Started ${modern ? "modern " : ""}frontend build (pid ${child.pid})\n` +
hints()
);
return 0;
} catch (err) {
if (child) {
await terminateDetachedProcess(child);
}
releaseBuild(lock.token);
throw err;
}
};
const runStatus = () => {
const existing = readBuild();
if (existing?.kind === "build" && isProcessRecordAlive(existing)) {
process.stdout.write(
`Frontend ${existing.modern ? "modern " : ""}build running (pid ${existing.pid}).\n`
);
} else {
if (existing?.kind === "build") {
releaseBuild(existing.token);
}
process.stdout.write("Frontend build not running.\n");
}
return 0;
};
const runStop = async () => {
let existing = readBuild();
if (existing?.kind !== "build") {
process.stdout.write("Frontend build not running.\n");
return 0;
}
if (existing?.starting) {
const token = existing.token;
await waitFor(
() => {
const current = readBuild();
return !current?.starting || current.token !== token;
},
100,
5000
);
existing = readBuild();
}
if (
!existing ||
existing.kind !== "build" ||
!isProcessRecordAlive(existing)
) {
if (existing) releaseBuild(existing.token);
process.stdout.write("Frontend build not running.\n");
return 0;
}
if (
!(await terminateProcess({
pid: existing.pid,
processGroup: existing.processGroup,
isStopped: () => !isProcessRecordAlive(existing),
}))
) {
process.stderr.write(
`Failed to stop frontend build (pid ${existing.pid}). Stop it manually.\n`
);
return 1;
}
releaseBuild(existing.token);
process.stdout.write(`Stopped frontend build (pid ${existing.pid}).\n`);
return 0;
};
const runLogs = (follow) =>
outputLog(logFile, follow, `No frontend build log yet (${logFile}).\n`);
const main = async () => {
const args = parseArgs(process.argv.slice(2));
if (args.unknown.length) {
process.stderr.write(`Unknown arguments: ${args.unknown.join(" ")}\n`);
usage();
return 1;
}
if (args.modes.length > 1 || (args.follow && args.mode !== "logs")) {
process.stderr.write("Invalid combination of build arguments.\n");
usage();
return 1;
}
const handlers = {
foreground: () => runForeground(args.modern),
background: () => runBackground(args.modern),
status: runStatus,
stop: runStop,
logs: () => runLogs(args.follow),
};
return handlers[args.mode]();
};
runCli(main);
-15
View File
@@ -1,15 +0,0 @@
{
"_comment": "Initial JS budget (raw/uncompressed bytes) for the cold-load critical entrypoints. Enforced by build-scripts/check-bundle-size.cjs in CI. Re-seed after an intentional change with `--update --headroom=<percent>`.",
"frontend-modern": {
"app": 624240,
"core": 55144,
"authorize": 594400,
"onboarding": 705499
},
"frontend-legacy": {
"app": 776696,
"core": 188309,
"authorize": 763316,
"onboarding": 879807
}
}
+91 -183
View File
@@ -1,9 +1,6 @@
const path = require("path");
const env = require("./env.cjs");
const paths = require("./paths.cjs");
const { dependencies } = require("../package.json");
const BABEL_PLUGINS = path.join(__dirname, "babel-plugins");
// GitHub base URL to use for production source maps
// Nightly builds use the commit SHA, otherwise assumes there is a tag that matches the version
@@ -15,66 +12,50 @@ module.exports.sourceMapURL = () => {
};
// Files from NPM Packages that should not be imported
module.exports.ignorePackages = () => [];
// eslint-disable-next-line unused-imports/no-unused-vars
module.exports.ignorePackages = ({ latestBuild }) => [
// Part of yaml.js and only used for !!js functions that we don't use
require.resolve("esprima"),
];
// Files from NPM packages that we should replace with empty file
module.exports.emptyPackages = ({ isLandingPageBuild }) =>
module.exports.emptyPackages = ({ latestBuild, isHassioBuild }) =>
[
// Icons in landingpage conflict with icons in HA so we don't load.
isLandingPageBuild &&
// Contains all color definitions for all material color sets.
// We don't use it
require.resolve("@polymer/paper-styles/color.js"),
require.resolve("@polymer/paper-styles/default-theme.js"),
// Loads stuff from a CDN
require.resolve("@polymer/font-roboto/roboto.js"),
require.resolve("@vaadin/vaadin-material-styles/typography.js"),
require.resolve("@vaadin/vaadin-material-styles/font-icons.js"),
// Compatibility not needed for latest builds
latestBuild &&
// wrapped in require.resolve so it blows up if file no longer exists
require.resolve(
path.resolve(paths.root_dir, "src/components/ha-icon.ts")
path.resolve(paths.polymer_dir, "src/resources/compatibility.ts")
),
isLandingPageBuild &&
// This polyfill is loaded in workers to support ES5, filter it out.
latestBuild && require.resolve("proxy-polyfill/src/index.js"),
// Icons in supervisor conflict with icons in HA so we don't load.
isHassioBuild &&
require.resolve(
path.resolve(paths.root_dir, "src/components/ha-icon-picker.ts")
path.resolve(paths.polymer_dir, "src/components/ha-icon.ts")
),
isHassioBuild &&
require.resolve(
path.resolve(paths.polymer_dir, "src/components/ha-icon-picker.ts")
),
].filter(Boolean);
// MapLibre runs its tile work in a worker that it spawns from a URL. The
// package ships that worker as untranspiled ES2022, so it is bundled here as
// its own entry per build target, like the rest of MapLibre. One self-contained
// file: the worker cannot import chunks, and a classic-compatible script runs
// wherever the main bundle does, module workers or not. The layer keeps the
// page's polyfills out of it; see `babelOptions`.
const MAP_WORKER_NAME = "maplibre-gl-worker";
module.exports.mapWorkerName = MAP_WORKER_NAME;
module.exports.mapWorkerEntry = () => ({
[MAP_WORKER_NAME]: {
import: "maplibre-gl/dist/maplibre-gl-worker.mjs",
chunkLoading: false,
layer: "worker",
},
});
// MapLibre is handed the URL at build time, so the name cannot carry a content
// hash. The frontend version stands in for it, in the file name rather than a
// query string: the service worker precaches everything under the bundle
// directory as immutable and matches it with the query stripped, so a `?v=`
// would keep serving the worker of the first version it ever cached.
module.exports.mapWorkerFilename = () =>
`${MAP_WORKER_NAME}.${env.version()}.js`;
module.exports.definedVars = ({
isProdBuild,
latestBuild,
publicPath,
defineOverlay,
}) => ({
module.exports.definedVars = ({ isProdBuild, latestBuild, defineOverlay }) => ({
__DEV__: !isProdBuild,
__BUILD__: JSON.stringify(latestBuild ? "modern" : "legacy"),
__BUILD__: JSON.stringify(latestBuild ? "latest" : "es5"),
__VERSION__: JSON.stringify(env.version()),
__DEMO__: false,
__SUPERVISOR__: false,
__BACKWARDS_COMPAT__: false,
__STATIC_PATH__: "/static/",
__MAPLIBRE_WORKER_URL__: JSON.stringify(
`${publicPath}${module.exports.mapWorkerFilename()}`
),
__HASS_URL__: `\`${
"HASS_URL" in process.env
? process.env.HASS_URL
: // eslint-disable-next-line no-template-curly-in-string
"${location.protocol}//${location.host}"
}\``,
"process.env.NODE_ENV": JSON.stringify(
isProdBuild ? "production" : "development"
),
@@ -94,29 +75,14 @@ module.exports.htmlMinifierOptions = {
};
module.exports.terserOptions = ({ latestBuild, isTestBuild }) => ({
// Highest syntax the minifier may emit; it never downlevels. Every browser
// in [modern] is well past ES2020 (universal since spring 2020); the
// [legacy] floors (Chrome 59 / Safari 12) top out at ES2017.
ecma: latestBuild ? 2020 : 2017,
safari10: !latestBuild,
ecma: latestBuild ? 2015 : 5,
module: latestBuild,
format: { comments: false },
sourceMap: !isTestBuild,
});
/** @type {import('@rspack/core').SwcLoaderOptions} */
module.exports.swcOptions = () => ({
jsc: {
loose: true,
externalHelpers: true,
target: "ES2021",
parser: {
syntax: "typescript",
decorators: true,
},
},
});
module.exports.babelOptions = ({ latestBuild, isTestBuild, sw, worker }) => ({
module.exports.babelOptions = ({ latestBuild, isProdBuild, isTestBuild }) => ({
babelrc: false,
compact: false,
assumptions: {
@@ -124,90 +90,66 @@ module.exports.babelOptions = ({ latestBuild, isTestBuild, sw, worker }) => ({
setPublicClassFields: true,
setSpreadProperties: true,
},
browserslistEnv: latestBuild ? "modern" : `legacy${sw ? "-sw" : ""}`,
browserslistEnv: latestBuild ? "modern" : "legacy",
// Must be unambiguous because some dependencies are CommonJS only
sourceType: "unambiguous",
presets: [
[
"@babel/preset-env",
{
useBuiltIns: latestBuild ? false : "entry",
corejs: latestBuild ? false : { version: "3.32", proposals: true },
bugfixes: true,
shippedProposals: true,
},
],
"@babel/preset-typescript",
],
plugins: [
// Inject Core-JS polyfills on demand. Babel 8 removed preset-env's
// `useBuiltIns`/`corejs` options, so the equivalent polyfill provider is
// configured directly here (`usage-global` matches the old `useBuiltIns: "usage"`).
[
"babel-plugin-polyfill-corejs3",
{
method: "usage-global",
version: dependencies["core-js"],
shippedProposals: true,
},
],
[
path.join(BABEL_PLUGINS, "inline-constants-plugin.cjs"),
path.resolve(
paths.polymer_dir,
"build-scripts/babel-plugins/inline-constants-plugin.cjs"
),
{
modules: ["@mdi/js"],
ignoreModuleNotFound: true,
},
],
// Import helpers from runtime package.
// `moduleName` is pinned so helpers resolve from `@babel/runtime`: the
// corejs3 polyfill provider above otherwise redirects them to the
// (uninstalled) `@babel/runtime-corejs3`, which preset-env used to suppress
// internally when it owned the polyfill injection via `useBuiltIns`.
// Minify template literals for production
isProdBuild && [
"template-html-minifier",
{
modules: {
lit: [
"html",
{ name: "svg", encapsulation: "svg" },
{ name: "css", encapsulation: "style" },
],
"@polymer/polymer/lib/utils/html-tag": ["html"],
},
strictCSS: true,
htmlMinifier: module.exports.htmlMinifierOptions,
failOnError: true, // we can turn this off in case of false positives
},
],
// Import helpers and regenerator from runtime package
[
"@babel/plugin-transform-runtime",
{ version: dependencies["@babel/runtime"], moduleName: "@babel/runtime" },
{ version: require("../package.json").dependencies["@babel/runtime"] },
],
"@babel/plugin-transform-class-properties",
"@babel/plugin-transform-private-methods",
// Support some proposals still in TC39 process
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: true }],
].filter(Boolean),
exclude: [
// \\ for Windows, / for Mac OS and Linux
/node_modules[\\/]core-js/,
/node_modules[\\/]webpack[\\/]buildin/,
],
sourceMaps: !isTestBuild,
overrides: [
// Add plugin to inject various polyfills, excluding the polyfills
// themselves to prevent self-injection. Not in a worker: these polyfill
// the page (Intl locale data, DOM APIs) and assume one, so injecting them
// into a worker's graph makes its bootstrap fail before it starts.
!worker && {
plugins: [
[
path.join(BABEL_PLUGINS, "custom-polyfill-plugin.js"),
{ method: "usage-global" },
],
],
exclude: [
path.join(paths.root_dir, "src/resources/polyfills"),
...[
"@formatjs/(?:ecma402-abstract|intl-\\w+)",
"@lit-labs/virtualizer/polyfills",
"@webcomponents/scoped-custom-element-registry",
"element-internals-polyfill",
].map((p) => new RegExp(`/node_modules/${p}/`)),
],
},
{
// Use unambiguous for dependencies so that require() is correctly injected into CommonJS files
// Exclusions are needed in some cases where ES modules have no static imports or exports, such as polyfills
// (otherwise babel-plugin-polyfill-corejs3 injects bare require("core-js/modules/...") calls
// that rspack does not transform, causing ReferenceError in browsers like Safari 14).
sourceType: "unambiguous",
include: /\/node_modules\//,
exclude: [
"element-internals-polyfill",
"@?lit(?:-labs|-element|-html)?",
"@formatjs/(?:ecma402-abstract|intl-\\w+)",
].map((p) => new RegExp(`/node_modules/${p}/`)),
},
].filter(Boolean),
});
const nameSuffix = (latestBuild) => (latestBuild ? "-modern" : "-legacy");
const nameSuffix = (latestBuild) => (latestBuild ? "-latest" : "-es5");
const outputPath = (outputRoot, latestBuild) =>
path.resolve(outputRoot, latestBuild ? "frontend_latest" : "frontend_es5");
@@ -241,20 +183,14 @@ const publicPath = (latestBuild, root = "") =>
module.exports.config = {
app({ isProdBuild, latestBuild, isStatsBuild, isTestBuild, isWDS }) {
return {
name: "frontend" + nameSuffix(latestBuild),
name: "app" + nameSuffix(latestBuild),
entry: {
"service-worker": !latestBuild
? {
import: "./src/entrypoints/service-worker.ts",
layer: "sw",
}
: "./src/entrypoints/service-worker.ts",
service_worker: "./src/entrypoints/service_worker.ts",
app: "./src/entrypoints/app.ts",
authorize: "./src/entrypoints/authorize.ts",
onboarding: "./src/entrypoints/onboarding.ts",
core: "./src/entrypoints/core.ts",
"custom-panel": "./src/entrypoints/custom-panel.ts",
...module.exports.mapWorkerEntry(),
},
outputPath: outputPath(paths.app_output_root, latestBuild),
publicPath: publicPath(latestBuild),
@@ -266,12 +202,11 @@ module.exports.config = {
};
},
demo({ isProdBuild, latestBuild, isStatsBuild, isTestBuild }) {
demo({ isProdBuild, latestBuild, isStatsBuild }) {
return {
name: "demo" + nameSuffix(latestBuild),
entry: {
main: path.resolve(paths.demo_dir, "src/entrypoint.ts"),
...module.exports.mapWorkerEntry(),
},
outputPath: outputPath(paths.demo_output_root, latestBuild),
publicPath: publicPath(latestBuild),
@@ -282,7 +217,6 @@ module.exports.config = {
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
};
},
@@ -292,13 +226,11 @@ module.exports.config = {
media: path.resolve(paths.cast_dir, "src/media/entrypoint.ts"),
};
// Only the receiver renders maps, and it is built for modern browsers only
if (latestBuild) {
entry.receiver = path.resolve(
paths.cast_dir,
"src/receiver/entrypoint.ts"
);
Object.assign(entry, module.exports.mapWorkerEntry());
}
return {
@@ -314,63 +246,39 @@ module.exports.config = {
};
},
gallery({ isProdBuild, latestBuild, isTestBuild }) {
hassio({ isProdBuild, latestBuild, isStatsBuild, isTestBuild }) {
return {
name: "supervisor" + nameSuffix(latestBuild),
entry: {
entrypoint: path.resolve(paths.hassio_dir, "src/entrypoint.ts"),
},
outputPath: outputPath(paths.hassio_output_root, latestBuild),
publicPath: publicPath(latestBuild, paths.hassio_publicPath),
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
isHassioBuild: true,
defineOverlay: {
__SUPERVISOR__: true,
__STATIC_PATH__: `"${paths.hassio_publicPath}/static/"`,
},
};
},
gallery({ isProdBuild, latestBuild }) {
return {
name: "gallery" + nameSuffix(latestBuild),
entry: {
entrypoint: path.resolve(paths.gallery_dir, "src/entrypoint.js"),
...module.exports.mapWorkerEntry(),
},
outputPath: outputPath(paths.gallery_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
isTestBuild,
defineOverlay: {
__DEMO__: true,
},
};
},
landingPage({ isProdBuild, latestBuild }) {
return {
name: "landing-page" + nameSuffix(latestBuild),
entry: {
entrypoint: path.resolve(paths.landingPage_dir, "src/entrypoint.js"),
},
outputPath: outputPath(paths.landingPage_output_root, latestBuild),
publicPath: publicPath(latestBuild),
isProdBuild,
latestBuild,
isLandingPageBuild: true,
};
},
e2eTestApp({ isProdBuild, latestBuild, isStatsBuild, isTestBuild }) {
return {
name: "e2e-test-app" + nameSuffix(latestBuild),
entry: {
dashboard: path.resolve(
paths.e2eTestApp_dir,
"src/dashboard-entrypoint.ts"
),
main: path.resolve(paths.e2eTestApp_dir, "src/entrypoint.ts"),
onboarding: path.resolve(
paths.e2eTestApp_dir,
"src/onboarding-entrypoint.ts"
),
...module.exports.mapWorkerEntry(),
},
outputPath: outputPath(paths.e2eTestApp_output_root, latestBuild),
publicPath: publicPath(latestBuild),
defineOverlay: {
__VERSION__: JSON.stringify(`E2E-TEST-${env.version()}`),
__DEMO__: true,
},
isProdBuild,
latestBuild,
isStatsBuild,
isTestBuild,
};
},
};
-155
View File
@@ -1,155 +0,0 @@
/* global require, process, __dirname */
// Enforce a strict size budget on the initial JS of the most critical
// entrypoints (`app` and `core`). These two are downloaded on every cold load
// before anything interactive can happen, so unintended growth here hurts
// first-load performance directly.
//
// In production rspack does not split initial chunks (splitChunks only operates
// on `!chunk.canBeInitial()`), so each entrypoint resolves to a single initial
// JS asset. We read the per-build stats written by StatsWriterPlugin and compare
// the entrypoint's initial JS size against a committed budget.
//
// Usage:
// node build-scripts/check-bundle-size.cjs # enforce, exit 1 on regression
// node build-scripts/check-bundle-size.cjs --update # rewrite budgets from current sizes
// node build-scripts/check-bundle-size.cjs --update --headroom=3 # current + 3% headroom
const fs = require("fs");
const path = require("path");
const paths = require("./paths.cjs");
// Entrypoints whose initial JS we hold to a strict budget. These are all
// downloaded on a user-facing cold load before anything interactive can happen:
// `app`/`core` for the main app, plus the standalone `authorize` and
// `onboarding` pages. `custom-panel` is intentionally excluded (only loaded
// when a custom panel is opened).
const TRACKED_ENTRYPOINTS = ["app", "core", "authorize", "onboarding"];
// App build stats files, as written by StatsWriterPlugin (`${name}.json`).
const BUILDS = ["frontend-modern", "frontend-legacy"];
const BUDGET_FILE = path.join(__dirname, "bundle-budget.json");
const STATS_DIR = path.join(paths.build_dir, "stats");
const readStats = (build) => {
const file = path.join(STATS_DIR, `${build}.json`);
if (!fs.existsSync(file)) {
throw new Error(
`Missing stats file: ${path.relative(process.cwd(), file)}.\n` +
`Run a production build first (e.g. \`gulp build-app\`), then re-run this check.`
);
}
return JSON.parse(fs.readFileSync(file, "utf8"));
};
// Initial JS bytes for an entrypoint = sum of the .js asset sizes of its initial
// entry chunk(s). Sizes are raw (uncompressed) bytes, matching the stats output.
const entrypointInitialJS = (stats, entrypoint) => {
const assetSize = new Map(stats.assets.map((a) => [a.name, a.size]));
let total = 0;
let found = false;
for (const chunk of stats.chunks) {
if (!chunk.entry || !chunk.initial) {
continue;
}
if (!(chunk.names || []).includes(entrypoint)) {
continue;
}
found = true;
for (const file of chunk.files || []) {
if (file.endsWith(".js") && assetSize.has(file)) {
total += assetSize.get(file);
}
}
}
if (!found) {
throw new Error(`Entrypoint "${entrypoint}" not found in bundle stats.`);
}
return total;
};
const kib = (bytes) => `${(bytes / 1024).toFixed(1)} KiB`;
const main = () => {
const update = process.argv.includes("--update");
const headroomArg = process.argv.find((a) => a.startsWith("--headroom="));
const headroom = headroomArg ? Number(headroomArg.split("=")[1]) : 0;
const current = {};
for (const build of BUILDS) {
const stats = readStats(build);
current[build] = {};
for (const entrypoint of TRACKED_ENTRYPOINTS) {
current[build][entrypoint] = entrypointInitialJS(stats, entrypoint);
}
}
if (update) {
const budget = { _comment: BUDGET_COMMENT };
for (const build of BUILDS) {
budget[build] = {};
for (const entrypoint of TRACKED_ENTRYPOINTS) {
budget[build][entrypoint] = Math.ceil(
current[build][entrypoint] * (1 + headroom / 100)
);
}
}
fs.writeFileSync(BUDGET_FILE, `${JSON.stringify(budget, null, 2)}\n`);
console.log(
`Updated ${path.relative(process.cwd(), BUDGET_FILE)} from current sizes` +
(headroom ? ` (+${headroom}% headroom).` : ".")
);
return;
}
if (!fs.existsSync(BUDGET_FILE)) {
throw new Error(
`Missing budget file ${path.relative(process.cwd(), BUDGET_FILE)}.\n` +
`Seed it from a production build with: node build-scripts/check-bundle-size.cjs --update --headroom=3`
);
}
const budget = JSON.parse(fs.readFileSync(BUDGET_FILE, "utf8"));
let failed = false;
console.log("Initial JS budget (entry chunks, raw bytes):\n");
for (const build of BUILDS) {
for (const entrypoint of TRACKED_ENTRYPOINTS) {
const actual = current[build][entrypoint];
const limit = budget[build] && budget[build][entrypoint];
if (typeof limit !== "number") {
failed = true;
console.log(
` ✗ ${build} / ${entrypoint}: no budget set (current ${kib(actual)})`
);
continue;
}
const ok = actual <= limit;
const delta = (((actual - limit) / limit) * 100).toFixed(1);
console.log(
` ${ok ? "✓" : "✗"} ${build} / ${entrypoint}: ` +
`${kib(actual)} / ${kib(limit)}${ok ? "" : ` (+${delta}% over budget)`}`
);
if (!ok) {
failed = true;
}
}
}
if (failed) {
console.error(
"\nInitial JS budget exceeded for a critical entrypoint.\n" +
"Investigate what was pulled into the entry chunk (a static import that should be lazy?).\n" +
"If the growth is intentional, re-seed the budget:\n" +
" node build-scripts/check-bundle-size.cjs --update --headroom=3"
);
process.exit(1);
}
console.log("\nAll tracked entrypoints within budget.");
};
const BUDGET_COMMENT =
"Initial JS budget (raw/uncompressed bytes) for the cold-load critical entrypoints. " +
"Enforced by build-scripts/check-bundle-size.cjs in CI. " +
"Re-seed after an intentional change with `--update --headroom=<percent>`.";
main();
-212
View File
@@ -1,212 +0,0 @@
// Content-addressed cache for compression output.
//
// brotli (quality 11) and zopfli are the slowest part of a production build,
// and they redo every file from scratch on every run. But production chunks are
// content-hashed in their filenames, so a chunk that didn't change produces
// byte-identical input here. Keying the compressed output by a hash of the
// input bytes lets an unchanged file skip compression entirely, and lets a
// nightly build warm the cache a release reuses the next day.
//
// Disabled unless COMPRESS_CACHE_DIR points at a directory. Local builds set
// nothing and behave exactly as before. The compressed bytes are unchanged
// either way; only whether they were recomputed differs.
import { createHash } from "node:crypto";
import { existsSync } from "node:fs";
import {
mkdir,
readFile,
readdir,
rename,
rm,
stat,
utimes,
writeFile,
} from "node:fs/promises";
import path from "node:path";
const rootDir = process.env.COMPRESS_CACHE_DIR;
export const cacheEnabled = Boolean(rootDir);
// Total cache size to keep across builds, least-recently-used first when over.
// The cache is shared between branches (a dev nightly warms it for a release,
// which builds from rc/master), so pruning must NOT drop everything the current
// build didn't touch — that would make each branch evict the other's
// branch-specific files every run. Instead the current build is pinned and the
// rest is kept up to this budget, so nothing is dropped unless the cache is
// genuinely too large. Override with COMPRESS_CACHE_MAX_BYTES.
const DEFAULT_MAX_BYTES = 1024 * 1024 * 1024; // 1 GiB
const maxBytes = () => {
// A valid, explicit budget wins — including 0, which keeps only the current
// build (evict everything else). An unset or invalid value uses the default.
const configured = Number(process.env.COMPRESS_CACHE_MAX_BYTES);
return Number.isFinite(configured) && configured >= 0
? configured
: DEFAULT_MAX_BYTES;
};
// Every cache key touched this build, hits and writes alike, so a prune can pin
// the current dist and never evict a file this build depends on.
const touched = new Set();
// Per-namespace directory, created lazily and only once.
const dirs = new Map();
let tmpCounter = 0;
const sha256 = (contents) =>
createHash("sha256").update(contents).digest("hex");
const namespaceDir = (namespace) => {
let dir = dirs.get(namespace);
if (!dir) {
const dirPath = path.join(rootDir, namespace);
dir = { path: dirPath, ready: undefined };
dirs.set(namespace, dir);
}
return dir;
};
const ensureDir = (dir) => {
dir.ready ??= mkdir(dir.path, { recursive: true });
return dir.ready;
};
// Written via a unique temp file and renamed into place so a concurrent reader
// in the same build never sees a half-written entry (rename is atomic on the
// same filesystem).
const writeAtomic = async (dir, name, contents) => {
await ensureDir(dir);
tmpCounter += 1;
const tmp = path.join(dir.path, `.${process.pid}-${tmpCounter}.tmp`);
const dest = path.join(dir.path, name);
await writeFile(tmp, contents);
try {
await rename(tmp, dest);
} catch (error) {
// Two files with identical contents can miss and write the same entry at
// once. On POSIX the rename just overwrites, but Windows rejects a rename
// onto an existing path. Either way the destination already holds the same
// bytes (content-addressed), so drop our temp and treat it as done.
if (existsSync(dest)) {
await rm(tmp, { force: true });
} else {
throw error;
}
}
};
/**
* Return the cached compression result for `contents`, or run `compute` and
* cache what it returns. `compute` resolves to a Buffer for compressed output,
* or `undefined` when the file should be dropped (brotli skipLarger); both
* outcomes are cached, so a dropped file is not recompressed on the next build.
*
* @param {string} namespace Isolates entries by algorithm, parameters and tool
* version, so a change to any of them can never return a stale result.
* @param {Buffer} contents Uncompressed input bytes, used as the cache key.
* @param {() => Promise<Buffer | undefined>} compute Runs on a cache miss.
* @returns {Promise<Buffer | undefined>}
*/
export const withCache = async (namespace, contents, compute) => {
if (!cacheEnabled) {
return compute();
}
const dir = namespaceDir(namespace);
const hash = sha256(contents);
touched.add(`${namespace}/${hash}`);
const dataPath = path.join(dir.path, hash);
const dropName = `${hash}.drop`;
try {
return await readFile(dataPath);
} catch {
// Miss (or unreadable) — fall through and compute.
}
if (existsSync(path.join(dir.path, dropName))) {
return undefined;
}
const result = await compute();
if (result === undefined) {
await writeAtomic(dir, dropName, "");
} else {
await writeAtomic(dir, hash, result);
}
return result;
};
/**
* Keep the cache under `maxBytes`, evicting least-recently-used entries first.
* Files this build touched are always kept (and their timestamp refreshed, so
* shared files stay warm across branches); the remainder — including another
* branch's entries — is kept up to the budget. No-op when the cache is disabled
* or nothing was compressed, so it never wipes a warm cache on a build that
* skipped compression.
*/
export const pruneCache = async () => {
if (!cacheEnabled || touched.size === 0 || !existsSync(rootDir)) {
return;
}
const now = new Date();
const pinned = [];
const others = [];
// Scan every namespace on disk, not just the ones this build used, so entries
// from an old tool version (a different namespace) are eligible for eviction.
const namespaces = await readdir(rootDir, { withFileTypes: true });
await Promise.all(
namespaces.map(async (ns) => {
if (!ns.isDirectory()) {
return;
}
const nsDir = path.join(rootDir, ns.name);
const entries = await readdir(nsDir);
await Promise.all(
entries.map(async (entry) => {
const entryPath = path.join(nsDir, entry);
// Stray temp files from an interrupted write are never valid entries.
if (entry.endsWith(".tmp")) {
await rm(entryPath, { force: true });
return;
}
const hash = entry.endsWith(".drop") ? entry.slice(0, -5) : entry;
const info = await stat(entryPath);
if (touched.has(`${ns.name}/${hash}`)) {
pinned.push({ entryPath, size: info.size });
} else {
others.push({ entryPath, size: info.size, mtimeMs: info.mtimeMs });
}
})
);
})
);
// Pinned files stay and are refreshed so they rank as most-recently-used for
// future prunes; they always count against the budget first.
let kept = 0;
await Promise.all(
pinned.map(async ({ entryPath, size }) => {
kept += size;
// A failed timestamp refresh only affects future LRU ordering, not
// correctness, so it is safe to ignore.
await utimes(entryPath, now, now).catch(() => undefined);
})
);
// Keep the most-recently-used others until the budget is spent; drop the rest.
others.sort((a, b) => b.mtimeMs - a.mtimeMs);
const budget = maxBytes();
const toDelete = [];
for (const entry of others) {
if (kept + entry.size <= budget) {
kept += entry.size;
} else {
toDelete.push(entry.entryPath);
}
}
await Promise.all(toDelete.map((p) => rm(p, { force: true })));
};
-761
View File
@@ -1,761 +0,0 @@
// Manage a Home Assistant frontend dev server with an agent-friendly interface.
//
// node build-scripts/dev-server.mjs --suite <suite> [mode] [extra args]
//
// (no mode) Run in the foreground.
// --background Start detached, wait until it is ready, print the URL
// (when it has one) and pid, then exit and leave it running.
// --status Report whether the suite's dev server is running.
// --stop Stop a running background dev server.
// --logs [--follow] Print (or follow) the background dev server log.
// --fetch-translations
// Fetch nightly translations before starting (app,
// app-serve, demo, and gallery only).
//
// Extra args (for example -p or -c on app-serve) are forwarded to the underlying
// script. Suites use one of two liveness models:
//
// health demo, gallery, e2e-app: a fixed port plus the /__ha_dev_status
// endpoint each dev server exposes (see runDevServer in
// build-scripts/gulp/rspack.js).
// process app (pnpm dev) and app-serve (pnpm dev:serve): plain pnpm dev has
// no port, so these treat the first "Build done" log line as ready.
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import {
LIFECYCLE_MODE_FLAGS,
acquireProcessRecord,
detectCodingAgent,
isProcessRecordAlive,
outputLog,
offerToStopProcessRecord,
processStartTime,
readProcessRecord,
releaseProcessRecord,
runCli,
sleep,
spawnDetachedToLog,
spawnForeground,
terminateDetachedProcess,
terminateProcess,
writeProcessRecord,
} from "./managed-process.mjs";
import {
buildCacheDir,
describeOutputOwner,
workflowLockEnv,
workflowLockFile,
} from "./output-lock.mjs";
const repoRoot = path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
".."
);
const gulpBin = path.join(repoRoot, "node_modules", ".bin", "gulp");
const developAndServeScript = path.join(
repoRoot,
"script",
"develop_and_serve"
);
const logDir = path.join(buildCacheDir, "ha-dev-server");
// Each suite names its pnpm alias (for hints), a liveness model, and how to
// spawn it. health suites carry a fixed port; process suites carry the log line
// that means "ready" and, for app-serve, forward extra args to the script.
const SUITES = new Map([
[
"e2e-app",
{
alias: "test:e2e:app:dev",
liveness: "health",
port: 8095,
spawn: { cmd: gulpBin, args: ["develop-e2e-test-app"] },
},
],
[
"demo",
{
alias: "dev:demo",
fetchTranslations: true,
liveness: "health",
port: 8090,
spawn: { cmd: gulpBin, args: ["develop-demo"] },
},
],
[
"gallery",
{
alias: "dev:gallery",
fetchTranslations: true,
liveness: "health",
port: 8100,
spawn: { cmd: gulpBin, args: ["develop-gallery"] },
},
],
[
"app",
{
alias: "dev",
fetchTranslations: true,
liveness: "process",
readyLog: /Build done @/,
spawn: { cmd: gulpBin, args: ["develop-app"] },
},
],
[
"app-serve",
{
alias: "dev:serve",
liveness: "process",
acceptsArgs: true,
fetchTranslations: true,
readyLog: /Build done @/,
spawn: { cmd: developAndServeScript, args: [] },
},
],
]);
// Cover a cold build on a slow machine before the server starts listening.
// Override with HA_DEV_SERVER_TIMEOUT (seconds).
const readyTimeoutSeconds = Number(process.env.HA_DEV_SERVER_TIMEOUT || "180");
const READY_TIMEOUT_MS =
Number.isFinite(readyTimeoutSeconds) && readyTimeoutSeconds > 0
? readyTimeoutSeconds * 1000
: 180_000;
const usage = () => {
const suites = [...SUITES.keys()].join("|");
process.stderr.write(
`Usage: node build-scripts/dev-server.mjs --suite <${suites}> ` +
`[--background | --status | --stop | --logs [--follow]] ` +
`[--fetch-translations]\n`
);
};
const parseArgs = (argv) => {
const args = {
fetchTranslations: false,
mode: "foreground",
follow: false,
modes: [],
suite: undefined,
passthrough: [],
};
for (let i = 0; i < argv.length; i++) {
const arg = argv[i];
switch (arg) {
case "--suite":
args.suite = argv[++i];
break;
case "--follow":
args.follow = true;
break;
case "--fetch-translations":
args.fetchTranslations = true;
break;
default:
if (LIFECYCLE_MODE_FLAGS.has(arg)) {
args.mode = LIFECYCLE_MODE_FLAGS.get(arg);
args.modes.push(arg);
} else {
// Anything unrecognised is forwarded to the underlying script.
args.passthrough.push(arg);
}
}
}
return args;
};
const translationPrebuildEnv = (token) => {
const env = workflowLockEnv(token);
delete env.SKIP_FETCH_NIGHTLY_TRANSLATIONS;
return env;
};
const suiteEnv = (token, fetchTranslations = false) => ({
...workflowLockEnv(token),
...(fetchTranslations && { SKIP_FETCH_NIGHTLY_TRANSLATIONS: "1" }),
});
const runPrebuild = (token, fetchTranslations = false) =>
fetchTranslations
? spawnForeground({
cmd: gulpBin,
args: ["setup-and-fetch-nightly-translations"],
cwd: repoRoot,
env: translationPrebuildEnv(token),
processGroup: true,
})
: Promise.resolve(0);
const logFileFor = (suite) => path.join(logDir, `${suite}.log`);
const acquireSuite = (suite) => {
const token = `${process.pid}-${Date.now()}-${Math.random()}`;
const record = {
pid: process.pid,
startTime: processStartTime(process.pid),
processGroup: false,
kind: "dev",
suite,
starting: true,
token,
};
const result = acquireProcessRecord(workflowLockFile, record);
return result.acquired ? { token } : { existing: result.existing };
};
const updateSuite = (suite, token, child, port) => {
const existing = readProcessRecord(workflowLockFile);
if (existing?.token !== token) {
throw Error(`Dev server (${suite}) ownership was lost during startup.`);
}
writeProcessRecord(workflowLockFile, {
...existing,
pid: child.pid,
startTime: processStartTime(child.pid),
processGroup: true,
starting: false,
port,
});
};
const releaseSuite = (token) => releaseProcessRecord(workflowLockFile, token);
const readSuite = (suite) => {
const existing = readProcessRecord(workflowLockFile);
if (existing?.kind !== "dev" || existing.suite !== suite) {
return undefined;
}
if (isProcessRecordAlive(existing)) {
return existing;
}
releaseSuite(existing.token);
return undefined;
};
const hints = (suite) => {
const alias = `pnpm ${SUITES.get(suite).alias}`;
return (
` Stop: ${alias} --stop\n` +
` Status: ${alias} --status\n` +
` Logs: ${alias} --logs\n`
);
};
const reportProcessConflict = (suite, existing) => {
if (existing?.kind === "output") {
process.stdout.write(
`${describeOutputOwner(existing)} already owns the app output` +
`${existing.pid ? ` (pid ${existing.pid})` : ""}.\n`
);
return;
}
if (existing?.kind === "build") {
process.stdout.write(
`Frontend build already running${existing.pid ? ` (pid ${existing.pid})` : ""}. ` +
"Stop it with pnpm build --stop.\n"
);
return;
}
process.stdout.write(
`Dev server (${existing?.suite ?? suite}) already running` +
`${urlSuffix(existing?.port)} ` +
`${existing?.pid ? `(pid ${existing.pid})` : ""}\n` +
hints(existing?.suite ?? suite)
);
};
const stopCommandFor = (owner) =>
owner?.kind === "build"
? "pnpm build --stop"
: owner?.kind === "dev"
? `pnpm ${SUITES.get(owner.suite)?.alias ?? "dev"} --stop`
: undefined;
const acquireSuiteForStart = async (suite) => {
const lock = acquireSuite(suite);
if (lock.token) {
return lock;
}
reportProcessConflict(suite, lock.existing);
if (
await offerToStopProcessRecord({
file: workflowLockFile,
owner: lock.existing,
ownerDescription: describeOutputOwner(lock.existing),
stopCommand: stopCommandFor(lock.existing),
})
) {
return acquireSuiteForStart(suite);
}
return {
code:
lock.existing?.kind === "dev" &&
lock.existing.suite === suite &&
!lock.existing.starting
? 0
: 1,
};
};
// --- shared spawning and lifecycle ------------------------------------------
const urlSuffix = (port) => (port ? ` at http://localhost:${port}` : "");
// Poll until the server is ready, the child exits, or we time out. Prints the
// progress dots and outcome; returns 0 when ready, 1 otherwise. onExit runs if
// the child dies before it is ready (used to clear a stale pidfile).
const awaitReady = async ({ suite, child, logFile, port, isReady, onExit }) => {
let childExited = false;
child.on("exit", () => {
childExited = true;
});
const deadline = Date.now() + READY_TIMEOUT_MS;
process.stdout.write(`Starting ${suite} dev server`);
const poll = async () => {
if (childExited) {
process.stdout.write("\n");
process.stderr.write(
`Dev server (${suite}) exited before it was ready. See ${logFile}\n`
);
onExit?.();
return 1;
}
if (await isReady()) {
process.stdout.write("\n");
process.stdout.write(
`Dev server (${suite}) running${urlSuffix(port)} ` +
`(pid ${child.pid})\n${hints(suite)}`
);
return 0;
}
if (Date.now() >= deadline) {
return undefined;
}
process.stdout.write(".");
await sleep(1000);
return poll();
};
const result = await poll();
if (result !== undefined) {
return result;
}
process.stdout.write("\n");
process.stderr.write(
`Dev server (${suite}) did not become ready within ${
READY_TIMEOUT_MS / 1000
}s. See ${logFile}\n`
);
const stopped = await terminateProcess({
pid: child.pid,
isStopped: () => childExited,
});
if (stopped) {
onExit?.();
}
return 1;
};
// Stop a running background server: SIGTERM, wait for it to go, then SIGKILL.
// isStopped reports when it is gone; onStopped runs on success (pidfile cleanup).
const terminate = async (suite, pid, isStopped, onStopped) => {
if (!(await terminateProcess({ pid, isStopped }))) {
process.stderr.write(
`Failed to stop dev server (${suite}) (pid ${pid}). Stop it manually.\n`
);
return 1;
}
onStopped?.();
process.stdout.write(`Stopped dev server (${suite}) (pid ${pid}).\n`);
return 0;
};
// --- health liveness (port + /__ha_dev_status) ------------------------------
/**
* Probe the health endpoint. Dev servers bind IPv4 or IPv6 localhost depending
* on the OS, so try each; the port is "free" only if every address refuses.
* @returns {Promise<{state: "ours" | "foreign" | "free", suite?: string}>}
*/
const PROBE_HOSTS = ["localhost", "127.0.0.1", "[::1]"];
const probe = async (port, timeoutMs = 1000) => {
const probeHost = async (index, sawResponse) => {
const host = PROBE_HOSTS[index];
if (!host) {
return sawResponse ? { state: "foreign" } : { state: "free" };
}
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
try {
const res = await fetch(`http://${host}:${port}/__ha_dev_status`, {
signal: controller.signal,
});
sawResponse = true;
if (res.ok) {
const body = await res.json().catch(() => null);
if (body && body.server === "ha-frontend-dev") {
return { state: "ours", suite: body.suite };
}
}
} catch {
// Try the next address.
} finally {
clearTimeout(timer);
}
return probeHost(index + 1, sawResponse);
};
return probeHost(0, false);
};
const isHttpServing = async (port, timeoutMs = 1000) => {
const probeHost = async (index) => {
const host = PROBE_HOSTS[index];
if (!host) {
return false;
}
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
try {
const response = await fetch(`http://${host}:${port}`, {
signal: controller.signal,
});
if (response.ok) {
return true;
}
} catch {
// Try the next address.
} finally {
clearTimeout(timer);
}
return probeHost(index + 1);
};
return probeHost(0);
};
const runForegroundHealth = async (suite, cfg, fetchTranslations = false) => {
const { port } = cfg;
const lock = await acquireSuiteForStart(suite);
if (!lock.token) {
return lock.code;
}
const status = await probe(port);
if (status.state === "ours") {
releaseSuite(lock.token);
process.stderr.write(
`Port ${port} is already serving the ${status.suite ?? "unknown"} dev server.\n`
);
return 1;
}
if (status.state === "foreign") {
releaseSuite(lock.token);
process.stderr.write(
`Port ${port} is in use by another process; not the ${suite} dev server.\n`
);
return 1;
}
try {
const prebuildCode = await runPrebuild(lock.token, fetchTranslations);
if (prebuildCode !== 0) {
return prebuildCode;
}
return await spawnForeground({
cmd: cfg.spawn.cmd,
args: cfg.spawn.args,
cwd: repoRoot,
env: suiteEnv(lock.token, fetchTranslations),
processGroup: true,
onSpawn: (child) => updateSuite(suite, lock.token, child, port),
});
} finally {
releaseSuite(lock.token);
}
};
const runBackgroundHealth = async (suite, cfg, fetchTranslations = false) => {
const { port } = cfg;
const lock = await acquireSuiteForStart(suite);
if (!lock.token) {
return lock.code;
}
const preflight = await probe(port);
if (preflight.state === "ours") {
releaseSuite(lock.token);
process.stderr.write(
`Port ${port} is already serving the ${preflight.suite ?? "unknown"} dev server.\n`
);
return 1;
}
if (preflight.state === "foreign") {
releaseSuite(lock.token);
process.stderr.write(
`Port ${port} is in use by another process; not the ${suite} dev server.\n`
);
return 1;
}
let child;
try {
const prebuildCode = await runPrebuild(lock.token, fetchTranslations);
if (prebuildCode !== 0) {
releaseSuite(lock.token);
return prebuildCode;
}
const logFile = logFileFor(suite);
child = await spawnDetachedToLog({
cmd: cfg.spawn.cmd,
args: cfg.spawn.args,
cwd: repoRoot,
env: suiteEnv(lock.token, fetchTranslations),
logFile,
});
updateSuite(suite, lock.token, child, port);
return awaitReady({
suite,
child,
logFile,
port,
isReady: async () => {
const status = await probe(port, 1000);
return status.state === "ours" && status.suite === suite;
},
onExit: () => releaseSuite(lock.token),
});
} catch (err) {
if (child) {
await terminateDetachedProcess(child);
}
releaseSuite(lock.token);
throw err;
}
};
const logIsReady = (logFile, readyLog) => {
try {
return readyLog.test(fs.readFileSync(logFile, "utf8"));
} catch {
return false;
}
};
// app-serve serves on 8124 by default (8123 in a devcontainer), or whatever -p
// the caller passed. Used only to show a URL; liveness comes from the pidfile.
const resolveServePort = (passthrough) => {
for (let i = passthrough.length - 1; i >= 0; i--) {
const arg = passthrough[i];
if (arg === "-p" || arg.startsWith("-p")) {
const port = Number(arg === "-p" ? passthrough[i + 1] : arg.slice(2));
if (Number.isInteger(port) && port > 0) {
return port;
}
}
}
return process.env.DEVCONTAINER ? 8123 : 8124;
};
const spawnArgs = (cfg, passthrough) => [
...cfg.spawn.args,
...(cfg.acceptsArgs ? passthrough : []),
];
const runForegroundProcess = async (
suite,
cfg,
passthrough,
fetchTranslations = false
) => {
const lock = await acquireSuiteForStart(suite);
if (!lock.token) {
return lock.code;
}
try {
const prebuildCode = await runPrebuild(lock.token, fetchTranslations);
if (prebuildCode !== 0) {
return prebuildCode;
}
return await spawnForeground({
cmd: cfg.spawn.cmd,
args: spawnArgs(cfg, passthrough),
cwd: repoRoot,
env: suiteEnv(lock.token, fetchTranslations),
processGroup: true,
onSpawn: (child) => updateSuite(suite, lock.token, child),
});
} finally {
releaseSuite(lock.token);
}
};
const runBackgroundProcess = async (
suite,
cfg,
passthrough,
fetchTranslations = false
) => {
const lock = await acquireSuiteForStart(suite);
if (!lock.token) {
return lock.code;
}
let child;
try {
const prebuildCode = await runPrebuild(lock.token, fetchTranslations);
if (prebuildCode !== 0) {
releaseSuite(lock.token);
return prebuildCode;
}
const logFile = logFileFor(suite);
child = await spawnDetachedToLog({
cmd: cfg.spawn.cmd,
args: spawnArgs(cfg, passthrough),
cwd: repoRoot,
env: suiteEnv(lock.token, fetchTranslations),
logFile,
});
const port = cfg.acceptsArgs ? resolveServePort(passthrough) : cfg.port;
updateSuite(suite, lock.token, child, port);
return awaitReady({
suite,
child,
logFile,
port,
isReady: async () =>
logIsReady(logFile, cfg.readyLog) &&
(!cfg.acceptsArgs || (await isHttpServing(port))),
onExit: () => releaseSuite(lock.token),
});
} catch (err) {
if (child) {
await terminateDetachedProcess(child);
}
releaseSuite(lock.token);
throw err;
}
};
const runStatusSuite = async (suite, cfg) => {
const existing = readSuite(suite);
if (existing) {
process.stdout.write(
`Dev server (${existing.suite ?? suite}) running${urlSuffix(existing.port ?? cfg.port)} ` +
`(pid ${existing.pid})\n`
);
} else {
process.stdout.write(`Dev server (${suite}) not running.\n`);
}
return 0;
};
const runStopSuite = async (suite) => {
const existing = readSuite(suite);
if (!existing) {
process.stdout.write(`Dev server (${suite}) not running.\n`);
return 0;
}
const { pid } = existing;
const activeSuite = existing.suite ?? suite;
return terminate(
activeSuite,
pid,
() => !isProcessRecordAlive(existing),
() => releaseSuite(existing.token)
);
};
// --- shared -----------------------------------------------------------------
const runLogs = (suite, follow) => {
const activeSuite = readSuite(suite)?.suite ?? suite;
return outputLog(
logFileFor(activeSuite),
follow,
`No log for the ${activeSuite} dev server yet (${logFileFor(activeSuite)}).\n`
);
};
const main = async () => {
const args = parseArgs(process.argv.slice(2));
const cfg = SUITES.get(args.suite);
if (!cfg) {
usage();
return 1;
}
if (args.modes.length > 1 || (args.follow && args.mode !== "logs")) {
process.stderr.write("Invalid combination of lifecycle arguments.\n");
usage();
return 1;
}
if (
args.fetchTranslations &&
(!["foreground", "background"].includes(args.mode) ||
!cfg.fetchTranslations)
) {
process.stderr.write(
"--fetch-translations is only supported when starting app, app-serve, demo, or gallery.\n"
);
usage();
return 1;
}
if (args.passthrough.length && !cfg.acceptsArgs) {
process.stderr.write(
`Ignoring unexpected arguments: ${args.passthrough.join(" ")}\n`
);
}
// A plain dev:<suite> under a coding agent backgrounds itself; explicit modes
// are untouched.
let { mode } = args;
if (
mode === "foreground" &&
!["0", "false"].includes(process.env.HA_DEV_BACKGROUND)
) {
const agent = detectCodingAgent();
if (agent) {
process.stdout.write(
`Detected coding agent (${agent}); starting in the background. ` +
`Set HA_DEV_BACKGROUND=0 to force foreground.\n`
);
mode = "background";
}
}
if (mode === "logs") {
return runLogs(args.suite, args.follow);
}
if (mode === "status") {
return runStatusSuite(args.suite, cfg);
}
if (mode === "stop") {
return runStopSuite(args.suite);
}
const handlers =
cfg.liveness === "health"
? {
foreground: () =>
runForegroundHealth(args.suite, cfg, args.fetchTranslations),
background: () =>
runBackgroundHealth(args.suite, cfg, args.fetchTranslations),
}
: {
foreground: () =>
runForegroundProcess(
args.suite,
cfg,
args.passthrough,
args.fetchTranslations
),
background: () =>
runBackgroundProcess(
args.suite,
cfg,
args.passthrough,
args.fetchTranslations
),
};
return handlers[mode]();
};
runCli(main);
+10 -9
View File
@@ -2,33 +2,34 @@ const fs = require("fs");
const path = require("path");
const paths = require("./paths.cjs");
const isTrue = (value) => value === "1" || value?.toLowerCase() === "true";
module.exports = {
useRollup() {
return process.env.ROLLUP === "1";
},
useWDS() {
return process.env.WDS === "1";
},
isProdBuild() {
return (
process.env.NODE_ENV === "production" || module.exports.isStatsBuild()
);
},
isStatsBuild() {
return isTrue(process.env.STATS);
return process.env.STATS === "1";
},
isTestBuild() {
return isTrue(process.env.IS_TEST);
return process.env.IS_TEST === "true";
},
isNetlify() {
return isTrue(process.env.NETLIFY);
return process.env.NETLIFY === "true";
},
version() {
const version = fs
.readFileSync(path.resolve(paths.root_dir, "pyproject.toml"), "utf8")
.readFileSync(path.resolve(paths.polymer_dir, "pyproject.toml"), "utf8")
.match(/version\W+=\W"(\d{8}\.\d(?:\.dev)?)"/);
if (!version) {
throw Error("Version not found");
}
return version[1];
},
isDevContainer() {
return isTrue(process.env.DEV_CONTAINER);
},
};
-10
View File
@@ -1,10 +0,0 @@
// @ts-check
import { noUnusedElementImport } from "./no-unused-element-import.mjs";
export default {
meta: { name: "eslint-plugin-ha" },
rules: {
"no-unused-element-import": noUnusedElementImport,
},
};
@@ -1,188 +0,0 @@
// @ts-check
import fs from "node:fs";
import path from "node:path";
const TAG_PATTERN =
/@customElement\(\s*["'`]([a-z0-9_-]+)["'`]|customElements\.define\(\s*["'`]([a-z0-9_-]+)["'`]/g;
const EXTENSIONS = /\.(ts|js)$/;
// Entry points register the root element that the served HTML renders.
const ENTRY_POINT = /(^|[\\/])(entrypoints[\\/]|entrypoint\.(ts|js)$)/;
// These resolve a tag from config at runtime, so they register every candidate
// they may be asked for.
const RUNTIME_REGISTRY =
/[\\/]create-element[\\/]|createLovelaceElement\(|getLovelaceElementClass\(/;
/** @type {Map<string, string[]>} */
const tagCache = new Map();
/** Tags the module at `file` registers when imported. */
const registeredTags = (file) => {
let tags = tagCache.get(file);
if (!tags) {
try {
const source = fs.readFileSync(file, "utf8");
tags = [...source.matchAll(TAG_PATTERN)].map((m) => m[1] || m[2]);
} catch {
tags = [];
}
tagCache.set(file, tags);
}
return tags;
};
const isFile = (candidate) => {
try {
return fs.statSync(candidate).isFile();
} catch {
return false;
}
};
const resolveModule = (fromFile, request) => {
const base = path.resolve(path.dirname(fromFile), request);
return [
base,
`${base}.ts`,
`${base}.js`,
base.replace(/\.js$/, ".ts"),
path.join(base, "index.ts"),
path.join(base, "index.js"),
].find((candidate) => EXTENSIONS.test(candidate) && isFile(candidate));
};
// `hui-${type}-card` or "state-card-" + domain never spell the tag out.
const buildsTagAtRuntime = (source, tag) => {
const segments = tag.split("-");
for (let end = 1; end < segments.length; end++) {
const prefix = `${segments.slice(0, end).join("-")}-`;
if (
source.includes(`\`${prefix}\${`) ||
source.includes(`"${prefix}" +`) ||
source.includes(`'${prefix}' +`)
) {
return true;
}
}
return false;
};
// Plain substring matching, so <ha-icon-button> counts as a use of ha-icon.
// That direction is deliberate: it misses dead imports rather than asking for
// a removal that breaks registration.
const usesTag = (body, tag) => body.includes(tag);
// A gallery page registers the elements its sibling markdown demos render, so
// that markdown is part of what the module is used by.
const siblingMarkup = (file) => {
const markdown = file.replace(EXTENSIONS, ".markdown");
try {
return fs.readFileSync(markdown, "utf8");
} catch {
return "";
}
};
/** Blanks out the given ranges so an import path cannot count as a usage. */
const withoutRanges = (source, ranges) => {
let result = source;
for (const [start, end] of ranges) {
result =
result.slice(0, start) + " ".repeat(end - start) + result.slice(end);
}
return result;
};
/**
* Side-effect imports register a custom element. ESLint's unused-import rules
* cannot judge them — there is no binding to be unused — so a registration
* outlives the template that needed it and nothing reports the dead import.
*
* Deliberately not fixable: removing the import is only safe once every file
* that renders the element imports it itself, which this rule cannot see.
*
* Off in eslint.config.mjs while a backlog of those paired cases remains;
* `pnpm lint:element-imports` enables it as a warning to list them. Flip it to
* "error" there once the list is empty.
*
* No disable comments while it is off: ESLint reports them as unused
* directives, which fails lint:eslint. Imports that must stay get theirs in
* the change that turns the rule on.
*/
export const noUnusedElementImport = {
meta: {
type: "suggestion",
docs: {
description:
"Disallow side-effect imports of a custom element the importing file never uses",
},
schema: [],
messages: {
unused:
'"{{request}}" only registers <{{tags}}>, which this file never uses. Remove the import, adding it to whichever file renders the element if that file relies on this registration.',
},
},
create(context) {
const filename = context.filename;
if (!EXTENSIONS.test(filename) || ENTRY_POINT.test(filename)) {
return {};
}
return {
Program(program) {
const imports = program.body.filter(
(node) => node.type === "ImportDeclaration"
);
const sideEffectImports = imports.filter(
(node) =>
node.specifiers.length === 0 &&
typeof node.source.value === "string" &&
node.source.value.startsWith(".")
);
if (!sideEffectImports.length) {
return;
}
const source = context.sourceCode.getText();
if (RUNTIME_REGISTRY.test(filename) || RUNTIME_REGISTRY.test(source)) {
return;
}
// Every import declaration, not just the side-effect ones: a module
// path is never a usage, and `import type { HaCard } from "./ha-card"`
// would otherwise pass off its own path as one.
const body =
withoutRanges(
source,
imports.map((node) => node.range)
) + siblingMarkup(filename);
for (const node of sideEffectImports) {
const request = node.source.value;
const target = resolveModule(filename, request);
if (!target) {
continue;
}
// No tags means no registration to judge: styles, polyfills, mocks.
const tags = registeredTags(target);
if (
!tags.length ||
tags.some(
(tag) => usesTag(body, tag) || buildsTagAtRuntime(body, tag)
)
) {
continue;
}
context.report({
node,
messageId: "unused",
data: { request, tags: tags.join(">, <") },
});
}
},
};
},
};
-20
View File
@@ -1,20 +0,0 @@
// @ts-check
import globals from "globals";
import tseslint from "typescript-eslint";
import rootConfig from "../eslint.config.mjs";
export default tseslint.config(...rootConfig, {
languageOptions: {
globals: globals.node,
},
rules: {
"no-console": "off",
"import-x/no-extraneous-dependencies": "off",
"import-x/extensions": "off",
"import-x/no-dynamic-require": "off",
"global-require": "off",
"@typescript-eslint/no-require-imports": "off",
"prefer-arrow-callback": "off",
},
});
@@ -1,11 +0,0 @@
// Browser-only replacement for core-js/internals/get-built-in-node-module.
// The original helper evaluates `Function('return require("...")')()`
// when it detects a Node environment, which causes a runtime
// ReferenceError on browsers (notably Safari 14) if environment
// detection mis-classifies the page. Since browser bundles never need to
// access Node built-in modules, return undefined unconditionally.
//
// Wired up via rspack `NormalModuleReplacementPlugin` in build-scripts/rspack.cjs.
module.exports = function () {
return undefined;
};
+12 -52
View File
@@ -1,16 +1,16 @@
import gulp from "gulp";
import env from "../env.cjs";
import { createWorkflowLockTask } from "../output-lock.mjs";
import "./clean.js";
import "./compress.js";
import "./entry-html.js";
import "./gather-static.js";
import "./gen-icons-json.js";
import "./licenses.js";
import "./locale-data.js";
import "./rollup.js";
import "./service-worker.js";
import "./translations.js";
import "./rspack.js";
import "./wds.js";
import "./webpack.js";
gulp.task(
"develop-app",
@@ -18,7 +18,6 @@ gulp.task(
async function setEnv() {
process.env.NODE_ENV = "development";
},
createWorkflowLockTask("develop-app"),
"clean",
gulp.parallel(
"gen-service-worker-app-dev",
@@ -28,7 +27,11 @@ gulp.task(
"build-locale-data"
),
"copy-static-app",
"rspack-watch-app"
env.useWDS()
? "wds-watch-app"
: env.useRollup()
? "rollup-watch-app"
: "webpack-watch-app"
)
);
@@ -38,55 +41,12 @@ gulp.task(
async function setEnv() {
process.env.NODE_ENV = "production";
},
createWorkflowLockTask("build-app"),
"clean",
gulp.parallel(
"gen-icons-json",
"build-translations",
"build-locale-data",
"gen-licenses"
),
gulp.parallel("gen-icons-json", "build-translations", "build-locale-data"),
"copy-static-app",
"rspack-prod-app",
gulp.parallel("gen-pages-app-prod", "gen-service-worker-app-prod"),
env.useRollup() ? "rollup-prod-app" : "webpack-prod-app",
// Don't compress running tests
...(env.isTestBuild() || env.isStatsBuild()
? []
: ["compress-app", "prune-compress-cache"])
)
);
gulp.task(
"build-app-modern",
gulp.series(
async function setEnv() {
process.env.NODE_ENV = "production";
},
createWorkflowLockTask("build-app-modern"),
"clean",
gulp.parallel(
"gen-icons-json",
"build-translations",
"build-locale-data",
"gen-licenses"
),
"copy-static-app",
"rspack-prod-app-modern",
gulp.parallel(
"gen-pages-app-prod-modern",
"gen-service-worker-app-prod-modern"
),
...(env.isTestBuild() || env.isStatsBuild() ? [] : ["compress-app"])
)
);
gulp.task(
"analyze-app",
gulp.series(
async function setEnv() {
process.env.STATS = "1";
},
"clean",
"rspack-prod-app"
...(env.isTestBuild() ? [] : ["compress-app"]),
gulp.parallel("gen-pages-app-prod", "gen-service-worker-app-prod")
)
);
+5 -3
View File
@@ -1,10 +1,12 @@
import gulp from "gulp";
import env from "../env.cjs";
import "./clean.js";
import "./entry-html.js";
import "./gather-static.js";
import "./rollup.js";
import "./service-worker.js";
import "./translations.js";
import "./rspack.js";
import "./webpack.js";
gulp.task(
"develop-cast",
@@ -17,7 +19,7 @@ gulp.task(
gulp.parallel("gen-icons-json", "build-translations", "build-locale-data"),
"copy-static-cast",
"gen-pages-cast-dev",
"rspack-dev-server-cast"
env.useRollup() ? "rollup-dev-server-cast" : "webpack-dev-server-cast"
)
);
@@ -31,7 +33,7 @@ gulp.task(
"translations-enable-merge-backend",
gulp.parallel("gen-icons-json", "build-translations", "build-locale-data"),
"copy-static-cast",
"rspack-prod-cast",
env.useRollup() ? "rollup-prod-cast" : "webpack-prod-cast",
"gen-pages-cast-prod"
)
);
+4 -18
View File
@@ -24,6 +24,10 @@ gulp.task(
)
);
gulp.task("clean-hassio", async () =>
deleteSync([paths.hassio_output_root, paths.build_dir])
);
gulp.task(
"clean-gallery",
gulp.parallel("clean-translations", async () =>
@@ -34,21 +38,3 @@ gulp.task(
])
)
);
gulp.task(
"clean-landing-page",
gulp.parallel("clean-translations", async () =>
deleteSync([
paths.landingPage_output_root,
paths.landingPage_build,
paths.build_dir,
])
)
);
gulp.task(
"clean-e2e-test-app",
gulp.parallel("clean-translations", async () =>
deleteSync([paths.e2eTestApp_output_root, paths.build_dir])
)
);
+6 -54
View File
@@ -1,64 +1,16 @@
// Tasks to compress
import { constants } from "node:zlib";
import gulp from "gulp";
import brotli from "../brotli.mjs";
import { pruneCache } from "../compress-cache.mjs";
import zopfli from "gulp-zopfli-green";
import paths from "../paths.cjs";
import zopfli from "../zopfli.mjs";
const filesGlob = "*.{js,json,css,svg,xml}";
const brotliOptions = {
skipLarger: true,
params: {
[constants.BROTLI_PARAM_QUALITY]: constants.BROTLI_MAX_QUALITY,
},
};
const zopfliOptions = { threshold: 150 };
const compressModern = (rootDir, modernDir, compress) =>
const compressDist = (rootDir) =>
gulp
.src([`${modernDir}/**/${filesGlob}`, `${rootDir}/sw-modern.js`], {
base: rootDir,
allowEmpty: true,
})
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
.src([`${rootDir}/**/*.{js,json,css,svg}`])
.pipe(zopfli(zopfliOptions))
.pipe(gulp.dest(rootDir));
const compressOther = (rootDir, modernDir, compress) =>
gulp
.src(
[
`${rootDir}/**/${filesGlob}`,
`!${modernDir}/**/${filesGlob}`,
`!${rootDir}/{sw-modern,service_worker}.js`,
`${rootDir}/{authorize,onboarding}.html`,
],
{ base: rootDir, allowEmpty: true }
)
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
.pipe(gulp.dest(rootDir));
const compressAppModernBrotli = () =>
compressModern(paths.app_output_root, paths.app_output_latest, "brotli");
const compressAppModernZopfli = () =>
compressModern(paths.app_output_root, paths.app_output_latest, "zopfli");
const compressAppOtherBrotli = () =>
compressOther(paths.app_output_root, paths.app_output_latest, "brotli");
const compressAppOtherZopfli = () =>
compressOther(paths.app_output_root, paths.app_output_latest, "zopfli");
gulp.task(
"compress-app",
gulp.parallel(
compressAppModernBrotli,
compressAppOtherBrotli,
compressAppModernZopfli,
compressAppOtherZopfli
)
);
// Keep the compression cache under its size budget (LRU, this build pinned).
// No-op unless COMPRESS_CACHE_DIR is set.
gulp.task("prune-compress-cache", () => pruneCache());
gulp.task("compress-app", () => compressDist(paths.app_output_root));
gulp.task("compress-hassio", () => compressDist(paths.hassio_output_root));
Loaded 100 of 3929 files, more files were not shown because too many files have changed in this diff. Show more